{"version":3,"file":"index.full.min.mjs","names":["toValue","toString","isObject","clamp","noop","cacheStringFunction","hyphenateRE","hyphenate","camelizeRE","camelize","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","Symbol","Symbol","symbolTag","INFINITY","symbolProto","Symbol","INFINITY","funcTag","genTag","funcToString","funcProto","objectProto","funcToString","hasOwnProperty","getValue","getValue","WeakMap","MAX_SAFE_INTEGER","hasOwnProperty","nativeMax","objectProto","argsTag","objectProto","hasOwnProperty","propertyIsEnumerable","freeExports","freeModule","Buffer","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","freeExports","freeModule","hasOwnProperty","hasOwnProperty","hasOwnProperty","HASH_UNDEFINED","hasOwnProperty","hasOwnProperty","HASH_UNDEFINED","Map","Map","FUNC_ERROR_TEXT","INFINITY","Symbol","objectTag","hasOwnProperty","castArray","clamp","LARGE_ARRAY_SIZE","Map","Buffer","Promise","Set","mapTag","objectTag","setTag","weakMapTag","dataViewTag","Map","Promise","Set","WeakMap","hasOwnProperty","Uint8Array","Uint8Array","symbolProto","Symbol","symbolValueOf","boolTag","dateTag","mapTag","numberTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","mapTag","getTag","setTag","getTag","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","argsTag","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","getTag","CLONE_DEEP_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","Symbol","Uint8Array","COMPARE_PARTIAL_FLAG","hasOwnProperty","COMPARE_PARTIAL_FLAG","hasOwnProperty","getTag","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","FUNC_ERROR_TEXT","nativeMax","nativeMin","isEqual","isUndefined","Set","isArray","isObject","isElement","toCapitalize","SCOPE","isShadowRoot","isObject","isShadowRoot","isFunction","_hoisted_16","_openBlock6","_createElementBlock6","_hoisted_18","_openBlock8","_createElementBlock8","_openBlock10","_createElementBlock10","_openBlock12","_createElementBlock12","_openBlock14","_createElementBlock14","_openBlock180","_createElementBlock180","calendar_default","_openBlock185","_createElementBlock185","_openBlock186","_createElementBlock186","_openBlock194","_createElementBlock194","_openBlock199","_createElementBlock199","_openBlock200","_createElementBlock200","_openBlock201","_createElementBlock201","_openBlock202","_createElementBlock202","_openBlock205","_createElementBlock205","_openBlock207","_createElementBlock207","_openBlock223","_createElementBlock223","_openBlock224","_createElementBlock224","_openBlock231","_createElementBlock231","_openBlock241","_createElementBlock241","_openBlock244","_createElementBlock244","_openBlock280","_createElementBlock280","_openBlock287","_createElementBlock287","_openBlock302","_createElementBlock302","_openBlock312","_createElementBlock312","_openBlock319","_createElementBlock319","_openBlock532","_createElementBlock532","_openBlock537","_createElementBlock537","_openBlock538","_createElementBlock538","_openBlock558","_createElementBlock558","_openBlock564","_createElementBlock564","_openBlock574","_createElementBlock574","_openBlock578","_createElementBlock578","_openBlock579","_createElementBlock579","_openBlock585","_createElementBlock585","_openBlock588","_createElementBlock588","_openBlock605","_createElementBlock605","_openBlock606","_createElementBlock606","_openBlock609","_createElementBlock609","_openBlock610","_createElementBlock610","_openBlock612","_createElementBlock612","_openBlock646","_createElementBlock646","_openBlock650","_createElementBlock650","_openBlock682","_createElementBlock682","_openBlock683","_createElementBlock683","isObject","InfoFilled","SuccessFilled","WarningFilled","CircleCloseFilled","Loading","CircleCheck","CircleClose","isArray","SCOPE","isArray","isArray","English","isFunction","E","P","X","N","I","createPopper","isObject","min","max","floor","computePosition","detectOverflow","arrow","min","min$1","flip","offset","shift","getComputedStyle","max","min","isRTL","floor","arrowCore","isFunction","isArray","isEqual","disabled","to","Teleport","Affix","$attrs","Icon","$slots","Alert","Comment","Fragment","Text","cloneVNode","defineComponent","inject","withDirectives","createVNode","_createVNode","NOOP","debugWarn","isObject","FORWARD_REF_INJECTION_KEY","useForwardRefDirective","useNamespace","NAME","OnlyChild","name","setup","_","slots","attrs","forwardRefInjection","forwardRefDirective","setForwardRef","defaultSlot","default","firstLegitNode","length","findFirstLegitChild","node","children","len","filter","c","type","child","wrapTextContent","s","ns","e","$attrs","placements","ElFocusTrap","isArray","SCOPE","ensureArray","isArray","Fragment","computed","defineComponent","inject","nextTick","onBeforeUnmount","onMounted","onUpdated","ref","watch","createVNode","_createVNode","_Fragment","useResizeObserver","throwError","useNamespace","formContextKey","formItemContextKey","COMPONENT_NAME","name","props","isAutoWidth","Boolean","updateAll","setup","slots","formContext","undefined","formItemContext","ns","el","computedWidth","getLabelWidth","value","firstElementChild","width","window","getComputedStyle","Math","ceil","Number","parseFloat","updateLabelWidth","action","default","deregisterLabelWidth","updateLabelWidthFn","val","oldVal","registerLabelWidth","autoLabelWidth","hasLabel","style","marginWidth","max","parseInt","labelPosition","marginPosition","be","$slots","Form","FormItem","isUndefined","$emit","Popper","isArray","$attrs","$slots","Tooltip","CircleClose","$slots","Input","isObject","Scrollbar","$slots","$attrs","Autocomplete","placements","cloneVNode","defineComponent","isVNode","provide","reactive","toRef","createTextVNode","_createTextVNode","createVNode","_createVNode","flattedChildren","ElTooltip","useNamespace","ElAvatar","avatarGroupContextKey","avatarGroupProps","name","props","setup","slots","ns","size","shape","avatars","default","visibleAvatars","showCollapseAvatar","collapseAvatars","length","maxCollapseAvatars","slice","hiddenAvatars","push","popperClass","popperStyle","placement","effect","collapseAvatarsTooltip","collapseClass","collapseStyle","content","e","map","node","idx","key","b","Avatar","AvatarGroup","Backtop","$slots","Badge","defineComponent","renderSlot","isVNode","_isVNode","createVNode","_createVNode","buildProps","definePropType","mutable","UPDATE_MODEL_EVENT","tabsCard","tabsLine","_isSlot","s","Object","prototype","toString","call","baseTabsProps","modelValue","type","String","Number","tabListData","Array","default","noCard","Boolean","baseTabsEmits","name","change","components","props","emits","setup","emit","slots","handleChange","val","_slot","$event","_slot2","BaseTabs","Breadcrumb","BreadcrumbItem","Loading","$slots","Button","ButtonGroup","isValidRange","isArray","isArray","isArray","isEqual","CircleClose","placements","$attrs","name","startPlaceholder","modelValue","disabled","id","endPlaceholder","$attrs","popperClass","popperStyle","fallbackPlacements","placement","id","name","type","editable","readonly","ariaLabel","tabindex","clearIcon","rangeSeparator","format","dateFormat","timeFormat","unlinkPanels","defaultValue","showNow","showConfirm","showFooter","showWeekNumber","isArray","isElement","SCOPE","isFunction","h","SCOPE","normalizeWheel","showSeconds","arrowControl","amPmMode","actualVisible","visible","datetimeRole","parsedValue","actualVisible","defineComponent","provide","ref","createVNode","_createVNode","mergeProps","_mergeProps","dayjs","customParseFormat","UPDATE_MODEL_EVENT","DEFAULT_FORMATS_TIME","PICKER_POPPER_OPTIONS_INJECTION_KEY","Picker","TimePickPanel","TimeRangePanel","timePickerDefaultProps","extend","name","install","props","isRange","Boolean","emits","setup","ctx","commonPicker","type","Panel","modelUpdater","value","emit","popperOptions","expose","focus","blur","handleOpen","handleClose","format","default","TimePicker","isObject","localeData","dayjs","isArray","isObject","Tag","defaultProps","isEqual","COMPONENT_NAME","useOption","COMPONENT_NAME","ensureArray","isObject","isEqual","useSelect","isArray","isFunction","ensureArray","isEqual","isPlainObject","isObject","clamp","isArray","isFunction","isEqual","CircleClose","ArrowDown","placements","defaultProps","Select","Option","OptionGroup","$slots","Calendar","$slots","Card","Carousel","CarouselItem","emitChangeFn","isArray","isArray","isObject","isEqual","isArray","$slots","$slots","isArray","Checkbox","CheckboxButton","CheckboxGroup","Radio","RadioGroup","RadioButton","Comment","defineComponent","inject","createVNode","_createVNode","useNamespace","isArray","CASCADER_PANEL_INJECTION_KEY","isVNodeEmpty","vnodes","every","type","name","props","node","Object","required","setup","ns","renderLabelFn","data","label","nodeLabel","renderLabel","e","Node","isFunction","isArray","Node","isEqual","CascaderPanel","CircleClose","placements","emitChangeFn","$slots","$nextTick","Cascader","CheckTag","Row","Col","isArray","SCOPE","ensureArray","ArrowRight","CollapseTransition","Collapse","CollapseItem","ColorPickerPanel","$attrs","ColorPicker","Container","Aside","Footer","Header","Main","$slots","Statistic","timeUnits","formatTime","$slots","Countdown","isArray","dayjs","isArray","defineComponent","inject","renderSlot","createVNode","_createVNode","useNamespace","ROOT_PICKER_INJECTION_KEY","basicCellProps","name","props","setup","ns","slots","cell","b","e","renderText","text","showWeekNumber","disabled","border","$slots","editable","disabled","parsedValue","showWeekNumber","showFooter","showNow","showConfirm","useAttrs","isFunction","isArray","dayjs","isEqual","border","$slots","editable","unlinkPanels","disabled","showWeekNumber","parsedValue","showFooter","showConfirm","border","$slots","unlinkPanels","unlinkPanels","DateRangePickPanel","MonthRangePickPanel","YearRangePickPanel","DatePickPanel","defineComponent","inject","provide","reactive","toRefs","mergeProps","_mergeProps","isVNode","_isVNode","createVNode","_createVNode","omit","dayjs","customParseFormat","advancedFormat","localeData","weekOfYear","weekYear","dayOfYear","isSameOrAfter","isSameOrBefore","PICKER_BASE_INJECTION_KEY","ROOT_COMMON_PICKER_INJECTION_KEY","useNamespace","isUndefined","UPDATE_MODEL_EVENT","datePickerPanelProps","ROOT_PICKER_INJECTION_KEY","getPanel","useCommonPicker","_isSlot","s","Object","prototype","toString","call","extend","name","install","inheritAttrs","props","emits","setup","slots","emit","attrs","ns","pickerInjection","undefined","_props","pickerNs","parsedValue","onCalendarChange","onPanelChange","onSetPickerOption","onPick","Component","type","value","onClear","default","DatePickerPanel","computed","defineComponent","provide","reactive","ref","toRef","mergeProps","_mergeProps","isVNode","_isVNode","createVNode","_createVNode","CommonPicker","DEFAULT_FORMATS_DATE","DEFAULT_FORMATS_DATEPICKER","PICKER_POPPER_OPTIONS_INJECTION_KEY","UPDATE_MODEL_EVENT","ElDatePickerPanel","ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY","datePickerProps","_isSlot","s","Object","prototype","toString","call","name","install","props","emits","setup","expose","emit","slots","isDefaultFormat","format","commonPicker","refProps","focus","value","blur","handleOpen","handleClose","onModelValueUpdated","val","type","default","scopedProps","disabled","editable","DatePicker","COMPONENT_NAME","$slots","COMPONENT_NAME","Descriptions","DescriptionsItem","dialogContentProps","dialogContentProps","Overlay","$emit","$slots","COMPONENT_NAME","isObject","isArray","isFunction","$attrs","$slots","Dialog","Back","$slots","Divider","$slots","PageHeader","appendToBody","modal","modalClass","title","DialogHeader","clamp","$attrs","$slots","Drawer","Collection","CollectionItem","ElRovingFocusGroup","Dropdown","DropdownItem","DropdownMenu","$slots","Empty","rowKey","hasFlow","FormBase","$slots","ImageViewer","$attrs","$slots","Image","$slots","InputNumber","LayoutColumn","LayoutTree","CircleClose","isArray","ensureArray","useAttrs","InputTag","$slots","Link","COMPONENT_NAME","ArrowDown","ArrowRight","More","isArray","isObject","Menubar","ElSubMenu","vClickoutside","ElMenuCollapseTransition","isArray","$slots","$slots","Menu","MenuItem","MenuItemGroup","SubMenu","prevText","$emit","prevIcon","nextText","$emit","nextIcon","disabled","popperClass","popperStyle","size","teleported","appendSizeTo","size","total","pageCount","currentPage","disabled","pagerCount","ArrowLeft","ArrowRight","Prev","Jumper","Pager","Next","Sizes","Total","Pagination","QuestionFilled","$attrs","$slots","Popconfirm","$slots","Progress","StarFilled","Star","Rate","InfoFilled","CircleCheckFilled","WarningFilled","CircleCloseFilled","$slots","Result","memoOne","itemSize","renderThumbStyle","renderThumbStyle","Scrollbar","Scrollbar","CircleClose","defaultProps","placements","ArrowDown","computed","defineComponent","inject","ref","toRaw","unref","watch","createVNode","_createVNode","mergeProps","_mergeProps","get","getEventCode","isIOS","isObject","isUndefined","DynamicSizeList","FixedSizeList","useNamespace","EVENT_CODE","GroupItem","OptionItem","useProps","selectV2InjectionKey","props","loading","Boolean","data","type","Array","required","hoveringIndex","Number","width","id","String","ariaLabel","name","setup","slots","expose","select","ns","getLabel","getValue","getDisabled","cachedHeights","listRef","size","length","value","tooltipRef","updatePopper","isSized","estimatedOptionHeight","listProps","itemSize","itemHeight","estimatedSize","idx","contains","arr","target","valueKey","includes","some","item","isEqual","selected","isItemSelected","modelValue","multiple","isItemDisabled","disabled","multipleLimit","isItemHovering","scrollToItem","index","list","resetScrollTop","exposed","Item","itemProps","style","sized","onSelect","onHover","isSelected","isDisabled","isHovering","created","default","onKeyboardNavigate","onKeyboardSelect","onForward","onBackward","onEscOrTab","onKeydown","e","code","tab","esc","down","up","enter","numpadEnter","preventDefault","stopPropagation","height","scrollbarAlwaysOn","isScrollbarAlwaysOn","List","b","is","header","empty","be","role","footer","useSelect","isArray","isFunction","isEqual","isObject","Select","$attrs","Skeleton","SkeletonItem","placements","isValidValue","isArray","isArray","clamp","isArray","placements","placement","tooltipClass","range","vertical","tooltipClass","placement","min","max","showStops","showInputControls","Slider","isArray","isArray","Item","$slots","Steps","Step","$slots","Switch","isArray","ensureArray","isObject","isFunction","useTree","isArray","useWatcher","isArray","useTree","useWatcher","isObject","isElement","useStyle","isFunction","useUtils","useStyle","useUtils","FilterPanel","useStyles","isFunction","isArray","isObject","useRender","useStyles","TdWrapper","defaultProps","defaultProps","useRender","useStyle","useStyle","useScrollbar","isFunction","ArrowRight","Loading","isArray","defaultProps","isArray","ElTableColumn","Table","TableColumn","isObject","isArray","isArray","isFunction","isArray","renderSlot","createVNode","_createVNode","TableV2Cell","props","slots","cellData","style","displayText","toString","defaultSlot","class","displayName","inheritAttrs","renderSlot","createVNode","_createVNode","HeaderCell","props","slots","class","column","title","displayName","inheritAttrs","defineComponent","createVNode","_createVNode","isArray","tableV2HeaderRowProps","TableV2HeaderRow","name","props","setup","slots","columns","columnsStyles","headerIndex","style","Cells","map","column","columnIndex","cell","key","header","cells","node","length","class","computed","defineComponent","inject","nextTick","onUpdated","ref","unref","createVNode","_createVNode","useNamespace","ensureArray","tableV2HeaderProps","enforceUnit","TABLE_V2_GRID_INJECTION_KEY","COMPONENT_NAME","TableV2Header","name","props","setup","slots","expose","ns","scrollLeftInfo","headerRef","headerStyle","width","height","rowStyle","rowWidth","headerHeights","headerHeight","scrollToLeft","left","headerEl","scroll","renderFixedRows","fixedRowClassName","e","columns","fixedHeaderData","rowHeight","map","fixedRowData","fixedRowIndex","style","fixed","class","rowData","rowIndex","renderDynamicRows","dynamicRowClassName","dynamic","headerIndex","value","computed","defineComponent","inject","nextTick","onMounted","ref","unref","mergeProps","_mergeProps","createVNode","_createVNode","isArray","isFunction","isNumber","tableV2RowProps","TableV2InjectionKey","placeholderSign","useTableRow","props","isScrolling","measured","rowRef","measurable","estimatedRowHeight","rowIndex","doMeasure","isInit","$rowRef","columns","onRowHeightChange","rowKey","style","height","getBoundingClientRect","value","Number","parseInt","firstColumn","isPlaceholder","fixed","eventHandlers","rowData","onRowHover","handlers","rowEventHandlers","Object","entries","forEach","eventName","handler","event","name","hovered","existedHandler","onExpand","expanded","onRowExpand","COMPONENT_NAME","TableV2Row","setup","expose","slots","attrs","columnsStyles","expandColumnKey","depth","ColumnCells","map","column","columnIndex","expandable","children","length","key","cell","expandIconProps","undefined","row","cells","node","exceptHeightStyle","_measured","class","ElIcon","SortDown","SortUp","SortOrder","SortIcon","props","sortOrder","_createVNode","ariaLabel","class","default","ASC","ElIcon","ArrowRight","ExpandIcon","props","expanded","expandable","onExpand","style","size","ariaLabel","expandIconProps","onClick","undefined","ariaExpanded","class","_createVNode","_mergeProps","default","inheritAttrs","computed","defineComponent","inject","nextTick","onActivated","provide","ref","unref","watch","createVNode","_createVNode","DynamicSizeGrid","FixedSizeGrid","isNumber","isObject","Header","TABLE_V2_GRID_INJECTION_KEY","TableV2InjectionKey","tableV2GridProps","sum","COMPONENT_NAME","useTableGrid","props","headerRef","bodyRef","scrollLeft","totalHeight","data","rowHeight","estimatedRowHeight","length","fixedRowHeight","fixedData","headerHeight","gridHeight","height","Math","max","hasHeader","itemKey","rowIndex","rowKey","onItemRendered","rowCacheStart","rowCacheEnd","rowVisibleStart","rowVisibleEnd","onRowsRendered","resetAfterRowIndex","index","forceUpdate","value","scrollTo","leftOrOptions","top","header$","body$","scrollToLeft","scrollTop","scrollToTop","scrollToRow","row","strategy","body","prevScrollLeft","scrollToItem","$forceUpdate","bodyWidth","resetAfter","columnIndex","TableGrid","name","setup","slots","expose","ns","states","round","getColumnWidth","cache","columns","useIsScrolling","scrollbarAlwaysOn","scrollbarEndGap","scrollbarStartGap","style","headerWidth","width","getRowHeight","onScroll","isDynamicRowEnabled","Grid","_headerHeight","e","class","default","params","rowData","min","dynamic","header","fixed","Table","_isSlot","s","Object","prototype","toString","call","_isVNode","MainTable","props","slots","mainTableRef","rest","_createVNode","_mergeProps","default","Table","_isSlot","s","Object","prototype","toString","call","_isVNode","LeftTable","props","slots","columns","length","leftTableRef","rest","_createVNode","_mergeProps","default","Table","_isSlot","s","Object","prototype","toString","call","_isVNode","RightTable","props","slots","columns","length","rightTableRef","rest","_createVNode","_mergeProps","default","Row","tryCall","_isSlot","s","Object","prototype","toString","call","_isVNode","RowRenderer","props","slots","columns","columnsStyles","depthMap","expandColumnKey","expandedRowKeys","estimatedRowHeight","hasFixedColumns","rowData","rowIndex","style","isScrolling","rowProps","rowClass","rowKey","rowEventHandlers","ns","onRowHovered","onRowExpanded","rowKls","additionalProps","_rowKey","depth","canExpand","Boolean","isFixedRow","kls","e","is","includes","row","onRowHover","undefined","_rowProps","class","handlerMouseEnter","hovered","event","handlerMouseLeave","_createVNode","_mergeProps","default","renderSlot","createVNode","_createVNode","mergeProps","_mergeProps","get","isFunction","isObject","ExpandIcon","TableCell","Alignment","placeholderSign","componentToSlot","enforceUnit","tryCall","CellRenderer","columns","column","columnIndex","depth","expandIconProps","isScrolling","rowData","rowIndex","style","expandedRowKeys","ns","t","cellProps","_cellProps","expandColumnKey","indentSize","iconSize","rowKey","slots","cellStyle","em","cellRenderer","dataKey","dataGetter","cellData","extraCellProps","class","e","columnCellRenderer","Cell","kls","align","CENTER","is","RIGHT","expandable","key","expanded","includes","IconOrPlaceholder","iconStyle","join","inheritAttrs","HeaderRow","tryCall","_isSlot","s","Object","prototype","toString","call","_isVNode","HeaderRenderer","columns","columnsStyles","headerIndex","style","headerClass","headerProps","ns","slots","param","kls","e","is","Boolean","header","extraProps","class","_createVNode","default","renderSlot","createVNode","_createVNode","mergeProps","_mergeProps","HeaderCell","SortIcon","Alignment","SortOrder","oppositeOrderMap","placeholderSign","componentToSlot","enforceUnit","tryCall","HeaderCellRenderer","props","slots","column","ns","t","style","onColumnSorted","cellStyle","em","headerCellRenderer","headerClass","sortable","cellProps","class","e","columnCellRenderer","Cell","sortBy","sortState","headerCellProps","sorting","sortOrder","ariaSort","order","key","Boolean","ASC","DESC","undefined","cellKls","align","CENTER","is","RIGHT","cellWrapperProps","onClick","title","Footer","props","slots","_createVNode","class","style","default","displayName","renderSlot","createVNode","_createVNode","ElEmpty","Footer","props","slots","defaultSlot","class","style","displayName","Overlay","props","slots","_createVNode","class","style","default","displayName","defineComponent","provide","unref","mergeProps","_mergeProps","isVNode","_isVNode","createVNode","_createVNode","useLocale","useNamespace","useTable","TableV2InjectionKey","tableV2Props","MainTable","LeftTable","RightTable","Row","Cell","Header","HeaderCell","Footer","Empty","Overlay","_isSlot","s","Object","prototype","toString","call","COMPONENT_NAME","TableV2","name","props","setup","slots","expose","ns","t","columnsStyles","fixedColumnsOnLeft","fixedColumnsOnRight","mainColumns","mainTableHeight","fixedTableHeight","leftTableWidth","rightTableWidth","data","depthMap","expandedRowKeys","hasFixedColumns","mainTableRef","leftTableRef","rightTableRef","isDynamic","isResetting","isScrolling","bodyWidth","emptyStyle","rootStyle","footerHeight","showEmpty","scrollTo","scrollToLeft","scrollToTop","scrollToRow","getRowHeight","onColumnSorted","onRowHeightChange","onRowHovered","onRowExpanded","onRowsRendered","onScroll","onVerticalScroll","cache","cellProps","estimatedRowHeight","expandColumnKey","fixedData","headerHeight","headerClass","headerProps","headerCellProps","sortBy","sortState","rowHeight","rowClass","rowEventHandlers","rowKey","rowProps","scrollbarAlwaysOn","indentSize","iconSize","useIsScrolling","vScrollbarSize","width","_data","mainTableProps","class","e","columns","headerWidth","height","scrollbarStartGap","scrollbarEndGap","leftColumnsWidth","_fixedTableHeight","leftTableProps","rightColumnsWidth","rightTableProps","style","cssVarName","_columnsStyles","tableRowProps","tableCellProps","tableHeaderProps","tableHeaderCellProps","tableSlots","row","cell","_slot","column","key","default","header","_slot2","rootKls","b","is","footerProps","footer","empty","overlay","defineComponent","createVNode","_createVNode","useNamespace","autoResizerProps","useAutoResize","AutoResizer","name","props","setup","slots","ns","height","width","sizer","style","b","default","value","computed","defineComponent","inject","nextTick","onMounted","onUpdated","ref","shallowRef","triggerRef","watch","createVNode","_createVNode","useDocumentVisibility","useElementSize","useResizeObserver","useWindowFocus","buildProps","capitalize","definePropType","getEventCode","mutable","rAF","throwError","EVENT_CODE","ElIcon","ArrowLeft","ArrowRight","Close","useNamespace","useWheel","clamp","TabBar","tabsRootContextKey","tabNavProps","panes","type","Array","default","currentName","String","Number","editable","Boolean","values","stretch","tabindex","undefined","tabNavEmits","tabClick","tab","tabName","ev","Event","tabRemove","COMPONENT_NAME","TabNav","name","props","emits","setup","expose","emit","rootTabs","ns","visibility","focused","navScroll$","nav$","el$","tabRefsMap","tabBarRef","scrollable","navOffset","isFocus","focusable","isWheelScrolling","tracker","isHorizontal","includes","tabPosition","sizeName","value","navStyle","dir","transition","transform","width","navContainerWidth","height","navContainerHeight","navWidth","navHeight","box","navContainerSize","navSize","onWheel","atStartEdge","atEndEdge","layout","offset","handleWheel","event","scrollPrev","containerSize","currentOffset","newOffset","scrollNext","scrollToActiveTab","nav","activeTab","navScroll","activeTabBounding","getBoundingClientRect","navScrollBounding","maxOffset","offsetWidth","offsetHeight","left","right","top","bottom","Math","max","min","update","prev","next","changeTab","code","step","up","down","tabList","from","currentTarget","querySelectorAll","currentIndex","indexOf","target","nextIndex","length","focus","preventScroll","click","setFocus","removeFocus","setRefs","el","key","focusActiveTab","setTimeout","tabListRef","scheduleRender","scrollBtn","e","is","tabs","map","pane","index","uid","disabled","closable","isClosable","btnClose","tabLabelContent","slots","label","active","onFocus","onBlur","delete","backspace","computed","createVNode","defineComponent","getCurrentInstance","nextTick","provide","ref","renderSlot","watch","_createVNode","omit","buildProps","definePropType","getEventCode","isNumber","isString","isUndefined","EVENT_CODE","UPDATE_MODEL_EVENT","ElIcon","Plus","useNamespace","useOrderedChildren","tabsRootContextKey","TabNav","tabsProps","type","String","values","default","closable","Boolean","addable","modelValue","Number","defaultValue","editable","tabPosition","beforeLeave","Function","stretch","tabindex","isPaneName","value","tabsEmits","name","tabClick","pane","ev","Event","tabChange","edit","paneName","action","includes","tabRemove","tabAdd","Tabs","props","emits","setup","emit","slots","expose","ns","isVertical","children","panes","addChild","registerPane","removeChild","unregisterPane","ChildrenSorter","PanesSorter","nav$","currentName","setCurrentName","trigger","canLeave","result","Promise","isFocusInsidePane","find","item","removeFocus","focusActiveTab","handleTabClick","tab","tabName","event","disabled","handleTabRemove","stopPropagation","handleTabAdd","undefined","handleKeydown","code","enter","numpadEnter","swapChildren","vnode","actualFirstChild","el","firstChild","before","scrollToActiveTab","tabNavRef","addSlot","newButton","e","is","tabNav","header","$stable","panels","b","m","TabPane","Text","Clock","CircleClose","$emit","TimeSelect","$slots","TimelineItem","isArray","useCheck","isFunction","Transfer","isFunction","Node","isArray","Node","isObject","isFunction","Tree","isArray","useTree","isEqual","isFunction","TreeSelectOption","TreeSelect","ROOT_TREE_INJECTION_KEY","treeProps","treeEmits","isFunction","isObject","ROOT_TREE_INJECTION_KEY","TreeV2","SCOPE","isArray","isArray","SCOPE","$slots","Upload","isArray","Watermark","isFunction","isArray","useFloating","offsetMiddleware","offset","$attrs","isArray","$attrs","Tour","TourStep","$slots","Anchor","AnchorLink","Segmented","ensureArray","isFunction","isObject","$slots","$attrs","$slots","Mention","useSize","isObject","$attrs","Splitter","SplitPanel","SCOPE","isFunction","isObject","$emit","seed","isElement","isFunction","MessageConstructor","closeAll","Message","isElement","MessageBoxConstructor","isFunction","isObject","Close","$emit","isElement","NotificationConstructor","isFunction","Notify","$attrs","$slots","PopoverDirective","Popover","version","Components","Plugins","installer"],"sources":["../../../packages/utils/dom/aria.ts","../../../packages/constants/aria.ts","../../../packages/constants/date.ts","../../../packages/constants/event.ts","../../../packages/constants/key.ts","../../../packages/constants/size.ts","../../../packages/constants/column-alignment.ts","../../../packages/constants/form.ts","../../../node_modules/.pnpm/@vueuse+shared@12.0.0_typescript@5.5.4/node_modules/@vueuse/shared/index.mjs","../../../node_modules/.pnpm/@vueuse+core@12.0.0_typescript@5.5.4/node_modules/@vueuse/core/index.mjs","../../../packages/utils/browser.ts","../../../packages/utils/dom/event.ts","../../../packages/utils/dom/position.ts","../../../packages/utils/easings.ts","../../../node_modules/.pnpm/@vue+shared@3.5.25/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_freeGlobal.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_root.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Symbol.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getRawTag.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_objectToString.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetTag.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObjectLike.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSymbol.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayMap.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseToString.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_trimmedEndIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTrim.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObject.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toNumber.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toFinite.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toInteger.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/identity.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isFunction.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_coreJsData.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isMasked.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toSource.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNative.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getValue.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getNative.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_WeakMap.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseCreate.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_apply.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/noop.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copyArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_shortOut.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/constant.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_defineProperty.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSetToString.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setToString.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayEach.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFindIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNaN.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_strictIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludes.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssignValue.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/eq.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assignValue.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copyObject.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_overRest.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseRest.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isLength.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArrayLike.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isIterateeCall.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createAssigner.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isPrototype.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTimes.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsArguments.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArguments.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/stubFalse.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUnary.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nodeUtil.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayLikeKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_overArg.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/keys.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeKeysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseKeysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/keysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKey.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeCreate.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashClear.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashGet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashHas.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashSet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Hash.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheClear.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assocIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheGet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheSet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_ListCache.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Map.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheClear.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKeyable.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMapData.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheGet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheSet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_MapCache.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/memoize.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_memoizeCapped.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stringToPath.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toString.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_castPath.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toKey.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/get.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayPush.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isFlattenable.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFlatten.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatten.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_flatRest.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getPrototype.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isPlainObject.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSlice.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/castArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseClamp.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/clamp.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackClear.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackGet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackHas.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackSet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Stack.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssign.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssignIn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayFilter.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/stubArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getSymbols.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copySymbols.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getSymbolsIn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copySymbolsIn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetAllKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getAllKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getAllKeysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_DataView.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Promise.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Set.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getTag.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Uint8Array.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneArrayBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneDataView.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneRegExp.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneSymbol.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneByTag.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneObject.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsMap.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isMap.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsSet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseClone.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/cloneDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheAdd.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_SetCache.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arraySome.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalArrays.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalByTag.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalObjects.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsEqualDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsEqual.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsMatch.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isStrictComparable.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMatchData.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_matchesStrictComparable.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMatches.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseHasIn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hasPath.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/hasIn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMatchesProperty.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseProperty.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePropertyDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/property.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIteratee.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createBaseFor.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFor.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseForOwn.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createBaseEach.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseEach.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/now.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/debounce.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assignMergeValue.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArrayLikeObject.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_safeGet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toPlainObject.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMergeDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMerge.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludesWith.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/last.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/findLastIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMap.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/map.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatMap.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flattenDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/fromPairs.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_parent.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isEqual.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isNil.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isNull.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isUndefined.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/merge.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUnset.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_customOmitClone.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/omit.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePickBy.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePick.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/pick.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/set.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/throttle.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createSet.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUniq.js","../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/union.js","../../../packages/utils/types.ts","../../../packages/utils/raf.ts","../../../packages/utils/strings.ts","../../../packages/utils/objects.ts","../../../packages/utils/error.ts","../../../packages/utils/dom/style.ts","../../../packages/utils/dom/scroll.ts","../../../packages/utils/dom/element.ts","../../../packages/utils/vue/global-node.ts","../../../node_modules/.pnpm/pit-element-icons@0.0.6_vue@3.5.25_typescript@5.5.4_/node_modules/pit-element-icons/dist/index.js","../../../packages/utils/vue/props/runtime.ts","../../../packages/utils/vue/icon.ts","../../../packages/utils/vue/install.ts","../../../packages/utils/vue/refs.ts","../../../packages/utils/vue/validator.ts","../../../packages/utils/vue/vnode.ts","../../../packages/utils/arrays.ts","../../../packages/utils/i18n.ts","../../../packages/utils/typescript.ts","../../../packages/utils/throttleByRaf.ts","../../../packages/utils/utils.ts","../../../packages/utils/tree.ts","../../../packages/hooks/use-attrs/index.ts","../../../packages/hooks/use-calc-input-width/index.ts","../../../packages/hooks/use-deprecated/index.ts","../../../packages/hooks/use-draggable/index.ts","../../../packages/hooks/use-focus/index.ts","../../../packages/locale/lang/en.ts","../../../packages/hooks/use-locale/index.ts","../../../packages/hooks/use-namespace/index.ts","../../../packages/hooks/use-lockscreen/index.ts","../../../packages/hooks/use-modal/index.ts","../../../packages/hooks/use-model-toggle/index.ts","../../../packages/hooks/use-prevent-global/index.ts","../../../packages/hooks/use-prop/index.ts","../../../node_modules/.pnpm/@sxzz+popperjs-es@2.11.7/node_modules/@sxzz/popperjs-es/dist/index.mjs","../../../packages/hooks/use-popper/index.ts","../../../packages/hooks/use-same-target/index.ts","../../../packages/hooks/use-teleport/index.ts","../../../packages/hooks/use-throttle-render/index.ts","../../../packages/hooks/use-timeout/index.ts","../../../packages/hooks/use-transition-fallthrough/index.ts","../../../packages/hooks/use-id/index.ts","../../../packages/hooks/use-escape-keydown/index.ts","../../../packages/hooks/use-popper-container/index.ts","../../../packages/hooks/use-intermediate-render/index.ts","../../../packages/hooks/use-delayed-toggle/index.ts","../../../packages/hooks/use-forward-ref/index.ts","../../../packages/hooks/use-z-index/index.ts","../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/.pnpm/@floating-ui+core@1.7.3/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../node_modules/.pnpm/@floating-ui+dom@1.7.4/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../packages/hooks/use-floating/index.ts","../../../packages/hooks/use-cursor/index.ts","../../../packages/hooks/use-ordered-children/index.ts","../../../packages/hooks/use-size/index.ts","../../../packages/hooks/use-focus-controller/index.ts","../../../packages/hooks/use-composition/index.ts","../../../packages/hooks/use-empty-values/index.ts","../../../packages/hooks/use-aria/index.ts","../../../packages/hooks/use-global-properties/index.ts","../../../packages/components/teleport/src/teleport.ts","../../../packages/components/teleport/src/teleport.vue","../../../packages/components/teleport/src/teleport.vue","../../../packages/components/teleport/src/teleport.vue","../../../packages/components/teleport/index.ts","../../../packages/components/affix/src/affix.ts","../../../packages/components/affix/src/affix.vue","../../../packages/components/affix/src/affix.vue","../../../packages/components/affix/src/affix.vue","../../../packages/components/affix/index.ts","../../../packages/components/alert/src/alert.ts","../../../packages/components/icon/src/icon.ts","../../../packages/components/icon/src/icon.vue","../../../packages/components/icon/src/icon.vue","../../../packages/components/icon/src/icon.vue","../../../packages/components/icon/index.ts","../../../packages/components/alert/src/alert.vue","../../../packages/components/alert/src/alert.vue","../../../packages/components/alert/src/alert.vue","../../../packages/components/alert/index.ts","../../../packages/components/popper/src/popper.ts","../../../packages/components/popper/src/constants.ts","../../../packages/components/popper/src/popper.vue","../../../packages/components/popper/src/popper.vue","../../../packages/components/popper/src/popper.vue","../../../packages/components/popper/src/arrow.vue","../../../packages/components/popper/src/arrow.vue","../../../packages/components/popper/src/arrow.vue","../../../packages/components/popper/src/trigger.ts","../../../packages/components/slot/src/only-child.tsx","../../../packages/components/popper/src/trigger.vue","../../../packages/components/popper/src/trigger.vue","../../../packages/components/popper/src/trigger.vue","../../../packages/components/popper/src/arrow.ts","../../../packages/components/popper/src/content.ts","../../../packages/components/focus-trap/src/tokens.ts","../../../packages/components/focus-trap/src/utils.ts","../../../packages/components/focus-trap/src/focus-trap.vue","../../../packages/components/focus-trap/src/focus-trap.vue","../../../packages/components/focus-trap/index.ts","../../../packages/components/form/src/form.ts","../../../packages/components/form/src/constants.ts","../../../packages/components/form/src/hooks/use-form-common-props.ts","../../../packages/components/form/src/hooks/use-form-item.ts","../../../packages/components/form/src/utils.ts","../../../packages/components/form/src/form.vue","../../../packages/components/form/src/form.vue","../../../packages/components/form/src/form.vue","../../../packages/components/form/src/form-item.ts","../../../node_modules/.pnpm/async-validator@4.2.5_patch_6b5dd0d131c69a437ab41c90b27a3894/node_modules/async-validator/dist-web/index.js","../../../packages/components/form/src/form-label-wrap.tsx","../../../packages/components/form/src/form-item.vue","../../../packages/components/form/src/form-item.vue","../../../packages/components/form/src/form-item.vue","../../../packages/components/form/index.ts","../../../packages/components/popper/src/utils.ts","../../../packages/components/popper/src/composables/use-content.ts","../../../packages/components/popper/src/composables/use-content-dom.ts","../../../packages/components/popper/src/composables/use-focus-trap.ts","../../../packages/components/popper/src/content.vue","../../../packages/components/popper/src/content.vue","../../../packages/components/popper/src/content.vue","../../../packages/components/popper/index.ts","../../../packages/components/tooltip/src/content.ts","../../../packages/components/tooltip/src/trigger.ts","../../../packages/components/tooltip/src/tooltip.ts","../../../packages/components/tooltip/src/constants.ts","../../../packages/components/tooltip/src/utils.ts","../../../packages/components/tooltip/src/trigger.vue","../../../packages/components/tooltip/src/trigger.vue","../../../packages/components/tooltip/src/trigger.vue","../../../packages/components/tooltip/src/content.vue","../../../packages/components/tooltip/src/content.vue","../../../packages/components/tooltip/src/content.vue","../../../packages/components/tooltip/src/tooltip.vue","../../../packages/components/tooltip/src/tooltip.vue","../../../packages/components/tooltip/src/tooltip.vue","../../../packages/components/tooltip/index.ts","../../../packages/components/input/src/input.ts","../../../packages/components/input/src/utils.ts","../../../packages/components/input/src/input.vue","../../../packages/components/input/src/input.vue","../../../packages/components/input/src/input.vue","../../../packages/components/input/index.ts","../../../packages/components/autocomplete/src/autocomplete.ts","../../../packages/components/scrollbar/src/scrollbar.ts","../../../packages/components/scrollbar/src/bar.ts","../../../packages/components/scrollbar/src/util.ts","../../../packages/components/scrollbar/src/thumb.ts","../../../packages/components/scrollbar/src/constants.ts","../../../packages/components/scrollbar/src/thumb.vue","../../../packages/components/scrollbar/src/thumb.vue","../../../packages/components/scrollbar/src/thumb.vue","../../../packages/components/scrollbar/src/bar.vue","../../../packages/components/scrollbar/src/bar.vue","../../../packages/components/scrollbar/src/bar.vue","../../../packages/components/scrollbar/src/scrollbar.vue","../../../packages/components/scrollbar/src/scrollbar.vue","../../../packages/components/scrollbar/src/scrollbar.vue","../../../packages/components/scrollbar/index.ts","../../../packages/components/autocomplete/src/autocomplete.vue","../../../packages/components/autocomplete/src/autocomplete.vue","../../../packages/components/autocomplete/src/autocomplete.vue","../../../packages/components/autocomplete/index.ts","../../../packages/components/avatar/src/avatar.ts","../../../packages/components/avatar/src/constants.ts","../../../packages/components/avatar/src/avatar.vue","../../../packages/components/avatar/src/avatar.vue","../../../packages/components/avatar/src/avatar.vue","../../../packages/components/avatar/src/avatar-group-props.ts","../../../packages/components/avatar/src/avatar-group.tsx","../../../packages/components/avatar/index.ts","../../../packages/components/backtop/src/backtop.ts","../../../packages/components/backtop/src/use-backtop.ts","../../../packages/components/backtop/src/backtop.vue","../../../packages/components/backtop/src/backtop.vue","../../../packages/components/backtop/src/backtop.vue","../../../packages/components/backtop/index.ts","../../../packages/components/badge/src/badge.ts","../../../packages/components/badge/src/badge.vue","../../../packages/components/badge/src/badge.vue","../../../packages/components/badge/src/badge.vue","../../../packages/components/badge/index.ts","../../../packages/components/base-tabs/src/tabsCard.vue","../../../packages/components/base-tabs/src/tabsCard.vue","../../../packages/components/base-tabs/src/tabsCard.vue","../../../packages/components/base-tabs/src/tabsLine.vue","../../../packages/components/base-tabs/src/tabsLine.vue","../../../packages/components/base-tabs/src/tabsLine.vue","../../../packages/components/base-tabs/src/tabs.tsx","../../../packages/components/base-tabs/index.ts","../../../packages/components/breadcrumb/src/breadcrumb.ts","../../../packages/components/breadcrumb/src/constants.ts","../../../packages/components/breadcrumb/src/breadcrumb.vue","../../../packages/components/breadcrumb/src/breadcrumb.vue","../../../packages/components/breadcrumb/src/breadcrumb.vue","../../../packages/components/breadcrumb/src/breadcrumb-item.ts","../../../packages/components/breadcrumb/src/breadcrumb-item.vue","../../../packages/components/breadcrumb/src/breadcrumb-item.vue","../../../packages/components/breadcrumb/src/breadcrumb-item.vue","../../../packages/components/breadcrumb/index.ts","../../../packages/components/button/src/button.ts","../../../packages/components/button/src/constants.ts","../../../packages/components/button/src/use-button.ts","../../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/util.js","../../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/conversion.js","../../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/format-input.js","../../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/index.js","../../../packages/components/button/src/button-custom.ts","../../../packages/components/button/src/button.vue","../../../packages/components/button/src/button.vue","../../../packages/components/button/src/button.vue","../../../packages/components/button/src/button-group.ts","../../../packages/components/button/src/button-group.vue","../../../packages/components/button/src/button-group.vue","../../../packages/components/button/src/button-group.vue","../../../packages/components/button/index.ts","../../../packages/components/calendar/src/calendar.ts","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/customParseFormat.js","../../../packages/components/time-picker/src/constants.ts","../../../packages/components/time-picker/src/utils.ts","../../../packages/components/time-picker/src/composables/use-common-picker.ts","../../../packages/components/time-picker/src/props/shared.ts","../../../packages/components/time-picker/src/common/props.ts","../../../packages/components/time-picker/src/common/picker-range-trigger.vue","../../../packages/components/time-picker/src/common/picker-range-trigger.vue","../../../packages/components/time-picker/src/common/picker-range-trigger.vue","../../../packages/components/time-picker/src/common/picker.vue","../../../packages/components/time-picker/src/common/picker.vue","../../../packages/components/time-picker/src/common/picker.vue","../../../packages/components/time-picker/src/props/panel-time-picker.ts","../../../packages/components/time-picker/src/composables/use-time-panel.ts","../../../packages/components/time-picker/src/composables/use-time-picker.ts","../../../packages/directives/click-outside/index.ts","../../../packages/directives/repeat-click/index.ts","../../../packages/directives/trap-focus/index.ts","../../../node_modules/.pnpm/normalize-wheel-es@1.2.0/node_modules/normalize-wheel-es/dist/index.mjs","../../../packages/directives/mousewheel/index.ts","../../../packages/components/time-picker/src/props/basic-time-spinner.ts","../../../packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue","../../../packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue","../../../packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue","../../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue","../../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue","../../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue","../../../packages/components/time-picker/src/props/panel-time-range.ts","../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue","../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue","../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue","../../../packages/components/time-picker/src/time-picker.tsx","../../../packages/components/time-picker/index.ts","../../../packages/components/calendar/src/date-table.ts","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/localeData.js","../../../packages/components/calendar/src/use-date-table.ts","../../../packages/components/calendar/src/date-table.vue","../../../packages/components/calendar/src/date-table.vue","../../../packages/components/calendar/src/date-table.vue","../../../packages/components/calendar/src/use-calendar.ts","../../../packages/components/calendar/src/select-controller.ts","../../../packages/components/tag/src/tag.ts","../../../packages/components/tag/src/tag.vue","../../../packages/components/tag/src/tag.vue","../../../packages/components/tag/src/tag.vue","../../../packages/components/tag/index.ts","../../../packages/components/select-v2/src/useProps.ts","../../../packages/components/select/src/token.ts","../../../packages/components/select/src/option.ts","../../../packages/components/select/src/useOption.ts","../../../packages/components/select/src/option.vue","../../../packages/components/select/src/option.vue","../../../packages/components/select/src/select-dropdown.vue","../../../packages/components/select/src/select-dropdown.vue","../../../packages/components/select/src/useSelect.ts","../../../packages/components/select/src/options.ts","../../../packages/components/select/src/select.ts","../../../packages/components/select/src/option-group.vue","../../../packages/components/select/src/option-group.vue","../../../packages/components/select/src/select.vue","../../../packages/components/select/src/select.vue","../../../packages/components/select/index.ts","../../../packages/components/calendar/src/select-controller.vue","../../../packages/components/calendar/src/select-controller.vue","../../../packages/components/calendar/src/select-controller.vue","../../../packages/components/calendar/src/calendar.vue","../../../packages/components/calendar/src/calendar.vue","../../../packages/components/calendar/src/calendar.vue","../../../packages/components/calendar/index.ts","../../../packages/components/card/src/card.ts","../../../packages/components/card/src/card.vue","../../../packages/components/card/src/card.vue","../../../packages/components/card/src/card.vue","../../../packages/components/card/index.ts","../../../packages/components/carousel/src/carousel.ts","../../../packages/components/carousel/src/constants.ts","../../../packages/components/carousel/src/use-carousel.ts","../../../packages/components/carousel/src/carousel.vue","../../../packages/components/carousel/src/carousel.vue","../../../packages/components/carousel/src/carousel.vue","../../../packages/components/carousel/src/carousel-item.ts","../../../packages/components/carousel/src/use-carousel-item.ts","../../../packages/components/carousel/src/carousel-item.vue","../../../packages/components/carousel/src/carousel-item.vue","../../../packages/components/carousel/src/carousel-item.vue","../../../packages/components/carousel/index.ts","../../../packages/components/cascader-panel/src/config.ts","../../../packages/components/checkbox/src/checkbox.ts","../../../packages/components/checkbox/src/constants.ts","../../../packages/components/checkbox/src/composables/use-checkbox-disabled.ts","../../../packages/components/checkbox/src/composables/use-checkbox-event.ts","../../../packages/components/checkbox/src/composables/use-checkbox-model.ts","../../../packages/components/checkbox/src/composables/use-checkbox-status.ts","../../../packages/components/checkbox/src/composables/use-checkbox.ts","../../../packages/components/checkbox/src/checkbox.vue","../../../packages/components/checkbox/src/checkbox.vue","../../../packages/components/checkbox/src/checkbox.vue","../../../packages/components/checkbox/src/checkbox-button.vue","../../../packages/components/checkbox/src/checkbox-button.vue","../../../packages/components/checkbox/src/checkbox-button.vue","../../../packages/components/checkbox/src/checkbox-group.ts","../../../packages/components/checkbox/src/checkbox-group.vue","../../../packages/components/checkbox/src/checkbox-group.vue","../../../packages/components/checkbox/src/checkbox-group.vue","../../../packages/components/checkbox/index.ts","../../../packages/components/radio/src/radio.ts","../../../packages/components/radio/src/constants.ts","../../../packages/components/radio/src/use-radio.ts","../../../packages/components/radio/src/radio.vue","../../../packages/components/radio/src/radio.vue","../../../packages/components/radio/src/radio.vue","../../../packages/components/radio/src/radio-button.ts","../../../packages/components/radio/src/radio-button.vue","../../../packages/components/radio/src/radio-button.vue","../../../packages/components/radio/src/radio-button.vue","../../../packages/components/radio/src/radio-group.ts","../../../packages/components/radio/src/radio-group.vue","../../../packages/components/radio/src/radio-group.vue","../../../packages/components/radio/src/radio-group.vue","../../../packages/components/radio/index.ts","../../../packages/components/cascader-panel/src/types.ts","../../../packages/components/cascader-panel/src/node-content.tsx","../../../packages/components/cascader-panel/src/node.vue","../../../packages/components/cascader-panel/src/node.vue","../../../packages/components/cascader-panel/src/node.vue","../../../packages/components/cascader-panel/src/menu.vue","../../../packages/components/cascader-panel/src/menu.vue","../../../packages/components/cascader-panel/src/menu.vue","../../../packages/components/cascader-panel/src/node.ts","../../../packages/components/cascader-panel/src/store.ts","../../../packages/components/cascader-panel/src/utils.ts","../../../packages/components/cascader-panel/src/index.vue","../../../packages/components/cascader-panel/src/index.vue","../../../packages/components/cascader-panel/src/index.vue","../../../packages/components/cascader-panel/index.ts","../../../packages/components/cascader/src/cascader.ts","../../../packages/components/cascader/src/cascader.vue","../../../packages/components/cascader/src/cascader.vue","../../../packages/components/cascader/src/cascader.vue","../../../packages/components/cascader/index.ts","../../../packages/components/check-tag/src/check-tag.ts","../../../packages/components/check-tag/src/check-tag.vue","../../../packages/components/check-tag/src/check-tag.vue","../../../packages/components/check-tag/src/check-tag.vue","../../../packages/components/check-tag/index.ts","../../../packages/components/col/src/col.ts","../../../packages/components/row/src/row.ts","../../../packages/components/row/src/constants.ts","../../../packages/components/row/src/row.vue","../../../packages/components/row/src/row.vue","../../../packages/components/row/src/row.vue","../../../packages/components/row/index.ts","../../../packages/components/col/src/col.vue","../../../packages/components/col/src/col.vue","../../../packages/components/col/src/col.vue","../../../packages/components/col/index.ts","../../../packages/components/collapse/src/collapse.ts","../../../packages/components/collapse/src/constants.ts","../../../packages/components/collapse/src/use-collapse.ts","../../../packages/components/collapse/src/collapse.vue","../../../packages/components/collapse/src/collapse.vue","../../../packages/components/collapse/src/collapse.vue","../../../packages/components/collapse/src/collapse-item.ts","../../../packages/components/collapse-transition/src/collapse-transition.vue","../../../packages/components/collapse-transition/src/collapse-transition.vue","../../../packages/components/collapse-transition/src/collapse-transition.vue","../../../packages/components/collapse-transition/index.ts","../../../packages/components/collapse/src/use-collapse-item.ts","../../../packages/components/collapse/src/collapse-item.vue","../../../packages/components/collapse/src/collapse-item.vue","../../../packages/components/collapse/src/collapse-item.vue","../../../packages/components/collapse/index.ts","../../../packages/components/color-picker-panel/src/color-picker-panel.ts","../../../packages/components/color-picker-panel/src/props/slider.ts","../../../packages/components/color-picker-panel/src/utils/draggable.ts","../../../packages/components/color-picker-panel/src/composables/use-slider.ts","../../../packages/components/color-picker-panel/src/components/alpha-slider.vue","../../../packages/components/color-picker-panel/src/components/alpha-slider.vue","../../../packages/components/color-picker-panel/src/components/alpha-slider.vue","../../../packages/components/color-picker-panel/src/components/hue-slider.vue","../../../packages/components/color-picker-panel/src/components/hue-slider.vue","../../../packages/components/color-picker-panel/src/components/hue-slider.vue","../../../packages/components/color-picker-panel/src/props/predefine.ts","../../../packages/components/color-picker-panel/src/utils/color.ts","../../../packages/components/color-picker-panel/src/composables/use-predefine.ts","../../../packages/components/color-picker-panel/src/components/predefine.vue","../../../packages/components/color-picker-panel/src/components/predefine.vue","../../../packages/components/color-picker-panel/src/components/predefine.vue","../../../packages/components/color-picker-panel/src/props/sv-panel.ts","../../../packages/components/color-picker-panel/src/composables/use-sv-panel.ts","../../../packages/components/color-picker-panel/src/components/sv-panel.vue","../../../packages/components/color-picker-panel/src/components/sv-panel.vue","../../../packages/components/color-picker-panel/src/components/sv-panel.vue","../../../packages/components/color-picker-panel/src/composables/use-common-color.ts","../../../packages/components/color-picker-panel/src/color-picker-panel.vue","../../../packages/components/color-picker-panel/src/color-picker-panel.vue","../../../packages/components/color-picker-panel/src/color-picker-panel.vue","../../../packages/components/color-picker-panel/index.ts","../../../packages/components/color-picker/src/color-picker.ts","../../../packages/components/color-picker/src/color-picker.vue","../../../packages/components/color-picker/src/color-picker.vue","../../../packages/components/color-picker/src/color-picker.vue","../../../packages/components/color-picker/index.ts","../../../packages/components/container/src/container.vue","../../../packages/components/container/src/container.vue","../../../packages/components/container/src/container.vue","../../../packages/components/container/src/aside.vue","../../../packages/components/container/src/aside.vue","../../../packages/components/container/src/aside.vue","../../../packages/components/container/src/footer.vue","../../../packages/components/container/src/footer.vue","../../../packages/components/container/src/footer.vue","../../../packages/components/container/src/header.vue","../../../packages/components/container/src/header.vue","../../../packages/components/container/src/header.vue","../../../packages/components/container/src/main.vue","../../../packages/components/container/src/main.vue","../../../packages/components/container/src/main.vue","../../../packages/components/container/index.ts","../../../packages/components/countdown/src/countdown.ts","../../../packages/components/statistic/src/statistic.ts","../../../packages/components/statistic/src/statistic.vue","../../../packages/components/statistic/src/statistic.vue","../../../packages/components/statistic/src/statistic.vue","../../../packages/components/statistic/index.ts","../../../packages/components/countdown/src/utils.ts","../../../packages/components/countdown/src/countdown.vue","../../../packages/components/countdown/src/countdown.vue","../../../packages/components/countdown/src/countdown.vue","../../../packages/components/countdown/index.ts","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/advancedFormat.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/weekOfYear.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/weekYear.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/dayOfYear.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrAfter.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrBefore.js","../../../packages/components/date-picker-panel/src/props/date-picker-panel.ts","../../../packages/components/date-picker-panel/src/constants.ts","../../../packages/components/date-picker-panel/src/props/shared.ts","../../../packages/components/date-picker-panel/src/props/panel-date-pick.ts","../../../packages/components/date-picker-panel/src/utils.ts","../../../packages/components/date-picker-panel/src/props/basic-date-table.ts","../../../packages/components/date-picker-panel/src/composables/use-basic-date-table.ts","../../../packages/components/date-picker-panel/src/props/basic-cell.ts","../../../packages/components/date-picker-panel/src/date-picker-com/basic-cell-render.tsx","../../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue","../../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue","../../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue","../../../packages/components/date-picker-panel/src/props/basic-month-table.ts","../../../packages/components/date-picker-panel/src/date-picker-com/basic-month-table.vue","../../../packages/components/date-picker-panel/src/date-picker-com/basic-month-table.vue","../../../packages/components/date-picker-panel/src/date-picker-com/basic-month-table.vue","../../../packages/components/date-picker-panel/src/props/basic-year-table.ts","../../../packages/components/date-picker-panel/src/date-picker-com/basic-year-table.vue","../../../packages/components/date-picker-panel/src/date-picker-com/basic-year-table.vue","../../../packages/components/date-picker-panel/src/date-picker-com/basic-year-table.vue","../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue","../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue","../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue","../../../packages/components/date-picker-panel/src/props/panel-date-range.ts","../../../packages/components/date-picker-panel/src/composables/use-shortcut.ts","../../../packages/components/date-picker-panel/src/composables/use-range-picker.ts","../../../packages/components/date-picker-panel/src/composables/use-panel-date-range.ts","../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-range.vue","../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-range.vue","../../../packages/components/date-picker-panel/src/date-picker-com/panel-date-range.vue","../../../packages/components/date-picker-panel/src/props/panel-month-range.ts","../../../packages/components/date-picker-panel/src/composables/use-month-range-header.ts","../../../packages/components/date-picker-panel/src/date-picker-com/panel-month-range.vue","../../../packages/components/date-picker-panel/src/date-picker-com/panel-month-range.vue","../../../packages/components/date-picker-panel/src/date-picker-com/panel-month-range.vue","../../../packages/components/date-picker-panel/src/props/panel-year-range.ts","../../../packages/components/date-picker-panel/src/composables/use-year-range-header.ts","../../../packages/components/date-picker-panel/src/date-picker-com/panel-year-range.vue","../../../packages/components/date-picker-panel/src/date-picker-com/panel-year-range.vue","../../../packages/components/date-picker-panel/src/date-picker-com/panel-year-range.vue","../../../packages/components/date-picker-panel/src/panel-utils.ts","../../../packages/components/date-picker-panel/src/date-picker-panel.tsx","../../../packages/components/date-picker-panel/index.ts","../../../packages/components/date-picker/src/props.ts","../../../packages/components/date-picker/src/date-picker.tsx","../../../packages/components/date-picker/index.ts","../../../packages/components/descriptions/src/description.ts","../../../packages/components/descriptions/src/descriptions-row.ts","../../../packages/components/descriptions/src/token.ts","../../../packages/components/descriptions/src/descriptions-cell.ts","../../../packages/components/descriptions/src/descriptions-row.vue","../../../packages/components/descriptions/src/descriptions-row.vue","../../../packages/components/descriptions/src/descriptions-row.vue","../../../packages/components/descriptions/src/constants.ts","../../../packages/components/descriptions/src/description.vue","../../../packages/components/descriptions/src/description.vue","../../../packages/components/descriptions/src/description.vue","../../../packages/components/descriptions/src/description-item.ts","../../../packages/components/descriptions/index.ts","../../../packages/components/dialog/src/dialog-content.ts","../../../packages/components/dialog/src/dialog.ts","../../../packages/components/overlay/src/overlay.ts","../../../packages/components/overlay/index.ts","../../../packages/components/dialog/src/constants.ts","../../../packages/components/dialog/src/dialog-content.vue","../../../packages/components/dialog/src/dialog-content.vue","../../../packages/components/dialog/src/dialog-content.vue","../../../packages/components/dialog/src/use-dialog.ts","../../../packages/components/dialog/src/dialog.vue","../../../packages/components/dialog/src/dialog.vue","../../../packages/components/dialog/src/dialog.vue","../../../packages/components/dialog/index.ts","../../../packages/components/page-header/src/page-header.ts","../../../packages/components/divider/src/divider.ts","../../../packages/components/divider/src/divider.vue","../../../packages/components/divider/src/divider.vue","../../../packages/components/divider/src/divider.vue","../../../packages/components/divider/index.ts","../../../packages/components/page-header/src/page-header.vue","../../../packages/components/page-header/src/page-header.vue","../../../packages/components/page-header/src/page-header.vue","../../../packages/components/page-header/index.ts","../../../packages/components/dialog-header/src/constants.ts","../../../packages/components/dialog-header/src/dialog-header-content.ts","../../../packages/components/dialog-header/src/dialog-header.ts","../../../packages/components/dialog-header/src/use-dialog-header.ts","../../../packages/components/dialog-header/src/dialog-header.vue","../../../packages/components/dialog-header/src/dialog-header.vue","../../../packages/components/dialog-header/src/dialog-header.vue","../../../packages/components/dialog-header/index.ts","../../../packages/components/drawer/src/drawer.ts","../../../packages/components/drawer/src/composables/useResizable.ts","../../../packages/components/drawer/src/drawer.vue","../../../packages/components/drawer/src/drawer.vue","../../../packages/components/drawer/src/drawer.vue","../../../packages/components/drawer/index.ts","../../../packages/components/collection/src/collection.vue","../../../packages/components/collection/src/collection.vue","../../../packages/components/collection/src/collection-item.vue","../../../packages/components/collection/src/collection-item.vue","../../../packages/components/collection/src/collection.ts","../../../packages/components/roving-focus-group/src/roving-focus-group.ts","../../../packages/components/roving-focus-group/src/tokens.ts","../../../packages/components/roving-focus-group/src/utils.ts","../../../packages/components/roving-focus-group/src/roving-focus-group-impl.vue","../../../packages/components/roving-focus-group/src/roving-focus-group-impl.vue","../../../packages/components/roving-focus-group/src/roving-focus-group.vue","../../../packages/components/roving-focus-group/src/roving-focus-group.vue","../../../packages/components/roving-focus-group/src/roving-focus-item.vue","../../../packages/components/roving-focus-group/src/roving-focus-item.vue","../../../packages/components/roving-focus-group/index.ts","../../../packages/components/dropdown/src/dropdown.ts","../../../packages/components/dropdown/src/tokens.ts","../../../packages/components/dropdown/src/dropdown.vue","../../../packages/components/dropdown/src/dropdown.vue","../../../packages/components/dropdown/src/dropdown-item-impl.vue","../../../packages/components/dropdown/src/dropdown-item-impl.vue","../../../packages/components/dropdown/src/useDropdown.ts","../../../packages/components/dropdown/src/dropdown-item.vue","../../../packages/components/dropdown/src/dropdown-item.vue","../../../packages/components/dropdown/src/dropdown-menu.vue","../../../packages/components/dropdown/src/dropdown-menu.vue","../../../packages/components/dropdown/index.ts","../../../packages/components/empty/src/empty.ts","../../../packages/components/empty/src/img-empty.vue","../../../packages/components/empty/src/img-empty.vue","../../../packages/components/empty/src/img-empty.vue","../../../packages/components/empty/src/empty.vue","../../../packages/components/empty/src/empty.vue","../../../packages/components/empty/src/empty.vue","../../../packages/components/empty/index.ts","../../../packages/components/form-base/src/form-base.ts","../../../packages/components/form-base/src/form-base-table.ts","../../../packages/components/form-base/src/form-base-table-render.vue","../../../packages/components/form-base/src/form-base-table-render.vue","../../../packages/components/form-base/src/form-base-table-expand-render.vue","../../../packages/components/form-base/src/form-base-table-expand-render.vue","../../../packages/components/form-base/src/form-base-table-column.vue","../../../packages/components/form-base/src/form-base-table-column.vue","../../../packages/components/form-base/src/form-base-table-column.vue","../../../packages/components/form-base/src/form-base-table-column-virtually.vue","../../../packages/components/form-base/src/form-base-table-column-virtually.vue","../../../packages/components/form-base/src/form-base-table-column-virtually.vue","../../../packages/components/form-base/src/form-base-table.vue","../../../packages/components/form-base/src/form-base-table.vue","../../../packages/components/form-base/src/form-base-table.vue","../../../packages/components/form-base/src/use-form-base.ts","../../../packages/components/form-base/src/use-form-base-locale.ts","../../../packages/components/form-base/src/constants.ts","../../../packages/components/form-base/src/form-base.vue","../../../packages/components/form-base/src/form-base.vue","../../../packages/components/form-base/src/form-base.vue","../../../packages/components/form-base/index.ts","../../../packages/components/image/src/image.ts","../../../packages/components/image-viewer/src/image-viewer.ts","../../../packages/components/image-viewer/src/image-viewer.vue","../../../packages/components/image-viewer/src/image-viewer.vue","../../../packages/components/image-viewer/src/image-viewer.vue","../../../packages/components/image-viewer/index.ts","../../../packages/components/image/src/image.vue","../../../packages/components/image/src/image.vue","../../../packages/components/image/src/image.vue","../../../packages/components/image/index.ts","../../../packages/components/input-number/src/input-number.ts","../../../packages/components/input-number/src/input-number.vue","../../../packages/components/input-number/src/input-number.vue","../../../packages/components/input-number/src/input-number.vue","../../../packages/components/input-number/index.ts","../../../packages/components/layout-column/src/layout-column.ts","../../../packages/components/layout-column/src/layout-column.vue","../../../packages/components/layout-column/src/layout-column.vue","../../../packages/components/layout-column/src/layout-column.vue","../../../packages/components/layout-column/index.ts","../../../packages/components/layout-tree/src/layout-tree.ts","../../../packages/components/layout-tree/src/layout-tree.vue","../../../packages/components/layout-tree/src/layout-tree.vue","../../../packages/components/layout-tree/src/layout-tree.vue","../../../packages/components/layout-tree/index.ts","../../../packages/components/input-tag/src/input-tag.ts","../../../packages/components/input-tag/src/composables/use-drag-tag.ts","../../../packages/components/input-tag/src/composables/use-hovering.ts","../../../packages/components/input-tag/src/composables/use-input-tag.ts","../../../packages/components/input-tag/src/composables/use-input-tag-dom.ts","../../../packages/components/input-tag/src/input-tag.vue","../../../packages/components/input-tag/src/input-tag.vue","../../../packages/components/input-tag/src/input-tag.vue","../../../packages/components/input-tag/index.ts","../../../packages/components/link/src/link.ts","../../../packages/components/link/src/link.vue","../../../packages/components/link/src/link.vue","../../../packages/components/link/src/link.vue","../../../packages/components/link/index.ts","../../../packages/components/menu/src/utils/submenu.ts","../../../packages/components/menu/src/utils/menu-item.ts","../../../packages/components/menu/src/utils/menu-bar.ts","../../../packages/components/menu/src/menu-collapse-transition.vue","../../../packages/components/menu/src/menu-collapse-transition.vue","../../../packages/components/menu/src/menu-collapse-transition.vue","../../../packages/components/menu/src/use-menu.ts","../../../packages/components/menu/src/use-menu-color.ts","../../../packages/components/menu/src/use-menu-css-var.ts","../../../packages/components/menu/src/tokens.ts","../../../packages/components/menu/src/sub-menu.ts","../../../packages/components/menu/src/menu.ts","../../../packages/components/menu/src/menu-item.ts","../../../packages/components/menu/src/menu-item.vue","../../../packages/components/menu/src/menu-item.vue","../../../packages/components/menu/src/menu-item.vue","../../../packages/components/menu/src/menu-item-group.ts","../../../packages/components/menu/src/menu-item-group.vue","../../../packages/components/menu/src/menu-item-group.vue","../../../packages/components/menu/src/menu-item-group.vue","../../../packages/components/menu/index.ts","../../../packages/components/pagination/src/constants.ts","../../../packages/components/pagination/src/components/prev.ts","../../../packages/components/pagination/src/components/prev.vue","../../../packages/components/pagination/src/components/prev.vue","../../../packages/components/pagination/src/components/prev.vue","../../../packages/components/pagination/src/components/next.ts","../../../packages/components/pagination/src/components/next.vue","../../../packages/components/pagination/src/components/next.vue","../../../packages/components/pagination/src/components/next.vue","../../../packages/components/pagination/src/usePagination.ts","../../../packages/components/pagination/src/components/sizes.ts","../../../packages/components/pagination/src/components/sizes.vue","../../../packages/components/pagination/src/components/sizes.vue","../../../packages/components/pagination/src/components/sizes.vue","../../../packages/components/pagination/src/components/jumper.ts","../../../packages/components/pagination/src/components/jumper.vue","../../../packages/components/pagination/src/components/jumper.vue","../../../packages/components/pagination/src/components/jumper.vue","../../../packages/components/pagination/src/components/total.ts","../../../packages/components/pagination/src/components/total.vue","../../../packages/components/pagination/src/components/total.vue","../../../packages/components/pagination/src/components/total.vue","../../../packages/components/pagination/src/components/pager.ts","../../../packages/components/pagination/src/components/pager.vue","../../../packages/components/pagination/src/components/pager.vue","../../../packages/components/pagination/src/components/pager.vue","../../../packages/components/pagination/src/pagination.ts","../../../packages/components/pagination/index.ts","../../../packages/components/popconfirm/src/popconfirm.ts","../../../packages/components/popconfirm/src/popconfirm.vue","../../../packages/components/popconfirm/src/popconfirm.vue","../../../packages/components/popconfirm/src/popconfirm.vue","../../../packages/components/popconfirm/index.ts","../../../packages/components/progress/src/progress.ts","../../../packages/components/progress/src/progress.vue","../../../packages/components/progress/src/progress.vue","../../../packages/components/progress/src/progress.vue","../../../packages/components/progress/index.ts","../../../packages/components/rate/src/rate.ts","../../../packages/components/rate/src/rate.vue","../../../packages/components/rate/src/rate.vue","../../../packages/components/rate/src/rate.vue","../../../packages/components/rate/index.ts","../../../packages/components/result/src/result.ts","../../../packages/components/result/src/result.vue","../../../packages/components/result/src/result.vue","../../../packages/components/result/src/result.vue","../../../packages/components/result/index.ts","../../../node_modules/.pnpm/memoize-one@6.0.0/node_modules/memoize-one/dist/memoize-one.esm.js","../../../packages/components/virtual-list/src/hooks/use-cache.ts","../../../packages/components/virtual-list/src/defaults.ts","../../../packages/components/virtual-list/src/hooks/use-wheel.ts","../../../packages/components/virtual-list/src/props.ts","../../../packages/components/virtual-list/src/utils.ts","../../../packages/components/virtual-list/src/components/scrollbar.ts","../../../packages/components/virtual-list/src/builders/build-list.ts","../../../packages/components/virtual-list/src/components/fixed-size-list.ts","../../../packages/components/virtual-list/src/components/dynamic-size-list.ts","../../../packages/components/virtual-list/src/hooks/use-grid-wheel.ts","../../../packages/components/virtual-list/src/hooks/use-grid-touch.ts","../../../packages/components/virtual-list/src/builders/build-grid.ts","../../../packages/components/virtual-list/src/components/fixed-size-grid.ts","../../../packages/components/virtual-list/src/components/dynamic-size-grid.ts","../../../packages/components/select-v2/src/group-item.vue","../../../packages/components/select-v2/src/group-item.vue","../../../packages/components/select-v2/src/useOption.ts","../../../packages/components/select-v2/src/defaults.ts","../../../packages/components/select-v2/src/token.ts","../../../packages/components/select-v2/src/option-item.vue","../../../packages/components/select-v2/src/option-item.vue","../../../packages/components/select-v2/src/select-dropdown.tsx","../../../packages/components/select-v2/src/useAllowCreate.ts","../../../packages/components/select-v2/src/useSelect.ts","../../../packages/components/select-v2/src/select.vue","../../../packages/components/select-v2/src/select.vue","../../../packages/components/select-v2/index.ts","../../../packages/components/skeleton/src/skeleton.ts","../../../packages/components/skeleton/src/skeleton-item.ts","../../../packages/components/skeleton/src/skeleton-item.vue","../../../packages/components/skeleton/src/skeleton-item.vue","../../../packages/components/skeleton/src/skeleton-item.vue","../../../packages/components/skeleton/src/skeleton.vue","../../../packages/components/skeleton/src/skeleton.vue","../../../packages/components/skeleton/src/skeleton.vue","../../../packages/components/skeleton/index.ts","../../../packages/components/slider/src/constants.ts","../../../packages/components/slider/src/slider.ts","../../../packages/components/slider/src/composables/use-lifecycle.ts","../../../packages/components/slider/src/composables/use-marks.ts","../../../packages/components/slider/src/composables/use-slide.ts","../../../packages/components/slider/src/composables/use-slider-button.ts","../../../packages/components/slider/src/composables/use-stops.ts","../../../packages/components/slider/src/composables/use-watch.ts","../../../packages/components/slider/src/button.ts","../../../packages/components/slider/src/button.vue","../../../packages/components/slider/src/button.vue","../../../packages/components/slider/src/button.vue","../../../packages/components/slider/src/marker.ts","../../../packages/components/slider/src/slider.vue","../../../packages/components/slider/src/slider.vue","../../../packages/components/slider/src/slider.vue","../../../packages/components/slider/index.ts","../../../packages/components/space/src/item.ts","../../../packages/components/space/src/use-space.ts","../../../packages/components/space/src/space.ts","../../../packages/components/space/index.ts","../../../packages/components/steps/src/steps.ts","../../../packages/components/steps/src/tokens.ts","../../../packages/components/steps/src/steps.vue","../../../packages/components/steps/src/steps.vue","../../../packages/components/steps/src/steps.vue","../../../packages/components/steps/src/item.ts","../../../packages/components/steps/src/item.vue","../../../packages/components/steps/src/item.vue","../../../packages/components/steps/src/item.vue","../../../packages/components/steps/index.ts","../../../packages/components/switch/src/switch.ts","../../../packages/components/switch/src/switch.vue","../../../packages/components/switch/src/switch.vue","../../../packages/components/switch/src/switch.vue","../../../packages/components/switch/index.ts","../../../packages/components/table/src/util.ts","../../../packages/components/table/src/store/expand.ts","../../../packages/components/table/src/store/current.ts","../../../packages/components/table/src/store/tree.ts","../../../packages/components/table/src/store/watcher.ts","../../../packages/components/table/src/store/index.ts","../../../packages/components/table/src/store/helper.ts","../../../packages/components/table/src/table-layout.ts","../../../packages/components/table/src/filter-panel.vue","../../../packages/components/table/src/filter-panel.vue","../../../packages/components/table/src/layout-observer.ts","../../../packages/components/table/src/tokens.ts","../../../packages/components/table/src/table-header/event-helper.ts","../../../packages/components/table/src/table-header/style.helper.ts","../../../packages/components/table/src/table-header/utils-helper.ts","../../../packages/components/table/src/table-header/index.ts","../../../packages/components/table/src/table-body/events-helper.ts","../../../packages/components/table/src/table-body/styles-helper.ts","../../../packages/components/table/src/table-body/td-wrapper.vue","../../../packages/components/table/src/table-body/td-wrapper.vue","../../../packages/components/table/src/table-body/td-wrapper.vue","../../../packages/components/table/src/table-body/render-helper.ts","../../../packages/components/table/src/table-body/defaults.ts","../../../packages/components/table/src/table-body/index.ts","../../../packages/components/table/src/table-footer/mapState-helper.ts","../../../packages/components/table/src/table-footer/style-helper.ts","../../../packages/components/table/src/table-footer/index.ts","../../../packages/components/table/src/table/utils-helper.ts","../../../packages/components/table/src/table/style-helper.ts","../../../packages/components/table/src/table/key-render-helper.ts","../../../packages/components/table/src/table/defaults.ts","../../../packages/components/table/src/h-helper.ts","../../../packages/components/table/src/composables/use-scrollbar.ts","../../../packages/components/table/src/table.vue","../../../packages/components/table/src/table.vue","../../../packages/components/table/src/config.ts","../../../packages/components/table/src/table-column/watcher-helper.ts","../../../packages/components/table/src/table-column/render-helper.ts","../../../packages/components/table/src/table-column/defaults.ts","../../../packages/components/table/src/table-column/index.ts","../../../packages/components/table/src/tableColumn.ts","../../../packages/components/table/index.ts","../../../packages/components/table-v2/src/constants.ts","../../../packages/components/table-v2/src/private.ts","../../../packages/components/table-v2/src/composables/utils.ts","../../../packages/components/table-v2/src/composables/use-columns.ts","../../../packages/components/table-v2/src/composables/use-scrollbar.ts","../../../packages/components/table-v2/src/composables/use-row.ts","../../../packages/components/table-v2/src/composables/use-data.ts","../../../packages/components/table-v2/src/utils.ts","../../../packages/components/table-v2/src/composables/use-styles.ts","../../../packages/components/table-v2/src/composables/use-auto-resize.ts","../../../packages/components/table-v2/src/use-table.ts","../../../packages/components/table-v2/src/tokens.ts","../../../packages/components/table-v2/src/common.ts","../../../packages/components/table-v2/src/row.ts","../../../packages/components/table-v2/src/header.ts","../../../packages/components/table-v2/src/grid.ts","../../../packages/components/table-v2/src/table.ts","../../../packages/components/table-v2/src/components/cell.tsx","../../../packages/components/table-v2/src/components/header-cell.tsx","../../../packages/components/table-v2/src/header-row.ts","../../../packages/components/table-v2/src/components/header-row.tsx","../../../packages/components/table-v2/src/components/header.tsx","../../../packages/components/table-v2/src/components/row.tsx","../../../packages/components/table-v2/src/components/sort-icon.tsx","../../../packages/components/table-v2/src/components/expand-icon.tsx","../../../packages/components/table-v2/src/table-grid.tsx","../../../packages/components/table-v2/src/renderers/main-table.tsx","../../../packages/components/table-v2/src/renderers/left-table.tsx","../../../packages/components/table-v2/src/renderers/right-table.tsx","../../../packages/components/table-v2/src/renderers/row.tsx","../../../packages/components/table-v2/src/renderers/cell.tsx","../../../packages/components/table-v2/src/renderers/header.tsx","../../../packages/components/table-v2/src/renderers/header-cell.tsx","../../../packages/components/table-v2/src/renderers/footer.tsx","../../../packages/components/table-v2/src/renderers/empty.tsx","../../../packages/components/table-v2/src/renderers/overlay.tsx","../../../packages/components/table-v2/src/table-v2.tsx","../../../packages/components/table-v2/src/auto-resizer.ts","../../../packages/components/table-v2/src/components/auto-resizer.tsx","../../../packages/components/table-v2/index.ts","../../../packages/components/tabs/src/constants.ts","../../../packages/components/tabs/src/tab-bar.ts","../../../packages/components/tabs/src/tab-bar.vue","../../../packages/components/tabs/src/tab-bar.vue","../../../packages/components/tabs/src/tab-bar.vue","../../../packages/components/tabs/src/tab-nav.tsx","../../../packages/components/tabs/src/tabs.tsx","../../../packages/components/tabs/src/tab-pane.ts","../../../packages/components/tabs/src/tab-pane.vue","../../../packages/components/tabs/src/tab-pane.vue","../../../packages/components/tabs/src/tab-pane.vue","../../../packages/components/tabs/index.ts","../../../packages/components/text/src/text.ts","../../../packages/components/text/src/text.vue","../../../packages/components/text/src/text.vue","../../../packages/components/text/src/text.vue","../../../packages/components/text/index.ts","../../../packages/components/time-select/src/time-select.ts","../../../packages/components/time-select/src/utils.ts","../../../packages/components/time-select/src/time-select.vue","../../../packages/components/time-select/src/time-select.vue","../../../packages/components/time-select/src/time-select.vue","../../../packages/components/time-select/index.ts","../../../packages/components/timeline/src/tokens.ts","../../../packages/components/timeline/src/timeline.ts","../../../packages/components/timeline/src/timeline-item.ts","../../../packages/components/timeline/src/timeline-item.vue","../../../packages/components/timeline/src/timeline-item.vue","../../../packages/components/timeline/src/timeline-item.vue","../../../packages/components/timeline/index.ts","../../../packages/components/transfer/src/transfer.ts","../../../packages/components/transfer/src/transfer-panel.ts","../../../packages/components/transfer/src/composables/use-props-alias.ts","../../../packages/components/transfer/src/composables/use-check.ts","../../../packages/components/transfer/src/composables/use-checked-change.ts","../../../packages/components/transfer/src/composables/use-computed-data.ts","../../../packages/components/transfer/src/composables/use-move.ts","../../../packages/components/transfer/src/transfer-panel.vue","../../../packages/components/transfer/src/transfer-panel.vue","../../../packages/components/transfer/src/transfer-panel.vue","../../../packages/components/transfer/src/transfer.vue","../../../packages/components/transfer/src/transfer.vue","../../../packages/components/transfer/src/transfer.vue","../../../packages/components/transfer/index.ts","../../../packages/components/tree/src/model/util.ts","../../../packages/components/tree/src/model/node.ts","../../../packages/components/tree/src/model/tree-store.ts","../../../packages/components/tree/src/tokens.ts","../../../packages/components/tree/src/tree-node-content.vue","../../../packages/components/tree/src/tree-node-content.vue","../../../packages/components/tree/src/model/useNodeExpandEventBroadcast.ts","../../../packages/components/tree/src/model/useDragNode.ts","../../../packages/components/tree/src/tree-node.vue","../../../packages/components/tree/src/tree-node.vue","../../../packages/components/tree/src/model/useKeydown.ts","../../../packages/components/tree/src/tree.ts","../../../packages/components/tree/src/tree.vue","../../../packages/components/tree/src/tree.vue","../../../packages/components/tree/index.ts","../../../packages/components/tree-select/src/select.ts","../../../packages/components/tree-select/src/tree-select-option.ts","../../../packages/components/tree-select/src/utils.ts","../../../packages/components/tree-select/src/tree.ts","../../../packages/components/tree-select/src/cache-options.ts","../../../packages/components/tree-select/src/tree-select.vue","../../../packages/components/tree-select/src/tree-select.vue","../../../packages/components/tree-select/index.ts","../../../packages/components/tree-v2/src/virtual-tree.ts","../../../packages/components/tree-v2/src/composables/useCheck.ts","../../../packages/components/tree-v2/src/composables/useFilter.ts","../../../packages/components/tree-v2/src/composables/useTree.ts","../../../packages/components/tree-v2/src/tree-node-content.ts","../../../packages/components/tree-v2/src/tree-node.vue","../../../packages/components/tree-v2/src/tree-node.vue","../../../packages/components/tree-v2/src/tree-node.vue","../../../packages/components/tree-v2/src/tree.vue","../../../packages/components/tree-v2/src/tree.vue","../../../packages/components/tree-v2/src/tree.vue","../../../packages/components/tree-v2/index.ts","../../../packages/components/upload/src/ajax.ts","../../../packages/components/upload/src/upload.ts","../../../packages/components/upload/src/constants.ts","../../../packages/components/upload/src/upload-list.ts","../../../packages/components/upload/src/upload-list.vue","../../../packages/components/upload/src/upload-list.vue","../../../packages/components/upload/src/upload-list.vue","../../../packages/components/upload/src/upload-content.ts","../../../packages/components/upload/src/upload-dragger.ts","../../../packages/components/upload/src/upload-dragger.vue","../../../packages/components/upload/src/upload-dragger.vue","../../../packages/components/upload/src/upload-dragger.vue","../../../packages/components/upload/src/upload-content.vue","../../../packages/components/upload/src/upload-content.vue","../../../packages/components/upload/src/upload-content.vue","../../../packages/components/upload/src/use-handlers.ts","../../../packages/components/upload/src/upload.vue","../../../packages/components/upload/src/upload.vue","../../../packages/components/upload/src/upload.vue","../../../packages/components/upload/index.ts","../../../packages/components/watermark/src/watermark.ts","../../../packages/components/watermark/src/utils.ts","../../../packages/components/watermark/src/useClips.ts","../../../packages/components/watermark/src/watermark.vue","../../../packages/components/watermark/src/watermark.vue","../../../packages/components/watermark/src/watermark.vue","../../../packages/components/watermark/index.ts","../../../packages/components/tour/src/content.ts","../../../packages/components/tour/src/tour.ts","../../../packages/components/tour/src/mask.ts","../../../packages/components/tour/src/helper.ts","../../../packages/components/tour/src/mask.vue","../../../packages/components/tour/src/mask.vue","../../../packages/components/tour/src/mask.vue","../../../packages/components/tour/src/content.vue","../../../packages/components/tour/src/content.vue","../../../packages/components/tour/src/content.vue","../../../packages/components/tour/src/steps.ts","../../../packages/components/tour/src/tour.vue","../../../packages/components/tour/src/tour.vue","../../../packages/components/tour/src/tour.vue","../../../packages/components/tour/src/step.ts","../../../packages/components/tour/src/step.vue","../../../packages/components/tour/src/step.vue","../../../packages/components/tour/src/step.vue","../../../packages/components/tour/index.ts","../../../packages/components/anchor/src/anchor.ts","../../../packages/components/anchor/src/constants.ts","../../../packages/components/anchor/src/anchor.vue","../../../packages/components/anchor/src/anchor.vue","../../../packages/components/anchor/src/anchor.vue","../../../packages/components/anchor/src/anchor-link.ts","../../../packages/components/anchor/src/anchor-link.vue","../../../packages/components/anchor/src/anchor-link.vue","../../../packages/components/anchor/src/anchor-link.vue","../../../packages/components/anchor/index.ts","../../../packages/components/segmented/src/segmented.ts","../../../packages/components/segmented/src/segmented.vue","../../../packages/components/segmented/src/segmented.vue","../../../packages/components/segmented/src/segmented.vue","../../../packages/components/segmented/index.ts","../../../packages/components/mention/src/helper.ts","../../../packages/components/mention/src/mention.ts","../../../packages/components/mention/src/mention-dropdown.ts","../../../packages/components/mention/src/mention-dropdown.vue","../../../packages/components/mention/src/mention-dropdown.vue","../../../packages/components/mention/src/mention-dropdown.vue","../../../packages/components/mention/src/mention.vue","../../../packages/components/mention/src/mention.vue","../../../packages/components/mention/src/mention.vue","../../../packages/components/mention/index.ts","../../../packages/components/splitter/src/splitter.ts","../../../packages/components/splitter/src/hooks/useContainer.ts","../../../packages/components/splitter/src/hooks/useSize.ts","../../../packages/components/splitter/src/hooks/useResize.ts","../../../packages/components/splitter/src/type.ts","../../../packages/components/splitter/src/splitter.vue","../../../packages/components/splitter/src/splitter.vue","../../../packages/components/splitter/src/splitter.vue","../../../packages/components/splitter/src/split-panel.ts","../../../packages/components/splitter/src/hooks/usePanel.ts","../../../packages/components/splitter/src/split-bar.vue","../../../packages/components/splitter/src/split-bar.vue","../../../packages/components/splitter/src/split-bar.vue","../../../packages/components/splitter/src/split-panel.vue","../../../packages/components/splitter/src/split-panel.vue","../../../packages/components/splitter/src/split-panel.vue","../../../packages/components/splitter/index.ts","../../../packages/components/infinite-scroll/src/index.ts","../../../packages/components/infinite-scroll/index.ts","../../../packages/components/loading/src/loading.ts","../../../packages/components/loading/src/service.ts","../../../packages/components/loading/src/directive.ts","../../../packages/components/loading/index.ts","../../../packages/components/message/src/message.ts","../../../packages/components/message/src/instance.ts","../../../packages/components/message/src/message.vue","../../../packages/components/message/src/message.vue","../../../packages/components/message/src/message.vue","../../../packages/components/message/src/method.ts","../../../packages/components/message/index.ts","../../../packages/components/message-box/src/index.vue","../../../packages/components/message-box/src/index.vue","../../../packages/components/message-box/src/messageBox.ts","../../../packages/components/message-box/index.ts","../../../packages/components/notification/src/notification.ts","../../../packages/components/notification/src/notification.vue","../../../packages/components/notification/src/notification.vue","../../../packages/components/notification/src/notification.vue","../../../packages/components/notification/src/notify.ts","../../../packages/components/notification/index.ts","../../../packages/components/popover/src/popover.ts","../../../packages/components/popover/src/popover.vue","../../../packages/components/popover/src/popover.vue","../../../packages/components/popover/src/popover.vue","../../../packages/components/popover/src/directive.ts","../../../packages/components/popover/index.ts","../../../packages/hooks/use-message/index.ts","../../../packages/hooks/use-compone-ref/index.ts","../../../packages/hooks/use-form-base-state/index.ts","../../../packages/components/config-provider/src/constants.ts","../../../packages/components/config-provider/src/hooks/use-global-config.ts","../../../packages/components/config-provider/src/config-provider-props.ts","../../../packages/components/config-provider/src/config-provider.ts","../../../packages/components/config-provider/index.ts","../../../packages/element-plus/version.ts","../../../packages/element-plus/make-installer.ts","../../../packages/element-plus/component.ts","../../../packages/element-plus/plugin.ts","../../../packages/element-plus/defaults.ts","../../../packages/element-plus/index.ts"],"sourcesContent":["const FOCUSABLE_ELEMENT_SELECTORS = `a[href],button:not([disabled]),button:not([hidden]),:not([tabindex=\"-1\"]),input:not([disabled]),input:not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled])`\n\nexport const isShadowRoot = (e: unknown): e is ShadowRoot => {\n  if (typeof ShadowRoot === 'undefined') return false\n  return e instanceof ShadowRoot\n}\n\nconst isHTMLElement = (e: unknown): e is Element => {\n  if (typeof Element === 'undefined') return false\n  return e instanceof Element\n}\n\n/**\n * Determine if the testing element is visible on screen no matter if its on the viewport or not\n */\nexport const isVisible = (element: HTMLElement) => {\n  if (process.env.NODE_ENV === 'test') return true\n  const computed = getComputedStyle(element)\n  // element.offsetParent won't work on fix positioned\n  // WARNING: potential issue here, going to need some expert advices on this issue\n  return computed.position === 'fixed' ? false : element.offsetParent !== null\n}\n\nexport const obtainAllFocusableElements = (\n  element: HTMLElement\n): HTMLElement[] => {\n  return Array.from(\n    element.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENT_SELECTORS)\n  ).filter((item: HTMLElement) => isFocusable(item) && isVisible(item))\n}\n\n/**\n * @desc Determine if target element is focusable\n * @param element {HTMLElement}\n * @returns {Boolean} true if it is focusable\n */\nexport const isFocusable = (element: HTMLElement): boolean => {\n  if (\n    element.tabIndex > 0 ||\n    (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)\n  ) {\n    return true\n  }\n  if (\n    element.tabIndex < 0 ||\n    element.hasAttribute('disabled') ||\n    element.getAttribute('aria-disabled') === 'true'\n  ) {\n    return false\n  }\n\n  switch (element.nodeName) {\n    case 'A': {\n      // casting current element to Specific HTMLElement in order to be more type precise\n      return (\n        !!(element as HTMLAnchorElement).href &&\n        (element as HTMLAnchorElement).rel !== 'ignore'\n      )\n    }\n    case 'INPUT': {\n      return !(\n        (element as HTMLInputElement).type === 'hidden' ||\n        (element as HTMLInputElement).type === 'file'\n      )\n    }\n    case 'BUTTON':\n    case 'SELECT':\n    case 'TEXTAREA': {\n      return true\n    }\n    default: {\n      return false\n    }\n  }\n}\n\n/**\n * Trigger an event\n * mouseenter, mouseleave, mouseover, keyup, change, click, etc.\n * @param  {HTMLElement} elm\n * @param  {String} name\n * @param  {*} opts\n */\nexport const triggerEvent = function (\n  elm: HTMLElement,\n  name: string,\n  ...opts: Array<boolean>\n): HTMLElement {\n  let eventName: string\n\n  if (name.includes('mouse') || name.includes('click')) {\n    eventName = 'MouseEvents'\n  } else if (name.includes('key')) {\n    eventName = 'KeyboardEvent'\n  } else {\n    eventName = 'HTMLEvents'\n  }\n  const evt = document.createEvent(eventName)\n\n  evt.initEvent(name, ...opts)\n  elm.dispatchEvent(evt)\n  return elm\n}\n\nexport const isLeaf = (el: HTMLElement) => !el.getAttribute('aria-owns')\n\nexport const getSibling = (\n  el: HTMLElement,\n  distance: number,\n  elClass: string\n) => {\n  const { parentNode } = el\n  if (!parentNode) return null\n  const siblings = parentNode.querySelectorAll(elClass)\n  const index = Array.prototype.indexOf.call(siblings, el)\n  return siblings[index + distance] || null\n}\n\nexport const focusElement = (\n  el?: HTMLElement | { focus: () => void } | null,\n  options?: FocusOptions\n) => {\n  if (!el || !el.focus) return\n  let cleanup: boolean = false\n\n  if (isHTMLElement(el) && !isFocusable(el) && !el.getAttribute('tabindex')) {\n    el.setAttribute('tabindex', '-1')\n    cleanup = true\n  }\n\n  el.focus(options)\n\n  if (isHTMLElement(el) && cleanup) {\n    el.removeAttribute('tabindex')\n  }\n}\n\nexport const focusNode = (el: HTMLElement) => {\n  if (!el) return\n  focusElement(el)\n  !isLeaf(el) && el.click()\n}\n","export const EVENT_CODE = {\n  tab: 'Tab',\n  enter: 'Enter',\n  space: 'Space',\n  left: 'ArrowLeft', // 37\n  up: 'ArrowUp', // 38\n  right: 'ArrowRight', // 39\n  down: 'ArrowDown', // 40\n  esc: 'Escape',\n  delete: 'Delete',\n  backspace: 'Backspace',\n  numpadEnter: 'NumpadEnter',\n  pageUp: 'PageUp',\n  pageDown: 'PageDown',\n  home: 'Home',\n  end: 'End',\n}\n","export const datePickTypes = [\n  'year',\n  'years',\n  'month',\n  'months',\n  'date',\n  'dates',\n  'week',\n  'datetime',\n  'datetimerange',\n  'daterange',\n  'monthrange',\n  'yearrange',\n] as const\n\nexport const WEEK_DAYS = [\n  'sun',\n  'mon',\n  'tue',\n  'wed',\n  'thu',\n  'fri',\n  'sat',\n] as const\n\nexport type DatePickType = (typeof datePickTypes)[number]\n","export const UPDATE_MODEL_EVENT = 'update:modelValue'\nexport const CHANGE_EVENT = 'change'\nexport const INPUT_EVENT = 'input'\n","export const INSTALLED_KEY = Symbol('INSTALLED_KEY')\n","export const componentSizes = ['', 'default', 'small', 'large'] as const\n\nexport type ComponentSize = (typeof componentSizes)[number]\n\nexport const componentSizeMap = {\n  large: 40,\n  default: 32,\n  small: 24,\n} as const\n","export const columnAlignment = ['left', 'center', 'right'] as const\n\nexport type ColumnAlignment = (typeof columnAlignment)[number]\n","export const MINIMUM_INPUT_WIDTH = 11\nexport const BORDER_HORIZONTAL_WIDTH = 2\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, inject, provide, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue';\n\nfunction computedEager(fn, options) {\n  var _a;\n  const result = shallowRef();\n  watchEffect(() => {\n    result.value = fn();\n  }, {\n    ...options,\n    flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n  });\n  return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n  let v = void 0;\n  let track;\n  let trigger;\n  const dirty = ref(true);\n  const update = () => {\n    dirty.value = true;\n    trigger();\n  };\n  watch(source, update, { flush: \"sync\" });\n  const get = typeof fn === \"function\" ? fn : fn.get;\n  const set = typeof fn === \"function\" ? void 0 : fn.set;\n  const result = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        if (dirty.value) {\n          v = get(v);\n          dirty.value = false;\n        }\n        track();\n        return v;\n      },\n      set(v2) {\n        set == null ? void 0 : set(v2);\n      }\n    };\n  });\n  if (Object.isExtensible(result))\n    result.trigger = update;\n  return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n  if (getCurrentScope()) {\n    onScopeDispose(fn);\n    return true;\n  }\n  return false;\n}\n\nfunction createEventHook() {\n  const fns = /* @__PURE__ */ new Set();\n  const off = (fn) => {\n    fns.delete(fn);\n  };\n  const on = (fn) => {\n    fns.add(fn);\n    const offFn = () => off(fn);\n    tryOnScopeDispose(offFn);\n    return {\n      off: offFn\n    };\n  };\n  const trigger = (...args) => {\n    return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n  };\n  return {\n    on,\n    off,\n    trigger\n  };\n}\n\nfunction createGlobalState(stateFactory) {\n  let initialized = false;\n  let state;\n  const scope = effectScope(true);\n  return (...args) => {\n    if (!initialized) {\n      state = scope.run(() => stateFactory(...args));\n      initialized = true;\n    }\n    return state;\n  };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst injectLocal = (...args) => {\n  var _a;\n  const key = args[0];\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"injectLocal must be called in setup\");\n  if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n    return localProvidedStateMap.get(instance)[key];\n  return inject(...args);\n};\n\nconst provideLocal = (key, value) => {\n  var _a;\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"provideLocal must be called in setup\");\n  if (!localProvidedStateMap.has(instance))\n    localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n  const localProvidedState = localProvidedStateMap.get(instance);\n  localProvidedState[key] = value;\n  provide(key, value);\n};\n\nfunction createInjectionState(composable, options) {\n  const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n  const defaultValue = options == null ? void 0 : options.defaultValue;\n  const useProvidingState = (...args) => {\n    const state = composable(...args);\n    provideLocal(key, state);\n    return state;\n  };\n  const useInjectedState = () => injectLocal(key, defaultValue);\n  return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n  let subscribers = 0;\n  let state;\n  let scope;\n  const dispose = () => {\n    subscribers -= 1;\n    if (scope && subscribers <= 0) {\n      scope.stop();\n      state = void 0;\n      scope = void 0;\n    }\n  };\n  return (...args) => {\n    subscribers += 1;\n    if (!scope) {\n      scope = effectScope(true);\n      state = scope.run(() => composable(...args));\n    }\n    tryOnScopeDispose(dispose);\n    return state;\n  };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n  for (const [key, value] of Object.entries(extend)) {\n    if (key === \"value\")\n      continue;\n    if (isRef(value) && unwrap) {\n      Object.defineProperty(ref, key, {\n        get() {\n          return value.value;\n        },\n        set(v) {\n          value.value = v;\n        },\n        enumerable\n      });\n    } else {\n      Object.defineProperty(ref, key, { value, enumerable });\n    }\n  }\n  return ref;\n}\n\nfunction get(obj, key) {\n  if (key == null)\n    return unref(obj);\n  return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n  return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n  if (typeof Symbol !== \"undefined\") {\n    const clone = { ...obj };\n    Object.defineProperty(clone, Symbol.iterator, {\n      enumerable: false,\n      value() {\n        let index = 0;\n        return {\n          next: () => ({\n            value: arr[index++],\n            done: index > arr.length\n          })\n        };\n      }\n    });\n    return clone;\n  } else {\n    return Object.assign([...arr], obj);\n  }\n}\n\nfunction toValue(r) {\n  return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n  const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n  return function(...args) {\n    return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n  };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n  let keys = [];\n  let options;\n  if (Array.isArray(optionsOrKeys)) {\n    keys = optionsOrKeys;\n  } else {\n    options = optionsOrKeys;\n    const { includeOwnProperties = true } = optionsOrKeys;\n    keys.push(...Object.keys(obj));\n    if (includeOwnProperties)\n      keys.push(...Object.getOwnPropertyNames(obj));\n  }\n  return Object.fromEntries(\n    keys.map((key) => {\n      const value = obj[key];\n      return [\n        key,\n        typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n      ];\n    })\n  );\n}\n\nfunction toReactive(objectRef) {\n  if (!isRef(objectRef))\n    return reactive(objectRef);\n  const proxy = new Proxy({}, {\n    get(_, p, receiver) {\n      return unref(Reflect.get(objectRef.value, p, receiver));\n    },\n    set(_, p, value) {\n      if (isRef(objectRef.value[p]) && !isRef(value))\n        objectRef.value[p].value = value;\n      else\n        objectRef.value[p] = value;\n      return true;\n    },\n    deleteProperty(_, p) {\n      return Reflect.deleteProperty(objectRef.value, p);\n    },\n    has(_, p) {\n      return Reflect.has(objectRef.value, p);\n    },\n    ownKeys() {\n      return Object.keys(objectRef.value);\n    },\n    getOwnPropertyDescriptor() {\n      return {\n        enumerable: true,\n        configurable: true\n      };\n    }\n  });\n  return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n  return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n  if (!condition)\n    console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n  min = Math.ceil(min);\n  max = Math.floor(max);\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n  var _a, _b;\n  return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction createFilterWrapper(filter, fn) {\n  function wrapper(...args) {\n    return new Promise((resolve, reject) => {\n      Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n    });\n  }\n  return wrapper;\n}\nconst bypassFilter = (invoke) => {\n  return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n  let timer;\n  let maxTimer;\n  let lastRejector = noop;\n  const _clearTimeout = (timer2) => {\n    clearTimeout(timer2);\n    lastRejector();\n    lastRejector = noop;\n  };\n  const filter = (invoke) => {\n    const duration = toValue(ms);\n    const maxDuration = toValue(options.maxWait);\n    if (timer)\n      _clearTimeout(timer);\n    if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n      if (maxTimer) {\n        _clearTimeout(maxTimer);\n        maxTimer = null;\n      }\n      return Promise.resolve(invoke());\n    }\n    return new Promise((resolve, reject) => {\n      lastRejector = options.rejectOnCancel ? reject : resolve;\n      if (maxDuration && !maxTimer) {\n        maxTimer = setTimeout(() => {\n          if (timer)\n            _clearTimeout(timer);\n          maxTimer = null;\n          resolve(invoke());\n        }, maxDuration);\n      }\n      timer = setTimeout(() => {\n        if (maxTimer)\n          _clearTimeout(maxTimer);\n        maxTimer = null;\n        resolve(invoke());\n      }, duration);\n    });\n  };\n  return filter;\n}\nfunction throttleFilter(...args) {\n  let lastExec = 0;\n  let timer;\n  let isLeading = true;\n  let lastRejector = noop;\n  let lastValue;\n  let ms;\n  let trailing;\n  let leading;\n  let rejectOnCancel;\n  if (!isRef(args[0]) && typeof args[0] === \"object\")\n    ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n  else\n    [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n  const clear = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n      lastRejector();\n      lastRejector = noop;\n    }\n  };\n  const filter = (_invoke) => {\n    const duration = toValue(ms);\n    const elapsed = Date.now() - lastExec;\n    const invoke = () => {\n      return lastValue = _invoke();\n    };\n    clear();\n    if (duration <= 0) {\n      lastExec = Date.now();\n      return invoke();\n    }\n    if (elapsed > duration && (leading || !isLeading)) {\n      lastExec = Date.now();\n      invoke();\n    } else if (trailing) {\n      lastValue = new Promise((resolve, reject) => {\n        lastRejector = rejectOnCancel ? reject : resolve;\n        timer = setTimeout(() => {\n          lastExec = Date.now();\n          isLeading = true;\n          resolve(invoke());\n          clear();\n        }, Math.max(0, duration - elapsed));\n      });\n    }\n    if (!leading && !timer)\n      timer = setTimeout(() => isLeading = true, duration);\n    isLeading = false;\n    return lastValue;\n  };\n  return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n  const isActive = ref(true);\n  function pause() {\n    isActive.value = false;\n  }\n  function resume() {\n    isActive.value = true;\n  }\n  const eventFilter = (...args) => {\n    if (isActive.value)\n      extendFilter(...args);\n  };\n  return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction cacheStringFunction(fn) {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n  return new Promise((resolve, reject) => {\n    if (throwOnTimeout)\n      setTimeout(() => reject(reason), ms);\n    else\n      setTimeout(resolve, ms);\n  });\n}\nfunction identity(arg) {\n  return arg;\n}\nfunction createSingletonPromise(fn) {\n  let _promise;\n  function wrapper() {\n    if (!_promise)\n      _promise = fn();\n    return _promise;\n  }\n  wrapper.reset = async () => {\n    const _prev = _promise;\n    _promise = void 0;\n    if (_prev)\n      await _prev;\n  };\n  return wrapper;\n}\nfunction invoke(fn) {\n  return fn();\n}\nfunction containsProp(obj, ...props) {\n  return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n  var _a;\n  if (typeof target === \"number\")\n    return target + delta;\n  const value = ((_a = target.match(/^-?\\d+\\.?\\d*/)) == null ? void 0 : _a[0]) || \"\";\n  const unit = target.slice(value.length);\n  const result = Number.parseFloat(value) + delta;\n  if (Number.isNaN(result))\n    return target;\n  return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n  return keys.reduce((n, k) => {\n    if (k in obj) {\n      if (!omitUndefined || obj[k] !== void 0)\n        n[k] = obj[k];\n    }\n    return n;\n  }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n  return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n    return (!omitUndefined || value !== void 0) && !keys.includes(key);\n  }));\n}\nfunction objectEntries(obj) {\n  return Object.entries(obj);\n}\nfunction getLifeCycleTarget(target) {\n  return target || getCurrentInstance();\n}\n\nfunction toRef(...args) {\n  if (args.length !== 1)\n    return toRef$1(...args);\n  const r = args[0];\n  return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n  return customRef((track, trigger) => {\n    let value = toValue(defaultValue);\n    let timer;\n    const resetAfter = () => setTimeout(() => {\n      value = toValue(defaultValue);\n      trigger();\n    }, toValue(afterMs));\n    tryOnScopeDispose(() => {\n      clearTimeout(timer);\n    });\n    return {\n      get() {\n        track();\n        return value;\n      },\n      set(newValue) {\n        value = newValue;\n        trigger();\n        clearTimeout(timer);\n        timer = resetAfter();\n      }\n    };\n  });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n  return createFilterWrapper(\n    debounceFilter(ms, options),\n    fn\n  );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n  const debounced = ref(value.value);\n  const updater = useDebounceFn(() => {\n    debounced.value = value.value;\n  }, ms, options);\n  watch(value, () => updater());\n  return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n  return computed({\n    get() {\n      var _a;\n      return (_a = source.value) != null ? _a : defaultValue;\n    },\n    set(value) {\n      source.value = value;\n    }\n  });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n  return createFilterWrapper(\n    throttleFilter(ms, trailing, leading, rejectOnCancel),\n    fn\n  );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n  if (delay <= 0)\n    return value;\n  const throttled = ref(value.value);\n  const updater = useThrottleFn(() => {\n    throttled.value = value.value;\n  }, delay, trailing, leading);\n  watch(value, () => updater());\n  return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n  let source = initial;\n  let track;\n  let trigger;\n  const ref = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        return get();\n      },\n      set(v) {\n        set(v);\n      }\n    };\n  });\n  function get(tracking = true) {\n    if (tracking)\n      track();\n    return source;\n  }\n  function set(value, triggering = true) {\n    var _a, _b;\n    if (value === source)\n      return;\n    const old = source;\n    if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n      return;\n    source = value;\n    (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n    if (triggering)\n      trigger();\n  }\n  const untrackedGet = () => get(false);\n  const silentSet = (v) => set(v, false);\n  const peek = () => get(false);\n  const lay = (v) => set(v, false);\n  return extendRef(\n    ref,\n    {\n      get,\n      set,\n      untrackedGet,\n      silentSet,\n      peek,\n      lay\n    },\n    { enumerable: true }\n  );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n  if (args.length === 2) {\n    const [ref, value] = args;\n    ref.value = value;\n  }\n  if (args.length === 3) {\n    const [target, key, value] = args;\n    target[key] = value;\n  }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  return watch(\n    source,\n    createFilterWrapper(\n      eventFilter,\n      cb\n    ),\n    watchOptions\n  );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n  const {\n    eventFilter: filter,\n    ...watchOptions\n  } = options;\n  const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n  const stop = watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter\n    }\n  );\n  return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true,\n    direction = \"both\",\n    transform = {}\n  } = options || {};\n  const watchers = [];\n  const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n  const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n  if (direction === \"both\" || direction === \"ltr\") {\n    watchers.push(watchPausable(\n      left,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        right.value = transformLTR(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  if (direction === \"both\" || direction === \"rtl\") {\n    watchers.push(watchPausable(\n      right,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        left.value = transformRTL(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  const stop = () => {\n    watchers.forEach((w) => w.stop());\n  };\n  return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true\n  } = options;\n  if (!Array.isArray(targets))\n    targets = [targets];\n  return watch(\n    source,\n    (newValue) => targets.forEach((target) => target.value = newValue),\n    { flush, deep, immediate }\n  );\n}\n\nfunction toRefs(objectRef, options = {}) {\n  if (!isRef(objectRef))\n    return toRefs$1(objectRef);\n  const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n  for (const key in objectRef.value) {\n    result[key] = customRef(() => ({\n      get() {\n        return objectRef.value[key];\n      },\n      set(v) {\n        var _a;\n        const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n        if (replaceRef) {\n          if (Array.isArray(objectRef.value)) {\n            const copy = [...objectRef.value];\n            copy[key] = v;\n            objectRef.value = copy;\n          } else {\n            const newObject = { ...objectRef.value, [key]: v };\n            Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n            objectRef.value = newObject;\n          }\n        } else {\n          objectRef.value[key] = v;\n        }\n      }\n    }));\n  }\n  return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n  const instance = getLifeCycleTarget(target);\n  if (instance)\n    onBeforeMount(fn, target);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n  const instance = getLifeCycleTarget(target);\n  if (instance)\n    onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n  const instance = getLifeCycleTarget();\n  if (instance)\n    onMounted(fn, target);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n  const instance = getLifeCycleTarget(target);\n  if (instance)\n    onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n  function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        r,\n        (v) => {\n          if (condition(v) !== isNot) {\n            if (stop)\n              stop();\n            else\n              nextTick(() => stop == null ? void 0 : stop());\n            resolve(v);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBe(value, options) {\n    if (!isRef(value))\n      return toMatch((v) => v === value, options);\n    const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        [r, value],\n        ([v1, v2]) => {\n          if (isNot !== (v1 === v2)) {\n            if (stop)\n              stop();\n            else\n              nextTick(() => stop == null ? void 0 : stop());\n            resolve(v1);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n          stop == null ? void 0 : stop();\n          return toValue(r);\n        })\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBeTruthy(options) {\n    return toMatch((v) => Boolean(v), options);\n  }\n  function toBeNull(options) {\n    return toBe(null, options);\n  }\n  function toBeUndefined(options) {\n    return toBe(void 0, options);\n  }\n  function toBeNaN(options) {\n    return toMatch(Number.isNaN, options);\n  }\n  function toContains(value, options) {\n    return toMatch((v) => {\n      const array = Array.from(v);\n      return array.includes(value) || array.includes(toValue(value));\n    }, options);\n  }\n  function changed(options) {\n    return changedTimes(1, options);\n  }\n  function changedTimes(n = 1, options) {\n    let count = -1;\n    return toMatch(() => {\n      count += 1;\n      return count >= n;\n    }, options);\n  }\n  if (Array.isArray(toValue(r))) {\n    const instance = {\n      toMatch,\n      toContains,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  } else {\n    const instance = {\n      toMatch,\n      toBe,\n      toBeTruthy,\n      toBeNull,\n      toBeNaN,\n      toBeUndefined,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  }\n}\nfunction until(r) {\n  return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n  return value === othVal;\n}\nfunction useArrayDifference(...args) {\n  var _a;\n  const list = args[0];\n  const values = args[1];\n  let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n  if (typeof compareFn === \"string\") {\n    const key = compareFn;\n    compareFn = (value, othVal) => value[key] === othVal[key];\n  }\n  return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n  return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n  return computed(() => toValue(\n    toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n  return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n  let index = arr.length;\n  while (index-- > 0) {\n    if (cb(arr[index], index, arr))\n      return arr[index];\n  }\n  return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n  return computed(() => toValue(\n    !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n  return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n  var _a;\n  const list = args[0];\n  const value = args[1];\n  let comparator = args[2];\n  let formIndex = 0;\n  if (isArrayIncludesOptions(comparator)) {\n    formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n    comparator = comparator.comparator;\n  }\n  if (typeof comparator === \"string\") {\n    const key = comparator;\n    comparator = (element, value2) => element[key] === toValue(value2);\n  }\n  comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n  return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n    toValue(element),\n    toValue(value),\n    index,\n    toValue(array)\n  )));\n}\n\nfunction useArrayJoin(list, separator) {\n  return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n  const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n  return computed(() => {\n    const resolved = toValue(list);\n    return args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue(args[0]()) : toValue(args[0])) : resolved.reduce(reduceCallback);\n  });\n}\n\nfunction useArraySome(list, fn) {\n  return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n  return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n  return array.reduce((acc, v) => {\n    if (!acc.some((x) => fn(v, x, array)))\n      acc.push(v);\n    return acc;\n  }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n  return computed(() => {\n    const resolvedList = toValue(list).map((element) => toValue(element));\n    return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n  });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n  let _initialValue = unref(initialValue);\n  const count = ref(initialValue);\n  const {\n    max = Number.POSITIVE_INFINITY,\n    min = Number.NEGATIVE_INFINITY\n  } = options;\n  const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n  const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n  const get = () => count.value;\n  const set = (val) => count.value = Math.max(min, Math.min(max, val));\n  const reset = (val = _initialValue) => {\n    _initialValue = val;\n    return set(val);\n  };\n  return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n  let m = hours < 12 ? \"AM\" : \"PM\";\n  if (hasPeriod)\n    m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n  return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n  const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n  const v = num % 100;\n  return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n  var _a;\n  const years = date.getFullYear();\n  const month = date.getMonth();\n  const days = date.getDate();\n  const hours = date.getHours();\n  const minutes = date.getMinutes();\n  const seconds = date.getSeconds();\n  const milliseconds = date.getMilliseconds();\n  const day = date.getDay();\n  const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n  const matches = {\n    Yo: () => formatOrdinal(years),\n    YY: () => String(years).slice(-2),\n    YYYY: () => years,\n    M: () => month + 1,\n    Mo: () => formatOrdinal(month + 1),\n    MM: () => `${month + 1}`.padStart(2, \"0\"),\n    MMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"short\" }),\n    MMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"long\" }),\n    D: () => String(days),\n    Do: () => formatOrdinal(days),\n    DD: () => `${days}`.padStart(2, \"0\"),\n    H: () => String(hours),\n    Ho: () => formatOrdinal(hours),\n    HH: () => `${hours}`.padStart(2, \"0\"),\n    h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n    ho: () => formatOrdinal(hours % 12 || 12),\n    hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n    m: () => String(minutes),\n    mo: () => formatOrdinal(minutes),\n    mm: () => `${minutes}`.padStart(2, \"0\"),\n    s: () => String(seconds),\n    so: () => formatOrdinal(seconds),\n    ss: () => `${seconds}`.padStart(2, \"0\"),\n    SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n    d: () => day,\n    dd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"narrow\" }),\n    ddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"short\" }),\n    dddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"long\" }),\n    A: () => meridiem(hours, minutes),\n    AA: () => meridiem(hours, minutes, false, true),\n    a: () => meridiem(hours, minutes, true),\n    aa: () => meridiem(hours, minutes, true, true)\n  };\n  return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n    var _a2, _b;\n    return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n  });\n}\nfunction normalizeDate(date) {\n  if (date === null)\n    return new Date(Number.NaN);\n  if (date === void 0)\n    return /* @__PURE__ */ new Date();\n  if (date instanceof Date)\n    return new Date(date);\n  if (typeof date === \"string\" && !/Z$/i.test(date)) {\n    const d = date.match(REGEX_PARSE);\n    if (d) {\n      const m = d[2] - 1 || 0;\n      const ms = (d[7] || \"0\").substring(0, 3);\n      return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n    }\n  }\n  return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n  return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n  const {\n    immediate = true,\n    immediateCallback = false\n  } = options;\n  let timer = null;\n  const isActive = ref(false);\n  function clean() {\n    if (timer) {\n      clearInterval(timer);\n      timer = null;\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    clean();\n  }\n  function resume() {\n    const intervalValue = toValue(interval);\n    if (intervalValue <= 0)\n      return;\n    isActive.value = true;\n    if (immediateCallback)\n      cb();\n    clean();\n    if (isActive.value)\n      timer = setInterval(cb, intervalValue);\n  }\n  if (immediate && isClient)\n    resume();\n  if (isRef(interval) || typeof interval === \"function\") {\n    const stopWatch = watch(interval, () => {\n      if (isActive.value && isClient)\n        resume();\n    });\n    tryOnScopeDispose(stopWatch);\n  }\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    immediate = true,\n    callback\n  } = options;\n  const counter = ref(0);\n  const update = () => counter.value += 1;\n  const reset = () => {\n    counter.value = 0;\n  };\n  const controls = useIntervalFn(\n    callback ? () => {\n      update();\n      callback(counter.value);\n    } : update,\n    interval,\n    { immediate }\n  );\n  if (exposeControls) {\n    return {\n      counter,\n      reset,\n      ...controls\n    };\n  } else {\n    return counter;\n  }\n}\n\nfunction useLastChanged(source, options = {}) {\n  var _a;\n  const ms = ref((_a = options.initialValue) != null ? _a : null);\n  watch(\n    source,\n    () => ms.value = timestamp(),\n    options\n  );\n  return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n  const {\n    immediate = true\n  } = options;\n  const isPending = ref(false);\n  let timer = null;\n  function clear() {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  }\n  function stop() {\n    isPending.value = false;\n    clear();\n  }\n  function start(...args) {\n    clear();\n    isPending.value = true;\n    timer = setTimeout(() => {\n      isPending.value = false;\n      timer = null;\n      cb(...args);\n    }, toValue(interval));\n  }\n  if (immediate) {\n    isPending.value = true;\n    if (isClient)\n      start();\n  }\n  tryOnScopeDispose(stop);\n  return {\n    isPending: readonly(isPending),\n    start,\n    stop\n  };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    callback\n  } = options;\n  const controls = useTimeoutFn(\n    callback != null ? callback : noop,\n    interval,\n    options\n  );\n  const ready = computed(() => !controls.isPending.value);\n  if (exposeControls) {\n    return {\n      ready,\n      ...controls\n    };\n  } else {\n    return ready;\n  }\n}\n\nfunction useToNumber(value, options = {}) {\n  const {\n    method = \"parseFloat\",\n    radix,\n    nanToZero\n  } = options;\n  return computed(() => {\n    let resolved = toValue(value);\n    if (typeof resolved === \"string\")\n      resolved = Number[method](resolved, radix);\n    if (nanToZero && Number.isNaN(resolved))\n      resolved = 0;\n    return resolved;\n  });\n}\n\nfunction useToString(value) {\n  return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n  const {\n    truthyValue = true,\n    falsyValue = false\n  } = options;\n  const valueIsRef = isRef(initialValue);\n  const _value = ref(initialValue);\n  function toggle(value) {\n    if (arguments.length) {\n      _value.value = value;\n      return _value.value;\n    } else {\n      const truthy = toValue(truthyValue);\n      _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n      return _value.value;\n    }\n  }\n  if (valueIsRef)\n    return toggle;\n  else\n    return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n  let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n  return watch(source, (newList, _, onCleanup) => {\n    const oldListRemains = Array.from({ length: oldList.length });\n    const added = [];\n    for (const obj of newList) {\n      let found = false;\n      for (let i = 0; i < oldList.length; i++) {\n        if (!oldListRemains[i] && obj === oldList[i]) {\n          oldListRemains[i] = true;\n          found = true;\n          break;\n        }\n      }\n      if (!found)\n        added.push(obj);\n    }\n    const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n    cb(newList, oldList, added, removed, onCleanup);\n    oldList = [...newList];\n  }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n  const {\n    count,\n    ...watchOptions\n  } = options;\n  const current = ref(0);\n  const stop = watchWithFilter(\n    source,\n    (...args) => {\n      current.value += 1;\n      if (current.value >= toValue(count))\n        nextTick(() => stop());\n      cb(...args);\n    },\n    watchOptions\n  );\n  return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n  const {\n    debounce = 0,\n    maxWait = void 0,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: debounceFilter(debounce, { maxWait })\n    }\n  );\n}\n\nfunction watchDeep(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      deep: true\n    }\n  );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  const filteredCb = createFilterWrapper(\n    eventFilter,\n    cb\n  );\n  let ignoreUpdates;\n  let ignorePrevAsyncUpdates;\n  let stop;\n  if (watchOptions.flush === \"sync\") {\n    const ignore = ref(false);\n    ignorePrevAsyncUpdates = () => {\n    };\n    ignoreUpdates = (updater) => {\n      ignore.value = true;\n      updater();\n      ignore.value = false;\n    };\n    stop = watch(\n      source,\n      (...args) => {\n        if (!ignore.value)\n          filteredCb(...args);\n      },\n      watchOptions\n    );\n  } else {\n    const disposables = [];\n    const ignoreCounter = ref(0);\n    const syncCounter = ref(0);\n    ignorePrevAsyncUpdates = () => {\n      ignoreCounter.value = syncCounter.value;\n    };\n    disposables.push(\n      watch(\n        source,\n        () => {\n          syncCounter.value++;\n        },\n        { ...watchOptions, flush: \"sync\" }\n      )\n    );\n    ignoreUpdates = (updater) => {\n      const syncCounterPrev = syncCounter.value;\n      updater();\n      ignoreCounter.value += syncCounter.value - syncCounterPrev;\n    };\n    disposables.push(\n      watch(\n        source,\n        (...args) => {\n          const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n          ignoreCounter.value = 0;\n          syncCounter.value = 0;\n          if (ignore)\n            return;\n          filteredCb(...args);\n        },\n        watchOptions\n      )\n    );\n    stop = () => {\n      disposables.forEach((fn) => fn());\n    };\n  }\n  return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      immediate: true\n    }\n  );\n}\n\nfunction watchOnce(source, cb, options) {\n  const stop = watch(source, (...args) => {\n    nextTick(() => stop());\n    return cb(...args);\n  }, options);\n  return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n  const {\n    throttle = 0,\n    trailing = true,\n    leading = true,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: throttleFilter(throttle, trailing, leading)\n    }\n  );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n  let cleanupFn;\n  function onEffect() {\n    if (!cleanupFn)\n      return;\n    const fn = cleanupFn;\n    cleanupFn = void 0;\n    fn();\n  }\n  function onCleanup(callback) {\n    cleanupFn = callback;\n  }\n  const _cb = (value, oldValue) => {\n    onEffect();\n    return cb(value, oldValue, onCleanup);\n  };\n  const res = watchIgnorable(source, _cb, options);\n  const { ignoreUpdates } = res;\n  const trigger = () => {\n    let res2;\n    ignoreUpdates(() => {\n      res2 = _cb(getWatchSources(source), getOldValue(source));\n    });\n    return res2;\n  };\n  return {\n    ...res,\n    trigger\n  };\n}\nfunction getWatchSources(sources) {\n  if (isReactive(sources))\n    return sources;\n  if (Array.isArray(sources))\n    return sources.map((item) => toValue(item));\n  return toValue(sources);\n}\nfunction getOldValue(source) {\n  return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n  const stop = watch(\n    source,\n    (v, ov, onInvalidate) => {\n      if (v) {\n        if (options == null ? void 0 : options.once)\n          nextTick(() => stop());\n        cb(v, ov, onInvalidate);\n      }\n    },\n    {\n      ...options,\n      once: false\n    }\n  );\n  return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, toValue, isClient, isObject, tryOnScopeDispose, isIOS, tryOnMounted, notNullish, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, toRefs, useIntervalFn, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, tryOnUnmounted, clamp, syncRef, objectPick, watchWithFilter, tryOnBeforeUnmount, identity, isDef, whenever, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, readonly, reactive, toRaw, nextTick, markRaw, unref, getCurrentScope, isReadonly, onBeforeUpdate } from 'vue';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n  let options;\n  if (isRef(optionsOrRef)) {\n    options = {\n      evaluating: optionsOrRef\n    };\n  } else {\n    options = optionsOrRef || {};\n  }\n  const {\n    lazy = false,\n    evaluating = void 0,\n    shallow = true,\n    onError = noop\n  } = options;\n  const started = ref(!lazy);\n  const current = shallow ? shallowRef(initialState) : ref(initialState);\n  let counter = 0;\n  watchEffect(async (onInvalidate) => {\n    if (!started.value)\n      return;\n    counter++;\n    const counterAtBeginning = counter;\n    let hasFinished = false;\n    if (evaluating) {\n      Promise.resolve().then(() => {\n        evaluating.value = true;\n      });\n    }\n    try {\n      const result = await evaluationCallback((cancelCallback) => {\n        onInvalidate(() => {\n          if (evaluating)\n            evaluating.value = false;\n          if (!hasFinished)\n            cancelCallback();\n        });\n      });\n      if (counterAtBeginning === counter)\n        current.value = result;\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (evaluating && counterAtBeginning === counter)\n        evaluating.value = false;\n      hasFinished = true;\n    }\n  });\n  if (lazy) {\n    return computed(() => {\n      started.value = true;\n      return current.value;\n    });\n  } else {\n    return current;\n  }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n  let source = inject(key);\n  if (defaultSource)\n    source = inject(key, defaultSource);\n  if (treatDefaultAsFactory)\n    source = inject(key, defaultSource, treatDefaultAsFactory);\n  if (typeof options === \"function\") {\n    return computed((ctx) => options(source, ctx));\n  } else {\n    return computed({\n      get: (ctx) => options.get(source, ctx),\n      set: options.set\n    });\n  }\n}\n\nfunction createReusableTemplate(options = {}) {\n  const {\n    inheritAttrs = true\n  } = options;\n  const render = shallowRef();\n  const define = /* #__PURE__ */ defineComponent({\n    setup(_, { slots }) {\n      return () => {\n        render.value = slots.default;\n      };\n    }\n  });\n  const reuse = /* #__PURE__ */ defineComponent({\n    inheritAttrs,\n    setup(_, { attrs, slots }) {\n      return () => {\n        var _a;\n        if (!render.value && process.env.NODE_ENV !== \"production\")\n          throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n        const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n        return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n      };\n    }\n  });\n  return makeDestructurable(\n    { define, reuse },\n    [define, reuse]\n  );\n}\nfunction keysToCamelKebabCase(obj) {\n  const newObj = {};\n  for (const key in obj)\n    newObj[camelize(key)] = obj[key];\n  return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n  let index = 0;\n  const instances = ref([]);\n  function create(...args) {\n    const props = shallowReactive({\n      key: index++,\n      args,\n      promise: void 0,\n      resolve: () => {\n      },\n      reject: () => {\n      },\n      isResolving: false,\n      options\n    });\n    instances.value.push(props);\n    props.promise = new Promise((_resolve, _reject) => {\n      props.resolve = (v) => {\n        props.isResolving = true;\n        return _resolve(v);\n      };\n      props.reject = _reject;\n    }).finally(() => {\n      props.promise = void 0;\n      const index2 = instances.value.indexOf(props);\n      if (index2 !== -1)\n        instances.value.splice(index2, 1);\n    });\n    return props.promise;\n  }\n  function start(...args) {\n    if (options.singleton && instances.value.length > 0)\n      return instances.value[0].promise;\n    return create(...args);\n  }\n  const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n    const renderList = () => instances.value.map((props) => {\n      var _a;\n      return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n    });\n    if (options.transition)\n      return () => h(TransitionGroup, options.transition, renderList);\n    return renderList;\n  });\n  component.start = start;\n  return component;\n}\n\nfunction createUnrefFn(fn) {\n  return function(...args) {\n    return fn.apply(this, args.map((i) => toValue(i)));\n  };\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction unrefElement(elRef) {\n  var _a;\n  const plain = toValue(elRef);\n  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n  let target;\n  let events;\n  let listeners;\n  let options;\n  if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n    [events, listeners, options] = args;\n    target = defaultWindow;\n  } else {\n    [target, events, listeners, options] = args;\n  }\n  if (!target)\n    return noop;\n  if (!Array.isArray(events))\n    events = [events];\n  if (!Array.isArray(listeners))\n    listeners = [listeners];\n  const cleanups = [];\n  const cleanup = () => {\n    cleanups.forEach((fn) => fn());\n    cleanups.length = 0;\n  };\n  const register = (el, event, listener, options2) => {\n    el.addEventListener(event, listener, options2);\n    return () => el.removeEventListener(event, listener, options2);\n  };\n  const stopWatch = watch(\n    () => [unrefElement(target), toValue(options)],\n    ([el, options2]) => {\n      cleanup();\n      if (!el)\n        return;\n      const optionsClone = isObject(options2) ? { ...options2 } : options2;\n      cleanups.push(\n        ...events.flatMap((event) => {\n          return listeners.map((listener) => register(el, event, listener, optionsClone));\n        })\n      );\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  const stop = () => {\n    stopWatch();\n    cleanup();\n  };\n  tryOnScopeDispose(stop);\n  return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n  const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n  if (!window)\n    return noop;\n  if (isIOS && !_iOSWorkaround) {\n    _iOSWorkaround = true;\n    Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n    window.document.documentElement.addEventListener(\"click\", noop);\n  }\n  let shouldListen = true;\n  const shouldIgnore = (event) => {\n    return toValue(ignore).some((target2) => {\n      if (typeof target2 === \"string\") {\n        return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n      } else {\n        const el = unrefElement(target2);\n        return el && (event.target === el || event.composedPath().includes(el));\n      }\n    });\n  };\n  function hasMultipleRoots(target2) {\n    const vm = toValue(target2);\n    return vm && vm.$.subTree.shapeFlag === 16;\n  }\n  function checkMultipleRoots(target2, event) {\n    const vm = toValue(target2);\n    const children = vm.$.subTree && vm.$.subTree.children;\n    if (children == null || !Array.isArray(children))\n      return false;\n    return children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n  }\n  const listener = (event) => {\n    const el = unrefElement(target);\n    if (event.target == null)\n      return;\n    if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event))\n      return;\n    if (!el || el === event.target || event.composedPath().includes(el))\n      return;\n    if (event.detail === 0)\n      shouldListen = !shouldIgnore(event);\n    if (!shouldListen) {\n      shouldListen = true;\n      return;\n    }\n    handler(event);\n  };\n  let isProcessingClick = false;\n  const cleanup = [\n    useEventListener(window, \"click\", (event) => {\n      if (!isProcessingClick) {\n        isProcessingClick = true;\n        setTimeout(() => {\n          isProcessingClick = false;\n        }, 0);\n        listener(event);\n      }\n    }, { passive: true, capture }),\n    useEventListener(window, \"pointerdown\", (e) => {\n      const el = unrefElement(target);\n      shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n    }, { passive: true }),\n    detectIframe && useEventListener(window, \"blur\", (event) => {\n      setTimeout(() => {\n        var _a;\n        const el = unrefElement(target);\n        if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n          handler(event);\n        }\n      }, 0);\n    })\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n  if (typeof keyFilter === \"function\")\n    return keyFilter;\n  else if (typeof keyFilter === \"string\")\n    return (event) => event.key === keyFilter;\n  else if (Array.isArray(keyFilter))\n    return (event) => keyFilter.includes(event.key);\n  return () => true;\n}\nfunction onKeyStroke(...args) {\n  let key;\n  let handler;\n  let options = {};\n  if (args.length === 3) {\n    key = args[0];\n    handler = args[1];\n    options = args[2];\n  } else if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      key = true;\n      handler = args[0];\n      options = args[1];\n    } else {\n      key = args[0];\n      handler = args[1];\n    }\n  } else {\n    key = true;\n    handler = args[0];\n  }\n  const {\n    target = defaultWindow,\n    eventName = \"keydown\",\n    passive = false,\n    dedupe = false\n  } = options;\n  const predicate = createKeyPredicate(key);\n  const listener = (e) => {\n    if (e.repeat && toValue(dedupe))\n      return;\n    if (predicate(e))\n      handler(e);\n  };\n  return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n  var _a, _b;\n  const elementRef = computed(() => unrefElement(target));\n  let timeout;\n  let posStart;\n  let startTimestamp;\n  let hasLongPressed = false;\n  function clear() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = void 0;\n    }\n    posStart = void 0;\n    startTimestamp = void 0;\n    hasLongPressed = false;\n  }\n  function onRelease(ev) {\n    var _a2, _b2, _c;\n    const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n    clear();\n    if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n      return;\n    if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n      return;\n    if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n      ev.preventDefault();\n    if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n      ev.stopPropagation();\n    const dx = ev.x - _posStart.x;\n    const dy = ev.y - _posStart.y;\n    const distance = Math.sqrt(dx * dx + dy * dy);\n    options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n  }\n  function onDown(ev) {\n    var _a2, _b2, _c, _d;\n    if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n      return;\n    clear();\n    if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n      ev.preventDefault();\n    if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n      ev.stopPropagation();\n    posStart = {\n      x: ev.x,\n      y: ev.y\n    };\n    startTimestamp = ev.timeStamp;\n    timeout = setTimeout(\n      () => {\n        hasLongPressed = true;\n        handler(ev);\n      },\n      (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n    );\n  }\n  function onMove(ev) {\n    var _a2, _b2, _c, _d;\n    if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n      return;\n    if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n      return;\n    if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n      ev.preventDefault();\n    if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n      ev.stopPropagation();\n    const dx = ev.x - posStart.x;\n    const dy = ev.y - posStart.y;\n    const distance = Math.sqrt(dx * dx + dy * dy);\n    if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n      clear();\n  }\n  const listenerOptions = {\n    capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n    once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n  };\n  const cleanup = [\n    useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n    useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n    useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n  ];\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction isFocusedElementEditable() {\n  const { activeElement, body } = document;\n  if (!activeElement)\n    return false;\n  if (activeElement === body)\n    return false;\n  switch (activeElement.tagName) {\n    case \"INPUT\":\n    case \"TEXTAREA\":\n      return true;\n  }\n  return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n  keyCode,\n  metaKey,\n  ctrlKey,\n  altKey\n}) {\n  if (metaKey || ctrlKey || altKey)\n    return false;\n  if (keyCode >= 48 && keyCode <= 57)\n    return true;\n  if (keyCode >= 65 && keyCode <= 90)\n    return true;\n  if (keyCode >= 97 && keyCode <= 122)\n    return true;\n  return false;\n}\nfunction onStartTyping(callback, options = {}) {\n  const { document: document2 = defaultDocument } = options;\n  const keydown = (event) => {\n    if (!isFocusedElementEditable() && isTypedCharValid(event)) {\n      callback(event);\n    }\n  };\n  if (document2)\n    useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n  const instance = getCurrentInstance();\n  let _trigger = () => {\n  };\n  const element = customRef((track, trigger) => {\n    _trigger = trigger;\n    return {\n      get() {\n        var _a, _b;\n        track();\n        return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n      },\n      set() {\n      }\n    };\n  });\n  tryOnMounted(_trigger);\n  onUpdated(_trigger);\n  return element;\n}\n\nfunction useMounted() {\n  const isMounted = ref(false);\n  const instance = getCurrentInstance();\n  if (instance) {\n    onMounted(() => {\n      isMounted.value = true;\n    }, instance);\n  }\n  return isMounted;\n}\n\nfunction useSupported(callback) {\n  const isMounted = useMounted();\n  return computed(() => {\n    isMounted.value;\n    return Boolean(callback());\n  });\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...mutationOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const targets = computed(() => {\n    const value = toValue(target);\n    const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish);\n    return new Set(items);\n  });\n  const stopWatch = watch(\n    () => targets.value,\n    (targets2) => {\n      cleanup();\n      if (isSupported.value && targets2.size) {\n        observer = new MutationObserver(callback);\n        targets2.forEach((el) => observer.observe(el, mutationOptions));\n      }\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  const takeRecords = () => {\n    return observer == null ? void 0 : observer.takeRecords();\n  };\n  const stop = () => {\n    stopWatch();\n    cleanup();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop,\n    takeRecords\n  };\n}\n\nfunction useActiveElement(options = {}) {\n  var _a;\n  const {\n    window = defaultWindow,\n    deep = true,\n    triggerOnRemoval = false\n  } = options;\n  const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n  const getDeepActiveElement = () => {\n    var _a2;\n    let element = document == null ? void 0 : document.activeElement;\n    if (deep) {\n      while (element == null ? void 0 : element.shadowRoot)\n        element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n    }\n    return element;\n  };\n  const activeElement = ref();\n  const trigger = () => {\n    activeElement.value = getDeepActiveElement();\n  };\n  if (window) {\n    useEventListener(window, \"blur\", (event) => {\n      if (event.relatedTarget !== null)\n        return;\n      trigger();\n    }, true);\n    useEventListener(window, \"focus\", trigger, true);\n  }\n  if (triggerOnRemoval) {\n    useMutationObserver(document, (mutations) => {\n      mutations.filter((m) => m.removedNodes.length).map((n) => Array.from(n.removedNodes)).flat().forEach((node) => {\n        if (node === activeElement.value)\n          trigger();\n      });\n    }, {\n      childList: true,\n      subtree: true\n    });\n  }\n  trigger();\n  return activeElement;\n}\n\nfunction useRafFn(fn, options = {}) {\n  const {\n    immediate = true,\n    fpsLimit = void 0,\n    window = defaultWindow\n  } = options;\n  const isActive = ref(false);\n  const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n  let previousFrameTimestamp = 0;\n  let rafId = null;\n  function loop(timestamp) {\n    if (!isActive.value || !window)\n      return;\n    if (!previousFrameTimestamp)\n      previousFrameTimestamp = timestamp;\n    const delta = timestamp - previousFrameTimestamp;\n    if (intervalLimit && delta < intervalLimit) {\n      rafId = window.requestAnimationFrame(loop);\n      return;\n    }\n    previousFrameTimestamp = timestamp;\n    fn({ delta, timestamp });\n    rafId = window.requestAnimationFrame(loop);\n  }\n  function resume() {\n    if (!isActive.value && window) {\n      isActive.value = true;\n      previousFrameTimestamp = 0;\n      rafId = window.requestAnimationFrame(loop);\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    if (rafId != null && window) {\n      window.cancelAnimationFrame(rafId);\n      rafId = null;\n    }\n  }\n  if (immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive: readonly(isActive),\n    pause,\n    resume\n  };\n}\n\nfunction useAnimate(target, keyframes, options) {\n  let config;\n  let animateOptions;\n  if (isObject(options)) {\n    config = options;\n    animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n  } else {\n    config = { duration: options };\n    animateOptions = options;\n  }\n  const {\n    window = defaultWindow,\n    immediate = true,\n    commitStyles,\n    persist,\n    playbackRate: _playbackRate = 1,\n    onReady,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = config;\n  const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n  const animate = shallowRef(void 0);\n  const store = shallowReactive({\n    startTime: null,\n    currentTime: null,\n    timeline: null,\n    playbackRate: _playbackRate,\n    pending: false,\n    playState: immediate ? \"idle\" : \"paused\",\n    replaceState: \"active\"\n  });\n  const pending = computed(() => store.pending);\n  const playState = computed(() => store.playState);\n  const replaceState = computed(() => store.replaceState);\n  const startTime = computed({\n    get() {\n      return store.startTime;\n    },\n    set(value) {\n      store.startTime = value;\n      if (animate.value)\n        animate.value.startTime = value;\n    }\n  });\n  const currentTime = computed({\n    get() {\n      return store.currentTime;\n    },\n    set(value) {\n      store.currentTime = value;\n      if (animate.value) {\n        animate.value.currentTime = value;\n        syncResume();\n      }\n    }\n  });\n  const timeline = computed({\n    get() {\n      return store.timeline;\n    },\n    set(value) {\n      store.timeline = value;\n      if (animate.value)\n        animate.value.timeline = value;\n    }\n  });\n  const playbackRate = computed({\n    get() {\n      return store.playbackRate;\n    },\n    set(value) {\n      store.playbackRate = value;\n      if (animate.value)\n        animate.value.playbackRate = value;\n    }\n  });\n  const play = () => {\n    if (animate.value) {\n      try {\n        animate.value.play();\n        syncResume();\n      } catch (e) {\n        syncPause();\n        onError(e);\n      }\n    } else {\n      update();\n    }\n  };\n  const pause = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.pause();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const reverse = () => {\n    var _a;\n    if (!animate.value)\n      update();\n    try {\n      (_a = animate.value) == null ? void 0 : _a.reverse();\n      syncResume();\n    } catch (e) {\n      syncPause();\n      onError(e);\n    }\n  };\n  const finish = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.finish();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const cancel = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.cancel();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  watch(() => unrefElement(target), (el) => {\n    if (el)\n      update();\n  });\n  watch(() => keyframes, (value) => {\n    if (animate.value)\n      update();\n    if (!unrefElement(target) && animate.value) {\n      animate.value.effect = new KeyframeEffect(\n        unrefElement(target),\n        toValue(value),\n        animateOptions\n      );\n    }\n  }, { deep: true });\n  tryOnMounted(() => update(true), false);\n  tryOnScopeDispose(cancel);\n  function update(init) {\n    const el = unrefElement(target);\n    if (!isSupported.value || !el)\n      return;\n    if (!animate.value)\n      animate.value = el.animate(toValue(keyframes), animateOptions);\n    if (persist)\n      animate.value.persist();\n    if (_playbackRate !== 1)\n      animate.value.playbackRate = _playbackRate;\n    if (init && !immediate)\n      animate.value.pause();\n    else\n      syncResume();\n    onReady == null ? void 0 : onReady(animate.value);\n  }\n  useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n  useEventListener(animate, \"finish\", () => {\n    var _a;\n    if (commitStyles)\n      (_a = animate.value) == null ? void 0 : _a.commitStyles();\n  });\n  const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n    if (!animate.value)\n      return;\n    store.pending = animate.value.pending;\n    store.playState = animate.value.playState;\n    store.replaceState = animate.value.replaceState;\n    store.startTime = animate.value.startTime;\n    store.currentTime = animate.value.currentTime;\n    store.timeline = animate.value.timeline;\n    store.playbackRate = animate.value.playbackRate;\n  }, { immediate: false });\n  function syncResume() {\n    if (isSupported.value)\n      resumeRef();\n  }\n  function syncPause() {\n    if (isSupported.value && window)\n      window.requestAnimationFrame(pauseRef);\n  }\n  return {\n    isSupported,\n    animate,\n    // actions\n    play,\n    pause,\n    reverse,\n    finish,\n    cancel,\n    // state\n    pending,\n    playState,\n    replaceState,\n    startTime,\n    currentTime,\n    timeline,\n    playbackRate\n  };\n}\n\nfunction useAsyncQueue(tasks, options) {\n  const {\n    interrupt = true,\n    onError = noop,\n    onFinished = noop,\n    signal\n  } = options || {};\n  const promiseState = {\n    aborted: \"aborted\",\n    fulfilled: \"fulfilled\",\n    pending: \"pending\",\n    rejected: \"rejected\"\n  };\n  const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n  const result = reactive(initialResult);\n  const activeIndex = ref(-1);\n  if (!tasks || tasks.length === 0) {\n    onFinished();\n    return {\n      activeIndex,\n      result\n    };\n  }\n  function updateResult(state, res) {\n    activeIndex.value++;\n    result[activeIndex.value].data = res;\n    result[activeIndex.value].state = state;\n  }\n  tasks.reduce((prev, curr) => {\n    return prev.then((prevRes) => {\n      var _a;\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, new Error(\"aborted\"));\n        return;\n      }\n      if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n        onFinished();\n        return;\n      }\n      const done = curr(prevRes).then((currentRes) => {\n        updateResult(promiseState.fulfilled, currentRes);\n        if (activeIndex.value === tasks.length - 1)\n          onFinished();\n        return currentRes;\n      });\n      if (!signal)\n        return done;\n      return Promise.race([done, whenAborted(signal)]);\n    }).catch((e) => {\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, e);\n        return e;\n      }\n      updateResult(promiseState.rejected, e);\n      onError();\n      return e;\n    });\n  }, Promise.resolve());\n  return {\n    activeIndex,\n    result\n  };\n}\nfunction whenAborted(signal) {\n  return new Promise((resolve, reject) => {\n    const error = new Error(\"aborted\");\n    if (signal.aborted)\n      reject(error);\n    else\n      signal.addEventListener(\"abort\", () => reject(error), { once: true });\n  });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n  const {\n    immediate = true,\n    delay = 0,\n    onError = noop,\n    onSuccess = noop,\n    resetOnExecute = true,\n    shallow = true,\n    throwError\n  } = options != null ? options : {};\n  const state = shallow ? shallowRef(initialState) : ref(initialState);\n  const isReady = ref(false);\n  const isLoading = ref(false);\n  const error = shallowRef(void 0);\n  async function execute(delay2 = 0, ...args) {\n    if (resetOnExecute)\n      state.value = initialState;\n    error.value = void 0;\n    isReady.value = false;\n    isLoading.value = true;\n    if (delay2 > 0)\n      await promiseTimeout(delay2);\n    const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n    try {\n      const data = await _promise;\n      state.value = data;\n      isReady.value = true;\n      onSuccess(data);\n    } catch (e) {\n      error.value = e;\n      onError(e);\n      if (throwError)\n        throw e;\n    } finally {\n      isLoading.value = false;\n    }\n    return state.value;\n  }\n  if (immediate)\n    execute(delay);\n  const shell = {\n    state,\n    isReady,\n    isLoading,\n    error,\n    execute\n  };\n  function waitUntilIsLoaded() {\n    return new Promise((resolve, reject) => {\n      until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n    });\n  }\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilIsLoaded().then(onFulfilled, onRejected);\n    }\n  };\n}\n\nconst defaults = {\n  array: (v) => JSON.stringify(v),\n  object: (v) => JSON.stringify(v),\n  set: (v) => JSON.stringify(Array.from(v)),\n  map: (v) => JSON.stringify(Object.fromEntries(v)),\n  null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n  if (!target)\n    return defaults.null;\n  if (target instanceof Map)\n    return defaults.map;\n  else if (target instanceof Set)\n    return defaults.set;\n  else if (Array.isArray(target))\n    return defaults.array;\n  else\n    return defaults.object;\n}\n\nfunction useBase64(target, options) {\n  const base64 = ref(\"\");\n  const promise = ref();\n  function execute() {\n    if (!isClient)\n      return;\n    promise.value = new Promise((resolve, reject) => {\n      try {\n        const _target = toValue(target);\n        if (_target == null) {\n          resolve(\"\");\n        } else if (typeof _target === \"string\") {\n          resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n        } else if (_target instanceof Blob) {\n          resolve(blobToBase64(_target));\n        } else if (_target instanceof ArrayBuffer) {\n          resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n        } else if (_target instanceof HTMLCanvasElement) {\n          resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n        } else if (_target instanceof HTMLImageElement) {\n          const img = _target.cloneNode(false);\n          img.crossOrigin = \"Anonymous\";\n          imgLoaded(img).then(() => {\n            const canvas = document.createElement(\"canvas\");\n            const ctx = canvas.getContext(\"2d\");\n            canvas.width = img.width;\n            canvas.height = img.height;\n            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n            resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n          }).catch(reject);\n        } else if (typeof _target === \"object\") {\n          const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n          const serialized = _serializeFn(_target);\n          return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n        } else {\n          reject(new Error(\"target is unsupported types\"));\n        }\n      } catch (error) {\n        reject(error);\n      }\n    });\n    promise.value.then((res) => base64.value = res);\n    return promise.value;\n  }\n  if (isRef(target) || typeof target === \"function\")\n    watch(target, execute, { immediate: true });\n  else\n    execute();\n  return {\n    base64,\n    promise,\n    execute\n  };\n}\nfunction imgLoaded(img) {\n  return new Promise((resolve, reject) => {\n    if (!img.complete) {\n      img.onload = () => {\n        resolve();\n      };\n      img.onerror = reject;\n    } else {\n      resolve();\n    }\n  });\n}\nfunction blobToBase64(blob) {\n  return new Promise((resolve, reject) => {\n    const fr = new FileReader();\n    fr.onload = (e) => {\n      resolve(e.target.result);\n    };\n    fr.onerror = reject;\n    fr.readAsDataURL(blob);\n  });\n}\n\nfunction useBattery(options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n  const isSupported = useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n  const charging = ref(false);\n  const chargingTime = ref(0);\n  const dischargingTime = ref(0);\n  const level = ref(1);\n  let battery;\n  function updateBatteryInfo() {\n    charging.value = this.charging;\n    chargingTime.value = this.chargingTime || 0;\n    dischargingTime.value = this.dischargingTime || 0;\n    level.value = this.level;\n  }\n  if (isSupported.value) {\n    navigator.getBattery().then((_battery) => {\n      battery = _battery;\n      updateBatteryInfo.call(battery);\n      useEventListener(battery, events, updateBatteryInfo, { passive: true });\n    });\n  }\n  return {\n    isSupported,\n    charging,\n    chargingTime,\n    dischargingTime,\n    level\n  };\n}\n\nfunction useBluetooth(options) {\n  let {\n    acceptAllDevices = false\n  } = options || {};\n  const {\n    filters = void 0,\n    optionalServices = void 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n  const device = shallowRef(void 0);\n  const error = shallowRef(null);\n  watch(device, () => {\n    connectToBluetoothGATTServer();\n  });\n  async function requestDevice() {\n    if (!isSupported.value)\n      return;\n    error.value = null;\n    if (filters && filters.length > 0)\n      acceptAllDevices = false;\n    try {\n      device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n        acceptAllDevices,\n        filters,\n        optionalServices\n      }));\n    } catch (err) {\n      error.value = err;\n    }\n  }\n  const server = ref();\n  const isConnected = computed(() => {\n    var _a;\n    return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n  });\n  async function connectToBluetoothGATTServer() {\n    error.value = null;\n    if (device.value && device.value.gatt) {\n      device.value.addEventListener(\"gattserverdisconnected\", () => {\n      });\n      try {\n        server.value = await device.value.gatt.connect();\n      } catch (err) {\n        error.value = err;\n      }\n    }\n  }\n  tryOnMounted(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.connect();\n  });\n  tryOnScopeDispose(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n  });\n  return {\n    isSupported,\n    isConnected,\n    // Device:\n    device,\n    requestDevice,\n    // Server:\n    server,\n    // Errors:\n    error\n  };\n}\n\nfunction useMediaQuery(query, options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n  let mediaQuery;\n  const matches = ref(false);\n  const handler = (event) => {\n    matches.value = event.matches;\n  };\n  const cleanup = () => {\n    if (!mediaQuery)\n      return;\n    if (\"removeEventListener\" in mediaQuery)\n      mediaQuery.removeEventListener(\"change\", handler);\n    else\n      mediaQuery.removeListener(handler);\n  };\n  const stopWatch = watchEffect(() => {\n    if (!isSupported.value)\n      return;\n    cleanup();\n    mediaQuery = window.matchMedia(toValue(query));\n    if (\"addEventListener\" in mediaQuery)\n      mediaQuery.addEventListener(\"change\", handler);\n    else\n      mediaQuery.addListener(handler);\n    matches.value = mediaQuery.matches;\n  });\n  tryOnScopeDispose(() => {\n    stopWatch();\n    cleanup();\n    mediaQuery = void 0;\n  });\n  return matches;\n}\n\nconst breakpointsTailwind = {\n  \"sm\": 640,\n  \"md\": 768,\n  \"lg\": 1024,\n  \"xl\": 1280,\n  \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n  xs: 0,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1400\n};\nconst breakpointsVuetifyV2 = {\n  xs: 0,\n  sm: 600,\n  md: 960,\n  lg: 1264,\n  xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n  xs: 0,\n  sm: 600,\n  md: 960,\n  lg: 1280,\n  xl: 1920,\n  xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\nconst breakpointsAntDesign = {\n  xs: 480,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1600\n};\nconst breakpointsQuasar = {\n  xs: 0,\n  sm: 600,\n  md: 1024,\n  lg: 1440,\n  xl: 1920\n};\nconst breakpointsSematic = {\n  mobileS: 320,\n  mobileM: 375,\n  mobileL: 425,\n  tablet: 768,\n  laptop: 1024,\n  laptopL: 1440,\n  desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n  \"3xs\": 360,\n  \"2xs\": 480,\n  \"xs\": 600,\n  \"sm\": 768,\n  \"md\": 1024,\n  \"lg\": 1280,\n  \"xl\": 1440,\n  \"2xl\": 1600,\n  \"3xl\": 1920,\n  \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200\n};\nconst breakpointsElement = {\n  xs: 0,\n  sm: 768,\n  md: 992,\n  lg: 1200,\n  xl: 1920\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n  function getValue(k, delta) {\n    let v = toValue(breakpoints[toValue(k)]);\n    if (delta != null)\n      v = increaseWithUnit(v, delta);\n    if (typeof v === \"number\")\n      v = `${v}px`;\n    return v;\n  }\n  const { window = defaultWindow, strategy = \"min-width\" } = options;\n  function match(query) {\n    if (!window)\n      return false;\n    return window.matchMedia(query).matches;\n  }\n  const greaterOrEqual = (k) => {\n    return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n  };\n  const smallerOrEqual = (k) => {\n    return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n  };\n  const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n    Object.defineProperty(shortcuts, k, {\n      get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n      enumerable: true,\n      configurable: true\n    });\n    return shortcuts;\n  }, {});\n  function current() {\n    const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n    return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n  }\n  return Object.assign(shortcutMethods, {\n    greaterOrEqual,\n    smallerOrEqual,\n    greater(k) {\n      return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n    },\n    smaller(k) {\n      return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n    },\n    between(a, b) {\n      return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n    },\n    isGreater(k) {\n      return match(`(min-width: ${getValue(k, 0.1)})`);\n    },\n    isGreaterOrEqual(k) {\n      return match(`(min-width: ${getValue(k)})`);\n    },\n    isSmaller(k) {\n      return match(`(max-width: ${getValue(k, -0.1)})`);\n    },\n    isSmallerOrEqual(k) {\n      return match(`(max-width: ${getValue(k)})`);\n    },\n    isInBetween(a, b) {\n      return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n    },\n    current,\n    active() {\n      const bps = current();\n      return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(-1));\n    }\n  });\n}\n\nfunction useBroadcastChannel(options) {\n  const {\n    name,\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n  const isClosed = ref(false);\n  const channel = ref();\n  const data = ref();\n  const error = shallowRef(null);\n  const post = (data2) => {\n    if (channel.value)\n      channel.value.postMessage(data2);\n  };\n  const close = () => {\n    if (channel.value)\n      channel.value.close();\n    isClosed.value = true;\n  };\n  if (isSupported.value) {\n    tryOnMounted(() => {\n      error.value = null;\n      channel.value = new BroadcastChannel(name);\n      channel.value.addEventListener(\"message\", (e) => {\n        data.value = e.data;\n      }, { passive: true });\n      channel.value.addEventListener(\"messageerror\", (e) => {\n        error.value = e;\n      }, { passive: true });\n      channel.value.addEventListener(\"close\", () => {\n        isClosed.value = true;\n      });\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    isSupported,\n    channel,\n    data,\n    post,\n    close,\n    error,\n    isClosed\n  };\n}\n\nconst WRITABLE_PROPERTIES = [\n  \"hash\",\n  \"host\",\n  \"hostname\",\n  \"href\",\n  \"pathname\",\n  \"port\",\n  \"protocol\",\n  \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n  const { window = defaultWindow } = options;\n  const refs = Object.fromEntries(\n    WRITABLE_PROPERTIES.map((key) => [key, ref()])\n  );\n  for (const [key, ref2] of objectEntries(refs)) {\n    watch(ref2, (value) => {\n      if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n        return;\n      window.location[key] = value;\n    });\n  }\n  const buildState = (trigger) => {\n    var _a;\n    const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n    const { origin } = (window == null ? void 0 : window.location) || {};\n    for (const key of WRITABLE_PROPERTIES)\n      refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n    return reactive({\n      trigger,\n      state: state2,\n      length,\n      origin,\n      ...refs\n    });\n  };\n  const state = ref(buildState(\"load\"));\n  if (window) {\n    useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n    useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n  }\n  return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n  const cachedValue = ref(refValue.value);\n  watch(() => refValue.value, (value) => {\n    if (!comparator(value, cachedValue.value))\n      cachedValue.value = value;\n  }, watchOptions);\n  return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n  const {\n    controls = false,\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n  const permissionStatus = shallowRef();\n  const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n  const state = shallowRef();\n  const update = () => {\n    var _a, _b;\n    state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : \"prompt\";\n  };\n  useEventListener(permissionStatus, \"change\", update);\n  const query = createSingletonPromise(async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionStatus.value) {\n      try {\n        permissionStatus.value = await navigator.permissions.query(desc);\n      } catch (e) {\n        permissionStatus.value = void 0;\n      } finally {\n        update();\n      }\n    }\n    if (controls)\n      return toRaw(permissionStatus.value);\n  });\n  query();\n  if (controls) {\n    return {\n      state,\n      isSupported,\n      query\n    };\n  } else {\n    return state;\n  }\n}\n\nfunction useClipboard(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500,\n    legacy = false\n  } = options;\n  const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const permissionRead = usePermission(\"clipboard-read\");\n  const permissionWrite = usePermission(\"clipboard-write\");\n  const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n  const text = ref(\"\");\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateText() {\n    if (isClipboardApiSupported.value && isAllowed(permissionRead.value)) {\n      navigator.clipboard.readText().then((value) => {\n        text.value = value;\n      });\n    } else {\n      text.value = legacyRead();\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateText);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      if (isClipboardApiSupported.value && isAllowed(permissionWrite.value))\n        await navigator.clipboard.writeText(value);\n      else\n        legacyCopy(value);\n      text.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  function legacyCopy(value) {\n    const ta = document.createElement(\"textarea\");\n    ta.value = value != null ? value : \"\";\n    ta.style.position = \"absolute\";\n    ta.style.opacity = \"0\";\n    document.body.appendChild(ta);\n    ta.select();\n    document.execCommand(\"copy\");\n    ta.remove();\n  }\n  function legacyRead() {\n    var _a, _b, _c;\n    return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n  }\n  function isAllowed(status) {\n    return status === \"granted\" || status === \"prompt\";\n  }\n  return {\n    isSupported,\n    text,\n    copied,\n    copy\n  };\n}\n\nfunction useClipboardItems(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500\n  } = options;\n  const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const content = ref([]);\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateContent() {\n    if (isSupported.value) {\n      navigator.clipboard.read().then((items) => {\n        content.value = items;\n      });\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateContent);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      await navigator.clipboard.write(value);\n      content.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  return {\n    isSupported,\n    content,\n    copied,\n    copy\n  };\n}\n\nfunction cloneFnJSON(source) {\n  return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n  const cloned = ref({});\n  const {\n    manual,\n    clone = cloneFnJSON,\n    // watch options\n    deep = true,\n    immediate = true\n  } = options;\n  function sync() {\n    cloned.value = clone(toValue(source));\n  }\n  if (!manual && (isRef(source) || typeof source === \"function\")) {\n    watch(source, sync, {\n      ...options,\n      deep,\n      immediate\n    });\n  } else {\n    sync();\n  }\n  return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n  if (!(globalKey in _global))\n    _global[globalKey] = _global[globalKey] || {};\n  return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n  return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n  handlers[key] = fn;\n}\n\nfunction usePreferredDark(options) {\n  return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n  return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n  boolean: {\n    read: (v) => v === \"true\",\n    write: (v) => String(v)\n  },\n  object: {\n    read: (v) => JSON.parse(v),\n    write: (v) => JSON.stringify(v)\n  },\n  number: {\n    read: (v) => Number.parseFloat(v),\n    write: (v) => String(v)\n  },\n  any: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  string: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  map: {\n    read: (v) => new Map(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v.entries()))\n  },\n  set: {\n    read: (v) => new Set(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v))\n  },\n  date: {\n    read: (v) => new Date(v),\n    write: (v) => v.toISOString()\n  }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    },\n    initOnMounted\n  } = options;\n  const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  if (!storage)\n    return data;\n  const rawInit = toValue(defaults);\n  const type = guessSerializerType(rawInit);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n    data,\n    () => write(data.value),\n    { flush, deep, eventFilter }\n  );\n  if (window && listenToStorageChanges) {\n    tryOnMounted(() => {\n      if (storage instanceof Storage)\n        useEventListener(window, \"storage\", update);\n      else\n        useEventListener(window, customStorageEventName, updateFromCustomEvent);\n      if (initOnMounted)\n        update();\n    });\n  }\n  if (!initOnMounted)\n    update();\n  function dispatchWriteEvent(oldValue, newValue) {\n    if (window) {\n      const payload = {\n        key,\n        oldValue,\n        newValue,\n        storageArea: storage\n      };\n      window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n        detail: payload\n      }));\n    }\n  }\n  function write(v) {\n    try {\n      const oldValue = storage.getItem(key);\n      if (v == null) {\n        dispatchWriteEvent(oldValue, null);\n        storage.removeItem(key);\n      } else {\n        const serialized = serializer.write(v);\n        if (oldValue !== serialized) {\n          storage.setItem(key, serialized);\n          dispatchWriteEvent(oldValue, serialized);\n        }\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  function read(event) {\n    const rawValue = event ? event.newValue : storage.getItem(key);\n    if (rawValue == null) {\n      if (writeDefaults && rawInit != null)\n        storage.setItem(key, serializer.write(rawInit));\n      return rawInit;\n    } else if (!event && mergeDefaults) {\n      const value = serializer.read(rawValue);\n      if (typeof mergeDefaults === \"function\")\n        return mergeDefaults(value, rawInit);\n      else if (type === \"object\" && !Array.isArray(value))\n        return { ...rawInit, ...value };\n      return value;\n    } else if (typeof rawValue !== \"string\") {\n      return rawValue;\n    } else {\n      return serializer.read(rawValue);\n    }\n  }\n  function update(event) {\n    if (event && event.storageArea !== storage)\n      return;\n    if (event && event.key == null) {\n      data.value = rawInit;\n      return;\n    }\n    if (event && event.key !== key)\n      return;\n    pauseWatch();\n    try {\n      if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n        data.value = read(event);\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (event)\n        nextTick(resumeWatch);\n      else\n        resumeWatch();\n    }\n  }\n  function updateFromCustomEvent(event) {\n    update(event.detail);\n  }\n  return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n  const {\n    selector = \"html\",\n    attribute = \"class\",\n    initialValue = \"auto\",\n    window = defaultWindow,\n    storage,\n    storageKey = \"vueuse-color-scheme\",\n    listenToStorageChanges = true,\n    storageRef,\n    emitAuto,\n    disableTransition = true\n  } = options;\n  const modes = {\n    auto: \"\",\n    light: \"light\",\n    dark: \"dark\",\n    ...options.modes || {}\n  };\n  const preferredDark = usePreferredDark({ window });\n  const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n  const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n  const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n  const updateHTMLAttrs = getSSRHandler(\n    \"updateHTMLAttrs\",\n    (selector2, attribute2, value) => {\n      const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n      if (!el)\n        return;\n      const classesToAdd = /* @__PURE__ */ new Set();\n      const classesToRemove = /* @__PURE__ */ new Set();\n      let attributeToChange = null;\n      if (attribute2 === \"class\") {\n        const current = value.split(/\\s/g);\n        Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n          if (current.includes(v))\n            classesToAdd.add(v);\n          else\n            classesToRemove.add(v);\n        });\n      } else {\n        attributeToChange = { key: attribute2, value };\n      }\n      if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n        return;\n      let style;\n      if (disableTransition) {\n        style = window.document.createElement(\"style\");\n        style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n        window.document.head.appendChild(style);\n      }\n      for (const c of classesToAdd) {\n        el.classList.add(c);\n      }\n      for (const c of classesToRemove) {\n        el.classList.remove(c);\n      }\n      if (attributeToChange) {\n        el.setAttribute(attributeToChange.key, attributeToChange.value);\n      }\n      if (disableTransition) {\n        window.getComputedStyle(style).opacity;\n        document.head.removeChild(style);\n      }\n    }\n  );\n  function defaultOnChanged(mode) {\n    var _a;\n    updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n  }\n  function onChanged(mode) {\n    if (options.onChanged)\n      options.onChanged(mode, defaultOnChanged);\n    else\n      defaultOnChanged(mode);\n  }\n  watch(state, onChanged, { flush: \"post\", immediate: true });\n  tryOnMounted(() => onChanged(state.value));\n  const auto = computed({\n    get() {\n      return emitAuto ? store.value : state.value;\n    },\n    set(v) {\n      store.value = v;\n    }\n  });\n  return Object.assign(auto, { store, system, state });\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n  const confirmHook = createEventHook();\n  const cancelHook = createEventHook();\n  const revealHook = createEventHook();\n  let _resolve = noop;\n  const reveal = (data) => {\n    revealHook.trigger(data);\n    revealed.value = true;\n    return new Promise((resolve) => {\n      _resolve = resolve;\n    });\n  };\n  const confirm = (data) => {\n    revealed.value = false;\n    confirmHook.trigger(data);\n    _resolve({ data, isCanceled: false });\n  };\n  const cancel = (data) => {\n    revealed.value = false;\n    cancelHook.trigger(data);\n    _resolve({ data, isCanceled: true });\n  };\n  return {\n    isRevealed: computed(() => revealed.value),\n    reveal,\n    confirm,\n    cancel,\n    onReveal: revealHook.on,\n    onConfirm: confirmHook.on,\n    onCancel: cancelHook.on\n  };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n  const { window = defaultWindow, initialValue, observe = false } = options;\n  const variable = ref(initialValue);\n  const elRef = computed(() => {\n    var _a;\n    return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n  });\n  function updateCssVar() {\n    var _a;\n    const key = toValue(prop);\n    const el = toValue(elRef);\n    if (el && window && key) {\n      const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n      variable.value = value || initialValue;\n    }\n  }\n  if (observe) {\n    useMutationObserver(elRef, updateCssVar, {\n      attributeFilter: [\"style\", \"class\"],\n      window\n    });\n  }\n  watch(\n    [elRef, () => toValue(prop)],\n    (_, old) => {\n      if (old[0] && old[1])\n        old[0].style.removeProperty(old[1]);\n      updateCssVar();\n    },\n    { immediate: true }\n  );\n  watch(\n    variable,\n    (val) => {\n      var _a;\n      const raw_prop = toValue(prop);\n      if (((_a = elRef.value) == null ? void 0 : _a.style) && raw_prop) {\n        if (val == null)\n          elRef.value.style.removeProperty(raw_prop);\n        else\n          elRef.value.style.setProperty(raw_prop, val);\n      }\n    }\n  );\n  return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n  const vm = getCurrentInstance();\n  const currentElement = computedWithControl(\n    () => null,\n    () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el\n  );\n  onUpdated(currentElement.trigger);\n  onMounted(currentElement.trigger);\n  return currentElement;\n}\n\nfunction useCycleList(list, options) {\n  const state = shallowRef(getInitialValue());\n  const listRef = toRef(list);\n  const index = computed({\n    get() {\n      var _a;\n      const targetList = listRef.value;\n      let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n      if (index2 < 0)\n        index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n      return index2;\n    },\n    set(v) {\n      set(v);\n    }\n  });\n  function set(i) {\n    const targetList = listRef.value;\n    const length = targetList.length;\n    const index2 = (i % length + length) % length;\n    const value = targetList[index2];\n    state.value = value;\n    return value;\n  }\n  function shift(delta = 1) {\n    return set(index.value + delta);\n  }\n  function next(n = 1) {\n    return shift(n);\n  }\n  function prev(n = 1) {\n    return shift(-n);\n  }\n  function getInitialValue() {\n    var _a, _b;\n    return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n  }\n  watch(listRef, () => set(index.value));\n  return {\n    state,\n    index,\n    next,\n    prev,\n    go: set\n  };\n}\n\nfunction useDark(options = {}) {\n  const {\n    valueDark = \"dark\",\n    valueLight = \"\"\n  } = options;\n  const mode = useColorMode({\n    ...options,\n    onChanged: (mode2, defaultHandler) => {\n      var _a;\n      if (options.onChanged)\n        (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n      else\n        defaultHandler(mode2);\n    },\n    modes: {\n      dark: valueDark,\n      light: valueLight\n    }\n  });\n  const system = computed(() => mode.system.value);\n  const isDark = computed({\n    get() {\n      return mode.value === \"dark\";\n    },\n    set(v) {\n      const modeVal = v ? \"dark\" : \"light\";\n      if (system.value === modeVal)\n        mode.value = \"auto\";\n      else\n        mode.value = modeVal;\n    }\n  });\n  return isDark;\n}\n\nfunction fnBypass(v) {\n  return v;\n}\nfunction fnSetSource(source, value) {\n  return source.value = value;\n}\nfunction defaultDump(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n  const {\n    clone = false,\n    dump = defaultDump(clone),\n    parse = defaultParse(clone),\n    setSource = fnSetSource\n  } = options;\n  function _createHistoryRecord() {\n    return markRaw({\n      snapshot: dump(source.value),\n      timestamp: timestamp()\n    });\n  }\n  const last = ref(_createHistoryRecord());\n  const undoStack = ref([]);\n  const redoStack = ref([]);\n  const _setSource = (record) => {\n    setSource(source, parse(record.snapshot));\n    last.value = record;\n  };\n  const commit = () => {\n    undoStack.value.unshift(last.value);\n    last.value = _createHistoryRecord();\n    if (options.capacity && undoStack.value.length > options.capacity)\n      undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n    if (redoStack.value.length)\n      redoStack.value.splice(0, redoStack.value.length);\n  };\n  const clear = () => {\n    undoStack.value.splice(0, undoStack.value.length);\n    redoStack.value.splice(0, redoStack.value.length);\n  };\n  const undo = () => {\n    const state = undoStack.value.shift();\n    if (state) {\n      redoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const redo = () => {\n    const state = redoStack.value.shift();\n    if (state) {\n      undoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const reset = () => {\n    _setSource(last.value);\n  };\n  const history = computed(() => [last.value, ...undoStack.value]);\n  const canUndo = computed(() => undoStack.value.length > 0);\n  const canRedo = computed(() => redoStack.value.length > 0);\n  return {\n    source,\n    undoStack,\n    redoStack,\n    last,\n    history,\n    canUndo,\n    canRedo,\n    clear,\n    commit,\n    reset,\n    undo,\n    redo\n  };\n}\n\nfunction useRefHistory(source, options = {}) {\n  const {\n    deep = false,\n    flush = \"pre\",\n    eventFilter\n  } = options;\n  const {\n    eventFilter: composedFilter,\n    pause,\n    resume: resumeTracking,\n    isActive: isTracking\n  } = pausableFilter(eventFilter);\n  const {\n    ignoreUpdates,\n    ignorePrevAsyncUpdates,\n    stop\n  } = watchIgnorable(\n    source,\n    commit,\n    { deep, flush, eventFilter: composedFilter }\n  );\n  function setSource(source2, value) {\n    ignorePrevAsyncUpdates();\n    ignoreUpdates(() => {\n      source2.value = value;\n    });\n  }\n  const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n  const { clear, commit: manualCommit } = manualHistory;\n  function commit() {\n    ignorePrevAsyncUpdates();\n    manualCommit();\n  }\n  function resume(commitNow) {\n    resumeTracking();\n    if (commitNow)\n      commit();\n  }\n  function batch(fn) {\n    let canceled = false;\n    const cancel = () => canceled = true;\n    ignoreUpdates(() => {\n      fn(cancel);\n    });\n    if (!canceled)\n      commit();\n  }\n  function dispose() {\n    stop();\n    clear();\n  }\n  return {\n    ...manualHistory,\n    isTracking,\n    pause,\n    resume,\n    commit,\n    batch,\n    dispose\n  };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n  const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nfunction useDeviceMotion(options = {}) {\n  const {\n    window = defaultWindow,\n    eventFilter = bypassFilter\n  } = options;\n  const acceleration = ref({ x: null, y: null, z: null });\n  const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n  const interval = ref(0);\n  const accelerationIncludingGravity = ref({\n    x: null,\n    y: null,\n    z: null\n  });\n  if (window) {\n    const onDeviceMotion = createFilterWrapper(\n      eventFilter,\n      (event) => {\n        acceleration.value = event.acceleration;\n        accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n        rotationRate.value = event.rotationRate;\n        interval.value = event.interval;\n      }\n    );\n    useEventListener(window, \"devicemotion\", onDeviceMotion);\n  }\n  return {\n    acceleration,\n    accelerationIncludingGravity,\n    rotationRate,\n    interval\n  };\n}\n\nfunction useDeviceOrientation(options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n  const isAbsolute = ref(false);\n  const alpha = ref(null);\n  const beta = ref(null);\n  const gamma = ref(null);\n  if (window && isSupported.value) {\n    useEventListener(window, \"deviceorientation\", (event) => {\n      isAbsolute.value = event.absolute;\n      alpha.value = event.alpha;\n      beta.value = event.beta;\n      gamma.value = event.gamma;\n    });\n  }\n  return {\n    isSupported,\n    isAbsolute,\n    alpha,\n    beta,\n    gamma\n  };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const pixelRatio = ref(1);\n  if (window) {\n    let observe2 = function() {\n      pixelRatio.value = window.devicePixelRatio;\n      cleanup2();\n      media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n      media.addEventListener(\"change\", observe2, { once: true });\n    }, cleanup2 = function() {\n      media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n    };\n    let media;\n    observe2();\n    tryOnScopeDispose(cleanup2);\n  }\n  return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    requestPermissions = false,\n    constraints = { audio: true, video: true },\n    onUpdated\n  } = options;\n  const devices = ref([]);\n  const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n  const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n  const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n  const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n  const permissionGranted = ref(false);\n  let stream;\n  async function update() {\n    if (!isSupported.value)\n      return;\n    devices.value = await navigator.mediaDevices.enumerateDevices();\n    onUpdated == null ? void 0 : onUpdated(devices.value);\n    if (stream) {\n      stream.getTracks().forEach((t) => t.stop());\n      stream = null;\n    }\n  }\n  async function ensurePermissions() {\n    if (!isSupported.value)\n      return false;\n    if (permissionGranted.value)\n      return true;\n    const { state, query } = usePermission(\"camera\", { controls: true });\n    await query();\n    if (state.value !== \"granted\") {\n      let granted = true;\n      try {\n        stream = await navigator.mediaDevices.getUserMedia(constraints);\n      } catch (e) {\n        stream = null;\n        granted = false;\n      }\n      update();\n      permissionGranted.value = granted;\n    } else {\n      permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  }\n  if (isSupported.value) {\n    if (requestPermissions)\n      ensurePermissions();\n    useEventListener(navigator.mediaDevices, \"devicechange\", update);\n    update();\n  }\n  return {\n    devices,\n    ensurePermissions,\n    permissionGranted,\n    videoInputs,\n    audioInputs,\n    audioOutputs,\n    isSupported\n  };\n}\n\nfunction useDisplayMedia(options = {}) {\n  var _a;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const video = options.video;\n  const audio = options.audio;\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n  });\n  const constraint = { audio, video };\n  const stream = shallowRef();\n  async function _start() {\n    var _a2;\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.addEventListener(\"ended\", stop));\n    return stream.value;\n  }\n  async function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else\n        _stop();\n    },\n    { immediate: true }\n  );\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    enabled\n  };\n}\n\nfunction useDocumentVisibility(options = {}) {\n  const { document = defaultDocument } = options;\n  if (!document)\n    return ref(\"visible\");\n  const visibility = ref(document.visibilityState);\n  useEventListener(document, \"visibilitychange\", () => {\n    visibility.value = document.visibilityState;\n  });\n  return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n  var _a, _b;\n  const {\n    pointerTypes,\n    preventDefault,\n    stopPropagation,\n    exact,\n    onMove,\n    onEnd,\n    onStart,\n    initialValue,\n    axis = \"both\",\n    draggingElement = defaultWindow,\n    containerElement,\n    handle: draggingHandle = target,\n    buttons = [0]\n  } = options;\n  const position = ref(\n    (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n  );\n  const pressedDelta = ref();\n  const filterEvent = (e) => {\n    if (pointerTypes)\n      return pointerTypes.includes(e.pointerType);\n    return true;\n  };\n  const handleEvent = (e) => {\n    if (toValue(preventDefault))\n      e.preventDefault();\n    if (toValue(stopPropagation))\n      e.stopPropagation();\n  };\n  const start = (e) => {\n    var _a2;\n    if (!toValue(buttons).includes(e.button))\n      return;\n    if (toValue(options.disabled) || !filterEvent(e))\n      return;\n    if (toValue(exact) && e.target !== toValue(target))\n      return;\n    const container = toValue(containerElement);\n    const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n    const targetRect = toValue(target).getBoundingClientRect();\n    const pos = {\n      x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left),\n      y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top)\n    };\n    if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n      return;\n    pressedDelta.value = pos;\n    handleEvent(e);\n  };\n  const move = (e) => {\n    if (toValue(options.disabled) || !filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    const container = toValue(containerElement);\n    const targetRect = toValue(target).getBoundingClientRect();\n    let { x, y } = position.value;\n    if (axis === \"x\" || axis === \"both\") {\n      x = e.clientX - pressedDelta.value.x;\n      if (container)\n        x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n    }\n    if (axis === \"y\" || axis === \"both\") {\n      y = e.clientY - pressedDelta.value.y;\n      if (container)\n        y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n    }\n    position.value = {\n      x,\n      y\n    };\n    onMove == null ? void 0 : onMove(position.value, e);\n    handleEvent(e);\n  };\n  const end = (e) => {\n    if (toValue(options.disabled) || !filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    pressedDelta.value = void 0;\n    onEnd == null ? void 0 : onEnd(position.value, e);\n    handleEvent(e);\n  };\n  if (isClient) {\n    const config = { capture: (_b = options.capture) != null ? _b : true };\n    useEventListener(draggingHandle, \"pointerdown\", start, config);\n    useEventListener(draggingElement, \"pointermove\", move, config);\n    useEventListener(draggingElement, \"pointerup\", end, config);\n  }\n  return {\n    ...toRefs(position),\n    position,\n    isDragging: computed(() => !!pressedDelta.value),\n    style: computed(\n      () => `left:${position.value.x}px;top:${position.value.y}px;`\n    )\n  };\n}\n\nfunction useDropZone(target, options = {}) {\n  var _a, _b;\n  const isOverDropZone = ref(false);\n  const files = shallowRef(null);\n  let counter = 0;\n  let isValid = true;\n  if (isClient) {\n    const _options = typeof options === \"function\" ? { onDrop: options } : options;\n    const multiple = (_a = _options.multiple) != null ? _a : true;\n    const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false;\n    const getFiles = (event) => {\n      var _a2, _b2;\n      const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []);\n      return list.length === 0 ? null : multiple ? list : [list[0]];\n    };\n    const checkDataTypes = (types) => {\n      if (_options.dataTypes) {\n        const dataTypes = unref(_options.dataTypes);\n        return typeof dataTypes === \"function\" ? dataTypes(types) : dataTypes ? dataTypes.some((item) => types.includes(item)) : true;\n      }\n      return true;\n    };\n    const checkValidity = (event) => {\n      var _a2, _b2;\n      const items = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items) != null ? _b2 : []);\n      const types = items.map((item) => item.type);\n      const dataTypesValid = checkDataTypes(types);\n      const multipleFilesValid = multiple || items.length <= 1;\n      return dataTypesValid && multipleFilesValid;\n    };\n    const handleDragEvent = (event, eventType) => {\n      var _a2, _b2, _c, _d;\n      isValid = checkValidity(event);\n      if (!isValid) {\n        if (preventDefaultForUnhandled) {\n          event.preventDefault();\n        }\n        if (event.dataTransfer) {\n          event.dataTransfer.dropEffect = \"none\";\n        }\n        return;\n      }\n      event.preventDefault();\n      if (event.dataTransfer) {\n        event.dataTransfer.dropEffect = \"copy\";\n      }\n      const currentFiles = getFiles(event);\n      switch (eventType) {\n        case \"enter\":\n          counter += 1;\n          isOverDropZone.value = true;\n          (_a2 = _options.onEnter) == null ? void 0 : _a2.call(_options, null, event);\n          break;\n        case \"over\":\n          (_b2 = _options.onOver) == null ? void 0 : _b2.call(_options, null, event);\n          break;\n        case \"leave\":\n          counter -= 1;\n          if (counter === 0)\n            isOverDropZone.value = false;\n          (_c = _options.onLeave) == null ? void 0 : _c.call(_options, null, event);\n          break;\n        case \"drop\":\n          counter = 0;\n          isOverDropZone.value = false;\n          if (isValid) {\n            files.value = currentFiles;\n            (_d = _options.onDrop) == null ? void 0 : _d.call(_options, currentFiles, event);\n          }\n          break;\n      }\n    };\n    useEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n    useEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n    useEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n    useEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n  }\n  return {\n    files,\n    isOverDropZone\n  };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...observerOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const targets = computed(() => {\n    const _targets = toValue(target);\n    return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n  });\n  const stopWatch = watch(\n    targets,\n    (els) => {\n      cleanup();\n      if (isSupported.value && window) {\n        observer = new ResizeObserver(callback);\n        for (const _el of els) {\n          if (_el)\n            observer.observe(_el, observerOptions);\n        }\n      }\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop\n  };\n}\n\nfunction useElementBounding(target, options = {}) {\n  const {\n    reset = true,\n    windowResize = true,\n    windowScroll = true,\n    immediate = true,\n    updateTiming = \"sync\"\n  } = options;\n  const height = ref(0);\n  const bottom = ref(0);\n  const left = ref(0);\n  const right = ref(0);\n  const top = ref(0);\n  const width = ref(0);\n  const x = ref(0);\n  const y = ref(0);\n  function recalculate() {\n    const el = unrefElement(target);\n    if (!el) {\n      if (reset) {\n        height.value = 0;\n        bottom.value = 0;\n        left.value = 0;\n        right.value = 0;\n        top.value = 0;\n        width.value = 0;\n        x.value = 0;\n        y.value = 0;\n      }\n      return;\n    }\n    const rect = el.getBoundingClientRect();\n    height.value = rect.height;\n    bottom.value = rect.bottom;\n    left.value = rect.left;\n    right.value = rect.right;\n    top.value = rect.top;\n    width.value = rect.width;\n    x.value = rect.x;\n    y.value = rect.y;\n  }\n  function update() {\n    if (updateTiming === \"sync\")\n      recalculate();\n    else if (updateTiming === \"next-frame\")\n      requestAnimationFrame(() => recalculate());\n  }\n  useResizeObserver(target, update);\n  watch(() => unrefElement(target), (ele) => !ele && update());\n  useMutationObserver(target, update, {\n    attributeFilter: [\"style\", \"class\"]\n  });\n  if (windowScroll)\n    useEventListener(\"scroll\", update, { capture: true, passive: true });\n  if (windowResize)\n    useEventListener(\"resize\", update, { passive: true });\n  tryOnMounted(() => {\n    if (immediate)\n      update();\n  });\n  return {\n    height,\n    bottom,\n    left,\n    right,\n    top,\n    width,\n    x,\n    y,\n    update\n  };\n}\n\nfunction useElementByPoint(options) {\n  const {\n    x,\n    y,\n    document = defaultDocument,\n    multiple,\n    interval = \"requestAnimationFrame\",\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => {\n    if (toValue(multiple))\n      return document && \"elementsFromPoint\" in document;\n    return document && \"elementFromPoint\" in document;\n  });\n  const element = ref(null);\n  const cb = () => {\n    var _a, _b;\n    element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n  };\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  return {\n    isSupported,\n    element,\n    ...controls\n  };\n}\n\nfunction useElementHover(el, options = {}) {\n  const {\n    delayEnter = 0,\n    delayLeave = 0,\n    window = defaultWindow\n  } = options;\n  const isHovered = ref(false);\n  let timer;\n  const toggle = (entering) => {\n    const delay = entering ? delayEnter : delayLeave;\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n    }\n    if (delay)\n      timer = setTimeout(() => isHovered.value = entering, delay);\n    else\n      isHovered.value = entering;\n  };\n  if (!window)\n    return isHovered;\n  useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n  useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n  return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n  const { window = defaultWindow, box = \"content-box\" } = options;\n  const isSVG = computed(() => {\n    var _a, _b;\n    return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n  });\n  const width = ref(initialSize.width);\n  const height = ref(initialSize.height);\n  const { stop: stop1 } = useResizeObserver(\n    target,\n    ([entry]) => {\n      const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n      if (window && isSVG.value) {\n        const $elem = unrefElement(target);\n        if ($elem) {\n          const rect = $elem.getBoundingClientRect();\n          width.value = rect.width;\n          height.value = rect.height;\n        }\n      } else {\n        if (boxSize) {\n          const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n          width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n          height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n        } else {\n          width.value = entry.contentRect.width;\n          height.value = entry.contentRect.height;\n        }\n      }\n    },\n    options\n  );\n  tryOnMounted(() => {\n    const ele = unrefElement(target);\n    if (ele) {\n      width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n      height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n    }\n  });\n  const stop2 = watch(\n    () => unrefElement(target),\n    (ele) => {\n      width.value = ele ? initialSize.width : 0;\n      height.value = ele ? initialSize.height : 0;\n    }\n  );\n  function stop() {\n    stop1();\n    stop2();\n  }\n  return {\n    width,\n    height,\n    stop\n  };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n  const {\n    root,\n    rootMargin = \"0px\",\n    threshold = 0,\n    window = defaultWindow,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n  const targets = computed(() => {\n    const _target = toValue(target);\n    return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n  });\n  let cleanup = noop;\n  const isActive = ref(immediate);\n  const stopWatch = isSupported.value ? watch(\n    () => [targets.value, unrefElement(root), isActive.value],\n    ([targets2, root2]) => {\n      cleanup();\n      if (!isActive.value)\n        return;\n      if (!targets2.length)\n        return;\n      const observer = new IntersectionObserver(\n        callback,\n        {\n          root: unrefElement(root2),\n          rootMargin,\n          threshold\n        }\n      );\n      targets2.forEach((el) => el && observer.observe(el));\n      cleanup = () => {\n        observer.disconnect();\n        cleanup = noop;\n      };\n    },\n    { immediate, flush: \"post\" }\n  ) : noop;\n  const stop = () => {\n    cleanup();\n    stopWatch();\n    isActive.value = false;\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    isActive,\n    pause() {\n      cleanup();\n      isActive.value = false;\n    },\n    resume() {\n      isActive.value = true;\n    },\n    stop\n  };\n}\n\nfunction useElementVisibility(element, options = {}) {\n  const { window = defaultWindow, scrollTarget, threshold = 0 } = options;\n  const elementIsVisible = ref(false);\n  useIntersectionObserver(\n    element,\n    (intersectionObserverEntries) => {\n      let isIntersecting = elementIsVisible.value;\n      let latestTime = 0;\n      for (const entry of intersectionObserverEntries) {\n        if (entry.time >= latestTime) {\n          latestTime = entry.time;\n          isIntersecting = entry.isIntersecting;\n        }\n      }\n      elementIsVisible.value = isIntersecting;\n    },\n    {\n      root: scrollTarget,\n      window,\n      threshold\n    }\n  );\n  return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n  const scope = getCurrentScope();\n  function on(listener) {\n    var _a;\n    const listeners = events.get(key) || /* @__PURE__ */ new Set();\n    listeners.add(listener);\n    events.set(key, listeners);\n    const _off = () => off(listener);\n    (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n    return _off;\n  }\n  function once(listener) {\n    function _listener(...args) {\n      off(_listener);\n      listener(...args);\n    }\n    return on(_listener);\n  }\n  function off(listener) {\n    const listeners = events.get(key);\n    if (!listeners)\n      return;\n    listeners.delete(listener);\n    if (!listeners.size)\n      reset();\n  }\n  function reset() {\n    events.delete(key);\n  }\n  function emit(event, payload) {\n    var _a;\n    (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n  }\n  return { on, once, off, emit, reset };\n}\n\nfunction resolveNestedOptions$1(options) {\n  if (options === true)\n    return {};\n  return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n  const event = ref(null);\n  const data = ref(null);\n  const status = ref(\"CONNECTING\");\n  const eventSource = ref(null);\n  const error = shallowRef(null);\n  const urlRef = toRef(url);\n  const lastEventId = shallowRef(null);\n  let explicitlyClosed = false;\n  let retried = 0;\n  const {\n    withCredentials = false,\n    immediate = true\n  } = options;\n  const close = () => {\n    if (isClient && eventSource.value) {\n      eventSource.value.close();\n      eventSource.value = null;\n      status.value = \"CLOSED\";\n      explicitlyClosed = true;\n    }\n  };\n  const _init = () => {\n    if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n      return;\n    const es = new EventSource(urlRef.value, { withCredentials });\n    status.value = \"CONNECTING\";\n    eventSource.value = es;\n    es.onopen = () => {\n      status.value = \"OPEN\";\n      error.value = null;\n    };\n    es.onerror = (e) => {\n      status.value = \"CLOSED\";\n      error.value = e;\n      if (es.readyState === 2 && !explicitlyClosed && options.autoReconnect) {\n        es.close();\n        const {\n          retries = -1,\n          delay = 1e3,\n          onFailed\n        } = resolveNestedOptions$1(options.autoReconnect);\n        retried += 1;\n        if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n          setTimeout(_init, delay);\n        else if (typeof retries === \"function\" && retries())\n          setTimeout(_init, delay);\n        else\n          onFailed == null ? void 0 : onFailed();\n      }\n    };\n    es.onmessage = (e) => {\n      event.value = null;\n      data.value = e.data;\n      lastEventId.value = e.lastEventId;\n    };\n    for (const event_name of events) {\n      useEventListener(es, event_name, (e) => {\n        event.value = event_name;\n        data.value = e.data || null;\n      });\n    }\n  };\n  const open = () => {\n    if (!isClient)\n      return;\n    close();\n    explicitlyClosed = false;\n    retried = 0;\n    _init();\n  };\n  if (immediate)\n    watch(urlRef, open, { immediate: true });\n  tryOnScopeDispose(close);\n  return {\n    eventSource,\n    event,\n    data,\n    status,\n    error,\n    open,\n    close,\n    lastEventId\n  };\n}\n\nfunction useEyeDropper(options = {}) {\n  const { initialValue = \"\" } = options;\n  const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n  const sRGBHex = ref(initialValue);\n  async function open(openOptions) {\n    if (!isSupported.value)\n      return;\n    const eyeDropper = new window.EyeDropper();\n    const result = await eyeDropper.open(openOptions);\n    sRGBHex.value = result.sRGBHex;\n    return result;\n  }\n  return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n  const {\n    baseUrl = \"\",\n    rel = \"icon\",\n    document = defaultDocument\n  } = options;\n  const favicon = toRef(newIcon);\n  const applyIcon = (icon) => {\n    const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n    if (!elements || elements.length === 0) {\n      const link = document == null ? void 0 : document.createElement(\"link\");\n      if (link) {\n        link.rel = rel;\n        link.href = `${baseUrl}${icon}`;\n        link.type = `image/${icon.split(\".\").pop()}`;\n        document == null ? void 0 : document.head.append(link);\n      }\n      return;\n    }\n    elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n  };\n  watch(\n    favicon,\n    (i, o) => {\n      if (typeof i === \"string\" && i !== o)\n        applyIcon(i);\n    },\n    { immediate: true }\n  );\n  return favicon;\n}\n\nconst payloadMapping = {\n  json: \"application/json\",\n  text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n  return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n  return reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n  if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n    return Object.fromEntries(headers.entries());\n  return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n  if (combination === \"overwrite\") {\n    return async (ctx) => {\n      const callback = callbacks[callbacks.length - 1];\n      if (callback)\n        return { ...ctx, ...await callback(ctx) };\n      return ctx;\n    };\n  } else {\n    return async (ctx) => {\n      for (const callback of callbacks) {\n        if (callback)\n          ctx = { ...ctx, ...await callback(ctx) };\n      }\n      return ctx;\n    };\n  }\n}\nfunction createFetch(config = {}) {\n  const _combination = config.combination || \"chain\";\n  const _options = config.options || {};\n  const _fetchOptions = config.fetchOptions || {};\n  function useFactoryFetch(url, ...args) {\n    const computedUrl = computed(() => {\n      const baseUrl = toValue(config.baseUrl);\n      const targetUrl = toValue(url);\n      return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n    });\n    let options = _options;\n    let fetchOptions = _fetchOptions;\n    if (args.length > 0) {\n      if (isFetchOptions(args[0])) {\n        options = {\n          ...options,\n          ...args[0],\n          beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n          afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n          onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n        };\n      } else {\n        fetchOptions = {\n          ...fetchOptions,\n          ...args[0],\n          headers: {\n            ...headersToObject(fetchOptions.headers) || {},\n            ...headersToObject(args[0].headers) || {}\n          }\n        };\n      }\n    }\n    if (args.length > 1 && isFetchOptions(args[1])) {\n      options = {\n        ...options,\n        ...args[1],\n        beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n        afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n        onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n      };\n    }\n    return useFetch(computedUrl, fetchOptions, options);\n  }\n  return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n  var _a;\n  const supportsAbort = typeof AbortController === \"function\";\n  let fetchOptions = {};\n  let options = {\n    immediate: true,\n    refetch: false,\n    timeout: 0,\n    updateDataOnError: false\n  };\n  const config = {\n    method: \"GET\",\n    type: \"text\",\n    payload: void 0\n  };\n  if (args.length > 0) {\n    if (isFetchOptions(args[0]))\n      options = { ...options, ...args[0] };\n    else\n      fetchOptions = args[0];\n  }\n  if (args.length > 1) {\n    if (isFetchOptions(args[1]))\n      options = { ...options, ...args[1] };\n  }\n  const {\n    fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n    initialData,\n    timeout\n  } = options;\n  const responseEvent = createEventHook();\n  const errorEvent = createEventHook();\n  const finallyEvent = createEventHook();\n  const isFinished = ref(false);\n  const isFetching = ref(false);\n  const aborted = ref(false);\n  const statusCode = ref(null);\n  const response = shallowRef(null);\n  const error = shallowRef(null);\n  const data = shallowRef(initialData || null);\n  const canAbort = computed(() => supportsAbort && isFetching.value);\n  let controller;\n  let timer;\n  const abort = () => {\n    if (supportsAbort) {\n      controller == null ? void 0 : controller.abort();\n      controller = new AbortController();\n      controller.signal.onabort = () => aborted.value = true;\n      fetchOptions = {\n        ...fetchOptions,\n        signal: controller.signal\n      };\n    }\n  };\n  const loading = (isLoading) => {\n    isFetching.value = isLoading;\n    isFinished.value = !isLoading;\n  };\n  if (timeout)\n    timer = useTimeoutFn(abort, timeout, { immediate: false });\n  let executeCounter = 0;\n  const execute = async (throwOnFailed = false) => {\n    var _a2, _b;\n    abort();\n    loading(true);\n    error.value = null;\n    statusCode.value = null;\n    aborted.value = false;\n    executeCounter += 1;\n    const currentExecuteCounter = executeCounter;\n    const defaultFetchOptions = {\n      method: config.method,\n      headers: {}\n    };\n    if (config.payload) {\n      const headers = headersToObject(defaultFetchOptions.headers);\n      const payload = toValue(config.payload);\n      const proto = Object.getPrototypeOf(payload);\n      if (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData))\n        config.payloadType = \"json\";\n      if (config.payloadType)\n        headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n      defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n    }\n    let isCanceled = false;\n    const context = {\n      url: toValue(url),\n      options: {\n        ...defaultFetchOptions,\n        ...fetchOptions\n      },\n      cancel: () => {\n        isCanceled = true;\n      }\n    };\n    if (options.beforeFetch)\n      Object.assign(context, await options.beforeFetch(context));\n    if (isCanceled || !fetch) {\n      loading(false);\n      return Promise.resolve(null);\n    }\n    let responseData = null;\n    if (timer)\n      timer.start();\n    return fetch(\n      context.url,\n      {\n        ...defaultFetchOptions,\n        ...context.options,\n        headers: {\n          ...headersToObject(defaultFetchOptions.headers),\n          ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n        }\n      }\n    ).then(async (fetchResponse) => {\n      response.value = fetchResponse;\n      statusCode.value = fetchResponse.status;\n      responseData = await fetchResponse.clone()[config.type]();\n      if (!fetchResponse.ok) {\n        data.value = initialData || null;\n        throw new Error(fetchResponse.statusText);\n      }\n      if (options.afterFetch) {\n        ({ data: responseData } = await options.afterFetch({\n          data: responseData,\n          response: fetchResponse\n        }));\n      }\n      data.value = responseData;\n      responseEvent.trigger(fetchResponse);\n      return fetchResponse;\n    }).catch(async (fetchError) => {\n      let errorData = fetchError.message || fetchError.name;\n      if (options.onFetchError) {\n        ({ error: errorData, data: responseData } = await options.onFetchError({\n          data: responseData,\n          error: fetchError,\n          response: response.value\n        }));\n      }\n      error.value = errorData;\n      if (options.updateDataOnError)\n        data.value = responseData;\n      errorEvent.trigger(fetchError);\n      if (throwOnFailed)\n        throw fetchError;\n      return null;\n    }).finally(() => {\n      if (currentExecuteCounter === executeCounter)\n        loading(false);\n      if (timer)\n        timer.stop();\n      finallyEvent.trigger(null);\n    });\n  };\n  const refetch = toRef(options.refetch);\n  watch(\n    [\n      refetch,\n      toRef(url)\n    ],\n    ([refetch2]) => refetch2 && execute(),\n    { deep: true }\n  );\n  const shell = {\n    isFinished: readonly(isFinished),\n    isFetching: readonly(isFetching),\n    statusCode,\n    response,\n    error,\n    data,\n    canAbort,\n    aborted,\n    abort,\n    execute,\n    onFetchResponse: responseEvent.on,\n    onFetchError: errorEvent.on,\n    onFetchFinally: finallyEvent.on,\n    // method\n    get: setMethod(\"GET\"),\n    put: setMethod(\"PUT\"),\n    post: setMethod(\"POST\"),\n    delete: setMethod(\"DELETE\"),\n    patch: setMethod(\"PATCH\"),\n    head: setMethod(\"HEAD\"),\n    options: setMethod(\"OPTIONS\"),\n    // type\n    json: setType(\"json\"),\n    text: setType(\"text\"),\n    blob: setType(\"blob\"),\n    arrayBuffer: setType(\"arrayBuffer\"),\n    formData: setType(\"formData\")\n  };\n  function setMethod(method) {\n    return (payload, payloadType) => {\n      if (!isFetching.value) {\n        config.method = method;\n        config.payload = payload;\n        config.payloadType = payloadType;\n        if (isRef(config.payload)) {\n          watch(\n            [\n              refetch,\n              toRef(config.payload)\n            ],\n            ([refetch2]) => refetch2 && execute(),\n            { deep: true }\n          );\n        }\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  function waitUntilFinished() {\n    return new Promise((resolve, reject) => {\n      until(isFinished).toBe(true).then(() => resolve(shell)).catch(reject);\n    });\n  }\n  function setType(type) {\n    return () => {\n      if (!isFetching.value) {\n        config.type = type;\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  if (options.immediate)\n    Promise.resolve().then(() => execute());\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilFinished().then(onFulfilled, onRejected);\n    }\n  };\n}\nfunction joinPaths(start, end) {\n  if (!start.endsWith(\"/\") && !end.startsWith(\"/\")) {\n    return `${start}/${end}`;\n  }\n  if (start.endsWith(\"/\") && end.startsWith(\"/\")) {\n    return `${start.slice(0, -1)}${end}`;\n  }\n  return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n  multiple: true,\n  accept: \"*\",\n  reset: false,\n  directory: false\n};\nfunction useFileDialog(options = {}) {\n  const {\n    document = defaultDocument\n  } = options;\n  const files = ref(null);\n  const { on: onChange, trigger: changeTrigger } = createEventHook();\n  const { on: onCancel, trigger: cancelTrigger } = createEventHook();\n  let input;\n  if (document) {\n    input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.onchange = (event) => {\n      const result = event.target;\n      files.value = result.files;\n      changeTrigger(files.value);\n    };\n    input.oncancel = () => {\n      cancelTrigger();\n    };\n  }\n  const reset = () => {\n    files.value = null;\n    if (input && input.value) {\n      input.value = \"\";\n      changeTrigger(null);\n    }\n  };\n  const open = (localOptions) => {\n    if (!input)\n      return;\n    const _options = {\n      ...DEFAULT_OPTIONS,\n      ...options,\n      ...localOptions\n    };\n    input.multiple = _options.multiple;\n    input.accept = _options.accept;\n    input.webkitdirectory = _options.directory;\n    if (hasOwn(_options, \"capture\"))\n      input.capture = _options.capture;\n    if (_options.reset)\n      reset();\n    input.click();\n  };\n  return {\n    files: readonly(files),\n    open,\n    reset,\n    onCancel,\n    onChange\n  };\n}\n\nfunction useFileSystemAccess(options = {}) {\n  const {\n    window: _window = defaultWindow,\n    dataType = \"Text\"\n  } = options;\n  const window = _window;\n  const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n  const fileHandle = ref();\n  const data = ref();\n  const file = ref();\n  const fileName = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n  });\n  const fileMIME = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n  });\n  const fileSize = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n  });\n  const fileLastModified = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n  });\n  async function open(_options = {}) {\n    if (!isSupported.value)\n      return;\n    const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n    fileHandle.value = handle;\n    await updateData();\n  }\n  async function create(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    data.value = void 0;\n    await updateData();\n  }\n  async function save(_options = {}) {\n    if (!isSupported.value)\n      return;\n    if (!fileHandle.value)\n      return saveAs(_options);\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function saveAs(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function updateFile() {\n    var _a;\n    file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n  }\n  async function updateData() {\n    var _a, _b;\n    await updateFile();\n    const type = toValue(dataType);\n    if (type === \"Text\")\n      data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n    else if (type === \"ArrayBuffer\")\n      data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n    else if (type === \"Blob\")\n      data.value = file.value;\n  }\n  watch(() => toValue(dataType), updateData);\n  return {\n    isSupported,\n    data,\n    file,\n    fileName,\n    fileMIME,\n    fileSize,\n    fileLastModified,\n    open,\n    create,\n    save,\n    saveAs,\n    updateData\n  };\n}\n\nfunction useFocus(target, options = {}) {\n  const { initialValue = false, focusVisible = false, preventScroll = false } = options;\n  const innerFocused = ref(false);\n  const targetElement = computed(() => unrefElement(target));\n  useEventListener(targetElement, \"focus\", (event) => {\n    var _a, _b;\n    if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n      innerFocused.value = true;\n  });\n  useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n  const focused = computed({\n    get: () => innerFocused.value,\n    set(value) {\n      var _a, _b;\n      if (!value && innerFocused.value)\n        (_a = targetElement.value) == null ? void 0 : _a.blur();\n      else if (value && !innerFocused.value)\n        (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll });\n    }\n  });\n  watch(\n    targetElement,\n    () => {\n      focused.value = initialValue;\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  return { focused };\n}\n\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nfunction useFocusWithin(target, options = {}) {\n  const { window = defaultWindow } = options;\n  const targetElement = computed(() => unrefElement(target));\n  const _focused = ref(false);\n  const focused = computed(() => _focused.value);\n  const activeElement = useActiveElement(options);\n  if (!window || !activeElement.value) {\n    return { focused };\n  }\n  useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true);\n  useEventListener(targetElement, EVENT_FOCUS_OUT, () => _focused.value = false);\n  return { focused };\n}\n\nfunction useFps(options) {\n  var _a;\n  const fps = ref(0);\n  if (typeof performance === \"undefined\")\n    return fps;\n  const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n  let last = performance.now();\n  let ticks = 0;\n  useRafFn(() => {\n    ticks += 1;\n    if (ticks >= every) {\n      const now = performance.now();\n      const diff = now - last;\n      fps.value = Math.round(1e3 / (diff / ticks));\n      last = now;\n      ticks = 0;\n    }\n  });\n  return fps;\n}\n\nconst eventHandlers = [\n  \"fullscreenchange\",\n  \"webkitfullscreenchange\",\n  \"webkitendfullscreen\",\n  \"mozfullscreenchange\",\n  \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n  const {\n    document = defaultDocument,\n    autoExit = false\n  } = options;\n  const targetRef = computed(() => {\n    var _a;\n    return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n  });\n  const isFullscreen = ref(false);\n  const requestMethod = computed(() => {\n    return [\n      \"requestFullscreen\",\n      \"webkitRequestFullscreen\",\n      \"webkitEnterFullscreen\",\n      \"webkitEnterFullScreen\",\n      \"webkitRequestFullScreen\",\n      \"mozRequestFullScreen\",\n      \"msRequestFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const exitMethod = computed(() => {\n    return [\n      \"exitFullscreen\",\n      \"webkitExitFullscreen\",\n      \"webkitExitFullScreen\",\n      \"webkitCancelFullScreen\",\n      \"mozCancelFullScreen\",\n      \"msExitFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenEnabled = computed(() => {\n    return [\n      \"fullScreen\",\n      \"webkitIsFullScreen\",\n      \"webkitDisplayingFullscreen\",\n      \"mozFullScreen\",\n      \"msFullscreenElement\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenElementMethod = [\n    \"fullscreenElement\",\n    \"webkitFullscreenElement\",\n    \"mozFullScreenElement\",\n    \"msFullscreenElement\"\n  ].find((m) => document && m in document);\n  const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n  const isCurrentElementFullScreen = () => {\n    if (fullscreenElementMethod)\n      return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n    return false;\n  };\n  const isElementFullScreen = () => {\n    if (fullscreenEnabled.value) {\n      if (document && document[fullscreenEnabled.value] != null) {\n        return document[fullscreenEnabled.value];\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n          return Boolean(target2[fullscreenEnabled.value]);\n        }\n      }\n    }\n    return false;\n  };\n  async function exit() {\n    if (!isSupported.value || !isFullscreen.value)\n      return;\n    if (exitMethod.value) {\n      if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n        await document[exitMethod.value]();\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n          await target2[exitMethod.value]();\n      }\n    }\n    isFullscreen.value = false;\n  }\n  async function enter() {\n    if (!isSupported.value || isFullscreen.value)\n      return;\n    if (isElementFullScreen())\n      await exit();\n    const target2 = targetRef.value;\n    if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n      await target2[requestMethod.value]();\n      isFullscreen.value = true;\n    }\n  }\n  async function toggle() {\n    await (isFullscreen.value ? exit() : enter());\n  }\n  const handlerCallback = () => {\n    const isElementFullScreenValue = isElementFullScreen();\n    if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n      isFullscreen.value = isElementFullScreenValue;\n  };\n  useEventListener(document, eventHandlers, handlerCallback, false);\n  useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n  if (autoExit)\n    tryOnScopeDispose(exit);\n  return {\n    isSupported,\n    isFullscreen,\n    enter,\n    exit,\n    toggle\n  };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n  return computed(() => {\n    if (gamepad.value) {\n      return {\n        buttons: {\n          a: gamepad.value.buttons[0],\n          b: gamepad.value.buttons[1],\n          x: gamepad.value.buttons[2],\n          y: gamepad.value.buttons[3]\n        },\n        bumper: {\n          left: gamepad.value.buttons[4],\n          right: gamepad.value.buttons[5]\n        },\n        triggers: {\n          left: gamepad.value.buttons[6],\n          right: gamepad.value.buttons[7]\n        },\n        stick: {\n          left: {\n            horizontal: gamepad.value.axes[0],\n            vertical: gamepad.value.axes[1],\n            button: gamepad.value.buttons[10]\n          },\n          right: {\n            horizontal: gamepad.value.axes[2],\n            vertical: gamepad.value.axes[3],\n            button: gamepad.value.buttons[11]\n          }\n        },\n        dpad: {\n          up: gamepad.value.buttons[12],\n          down: gamepad.value.buttons[13],\n          left: gamepad.value.buttons[14],\n          right: gamepad.value.buttons[15]\n        },\n        back: gamepad.value.buttons[8],\n        start: gamepad.value.buttons[9]\n      };\n    }\n    return null;\n  });\n}\nfunction useGamepad(options = {}) {\n  const {\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n  const gamepads = ref([]);\n  const onConnectedHook = createEventHook();\n  const onDisconnectedHook = createEventHook();\n  const stateFromGamepad = (gamepad) => {\n    const hapticActuators = [];\n    const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n    if (vibrationActuator)\n      hapticActuators.push(vibrationActuator);\n    if (gamepad.hapticActuators)\n      hapticActuators.push(...gamepad.hapticActuators);\n    return {\n      id: gamepad.id,\n      index: gamepad.index,\n      connected: gamepad.connected,\n      mapping: gamepad.mapping,\n      timestamp: gamepad.timestamp,\n      vibrationActuator: gamepad.vibrationActuator,\n      hapticActuators,\n      axes: gamepad.axes.map((axes) => axes),\n      buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n    };\n  };\n  const updateGamepadState = () => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    for (const gamepad of _gamepads) {\n      if (gamepad && gamepads.value[gamepad.index])\n        gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n    }\n  };\n  const { isActive, pause, resume } = useRafFn(updateGamepadState);\n  const onGamepadConnected = (gamepad) => {\n    if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n      gamepads.value.push(stateFromGamepad(gamepad));\n      onConnectedHook.trigger(gamepad.index);\n    }\n    resume();\n  };\n  const onGamepadDisconnected = (gamepad) => {\n    gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n    onDisconnectedHook.trigger(gamepad.index);\n  };\n  useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n  useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n  tryOnMounted(() => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    for (const gamepad of _gamepads) {\n      if (gamepad && gamepads.value[gamepad.index])\n        onGamepadConnected(gamepad);\n    }\n  });\n  pause();\n  return {\n    isSupported,\n    onConnected: onConnectedHook.on,\n    onDisconnected: onDisconnectedHook.on,\n    gamepads,\n    pause,\n    resume,\n    isActive\n  };\n}\n\nfunction useGeolocation(options = {}) {\n  const {\n    enableHighAccuracy = true,\n    maximumAge = 3e4,\n    timeout = 27e3,\n    navigator = defaultNavigator,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n  const locatedAt = ref(null);\n  const error = shallowRef(null);\n  const coords = ref({\n    accuracy: 0,\n    latitude: Number.POSITIVE_INFINITY,\n    longitude: Number.POSITIVE_INFINITY,\n    altitude: null,\n    altitudeAccuracy: null,\n    heading: null,\n    speed: null\n  });\n  function updatePosition(position) {\n    locatedAt.value = position.timestamp;\n    coords.value = position.coords;\n    error.value = null;\n  }\n  let watcher;\n  function resume() {\n    if (isSupported.value) {\n      watcher = navigator.geolocation.watchPosition(\n        updatePosition,\n        (err) => error.value = err,\n        {\n          enableHighAccuracy,\n          maximumAge,\n          timeout\n        }\n      );\n    }\n  }\n  if (immediate)\n    resume();\n  function pause() {\n    if (watcher && navigator)\n      navigator.geolocation.clearWatch(watcher);\n  }\n  tryOnScopeDispose(() => {\n    pause();\n  });\n  return {\n    isSupported,\n    coords,\n    locatedAt,\n    error,\n    resume,\n    pause\n  };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n  const {\n    initialState = false,\n    listenForVisibilityChange = true,\n    events = defaultEvents$1,\n    window = defaultWindow,\n    eventFilter = throttleFilter(50)\n  } = options;\n  const idle = ref(initialState);\n  const lastActive = ref(timestamp());\n  let timer;\n  const reset = () => {\n    idle.value = false;\n    clearTimeout(timer);\n    timer = setTimeout(() => idle.value = true, timeout);\n  };\n  const onEvent = createFilterWrapper(\n    eventFilter,\n    () => {\n      lastActive.value = timestamp();\n      reset();\n    }\n  );\n  if (window) {\n    const document = window.document;\n    for (const event of events)\n      useEventListener(window, event, onEvent, { passive: true });\n    if (listenForVisibilityChange) {\n      useEventListener(document, \"visibilitychange\", () => {\n        if (!document.hidden)\n          onEvent();\n      });\n    }\n    reset();\n  }\n  return {\n    idle,\n    lastActive,\n    reset\n  };\n}\n\nasync function loadImage(options) {\n  return new Promise((resolve, reject) => {\n    const img = new Image();\n    const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n    img.src = src;\n    if (srcset)\n      img.srcset = srcset;\n    if (sizes)\n      img.sizes = sizes;\n    if (clazz)\n      img.className = clazz;\n    if (loading)\n      img.loading = loading;\n    if (crossorigin)\n      img.crossOrigin = crossorigin;\n    if (referrerPolicy)\n      img.referrerPolicy = referrerPolicy;\n    img.onload = () => resolve(img);\n    img.onerror = reject;\n  });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n  const state = useAsyncState(\n    () => loadImage(toValue(options)),\n    void 0,\n    {\n      resetOnExecute: true,\n      ...asyncStateOptions\n    }\n  );\n  watch(\n    () => toValue(options),\n    () => state.execute(asyncStateOptions.delay),\n    { deep: true }\n  );\n  return state;\n}\n\nfunction resolveElement(el) {\n  if (typeof Window !== \"undefined\" && el instanceof Window)\n    return el.document.documentElement;\n  if (typeof Document !== \"undefined\" && el instanceof Document)\n    return el.documentElement;\n  return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n  const {\n    throttle = 0,\n    idle = 200,\n    onStop = noop,\n    onScroll = noop,\n    offset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventListenerOptions = {\n      capture: false,\n      passive: true\n    },\n    behavior = \"auto\",\n    window = defaultWindow,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const internalX = ref(0);\n  const internalY = ref(0);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo(x2, void 0);\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo(void 0, y2);\n    }\n  });\n  function scrollTo(_x, _y) {\n    var _a, _b, _c, _d;\n    if (!window)\n      return;\n    const _element = toValue(element);\n    if (!_element)\n      return;\n    (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n      top: (_a = toValue(_y)) != null ? _a : y.value,\n      left: (_b = toValue(_x)) != null ? _b : x.value,\n      behavior: toValue(behavior)\n    });\n    const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n    if (x != null)\n      internalX.value = scrollContainer.scrollLeft;\n    if (y != null)\n      internalY.value = scrollContainer.scrollTop;\n  }\n  const isScrolling = ref(false);\n  const arrivedState = reactive({\n    left: true,\n    right: false,\n    top: true,\n    bottom: false\n  });\n  const directions = reactive({\n    left: false,\n    right: false,\n    top: false,\n    bottom: false\n  });\n  const onScrollEnd = (e) => {\n    if (!isScrolling.value)\n      return;\n    isScrolling.value = false;\n    directions.left = false;\n    directions.right = false;\n    directions.top = false;\n    directions.bottom = false;\n    onStop(e);\n  };\n  const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n  const setArrivedState = (target) => {\n    var _a;\n    if (!window)\n      return;\n    const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n    const { display, flexDirection } = getComputedStyle(el);\n    const scrollLeft = el.scrollLeft;\n    directions.left = scrollLeft < internalX.value;\n    directions.right = scrollLeft > internalX.value;\n    const left = Math.abs(scrollLeft) <= (offset.left || 0);\n    const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"row-reverse\") {\n      arrivedState.left = right;\n      arrivedState.right = left;\n    } else {\n      arrivedState.left = left;\n      arrivedState.right = right;\n    }\n    internalX.value = scrollLeft;\n    let scrollTop = el.scrollTop;\n    if (target === window.document && !scrollTop)\n      scrollTop = window.document.body.scrollTop;\n    directions.top = scrollTop < internalY.value;\n    directions.bottom = scrollTop > internalY.value;\n    const top = Math.abs(scrollTop) <= (offset.top || 0);\n    const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"column-reverse\") {\n      arrivedState.top = bottom;\n      arrivedState.bottom = top;\n    } else {\n      arrivedState.top = top;\n      arrivedState.bottom = bottom;\n    }\n    internalY.value = scrollTop;\n  };\n  const onScrollHandler = (e) => {\n    var _a;\n    if (!window)\n      return;\n    const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n    setArrivedState(eventTarget);\n    isScrolling.value = true;\n    onScrollEndDebounced(e);\n    onScroll(e);\n  };\n  useEventListener(\n    element,\n    \"scroll\",\n    throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n    eventListenerOptions\n  );\n  tryOnMounted(() => {\n    try {\n      const _element = toValue(element);\n      if (!_element)\n        return;\n      setArrivedState(_element);\n    } catch (e) {\n      onError(e);\n    }\n  });\n  useEventListener(\n    element,\n    \"scrollend\",\n    onScrollEnd,\n    eventListenerOptions\n  );\n  return {\n    x,\n    y,\n    isScrolling,\n    arrivedState,\n    directions,\n    measure() {\n      const _element = toValue(element);\n      if (window && _element)\n        setArrivedState(_element);\n    }\n  };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n  var _a;\n  const {\n    direction = \"bottom\",\n    interval = 100,\n    canLoadMore = () => true\n  } = options;\n  const state = reactive(useScroll(\n    element,\n    {\n      ...options,\n      offset: {\n        [direction]: (_a = options.distance) != null ? _a : 0,\n        ...options.offset\n      }\n    }\n  ));\n  const promise = ref();\n  const isLoading = computed(() => !!promise.value);\n  const observedElement = computed(() => {\n    return resolveElement(toValue(element));\n  });\n  const isElementVisible = useElementVisibility(observedElement);\n  function checkAndLoad() {\n    state.measure();\n    if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n      return;\n    const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n    const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n    if (state.arrivedState[direction] || isNarrower) {\n      if (!promise.value) {\n        promise.value = Promise.all([\n          onLoadMore(state),\n          new Promise((resolve) => setTimeout(resolve, interval))\n        ]).finally(() => {\n          promise.value = null;\n          nextTick(() => checkAndLoad());\n        });\n      }\n    }\n  }\n  const stop = watch(\n    () => [state.arrivedState[direction], isElementVisible.value],\n    checkAndLoad,\n    { immediate: true }\n  );\n  tryOnUnmounted(stop);\n  return {\n    isLoading,\n    reset() {\n      nextTick(() => checkAndLoad());\n    }\n  };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n  const {\n    events = defaultEvents,\n    document = defaultDocument,\n    initial = null\n  } = options;\n  const state = ref(initial);\n  if (document) {\n    events.forEach((listenerEvent) => {\n      useEventListener(document, listenerEvent, (evt) => {\n        if (typeof evt.getModifierState === \"function\")\n          state.value = evt.getModifierState(modifier);\n      });\n    });\n  }\n  return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n  ctrl: \"control\",\n  command: \"meta\",\n  cmd: \"meta\",\n  option: \"alt\",\n  up: \"arrowup\",\n  down: \"arrowdown\",\n  left: \"arrowleft\",\n  right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n  const {\n    reactive: useReactive = false,\n    target = defaultWindow,\n    aliasMap = DefaultMagicKeysAliasMap,\n    passive = true,\n    onEventFired = noop\n  } = options;\n  const current = reactive(/* @__PURE__ */ new Set());\n  const obj = {\n    toJSON() {\n      return {};\n    },\n    current\n  };\n  const refs = useReactive ? reactive(obj) : obj;\n  const metaDeps = /* @__PURE__ */ new Set();\n  const usedKeys = /* @__PURE__ */ new Set();\n  function setRefs(key, value) {\n    if (key in refs) {\n      if (useReactive)\n        refs[key] = value;\n      else\n        refs[key].value = value;\n    }\n  }\n  function reset() {\n    current.clear();\n    for (const key of usedKeys)\n      setRefs(key, false);\n  }\n  function updateRefs(e, value) {\n    var _a, _b;\n    const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n    const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n    const values = [code, key].filter(Boolean);\n    if (key) {\n      if (value)\n        current.add(key);\n      else\n        current.delete(key);\n    }\n    for (const key2 of values) {\n      usedKeys.add(key2);\n      setRefs(key2, value);\n    }\n    if (key === \"meta\" && !value) {\n      metaDeps.forEach((key2) => {\n        current.delete(key2);\n        setRefs(key2, false);\n      });\n      metaDeps.clear();\n    } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n      [...current, ...values].forEach((key2) => metaDeps.add(key2));\n    }\n  }\n  useEventListener(target, \"keydown\", (e) => {\n    updateRefs(e, true);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(target, \"keyup\", (e) => {\n    updateRefs(e, false);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(\"blur\", reset, { passive: true });\n  useEventListener(\"focus\", reset, { passive: true });\n  const proxy = new Proxy(\n    refs,\n    {\n      get(target2, prop, rec) {\n        if (typeof prop !== \"string\")\n          return Reflect.get(target2, prop, rec);\n        prop = prop.toLowerCase();\n        if (prop in aliasMap)\n          prop = aliasMap[prop];\n        if (!(prop in refs)) {\n          if (/[+_-]/.test(prop)) {\n            const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n            refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n          } else {\n            refs[prop] = ref(false);\n          }\n        }\n        const r = Reflect.get(target2, prop, rec);\n        return useReactive ? toValue(r) : r;\n      }\n    }\n  );\n  return proxy;\n}\n\nfunction usingElRef(source, cb) {\n  if (toValue(source))\n    cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n  let ranges = [];\n  for (let i = 0; i < timeRanges.length; ++i)\n    ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n  return ranges;\n}\nfunction tracksToArray(tracks) {\n  return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n  src: \"\",\n  tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n  target = toRef(target);\n  options = {\n    ...defaultOptions,\n    ...options\n  };\n  const {\n    document = defaultDocument\n  } = options;\n  const currentTime = ref(0);\n  const duration = ref(0);\n  const seeking = ref(false);\n  const volume = ref(1);\n  const waiting = ref(false);\n  const ended = ref(false);\n  const playing = ref(false);\n  const rate = ref(1);\n  const stalled = ref(false);\n  const buffered = ref([]);\n  const tracks = ref([]);\n  const selectedTrack = ref(-1);\n  const isPictureInPicture = ref(false);\n  const muted = ref(false);\n  const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n  const sourceErrorEvent = createEventHook();\n  const playbackErrorEvent = createEventHook();\n  const disableTrack = (track) => {\n    usingElRef(target, (el) => {\n      if (track) {\n        const id = typeof track === \"number\" ? track : track.id;\n        el.textTracks[id].mode = \"disabled\";\n      } else {\n        for (let i = 0; i < el.textTracks.length; ++i)\n          el.textTracks[i].mode = \"disabled\";\n      }\n      selectedTrack.value = -1;\n    });\n  };\n  const enableTrack = (track, disableTracks = true) => {\n    usingElRef(target, (el) => {\n      const id = typeof track === \"number\" ? track : track.id;\n      if (disableTracks)\n        disableTrack();\n      el.textTracks[id].mode = \"showing\";\n      selectedTrack.value = id;\n    });\n  };\n  const togglePictureInPicture = () => {\n    return new Promise((resolve, reject) => {\n      usingElRef(target, async (el) => {\n        if (supportsPictureInPicture) {\n          if (!isPictureInPicture.value) {\n            el.requestPictureInPicture().then(resolve).catch(reject);\n          } else {\n            document.exitPictureInPicture().then(resolve).catch(reject);\n          }\n        }\n      });\n    });\n  };\n  watchEffect(() => {\n    if (!document)\n      return;\n    const el = toValue(target);\n    if (!el)\n      return;\n    const src = toValue(options.src);\n    let sources = [];\n    if (!src)\n      return;\n    if (typeof src === \"string\")\n      sources = [{ src }];\n    else if (Array.isArray(src))\n      sources = src;\n    else if (isObject(src))\n      sources = [src];\n    el.querySelectorAll(\"source\").forEach((e) => {\n      e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n      e.remove();\n    });\n    sources.forEach(({ src: src2, type }) => {\n      const source = document.createElement(\"source\");\n      source.setAttribute(\"src\", src2);\n      source.setAttribute(\"type\", type || \"\");\n      source.addEventListener(\"error\", sourceErrorEvent.trigger);\n      el.appendChild(source);\n    });\n    el.load();\n  });\n  tryOnScopeDispose(() => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n  });\n  watch([target, volume], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.volume = volume.value;\n  });\n  watch([target, muted], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.muted = muted.value;\n  });\n  watch([target, rate], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.playbackRate = rate.value;\n  });\n  watchEffect(() => {\n    if (!document)\n      return;\n    const textTracks = toValue(options.tracks);\n    const el = toValue(target);\n    if (!textTracks || !textTracks.length || !el)\n      return;\n    el.querySelectorAll(\"track\").forEach((e) => e.remove());\n    textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n      const track = document.createElement(\"track\");\n      track.default = isDefault || false;\n      track.kind = kind;\n      track.label = label;\n      track.src = src;\n      track.srclang = srcLang;\n      if (track.default)\n        selectedTrack.value = i;\n      el.appendChild(track);\n    });\n  });\n  const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.currentTime = time;\n  });\n  const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    if (isPlaying) {\n      el.play().catch((e) => {\n        playbackErrorEvent.trigger(e);\n        throw e;\n      });\n    } else {\n      el.pause();\n    }\n  });\n  useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n  useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n  useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n  useEventListener(target, \"seeking\", () => seeking.value = true);\n  useEventListener(target, \"seeked\", () => seeking.value = false);\n  useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n    waiting.value = true;\n    ignorePlayingUpdates(() => playing.value = false);\n  });\n  useEventListener(target, \"loadeddata\", () => waiting.value = false);\n  useEventListener(target, \"playing\", () => {\n    waiting.value = false;\n    ended.value = false;\n    ignorePlayingUpdates(() => playing.value = true);\n  });\n  useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n  useEventListener(target, \"stalled\", () => stalled.value = true);\n  useEventListener(target, \"ended\", () => ended.value = true);\n  useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n  useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n  useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n  useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n  useEventListener(target, \"volumechange\", () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    volume.value = el.volume;\n    muted.value = el.muted;\n  });\n  const listeners = [];\n  const stop = watch([target], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    stop();\n    listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n  });\n  tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n  return {\n    currentTime,\n    duration,\n    waiting,\n    seeking,\n    ended,\n    stalled,\n    buffered,\n    playing,\n    rate,\n    // Volume\n    volume,\n    muted,\n    // Tracks\n    tracks,\n    selectedTrack,\n    enableTrack,\n    disableTrack,\n    // Picture in Picture\n    supportsPictureInPicture,\n    togglePictureInPicture,\n    isPictureInPicture,\n    // Events\n    onSourceError: sourceErrorEvent.on,\n    onPlaybackError: playbackErrorEvent.on\n  };\n}\n\nfunction useMemoize(resolver, options) {\n  const initCache = () => {\n    if (options == null ? void 0 : options.cache)\n      return shallowReactive(options.cache);\n    return shallowReactive(/* @__PURE__ */ new Map());\n  };\n  const cache = initCache();\n  const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n  const _loadData = (key, ...args) => {\n    cache.set(key, resolver(...args));\n    return cache.get(key);\n  };\n  const loadData = (...args) => _loadData(generateKey(...args), ...args);\n  const deleteData = (...args) => {\n    cache.delete(generateKey(...args));\n  };\n  const clearData = () => {\n    cache.clear();\n  };\n  const memoized = (...args) => {\n    const key = generateKey(...args);\n    if (cache.has(key))\n      return cache.get(key);\n    return _loadData(key, ...args);\n  };\n  memoized.load = loadData;\n  memoized.delete = deleteData;\n  memoized.clear = clearData;\n  memoized.generateKey = generateKey;\n  memoized.cache = cache;\n  return memoized;\n}\n\nfunction useMemory(options = {}) {\n  const memory = ref();\n  const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n  if (isSupported.value) {\n    const { interval = 1e3 } = options;\n    useIntervalFn(() => {\n      memory.value = performance.memory;\n    }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n  }\n  return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n  page: (event) => [event.pageX, event.pageY],\n  client: (event) => [event.clientX, event.clientY],\n  screen: (event) => [event.screenX, event.screenY],\n  movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n  const {\n    type = \"page\",\n    touch = true,\n    resetOnTouchEnds = false,\n    initialValue = { x: 0, y: 0 },\n    window = defaultWindow,\n    target = window,\n    scroll = true,\n    eventFilter\n  } = options;\n  let _prevMouseEvent = null;\n  let _prevScrollX = 0;\n  let _prevScrollY = 0;\n  const x = ref(initialValue.x);\n  const y = ref(initialValue.y);\n  const sourceType = ref(null);\n  const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n  const mouseHandler = (event) => {\n    const result = extractor(event);\n    _prevMouseEvent = event;\n    if (result) {\n      [x.value, y.value] = result;\n      sourceType.value = \"mouse\";\n    }\n    if (window) {\n      _prevScrollX = window.scrollX;\n      _prevScrollY = window.scrollY;\n    }\n  };\n  const touchHandler = (event) => {\n    if (event.touches.length > 0) {\n      const result = extractor(event.touches[0]);\n      if (result) {\n        [x.value, y.value] = result;\n        sourceType.value = \"touch\";\n      }\n    }\n  };\n  const scrollHandler = () => {\n    if (!_prevMouseEvent || !window)\n      return;\n    const pos = extractor(_prevMouseEvent);\n    if (_prevMouseEvent instanceof MouseEvent && pos) {\n      x.value = pos[0] + window.scrollX - _prevScrollX;\n      y.value = pos[1] + window.scrollY - _prevScrollY;\n    }\n  };\n  const reset = () => {\n    x.value = initialValue.x;\n    y.value = initialValue.y;\n  };\n  const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n  const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n  const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n    if (touch && type !== \"movement\") {\n      useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n      if (resetOnTouchEnds)\n        useEventListener(target, \"touchend\", reset, listenerOptions);\n    }\n    if (scroll && type === \"page\")\n      useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n  }\n  return {\n    x,\n    y,\n    sourceType\n  };\n}\n\nfunction useMouseInElement(target, options = {}) {\n  const {\n    handleOutside = true,\n    window = defaultWindow\n  } = options;\n  const type = options.type || \"page\";\n  const { x, y, sourceType } = useMouse(options);\n  const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n  const elementX = ref(0);\n  const elementY = ref(0);\n  const elementPositionX = ref(0);\n  const elementPositionY = ref(0);\n  const elementHeight = ref(0);\n  const elementWidth = ref(0);\n  const isOutside = ref(true);\n  let stop = () => {\n  };\n  if (window) {\n    stop = watch(\n      [targetRef, x, y],\n      () => {\n        const el = unrefElement(targetRef);\n        if (!el || !(el instanceof Element))\n          return;\n        const {\n          left,\n          top,\n          width,\n          height\n        } = el.getBoundingClientRect();\n        elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n        elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n        elementHeight.value = height;\n        elementWidth.value = width;\n        const elX = x.value - elementPositionX.value;\n        const elY = y.value - elementPositionY.value;\n        isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n        if (handleOutside || !isOutside.value) {\n          elementX.value = elX;\n          elementY.value = elY;\n        }\n      },\n      { immediate: true }\n    );\n    useEventListener(document, \"mouseleave\", () => {\n      isOutside.value = true;\n    });\n  }\n  return {\n    x,\n    y,\n    sourceType,\n    elementX,\n    elementY,\n    elementPositionX,\n    elementPositionY,\n    elementHeight,\n    elementWidth,\n    isOutside,\n    stop\n  };\n}\n\nfunction useMousePressed(options = {}) {\n  const {\n    touch = true,\n    drag = true,\n    capture = false,\n    initialValue = false,\n    window = defaultWindow\n  } = options;\n  const pressed = ref(initialValue);\n  const sourceType = ref(null);\n  if (!window) {\n    return {\n      pressed,\n      sourceType\n    };\n  }\n  const onPressed = (srcType) => () => {\n    pressed.value = true;\n    sourceType.value = srcType;\n  };\n  const onReleased = () => {\n    pressed.value = false;\n    sourceType.value = null;\n  };\n  const target = computed(() => unrefElement(options.target) || window);\n  useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n  useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n  useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n  if (drag) {\n    useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n    useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n    useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n  }\n  if (touch) {\n    useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n    useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n    useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n  }\n  return {\n    pressed,\n    sourceType\n  };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"language\" in navigator);\n  const language = ref(navigator == null ? void 0 : navigator.language);\n  useEventListener(window, \"languagechange\", () => {\n    if (navigator)\n      language.value = navigator.language;\n  });\n  return {\n    isSupported,\n    language\n  };\n}\n\nfunction useNetwork(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n  const isOnline = ref(true);\n  const saveData = ref(false);\n  const offlineAt = ref(void 0);\n  const onlineAt = ref(void 0);\n  const downlink = ref(void 0);\n  const downlinkMax = ref(void 0);\n  const rtt = ref(void 0);\n  const effectiveType = ref(void 0);\n  const type = ref(\"unknown\");\n  const connection = isSupported.value && navigator.connection;\n  function updateNetworkInformation() {\n    if (!navigator)\n      return;\n    isOnline.value = navigator.onLine;\n    offlineAt.value = isOnline.value ? void 0 : Date.now();\n    onlineAt.value = isOnline.value ? Date.now() : void 0;\n    if (connection) {\n      downlink.value = connection.downlink;\n      downlinkMax.value = connection.downlinkMax;\n      effectiveType.value = connection.effectiveType;\n      rtt.value = connection.rtt;\n      saveData.value = connection.saveData;\n      type.value = connection.type;\n    }\n  }\n  if (window) {\n    useEventListener(window, \"offline\", () => {\n      isOnline.value = false;\n      offlineAt.value = Date.now();\n    });\n    useEventListener(window, \"online\", () => {\n      isOnline.value = true;\n      onlineAt.value = Date.now();\n    });\n  }\n  if (connection)\n    useEventListener(connection, \"change\", updateNetworkInformation, false);\n  updateNetworkInformation();\n  return {\n    isSupported: readonly(isSupported),\n    isOnline: readonly(isOnline),\n    saveData: readonly(saveData),\n    offlineAt: readonly(offlineAt),\n    onlineAt: readonly(onlineAt),\n    downlink: readonly(downlink),\n    downlinkMax: readonly(downlinkMax),\n    effectiveType: readonly(effectiveType),\n    rtt: readonly(rtt),\n    type: readonly(type)\n  };\n}\n\nfunction useNow(options = {}) {\n  const {\n    controls: exposeControls = false,\n    interval = \"requestAnimationFrame\"\n  } = options;\n  const now = ref(/* @__PURE__ */ new Date());\n  const update = () => now.value = /* @__PURE__ */ new Date();\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n  if (exposeControls) {\n    return {\n      now,\n      ...controls\n    };\n  } else {\n    return now;\n  }\n}\n\nfunction useObjectUrl(object) {\n  const url = ref();\n  const release = () => {\n    if (url.value)\n      URL.revokeObjectURL(url.value);\n    url.value = void 0;\n  };\n  watch(\n    () => toValue(object),\n    (newObject) => {\n      release();\n      if (newObject)\n        url.value = URL.createObjectURL(newObject);\n    },\n    { immediate: true }\n  );\n  tryOnScopeDispose(release);\n  return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n  if (typeof value === \"function\" || isReadonly(value))\n    return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n  const _value = ref(value);\n  return computed({\n    get() {\n      return _value.value = clamp(_value.value, toValue(min), toValue(max));\n    },\n    set(value2) {\n      _value.value = clamp(value2, toValue(min), toValue(max));\n    }\n  });\n}\n\nfunction useOffsetPagination(options) {\n  const {\n    total = Number.POSITIVE_INFINITY,\n    pageSize = 10,\n    page = 1,\n    onPageChange = noop,\n    onPageSizeChange = noop,\n    onPageCountChange = noop\n  } = options;\n  const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n  const pageCount = computed(() => Math.max(\n    1,\n    Math.ceil(toValue(total) / toValue(currentPageSize))\n  ));\n  const currentPage = useClamp(page, 1, pageCount);\n  const isFirstPage = computed(() => currentPage.value === 1);\n  const isLastPage = computed(() => currentPage.value === pageCount.value);\n  if (isRef(page)) {\n    syncRef(page, currentPage, {\n      direction: isReadonly(page) ? \"ltr\" : \"both\"\n    });\n  }\n  if (isRef(pageSize)) {\n    syncRef(pageSize, currentPageSize, {\n      direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n    });\n  }\n  function prev() {\n    currentPage.value--;\n  }\n  function next() {\n    currentPage.value++;\n  }\n  const returnValue = {\n    currentPage,\n    currentPageSize,\n    pageCount,\n    isFirstPage,\n    isLastPage,\n    prev,\n    next\n  };\n  watch(currentPage, () => {\n    onPageChange(reactive(returnValue));\n  });\n  watch(currentPageSize, () => {\n    onPageSizeChange(reactive(returnValue));\n  });\n  watch(pageCount, () => {\n    onPageCountChange(reactive(returnValue));\n  });\n  return returnValue;\n}\n\nfunction useOnline(options = {}) {\n  const { isOnline } = useNetwork(options);\n  return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n  const { window = defaultWindow } = options;\n  const isLeft = ref(false);\n  const handler = (event) => {\n    if (!window)\n      return;\n    event = event || window.event;\n    const from = event.relatedTarget || event.toElement;\n    isLeft.value = !from;\n  };\n  if (window) {\n    useEventListener(window, \"mouseout\", handler, { passive: true });\n    useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n    useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n  }\n  return isLeft;\n}\n\nfunction useScreenOrientation(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n  const screenOrientation = isSupported.value ? window.screen.orientation : {};\n  const orientation = ref(screenOrientation.type);\n  const angle = ref(screenOrientation.angle || 0);\n  if (isSupported.value) {\n    useEventListener(window, \"orientationchange\", () => {\n      orientation.value = screenOrientation.type;\n      angle.value = screenOrientation.angle;\n    });\n  }\n  const lockOrientation = (type) => {\n    if (isSupported.value && typeof screenOrientation.lock === \"function\")\n      return screenOrientation.lock(type);\n    return Promise.reject(new Error(\"Not supported\"));\n  };\n  const unlockOrientation = () => {\n    if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n      screenOrientation.unlock();\n  };\n  return {\n    isSupported,\n    orientation,\n    angle,\n    lockOrientation,\n    unlockOrientation\n  };\n}\n\nfunction useParallax(target, options = {}) {\n  const {\n    deviceOrientationTiltAdjust = (i) => i,\n    deviceOrientationRollAdjust = (i) => i,\n    mouseTiltAdjust = (i) => i,\n    mouseRollAdjust = (i) => i,\n    window = defaultWindow\n  } = options;\n  const orientation = reactive(useDeviceOrientation({ window }));\n  const screenOrientation = reactive(useScreenOrientation({ window }));\n  const {\n    elementX: x,\n    elementY: y,\n    elementWidth: width,\n    elementHeight: height\n  } = useMouseInElement(target, { handleOutside: false, window });\n  const source = computed(() => {\n    if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) {\n      return \"deviceOrientation\";\n    }\n    return \"mouse\";\n  });\n  const roll = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      let value;\n      switch (screenOrientation.orientation) {\n        case \"landscape-primary\":\n          value = orientation.gamma / 90;\n          break;\n        case \"landscape-secondary\":\n          value = -orientation.gamma / 90;\n          break;\n        case \"portrait-primary\":\n          value = -orientation.beta / 90;\n          break;\n        case \"portrait-secondary\":\n          value = orientation.beta / 90;\n          break;\n        default:\n          value = -orientation.beta / 90;\n      }\n      return deviceOrientationRollAdjust(value);\n    } else {\n      const value = -(y.value - height.value / 2) / height.value;\n      return mouseRollAdjust(value);\n    }\n  });\n  const tilt = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      let value;\n      switch (screenOrientation.orientation) {\n        case \"landscape-primary\":\n          value = orientation.beta / 90;\n          break;\n        case \"landscape-secondary\":\n          value = -orientation.beta / 90;\n          break;\n        case \"portrait-primary\":\n          value = orientation.gamma / 90;\n          break;\n        case \"portrait-secondary\":\n          value = -orientation.gamma / 90;\n          break;\n        default:\n          value = orientation.gamma / 90;\n      }\n      return deviceOrientationTiltAdjust(value);\n    } else {\n      const value = (x.value - width.value / 2) / width.value;\n      return mouseTiltAdjust(value);\n    }\n  });\n  return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n  const parentElement = shallowRef();\n  const update = () => {\n    const el = unrefElement(element);\n    if (el)\n      parentElement.value = el.parentElement;\n  };\n  tryOnMounted(update);\n  watch(() => toValue(element), update);\n  return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n  const {\n    window = defaultWindow,\n    immediate = true,\n    ...performanceOptions\n  } = options;\n  const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n  let observer;\n  const stop = () => {\n    observer == null ? void 0 : observer.disconnect();\n  };\n  const start = () => {\n    if (isSupported.value) {\n      stop();\n      observer = new PerformanceObserver(callback);\n      observer.observe(performanceOptions);\n    }\n  };\n  tryOnScopeDispose(stop);\n  if (immediate)\n    start();\n  return {\n    isSupported,\n    start,\n    stop\n  };\n}\n\nconst defaultState = {\n  x: 0,\n  y: 0,\n  pointerId: 0,\n  pressure: 0,\n  tiltX: 0,\n  tiltY: 0,\n  width: 0,\n  height: 0,\n  twist: 0,\n  pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n  const {\n    target = defaultWindow\n  } = options;\n  const isInside = ref(false);\n  const state = ref(options.initialValue || {});\n  Object.assign(state.value, defaultState, state.value);\n  const handler = (event) => {\n    isInside.value = true;\n    if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n      return;\n    state.value = objectPick(event, keys, false);\n  };\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n    useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n  }\n  return {\n    ...toRefs(state),\n    isInside\n  };\n}\n\nfunction usePointerLock(target, options = {}) {\n  const { document = defaultDocument } = options;\n  const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n  const element = ref();\n  const triggerElement = ref();\n  let targetElement;\n  if (isSupported.value) {\n    useEventListener(document, \"pointerlockchange\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        element.value = document.pointerLockElement;\n        if (!element.value)\n          targetElement = triggerElement.value = null;\n      }\n    });\n    useEventListener(document, \"pointerlockerror\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        const action = document.pointerLockElement ? \"release\" : \"acquire\";\n        throw new Error(`Failed to ${action} pointer lock.`);\n      }\n    });\n  }\n  async function lock(e) {\n    var _a;\n    if (!isSupported.value)\n      throw new Error(\"Pointer Lock API is not supported by your browser.\");\n    triggerElement.value = e instanceof Event ? e.currentTarget : null;\n    targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n    if (!targetElement)\n      throw new Error(\"Target element undefined.\");\n    targetElement.requestPointerLock();\n    return await until(element).toBe(targetElement);\n  }\n  async function unlock() {\n    if (!element.value)\n      return false;\n    document.exitPointerLock();\n    await until(element).toBeNull();\n    return true;\n  }\n  return {\n    isSupported,\n    element,\n    triggerElement,\n    lock,\n    unlock\n  };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n  const targetRef = toRef(target);\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart,\n    disableTextSelect = false\n  } = options;\n  const posStart = reactive({ x: 0, y: 0 });\n  const updatePosStart = (x, y) => {\n    posStart.x = x;\n    posStart.y = y;\n  };\n  const posEnd = reactive({ x: 0, y: 0 });\n  const updatePosEnd = (x, y) => {\n    posEnd.x = x;\n    posEnd.y = y;\n  };\n  const distanceX = computed(() => posStart.x - posEnd.x);\n  const distanceY = computed(() => posStart.y - posEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const isPointerDown = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(distanceX.value) > abs(distanceY.value)) {\n      return distanceX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return distanceY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const eventIsAllowed = (e) => {\n    var _a, _b, _c;\n    const isReleasingButton = e.buttons === 0;\n    const isPrimaryButton = e.buttons === 1;\n    return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n  };\n  const stops = [\n    useEventListener(target, \"pointerdown\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      isPointerDown.value = true;\n      const eventTarget = e.target;\n      eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n      const { clientX: x, clientY: y } = e;\n      updatePosStart(x, y);\n      updatePosEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }),\n    useEventListener(target, \"pointermove\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      if (!isPointerDown.value)\n        return;\n      const { clientX: x, clientY: y } = e;\n      updatePosEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }),\n    useEventListener(target, \"pointerup\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      if (isSwiping.value)\n        onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n      isPointerDown.value = false;\n      isSwiping.value = false;\n    })\n  ];\n  tryOnMounted(() => {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n    if (disableTextSelect) {\n      (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n      (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n      (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n    }\n  });\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isSwiping: readonly(isSwiping),\n    direction: readonly(direction),\n    posStart: readonly(posStart),\n    posEnd: readonly(posEnd),\n    distanceX,\n    distanceY,\n    stop\n  };\n}\n\nfunction usePreferredColorScheme(options) {\n  const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n  const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n  return computed(() => {\n    if (isDark.value)\n      return \"dark\";\n    if (isLight.value)\n      return \"light\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredContrast(options) {\n  const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n  const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n  const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n  return computed(() => {\n    if (isMore.value)\n      return \"more\";\n    if (isLess.value)\n      return \"less\";\n    if (isCustom.value)\n      return \"custom\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredLanguages(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref([\"en\"]);\n  const navigator = window.navigator;\n  const value = ref(navigator.languages);\n  useEventListener(window, \"languagechange\", () => {\n    value.value = navigator.languages;\n  });\n  return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n  const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n  return computed(() => {\n    if (isReduced.value)\n      return \"reduce\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePrevious(value, initialValue) {\n  const previous = shallowRef(initialValue);\n  watch(\n    toRef(value),\n    (_, oldValue) => {\n      previous.value = oldValue;\n    },\n    { flush: \"sync\" }\n  );\n  return readonly(previous);\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n  const top = ref(\"\");\n  const right = ref(\"\");\n  const bottom = ref(\"\");\n  const left = ref(\"\");\n  if (isClient) {\n    const topCssVar = useCssVar(topVarName);\n    const rightCssVar = useCssVar(rightVarName);\n    const bottomCssVar = useCssVar(bottomVarName);\n    const leftCssVar = useCssVar(leftVarName);\n    topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n    rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n    bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n    leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n    update();\n    useEventListener(\"resize\", useDebounceFn(update));\n  }\n  function update() {\n    top.value = getValue(topVarName);\n    right.value = getValue(rightVarName);\n    bottom.value = getValue(bottomVarName);\n    left.value = getValue(leftVarName);\n  }\n  return {\n    top,\n    right,\n    bottom,\n    left,\n    update\n  };\n}\nfunction getValue(position) {\n  return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n  const {\n    immediate = true,\n    manual = false,\n    type = \"text/javascript\",\n    async = true,\n    crossOrigin,\n    referrerPolicy,\n    noModule,\n    defer,\n    document = defaultDocument,\n    attrs = {}\n  } = options;\n  const scriptTag = ref(null);\n  let _promise = null;\n  const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n    const resolveWithElement = (el2) => {\n      scriptTag.value = el2;\n      resolve(el2);\n      return el2;\n    };\n    if (!document) {\n      resolve(false);\n      return;\n    }\n    let shouldAppend = false;\n    let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (!el) {\n      el = document.createElement(\"script\");\n      el.type = type;\n      el.async = async;\n      el.src = toValue(src);\n      if (defer)\n        el.defer = defer;\n      if (crossOrigin)\n        el.crossOrigin = crossOrigin;\n      if (noModule)\n        el.noModule = noModule;\n      if (referrerPolicy)\n        el.referrerPolicy = referrerPolicy;\n      Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n      shouldAppend = true;\n    } else if (el.hasAttribute(\"data-loaded\")) {\n      resolveWithElement(el);\n    }\n    el.addEventListener(\"error\", (event) => reject(event));\n    el.addEventListener(\"abort\", (event) => reject(event));\n    el.addEventListener(\"load\", () => {\n      el.setAttribute(\"data-loaded\", \"true\");\n      onLoaded(el);\n      resolveWithElement(el);\n    });\n    if (shouldAppend)\n      el = document.head.appendChild(el);\n    if (!waitForScriptLoad)\n      resolveWithElement(el);\n  });\n  const load = (waitForScriptLoad = true) => {\n    if (!_promise)\n      _promise = loadScript(waitForScriptLoad);\n    return _promise;\n  };\n  const unload = () => {\n    if (!document)\n      return;\n    _promise = null;\n    if (scriptTag.value)\n      scriptTag.value = null;\n    const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (el)\n      document.head.removeChild(el);\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnUnmounted(unload);\n  return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n  const style = window.getComputedStyle(ele);\n  if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n    return true;\n  } else {\n    const parent = ele.parentNode;\n    if (!parent || parent.tagName === \"BODY\")\n      return false;\n    return checkOverflowScroll(parent);\n  }\n}\nfunction preventDefault(rawEvent) {\n  const e = rawEvent || window.event;\n  const _target = e.target;\n  if (checkOverflowScroll(_target))\n    return false;\n  if (e.touches.length > 1)\n    return true;\n  if (e.preventDefault)\n    e.preventDefault();\n  return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n  const isLocked = ref(initialState);\n  let stopTouchMoveListener = null;\n  let initialOverflow = \"\";\n  watch(toRef(element), (el) => {\n    const target = resolveElement(toValue(el));\n    if (target) {\n      const ele = target;\n      if (!elInitialOverflow.get(ele))\n        elInitialOverflow.set(ele, ele.style.overflow);\n      if (ele.style.overflow !== \"hidden\")\n        initialOverflow = ele.style.overflow;\n      if (ele.style.overflow === \"hidden\")\n        return isLocked.value = true;\n      if (isLocked.value)\n        return ele.style.overflow = \"hidden\";\n    }\n  }, {\n    immediate: true\n  });\n  const lock = () => {\n    const el = resolveElement(toValue(element));\n    if (!el || isLocked.value)\n      return;\n    if (isIOS) {\n      stopTouchMoveListener = useEventListener(\n        el,\n        \"touchmove\",\n        (e) => {\n          preventDefault(e);\n        },\n        { passive: false }\n      );\n    }\n    el.style.overflow = \"hidden\";\n    isLocked.value = true;\n  };\n  const unlock = () => {\n    const el = resolveElement(toValue(element));\n    if (!el || !isLocked.value)\n      return;\n    if (isIOS)\n      stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n    el.style.overflow = initialOverflow;\n    elInitialOverflow.delete(el);\n    isLocked.value = false;\n  };\n  tryOnScopeDispose(unlock);\n  return computed({\n    get() {\n      return isLocked.value;\n    },\n    set(v) {\n      if (v)\n        lock();\n      else unlock();\n    }\n  });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const _navigator = navigator;\n  const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n  const share = async (overrideOptions = {}) => {\n    if (isSupported.value) {\n      const data = {\n        ...toValue(shareOptions),\n        ...toValue(overrideOptions)\n      };\n      let granted = true;\n      if (data.files && _navigator.canShare)\n        granted = _navigator.canShare({ files: data.files });\n      if (granted)\n        return _navigator.share(data);\n    }\n  };\n  return {\n    isSupported,\n    share\n  };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n  var _a, _b, _c, _d;\n  const [source] = args;\n  let compareFn = defaultCompare;\n  let options = {};\n  if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      options = args[1];\n      compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n    } else {\n      compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n    }\n  } else if (args.length > 2) {\n    compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n    options = (_d = args[2]) != null ? _d : {};\n  }\n  const {\n    dirty = false,\n    sortFn = defaultSortFn\n  } = options;\n  if (!dirty)\n    return computed(() => sortFn([...toValue(source)], compareFn));\n  watchEffect(() => {\n    const result = sortFn(toValue(source), compareFn);\n    if (isRef(source))\n      source.value = result;\n    else\n      source.splice(0, source.length, ...result);\n  });\n  return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n  const {\n    interimResults = true,\n    continuous = true,\n    maxAlternatives = 1,\n    window = defaultWindow\n  } = options;\n  const lang = toRef(options.lang || \"en-US\");\n  const isListening = ref(false);\n  const isFinal = ref(false);\n  const result = ref(\"\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isListening.value) => {\n    isListening.value = value;\n  };\n  const start = () => {\n    isListening.value = true;\n  };\n  const stop = () => {\n    isListening.value = false;\n  };\n  const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n  const isSupported = useSupported(() => SpeechRecognition);\n  let recognition;\n  if (isSupported.value) {\n    recognition = new SpeechRecognition();\n    recognition.continuous = continuous;\n    recognition.interimResults = interimResults;\n    recognition.lang = toValue(lang);\n    recognition.maxAlternatives = maxAlternatives;\n    recognition.onstart = () => {\n      isFinal.value = false;\n    };\n    watch(lang, (lang2) => {\n      if (recognition && !isListening.value)\n        recognition.lang = lang2;\n    });\n    recognition.onresult = (event) => {\n      const currentResult = event.results[event.resultIndex];\n      const { transcript } = currentResult[0];\n      isFinal.value = currentResult.isFinal;\n      result.value = transcript;\n      error.value = void 0;\n    };\n    recognition.onerror = (event) => {\n      error.value = event;\n    };\n    recognition.onend = () => {\n      isListening.value = false;\n      recognition.lang = toValue(lang);\n    };\n    watch(isListening, () => {\n      if (isListening.value)\n        recognition.start();\n      else\n        recognition.stop();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isListening.value = false;\n  });\n  return {\n    isSupported,\n    isListening,\n    isFinal,\n    recognition,\n    result,\n    error,\n    toggle,\n    start,\n    stop\n  };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n  const {\n    pitch = 1,\n    rate = 1,\n    volume = 1,\n    window = defaultWindow\n  } = options;\n  const synth = window && window.speechSynthesis;\n  const isSupported = useSupported(() => synth);\n  const isPlaying = ref(false);\n  const status = ref(\"init\");\n  const spokenText = toRef(text || \"\");\n  const lang = toRef(options.lang || \"en-US\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isPlaying.value) => {\n    isPlaying.value = value;\n  };\n  const bindEventsForUtterance = (utterance2) => {\n    utterance2.lang = toValue(lang);\n    utterance2.voice = toValue(options.voice) || null;\n    utterance2.pitch = toValue(pitch);\n    utterance2.rate = toValue(rate);\n    utterance2.volume = volume;\n    utterance2.onstart = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onpause = () => {\n      isPlaying.value = false;\n      status.value = \"pause\";\n    };\n    utterance2.onresume = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onend = () => {\n      isPlaying.value = false;\n      status.value = \"end\";\n    };\n    utterance2.onerror = (event) => {\n      error.value = event;\n    };\n  };\n  const utterance = computed(() => {\n    isPlaying.value = false;\n    status.value = \"init\";\n    const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n    bindEventsForUtterance(newUtterance);\n    return newUtterance;\n  });\n  const speak = () => {\n    synth.cancel();\n    if (utterance)\n      synth.speak(utterance.value);\n  };\n  const stop = () => {\n    synth.cancel();\n    isPlaying.value = false;\n  };\n  if (isSupported.value) {\n    bindEventsForUtterance(utterance.value);\n    watch(lang, (lang2) => {\n      if (utterance.value && !isPlaying.value)\n        utterance.value.lang = lang2;\n    });\n    if (options.voice) {\n      watch(options.voice, () => {\n        synth.cancel();\n      });\n    }\n    watch(isPlaying, () => {\n      if (isPlaying.value)\n        synth.resume();\n      else\n        synth.pause();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isPlaying.value = false;\n  });\n  return {\n    isSupported,\n    isPlaying,\n    status,\n    utterance,\n    error,\n    stop,\n    toggle,\n    speak\n  };\n}\n\nfunction useStepper(steps, initialStep) {\n  const stepsRef = ref(steps);\n  const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n  const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n  const current = computed(() => at(index.value));\n  const isFirst = computed(() => index.value === 0);\n  const isLast = computed(() => index.value === stepNames.value.length - 1);\n  const next = computed(() => stepNames.value[index.value + 1]);\n  const previous = computed(() => stepNames.value[index.value - 1]);\n  function at(index2) {\n    if (Array.isArray(stepsRef.value))\n      return stepsRef.value[index2];\n    return stepsRef.value[stepNames.value[index2]];\n  }\n  function get(step) {\n    if (!stepNames.value.includes(step))\n      return;\n    return at(stepNames.value.indexOf(step));\n  }\n  function goTo(step) {\n    if (stepNames.value.includes(step))\n      index.value = stepNames.value.indexOf(step);\n  }\n  function goToNext() {\n    if (isLast.value)\n      return;\n    index.value++;\n  }\n  function goToPrevious() {\n    if (isFirst.value)\n      return;\n    index.value--;\n  }\n  function goBackTo(step) {\n    if (isAfter(step))\n      goTo(step);\n  }\n  function isNext(step) {\n    return stepNames.value.indexOf(step) === index.value + 1;\n  }\n  function isPrevious(step) {\n    return stepNames.value.indexOf(step) === index.value - 1;\n  }\n  function isCurrent(step) {\n    return stepNames.value.indexOf(step) === index.value;\n  }\n  function isBefore(step) {\n    return index.value < stepNames.value.indexOf(step);\n  }\n  function isAfter(step) {\n    return index.value > stepNames.value.indexOf(step);\n  }\n  return {\n    steps: stepsRef,\n    stepNames,\n    index,\n    current,\n    next,\n    previous,\n    isFirst,\n    isLast,\n    at,\n    get,\n    goTo,\n    goToNext,\n    goToPrevious,\n    goBackTo,\n    isNext,\n    isPrevious,\n    isCurrent,\n    isBefore,\n    isAfter\n  };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const rawInit = toValue(initialValue);\n  const type = guessSerializerType(rawInit);\n  const data = (shallow ? shallowRef : ref)(initialValue);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  async function read(event) {\n    if (!storage || event && event.key !== key)\n      return;\n    try {\n      const rawValue = event ? event.newValue : await storage.getItem(key);\n      if (rawValue == null) {\n        data.value = rawInit;\n        if (writeDefaults && rawInit !== null)\n          await storage.setItem(key, await serializer.write(rawInit));\n      } else if (mergeDefaults) {\n        const value = await serializer.read(rawValue);\n        if (typeof mergeDefaults === \"function\")\n          data.value = mergeDefaults(value, rawInit);\n        else if (type === \"object\" && !Array.isArray(value))\n          data.value = { ...rawInit, ...value };\n        else data.value = value;\n      } else {\n        data.value = await serializer.read(rawValue);\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  read();\n  if (window && listenToStorageChanges)\n    useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n  if (storage) {\n    watchWithFilter(\n      data,\n      async () => {\n        try {\n          if (data.value == null)\n            await storage.removeItem(key);\n          else\n            await storage.setItem(key, await serializer.write(data.value));\n        } catch (e) {\n          onError(e);\n        }\n      },\n      {\n        flush,\n        deep,\n        eventFilter\n      }\n    );\n  }\n  return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n  const isLoaded = ref(false);\n  const {\n    document = defaultDocument,\n    immediate = true,\n    manual = false,\n    id = `vueuse_styletag_${++_id}`\n  } = options;\n  const cssRef = ref(css);\n  let stop = () => {\n  };\n  const load = () => {\n    if (!document)\n      return;\n    const el = document.getElementById(id) || document.createElement(\"style\");\n    if (!el.isConnected) {\n      el.id = id;\n      if (options.media)\n        el.media = options.media;\n      document.head.appendChild(el);\n    }\n    if (isLoaded.value)\n      return;\n    stop = watch(\n      cssRef,\n      (value) => {\n        el.textContent = value;\n      },\n      { immediate: true }\n    );\n    isLoaded.value = true;\n  };\n  const unload = () => {\n    if (!document || !isLoaded.value)\n      return;\n    stop();\n    document.head.removeChild(document.getElementById(id));\n    isLoaded.value = false;\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnScopeDispose(unload);\n  return {\n    id,\n    css: cssRef,\n    unload,\n    load,\n    isLoaded: readonly(isLoaded)\n  };\n}\n\nfunction useSwipe(target, options = {}) {\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart,\n    passive = true,\n    window = defaultWindow\n  } = options;\n  const coordsStart = reactive({ x: 0, y: 0 });\n  const coordsEnd = reactive({ x: 0, y: 0 });\n  const diffX = computed(() => coordsStart.x - coordsEnd.x);\n  const diffY = computed(() => coordsStart.y - coordsEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(diffX.value) > abs(diffY.value)) {\n      return diffX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return diffY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n  const updateCoordsStart = (x, y) => {\n    coordsStart.x = x;\n    coordsStart.y = y;\n  };\n  const updateCoordsEnd = (x, y) => {\n    coordsEnd.x = x;\n    coordsEnd.y = y;\n  };\n  let listenerOptions;\n  const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n  if (!passive)\n    listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n  else\n    listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n  const onTouchEnd = (e) => {\n    if (isSwiping.value)\n      onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n    isSwiping.value = false;\n  };\n  const stops = [\n    useEventListener(target, \"touchstart\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsStart(x, y);\n      updateCoordsEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }, listenerOptions),\n    useEventListener(target, \"touchmove\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsEnd(x, y);\n      if (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value))\n        e.preventDefault();\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }, listenerOptions),\n    useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isPassiveEventSupported,\n    isSwiping,\n    direction,\n    coordsStart,\n    coordsEnd,\n    lengthX: diffX,\n    lengthY: diffY,\n    stop\n  };\n}\nfunction checkPassiveEventSupport(document) {\n  if (!document)\n    return false;\n  let supportsPassive = false;\n  const optionsBlock = {\n    get passive() {\n      supportsPassive = true;\n      return false;\n    }\n  };\n  document.addEventListener(\"x\", noop, optionsBlock);\n  document.removeEventListener(\"x\", noop);\n  return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n  const refs = ref([]);\n  refs.value.set = (el) => {\n    if (el)\n      refs.value.push(el);\n  };\n  onBeforeUpdate(() => {\n    refs.value.length = 0;\n  });\n  return refs;\n}\n\nfunction useTextDirection(options = {}) {\n  const {\n    document = defaultDocument,\n    selector = \"html\",\n    observe = false,\n    initialValue = \"ltr\"\n  } = options;\n  function getValue() {\n    var _a, _b;\n    return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n  }\n  const dir = ref(getValue());\n  tryOnMounted(() => dir.value = getValue());\n  if (observe && document) {\n    useMutationObserver(\n      document.querySelector(selector),\n      () => dir.value = getValue(),\n      { attributes: true }\n    );\n  }\n  return computed({\n    get() {\n      return dir.value;\n    },\n    set(v) {\n      var _a, _b;\n      dir.value = v;\n      if (!document)\n        return;\n      if (dir.value)\n        (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n      else\n        (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n    }\n  });\n}\n\nfunction getRangesFromSelection(selection) {\n  var _a;\n  const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n  return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const selection = ref(null);\n  const text = computed(() => {\n    var _a, _b;\n    return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n  });\n  const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n  const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n  function onSelectionChange() {\n    selection.value = null;\n    if (window)\n      selection.value = window.getSelection();\n  }\n  if (window)\n    useEventListener(window.document, \"selectionchange\", onSelectionChange);\n  return {\n    text,\n    rects,\n    ranges,\n    selection\n  };\n}\n\nfunction useTextareaAutosize(options) {\n  var _a;\n  const textarea = ref(options == null ? void 0 : options.element);\n  const input = ref(options == null ? void 0 : options.input);\n  const styleProp = (_a = options == null ? void 0 : options.styleProp) != null ? _a : \"height\";\n  const textareaScrollHeight = ref(1);\n  const textareaOldWidth = ref(0);\n  function triggerResize() {\n    var _a2;\n    if (!textarea.value)\n      return;\n    let height = \"\";\n    textarea.value.style[styleProp] = \"1px\";\n    textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n    const _styleTarget = toValue(options == null ? void 0 : options.styleTarget);\n    if (_styleTarget)\n      _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`;\n    else\n      height = `${textareaScrollHeight.value}px`;\n    textarea.value.style[styleProp] = height;\n  }\n  watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n  watch(textareaScrollHeight, () => {\n    var _a2;\n    return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options);\n  });\n  useResizeObserver(textarea, ([{ contentRect }]) => {\n    if (textareaOldWidth.value === contentRect.width)\n      return;\n    textareaOldWidth.value = contentRect.width;\n    triggerResize();\n  });\n  if (options == null ? void 0 : options.watch)\n    watch(options.watch, triggerResize, { immediate: true, deep: true });\n  return {\n    textarea,\n    input,\n    triggerResize\n  };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n  const { throttle = 200, trailing = true } = options;\n  const filter = throttleFilter(throttle, trailing);\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nconst DEFAULT_UNITS = [\n  { max: 6e4, value: 1e3, name: \"second\" },\n  { max: 276e4, value: 6e4, name: \"minute\" },\n  { max: 72e6, value: 36e5, name: \"hour\" },\n  { max: 5184e5, value: 864e5, name: \"day\" },\n  { max: 24192e5, value: 6048e5, name: \"week\" },\n  { max: 28512e6, value: 2592e6, name: \"month\" },\n  { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n  justNow: \"just now\",\n  past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n  future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n  month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n  year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n  day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n  week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n  hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n  minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n  second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n  invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n  return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n  const {\n    controls: exposeControls = false,\n    updateInterval = 3e4\n  } = options;\n  const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n  const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n  if (exposeControls) {\n    return {\n      timeAgo,\n      ...controls\n    };\n  } else {\n    return timeAgo;\n  }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n  var _a;\n  const {\n    max,\n    messages = DEFAULT_MESSAGES,\n    fullDateFormatter = DEFAULT_FORMATTER,\n    units = DEFAULT_UNITS,\n    showSecond = false,\n    rounding = \"round\"\n  } = options;\n  const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n  const diff = +now - +from;\n  const absDiff = Math.abs(diff);\n  function getValue(diff2, unit) {\n    return roundFn(Math.abs(diff2) / unit.value);\n  }\n  function format(diff2, unit) {\n    const val = getValue(diff2, unit);\n    const past = diff2 > 0;\n    const str = applyFormat(unit.name, val, past);\n    return applyFormat(past ? \"past\" : \"future\", str, past);\n  }\n  function applyFormat(name, val, isPast) {\n    const formatter = messages[name];\n    if (typeof formatter === \"function\")\n      return formatter(val, isPast);\n    return formatter.replace(\"{0}\", val.toString());\n  }\n  if (absDiff < 6e4 && !showSecond)\n    return messages.justNow;\n  if (typeof max === \"number\" && absDiff > max)\n    return fullDateFormatter(new Date(from));\n  if (typeof max === \"string\") {\n    const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n    if (unitMax && absDiff > unitMax)\n      return fullDateFormatter(new Date(from));\n  }\n  for (const [idx, unit] of units.entries()) {\n    const val = getValue(diff, unit);\n    if (val <= 0 && units[idx - 1])\n      return format(diff, units[idx - 1]);\n    if (absDiff < unit.max)\n      return format(diff, unit);\n  }\n  return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n  const { start } = useTimeoutFn(loop, interval, { immediate: false });\n  const isActive = ref(false);\n  async function loop() {\n    if (!isActive.value)\n      return;\n    await fn();\n    start();\n  }\n  function resume() {\n    if (!isActive.value) {\n      isActive.value = true;\n      loop();\n    }\n  }\n  function pause() {\n    isActive.value = false;\n  }\n  if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useTimestamp(options = {}) {\n  const {\n    controls: exposeControls = false,\n    offset = 0,\n    immediate = true,\n    interval = \"requestAnimationFrame\",\n    callback\n  } = options;\n  const ts = ref(timestamp() + offset);\n  const update = () => ts.value = timestamp() + offset;\n  const cb = callback ? () => {\n    update();\n    callback(ts.value);\n  } : update;\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  if (exposeControls) {\n    return {\n      timestamp: ts,\n      ...controls\n    };\n  } else {\n    return ts;\n  }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n  var _a, _b, _c;\n  const {\n    document = defaultDocument,\n    restoreOnUnmount = (t) => t\n  } = options;\n  const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n  const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n  const isReadonly = newTitle && typeof newTitle === \"function\";\n  function format(t) {\n    if (!(\"titleTemplate\" in options))\n      return t;\n    const template = options.titleTemplate || \"%s\";\n    return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n  }\n  watch(\n    title,\n    (t, o) => {\n      if (t !== o && document)\n        document.title = format(typeof t === \"string\" ? t : \"\");\n    },\n    { immediate: true }\n  );\n  if (options.observe && !options.titleTemplate && document && !isReadonly) {\n    useMutationObserver(\n      (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n      () => {\n        if (document && document.title !== title.value)\n          title.value = format(document.title);\n      },\n      { childList: true }\n    );\n  }\n  tryOnBeforeUnmount(() => {\n    if (restoreOnUnmount) {\n      const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n      if (restoredTitle != null && document)\n        document.title = restoredTitle;\n    }\n  });\n  return title;\n}\n\nconst _TransitionPresets = {\n  easeInSine: [0.12, 0, 0.39, 0],\n  easeOutSine: [0.61, 1, 0.88, 1],\n  easeInOutSine: [0.37, 0, 0.63, 1],\n  easeInQuad: [0.11, 0, 0.5, 0],\n  easeOutQuad: [0.5, 1, 0.89, 1],\n  easeInOutQuad: [0.45, 0, 0.55, 1],\n  easeInCubic: [0.32, 0, 0.67, 0],\n  easeOutCubic: [0.33, 1, 0.68, 1],\n  easeInOutCubic: [0.65, 0, 0.35, 1],\n  easeInQuart: [0.5, 0, 0.75, 0],\n  easeOutQuart: [0.25, 1, 0.5, 1],\n  easeInOutQuart: [0.76, 0, 0.24, 1],\n  easeInQuint: [0.64, 0, 0.78, 0],\n  easeOutQuint: [0.22, 1, 0.36, 1],\n  easeInOutQuint: [0.83, 0, 0.17, 1],\n  easeInExpo: [0.7, 0, 0.84, 0],\n  easeOutExpo: [0.16, 1, 0.3, 1],\n  easeInOutExpo: [0.87, 0, 0.13, 1],\n  easeInCirc: [0.55, 0, 1, 0.45],\n  easeOutCirc: [0, 0.55, 0.45, 1],\n  easeInOutCirc: [0.85, 0, 0.15, 1],\n  easeInBack: [0.36, 0, 0.66, -0.56],\n  easeOutBack: [0.34, 1.56, 0.64, 1],\n  easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n  const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n  const b = (a1, a2) => 3 * a2 - 6 * a1;\n  const c = (a1) => 3 * a1;\n  const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n  const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n  const getTforX = (x) => {\n    let aGuessT = x;\n    for (let i = 0; i < 4; ++i) {\n      const currentSlope = getSlope(aGuessT, p0, p2);\n      if (currentSlope === 0)\n        return aGuessT;\n      const currentX = calcBezier(aGuessT, p0, p2) - x;\n      aGuessT -= currentX / currentSlope;\n    }\n    return aGuessT;\n  };\n  return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n  return a + alpha * (b - a);\n}\nfunction toVec(t) {\n  return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n  var _a, _b;\n  const fromVal = toValue(from);\n  const toVal = toValue(to);\n  const v1 = toVec(fromVal);\n  const v2 = toVec(toVal);\n  const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n  const startedAt = Date.now();\n  const endAt = Date.now() + duration;\n  const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n  const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n  return new Promise((resolve) => {\n    source.value = fromVal;\n    const tick = () => {\n      var _a2;\n      if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n        resolve();\n        return;\n      }\n      const now = Date.now();\n      const alpha = ease((now - startedAt) / duration);\n      const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n      if (Array.isArray(source.value))\n        source.value = arr.map((n, i) => {\n          var _a3, _b2;\n          return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n        });\n      else if (typeof source.value === \"number\")\n        source.value = arr[0];\n      if (now < endAt) {\n        requestAnimationFrame(tick);\n      } else {\n        source.value = toVal;\n        resolve();\n      }\n    };\n    tick();\n  });\n}\nfunction useTransition(source, options = {}) {\n  let currentId = 0;\n  const sourceVal = () => {\n    const v = toValue(source);\n    return typeof v === \"number\" ? v : v.map(toValue);\n  };\n  const outputRef = ref(sourceVal());\n  watch(sourceVal, async (to) => {\n    var _a, _b;\n    if (toValue(options.disabled))\n      return;\n    const id = ++currentId;\n    if (options.delay)\n      await promiseTimeout(toValue(options.delay));\n    if (id !== currentId)\n      return;\n    const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n    (_a = options.onStarted) == null ? void 0 : _a.call(options);\n    await executeTransition(outputRef, outputRef.value, toVal, {\n      ...options,\n      abort: () => {\n        var _a2;\n        return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n      }\n    });\n    (_b = options.onFinished) == null ? void 0 : _b.call(options);\n  }, { deep: true });\n  watch(() => toValue(options.disabled), (disabled) => {\n    if (disabled) {\n      currentId++;\n      outputRef.value = sourceVal();\n    }\n  });\n  tryOnScopeDispose(() => {\n    currentId++;\n  });\n  return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n  const {\n    initialValue = {},\n    removeNullishValues = true,\n    removeFalsyValues = false,\n    write: enableWrite = true,\n    window = defaultWindow\n  } = options;\n  if (!window)\n    return reactive(initialValue);\n  const state = reactive({});\n  function getRawParams() {\n    if (mode === \"history\") {\n      return window.location.search || \"\";\n    } else if (mode === \"hash\") {\n      const hash = window.location.hash || \"\";\n      const index = hash.indexOf(\"?\");\n      return index > 0 ? hash.slice(index) : \"\";\n    } else {\n      return (window.location.hash || \"\").replace(/^#/, \"\");\n    }\n  }\n  function constructQuery(params) {\n    const stringified = params.toString();\n    if (mode === \"history\")\n      return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n    if (mode === \"hash-params\")\n      return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n    const hash = window.location.hash || \"#\";\n    const index = hash.indexOf(\"?\");\n    if (index > 0)\n      return `${window.location.search || \"\"}${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n    return `${window.location.search || \"\"}${hash}${stringified ? `?${stringified}` : \"\"}`;\n  }\n  function read() {\n    return new URLSearchParams(getRawParams());\n  }\n  function updateState(params) {\n    const unusedKeys = new Set(Object.keys(state));\n    for (const key of params.keys()) {\n      const paramsForKey = params.getAll(key);\n      state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n      unusedKeys.delete(key);\n    }\n    Array.from(unusedKeys).forEach((key) => delete state[key]);\n  }\n  const { pause, resume } = pausableWatch(\n    state,\n    () => {\n      const params = new URLSearchParams(\"\");\n      Object.keys(state).forEach((key) => {\n        const mapEntry = state[key];\n        if (Array.isArray(mapEntry))\n          mapEntry.forEach((value) => params.append(key, value));\n        else if (removeNullishValues && mapEntry == null)\n          params.delete(key);\n        else if (removeFalsyValues && !mapEntry)\n          params.delete(key);\n        else\n          params.set(key, mapEntry);\n      });\n      write(params);\n    },\n    { deep: true }\n  );\n  function write(params, shouldUpdate) {\n    pause();\n    if (shouldUpdate)\n      updateState(params);\n    window.history.replaceState(\n      window.history.state,\n      window.document.title,\n      window.location.pathname + constructQuery(params)\n    );\n    resume();\n  }\n  function onChanged() {\n    if (!enableWrite)\n      return;\n    write(read(), true);\n  }\n  useEventListener(window, \"popstate\", onChanged, false);\n  if (mode !== \"history\")\n    useEventListener(window, \"hashchange\", onChanged, false);\n  const initial = read();\n  if (initial.keys().next().value)\n    updateState(initial);\n  else\n    Object.assign(state, initialValue);\n  return state;\n}\n\nfunction useUserMedia(options = {}) {\n  var _a, _b;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n  const constraints = ref(options.constraints);\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n  });\n  const stream = shallowRef();\n  function getDeviceOptions(type) {\n    switch (type) {\n      case \"video\": {\n        if (constraints.value)\n          return constraints.value.video || false;\n        break;\n      }\n      case \"audio\": {\n        if (constraints.value)\n          return constraints.value.audio || false;\n        break;\n      }\n    }\n  }\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getUserMedia({\n      video: getDeviceOptions(\"video\"),\n      audio: getDeviceOptions(\"audio\")\n    });\n    return stream.value;\n  }\n  function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  async function restart() {\n    _stop();\n    return await start();\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else _stop();\n    },\n    { immediate: true }\n  );\n  watch(\n    constraints,\n    () => {\n      if (autoSwitch.value && stream.value)\n        restart();\n    },\n    { immediate: true }\n  );\n  tryOnScopeDispose(() => {\n    stop();\n  });\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    restart,\n    constraints,\n    enabled,\n    autoSwitch\n  };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n  var _a, _b, _c;\n  const {\n    clone = false,\n    passive = false,\n    eventName,\n    deep = false,\n    defaultValue,\n    shouldEmit\n  } = options;\n  const vm = getCurrentInstance();\n  const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n  let event = eventName;\n  if (!key) {\n    key = \"modelValue\";\n  }\n  event = event || `update:${key.toString()}`;\n  const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n  const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n  const triggerEmit = (value) => {\n    if (shouldEmit) {\n      if (shouldEmit(value))\n        _emit(event, value);\n    } else {\n      _emit(event, value);\n    }\n  };\n  if (passive) {\n    const initialValue = getValue();\n    const proxy = ref(initialValue);\n    let isUpdating = false;\n    watch(\n      () => props[key],\n      (v) => {\n        if (!isUpdating) {\n          isUpdating = true;\n          proxy.value = cloneFn(v);\n          nextTick(() => isUpdating = false);\n        }\n      }\n    );\n    watch(\n      proxy,\n      (v) => {\n        if (!isUpdating && (v !== props[key] || deep))\n          triggerEmit(v);\n      },\n      { deep }\n    );\n    return proxy;\n  } else {\n    return computed({\n      get() {\n        return getValue();\n      },\n      set(value) {\n        triggerEmit(value);\n      }\n    });\n  }\n}\n\nfunction useVModels(props, emit, options = {}) {\n  const ret = {};\n  for (const key in props) {\n    ret[key] = useVModel(\n      props,\n      key,\n      emit,\n      options\n    );\n  }\n  return ret;\n}\n\nfunction useVibrate(options) {\n  const {\n    pattern = [],\n    interval = 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n  const patternRef = toRef(pattern);\n  let intervalControls;\n  const vibrate = (pattern2 = patternRef.value) => {\n    if (isSupported.value)\n      navigator.vibrate(pattern2);\n  };\n  const stop = () => {\n    if (isSupported.value)\n      navigator.vibrate(0);\n    intervalControls == null ? void 0 : intervalControls.pause();\n  };\n  if (interval > 0) {\n    intervalControls = useIntervalFn(\n      vibrate,\n      interval,\n      {\n        immediate: false,\n        immediateCallback: false\n      }\n    );\n  }\n  return {\n    isSupported,\n    pattern,\n    intervalControls,\n    vibrate,\n    stop\n  };\n}\n\nfunction useVirtualList(list, options) {\n  const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n  return {\n    list: currentList,\n    scrollTo,\n    containerProps: {\n      ref: containerRef,\n      onScroll: () => {\n        calculateRange();\n      },\n      style: containerStyle\n    },\n    wrapperProps\n  };\n}\nfunction useVirtualListResources(list) {\n  const containerRef = ref(null);\n  const size = useElementSize(containerRef);\n  const currentList = ref([]);\n  const source = shallowRef(list);\n  const state = ref({ start: 0, end: 10 });\n  return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n  return (containerSize) => {\n    if (typeof itemSize === \"number\")\n      return Math.ceil(containerSize / itemSize);\n    const { start = 0 } = state.value;\n    let sum = 0;\n    let capacity = 0;\n    for (let i = start; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      capacity = i;\n      if (sum > containerSize)\n        break;\n    }\n    return capacity - start;\n  };\n}\nfunction createGetOffset(source, itemSize) {\n  return (scrollDirection) => {\n    if (typeof itemSize === \"number\")\n      return Math.floor(scrollDirection / itemSize) + 1;\n    let sum = 0;\n    let offset = 0;\n    for (let i = 0; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      if (sum >= scrollDirection) {\n        offset = i;\n        break;\n      }\n    }\n    return offset + 1;\n  };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n  return () => {\n    const element = containerRef.value;\n    if (element) {\n      const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n      const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n      const from = offset - overscan;\n      const to = offset + viewCapacity + overscan;\n      state.value = {\n        start: from < 0 ? 0 : from,\n        end: to > source.value.length ? source.value.length : to\n      };\n      currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n        data: ele,\n        index: index + state.value.start\n      }));\n    }\n  };\n}\nfunction createGetDistance(itemSize, source) {\n  return (index) => {\n    if (typeof itemSize === \"number\") {\n      const size2 = index * itemSize;\n      return size2;\n    }\n    const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n    return size;\n  };\n}\nfunction useWatchForSizes(size, list, containerRef, calculateRange) {\n  watch([size.width, size.height, list, containerRef], () => {\n    calculateRange();\n  });\n}\nfunction createComputedTotalSize(itemSize, source) {\n  return computed(() => {\n    if (typeof itemSize === \"number\")\n      return source.value.length * itemSize;\n    return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n  });\n}\nconst scrollToDictionaryForElementScrollKey = {\n  horizontal: \"scrollLeft\",\n  vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n  return (index) => {\n    if (containerRef.value) {\n      containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n      calculateRange();\n    }\n  };\n}\nfunction useHorizontalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowX: \"auto\" };\n  const { itemWidth, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n  const getOffset = createGetOffset(source, itemWidth);\n  const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceLeft = createGetDistance(itemWidth, source);\n  const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n  const totalWidth = createComputedTotalSize(itemWidth, source);\n  useWatchForSizes(size, list, containerRef, calculateRange);\n  const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        height: \"100%\",\n        width: `${totalWidth.value - offsetLeft.value}px`,\n        marginLeft: `${offsetLeft.value}px`,\n        display: \"flex\"\n      }\n    };\n  });\n  return {\n    scrollTo,\n    calculateRange,\n    wrapperProps,\n    containerStyle,\n    currentList,\n    containerRef\n  };\n}\nfunction useVerticalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowY: \"auto\" };\n  const { itemHeight, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n  const getOffset = createGetOffset(source, itemHeight);\n  const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceTop = createGetDistance(itemHeight, source);\n  const offsetTop = computed(() => getDistanceTop(state.value.start));\n  const totalHeight = createComputedTotalSize(itemHeight, source);\n  useWatchForSizes(size, list, containerRef, calculateRange);\n  const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        width: \"100%\",\n        height: `${totalHeight.value - offsetTop.value}px`,\n        marginTop: `${offsetTop.value}px`\n      }\n    };\n  });\n  return {\n    calculateRange,\n    scrollTo,\n    containerStyle,\n    wrapperProps,\n    currentList,\n    containerRef\n  };\n}\n\nfunction useWakeLock(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    document = defaultDocument\n  } = options;\n  const requestedType = ref(false);\n  const sentinel = shallowRef(null);\n  const documentVisibility = useDocumentVisibility({ document });\n  const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n  const isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n  if (isSupported.value) {\n    useEventListener(sentinel, \"release\", () => {\n      var _a, _b;\n      requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false;\n    });\n    whenever(\n      () => documentVisibility.value === \"visible\" && (document == null ? void 0 : document.visibilityState) === \"visible\" && requestedType.value,\n      (type) => {\n        requestedType.value = false;\n        forceRequest(type);\n      }\n    );\n  }\n  async function forceRequest(type) {\n    var _a;\n    await ((_a = sentinel.value) == null ? void 0 : _a.release());\n    sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n  }\n  async function request(type) {\n    if (documentVisibility.value === \"visible\")\n      await forceRequest(type);\n    else\n      requestedType.value = type;\n  }\n  async function release() {\n    requestedType.value = false;\n    const s = sentinel.value;\n    sentinel.value = null;\n    await (s == null ? void 0 : s.release());\n  }\n  return {\n    sentinel,\n    isSupported,\n    isActive,\n    request,\n    forceRequest,\n    release\n  };\n}\n\nfunction useWebNotification(options = {}) {\n  const {\n    window = defaultWindow,\n    requestPermissions: _requestForPermissions = true\n  } = options;\n  const defaultWebNotificationOptions = options;\n  const isSupported = useSupported(() => {\n    if (!window || !(\"Notification\" in window))\n      return false;\n    try {\n      new Notification(\"\");\n    } catch (e) {\n      return false;\n    }\n    return true;\n  });\n  const permissionGranted = ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n  const notification = ref(null);\n  const ensurePermissions = async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionGranted.value && Notification.permission !== \"denied\") {\n      const result = await Notification.requestPermission();\n      if (result === \"granted\")\n        permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  };\n  const { on: onClick, trigger: clickTrigger } = createEventHook();\n  const { on: onShow, trigger: showTrigger } = createEventHook();\n  const { on: onError, trigger: errorTrigger } = createEventHook();\n  const { on: onClose, trigger: closeTrigger } = createEventHook();\n  const show = async (overrides) => {\n    if (!isSupported.value || !permissionGranted.value)\n      return;\n    const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n    notification.value = new Notification(options2.title || \"\", options2);\n    notification.value.onclick = clickTrigger;\n    notification.value.onshow = showTrigger;\n    notification.value.onerror = errorTrigger;\n    notification.value.onclose = closeTrigger;\n    return notification.value;\n  };\n  const close = () => {\n    if (notification.value)\n      notification.value.close();\n    notification.value = null;\n  };\n  if (_requestForPermissions)\n    tryOnMounted(ensurePermissions);\n  tryOnScopeDispose(close);\n  if (isSupported.value && window) {\n    const document = window.document;\n    useEventListener(document, \"visibilitychange\", (e) => {\n      e.preventDefault();\n      if (document.visibilityState === \"visible\") {\n        close();\n      }\n    });\n  }\n  return {\n    isSupported,\n    notification,\n    ensurePermissions,\n    permissionGranted,\n    show,\n    close,\n    onClick,\n    onShow,\n    onError,\n    onClose\n  };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n  if (options === true)\n    return {};\n  return options;\n}\nfunction useWebSocket(url, options = {}) {\n  const {\n    onConnected,\n    onDisconnected,\n    onError,\n    onMessage,\n    immediate = true,\n    autoClose = true,\n    protocols = []\n  } = options;\n  const data = ref(null);\n  const status = ref(\"CLOSED\");\n  const wsRef = ref();\n  const urlRef = toRef(url);\n  let heartbeatPause;\n  let heartbeatResume;\n  let explicitlyClosed = false;\n  let retried = 0;\n  let bufferedData = [];\n  let pongTimeoutWait;\n  const _sendBuffer = () => {\n    if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n      for (const buffer of bufferedData)\n        wsRef.value.send(buffer);\n      bufferedData = [];\n    }\n  };\n  const resetHeartbeat = () => {\n    clearTimeout(pongTimeoutWait);\n    pongTimeoutWait = void 0;\n  };\n  const close = (code = 1e3, reason) => {\n    if (!isClient || !wsRef.value)\n      return;\n    explicitlyClosed = true;\n    resetHeartbeat();\n    heartbeatPause == null ? void 0 : heartbeatPause();\n    wsRef.value.close(code, reason);\n    wsRef.value = void 0;\n  };\n  const send = (data2, useBuffer = true) => {\n    if (!wsRef.value || status.value !== \"OPEN\") {\n      if (useBuffer)\n        bufferedData.push(data2);\n      return false;\n    }\n    _sendBuffer();\n    wsRef.value.send(data2);\n    return true;\n  };\n  const _init = () => {\n    if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n      return;\n    const ws = new WebSocket(urlRef.value, protocols);\n    wsRef.value = ws;\n    status.value = \"CONNECTING\";\n    ws.onopen = () => {\n      status.value = \"OPEN\";\n      retried = 0;\n      onConnected == null ? void 0 : onConnected(ws);\n      heartbeatResume == null ? void 0 : heartbeatResume();\n      _sendBuffer();\n    };\n    ws.onclose = (ev) => {\n      status.value = \"CLOSED\";\n      onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n      if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n        const {\n          retries = -1,\n          delay = 1e3,\n          onFailed\n        } = resolveNestedOptions(options.autoReconnect);\n        if (typeof retries === \"number\" && (retries < 0 || retried < retries)) {\n          retried += 1;\n          setTimeout(_init, delay);\n        } else if (typeof retries === \"function\" && retries()) {\n          setTimeout(_init, delay);\n        } else {\n          onFailed == null ? void 0 : onFailed();\n        }\n      }\n    };\n    ws.onerror = (e) => {\n      onError == null ? void 0 : onError(ws, e);\n    };\n    ws.onmessage = (e) => {\n      if (options.heartbeat) {\n        resetHeartbeat();\n        const {\n          message = DEFAULT_PING_MESSAGE,\n          responseMessage = message\n        } = resolveNestedOptions(options.heartbeat);\n        if (e.data === responseMessage)\n          return;\n      }\n      data.value = e.data;\n      onMessage == null ? void 0 : onMessage(ws, e);\n    };\n  };\n  if (options.heartbeat) {\n    const {\n      message = DEFAULT_PING_MESSAGE,\n      interval = 1e3,\n      pongTimeout = 1e3\n    } = resolveNestedOptions(options.heartbeat);\n    const { pause, resume } = useIntervalFn(\n      () => {\n        send(message, false);\n        if (pongTimeoutWait != null)\n          return;\n        pongTimeoutWait = setTimeout(() => {\n          close();\n          explicitlyClosed = false;\n        }, pongTimeout);\n      },\n      interval,\n      { immediate: false }\n    );\n    heartbeatPause = pause;\n    heartbeatResume = resume;\n  }\n  if (autoClose) {\n    if (isClient)\n      useEventListener(\"beforeunload\", () => close());\n    tryOnScopeDispose(close);\n  }\n  const open = () => {\n    if (!isClient && !isWorker)\n      return;\n    close();\n    explicitlyClosed = false;\n    retried = 0;\n    _init();\n  };\n  if (immediate)\n    open();\n  watch(urlRef, open);\n  return {\n    data,\n    status,\n    close,\n    send,\n    open,\n    ws: wsRef\n  };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n  const {\n    window = defaultWindow\n  } = options != null ? options : {};\n  const data = ref(null);\n  const worker = shallowRef();\n  const post = (...args) => {\n    if (!worker.value)\n      return;\n    worker.value.postMessage(...args);\n  };\n  const terminate = function terminate2() {\n    if (!worker.value)\n      return;\n    worker.value.terminate();\n  };\n  if (window) {\n    if (typeof arg0 === \"string\")\n      worker.value = new Worker(arg0, workerOptions);\n    else if (typeof arg0 === \"function\")\n      worker.value = arg0();\n    else\n      worker.value = arg0;\n    worker.value.onmessage = (e) => {\n      data.value = e.data;\n    };\n    tryOnScopeDispose(() => {\n      if (worker.value)\n        worker.value.terminate();\n    });\n  }\n  return {\n    data,\n    post,\n    terminate,\n    worker\n  };\n}\n\nfunction depsParser(deps, localDeps) {\n  if (deps.length === 0 && localDeps.length === 0)\n    return \"\";\n  const depsString = deps.map((dep) => `'${dep}'`).toString();\n  const depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n    const str = fn.toString();\n    if (str.trim().startsWith(\"function\")) {\n      return str;\n    } else {\n      const name = fn.name;\n      return `const ${name} = ${str}`;\n    }\n  }).join(\";\");\n  const importString = `importScripts(${depsString});`;\n  return `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n\nfunction jobRunner(userFunc) {\n  return (e) => {\n    const userFuncArgs = e.data[0];\n    return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n      postMessage([\"SUCCESS\", result]);\n    }).catch((error) => {\n      postMessage([\"ERROR\", error]);\n    });\n  };\n}\n\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n  const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n  const blob = new Blob([blobCode], { type: \"text/javascript\" });\n  const url = URL.createObjectURL(blob);\n  return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n  const {\n    dependencies = [],\n    localDependencies = [],\n    timeout,\n    window = defaultWindow\n  } = options;\n  const worker = ref();\n  const workerStatus = ref(\"PENDING\");\n  const promise = ref({});\n  const timeoutId = ref();\n  const workerTerminate = (status = \"PENDING\") => {\n    if (worker.value && worker.value._url && window) {\n      worker.value.terminate();\n      URL.revokeObjectURL(worker.value._url);\n      promise.value = {};\n      worker.value = void 0;\n      window.clearTimeout(timeoutId.value);\n      workerStatus.value = status;\n    }\n  };\n  workerTerminate();\n  tryOnScopeDispose(workerTerminate);\n  const generateWorker = () => {\n    const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n    const newWorker = new Worker(blobUrl);\n    newWorker._url = blobUrl;\n    newWorker.onmessage = (e) => {\n      const { resolve = () => {\n      }, reject = () => {\n      } } = promise.value;\n      const [status, result] = e.data;\n      switch (status) {\n        case \"SUCCESS\":\n          resolve(result);\n          workerTerminate(status);\n          break;\n        default:\n          reject(result);\n          workerTerminate(\"ERROR\");\n          break;\n      }\n    };\n    newWorker.onerror = (e) => {\n      const { reject = () => {\n      } } = promise.value;\n      e.preventDefault();\n      reject(e);\n      workerTerminate(\"ERROR\");\n    };\n    if (timeout) {\n      timeoutId.value = setTimeout(\n        () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n        timeout\n      );\n    }\n    return newWorker;\n  };\n  const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n    var _a;\n    promise.value = {\n      resolve,\n      reject\n    };\n    (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]);\n    workerStatus.value = \"RUNNING\";\n  });\n  const workerFn = (...fnArgs) => {\n    if (workerStatus.value === \"RUNNING\") {\n      console.error(\n        \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n      );\n      return Promise.reject();\n    }\n    worker.value = generateWorker();\n    return callWorker(...fnArgs);\n  };\n  return {\n    workerFn,\n    workerStatus,\n    workerTerminate\n  };\n}\n\nfunction useWindowFocus(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref(false);\n  const focused = ref(window.document.hasFocus());\n  useEventListener(window, \"blur\", () => {\n    focused.value = false;\n  });\n  useEventListener(window, \"focus\", () => {\n    focused.value = true;\n  });\n  return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n  const { window = defaultWindow, behavior = \"auto\" } = options;\n  if (!window) {\n    return {\n      x: ref(0),\n      y: ref(0)\n    };\n  }\n  const internalX = ref(window.scrollX);\n  const internalY = ref(window.scrollY);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo({ left: x2, behavior });\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo({ top: y2, behavior });\n    }\n  });\n  useEventListener(\n    window,\n    \"scroll\",\n    () => {\n      internalX.value = window.scrollX;\n      internalY.value = window.scrollY;\n    },\n    {\n      capture: false,\n      passive: true\n    }\n  );\n  return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n  const {\n    window = defaultWindow,\n    initialWidth = Number.POSITIVE_INFINITY,\n    initialHeight = Number.POSITIVE_INFINITY,\n    listenOrientation = true,\n    includeScrollbar = true,\n    type = \"inner\"\n  } = options;\n  const width = ref(initialWidth);\n  const height = ref(initialHeight);\n  const update = () => {\n    if (window) {\n      if (type === \"outer\") {\n        width.value = window.outerWidth;\n        height.value = window.outerHeight;\n      } else if (includeScrollbar) {\n        width.value = window.innerWidth;\n        height.value = window.innerHeight;\n      } else {\n        width.value = window.document.documentElement.clientWidth;\n        height.value = window.document.documentElement.clientHeight;\n      }\n    }\n  };\n  update();\n  tryOnMounted(update);\n  useEventListener(\"resize\", update, { passive: true });\n  if (listenOrientation) {\n    const matches = useMediaQuery(\"(orientation: portrait)\");\n    watch(matches, () => update());\n  }\n  return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","import { isClient, isIOS } from '@vueuse/core'\n\nexport const isFirefox = (): boolean =>\n  isClient && /firefox/i.test(window.navigator.userAgent)\n\nexport const isAndroid = (): boolean =>\n  isClient && /android/i.test(window.navigator.userAgent)\n\nexport { isClient, isIOS }\n","import { EVENT_CODE } from '@pit-element-plus/constants'\nimport { isAndroid } from '../browser'\n\nexport const composeEventHandlers = <E>(\n  theirsHandler?: (event: E) => boolean | void,\n  oursHandler?: (event: E) => void,\n  { checkForDefaultPrevented = true } = {}\n) => {\n  const handleEvent = (event: E) => {\n    const shouldPrevent = theirsHandler?.(event)\n\n    if (checkForDefaultPrevented === false || !shouldPrevent) {\n      return oursHandler?.(event)\n    }\n  }\n  return handleEvent\n}\n\ntype WhenMouseHandler = (e: PointerEvent) => any\nexport const whenMouse = (handler: WhenMouseHandler): WhenMouseHandler => {\n  return (e: PointerEvent) =>\n    e.pointerType === 'mouse' ? handler(e) : undefined\n}\n\nexport const getEventCode = (event: KeyboardEvent): string => {\n  if (event.code && event.code !== 'Unidentified') return event.code\n  // On android, event.code is always '' (see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code#browser_compatibility)\n  const key = getEventKey(event)\n\n  if (key) {\n    if (Object.values(EVENT_CODE).includes(key)) return key\n\n    switch (key) {\n      case ' ':\n        return EVENT_CODE.space\n      default:\n        return ''\n    }\n  }\n\n  return ''\n}\n\nexport const getEventKey = (event: KeyboardEvent): string => {\n  let key = event.key && event.key !== 'Unidentified' ? event.key : ''\n\n  // On Android, event.key and event.code may not be useful when entering characters or space\n  // So here we directly get the last character of the input\n  // **only takes effect in the keyup event**\n  if (!key && event.type === 'keyup' && isAndroid()) {\n    const target = event.target as HTMLInputElement\n    key = target.value.charAt(target.selectionStart! - 1)\n  }\n\n  return key\n}\n","import { isClient } from '../browser'\n\nexport const isInContainer = (\n  el?: Element,\n  container?: Element | Window\n): boolean => {\n  if (!isClient || !el || !container) return false\n\n  const elRect = el.getBoundingClientRect()\n\n  let containerRect: Pick<DOMRect, 'top' | 'bottom' | 'left' | 'right'>\n  if (container instanceof Element) {\n    containerRect = container.getBoundingClientRect()\n  } else {\n    containerRect = {\n      top: 0,\n      right: window.innerWidth,\n      bottom: window.innerHeight,\n      left: 0,\n    }\n  }\n  return (\n    elRect.top < containerRect.bottom &&\n    elRect.bottom > containerRect.top &&\n    elRect.right > containerRect.left &&\n    elRect.left < containerRect.right\n  )\n}\n\nexport const getOffsetTop = (el: HTMLElement) => {\n  let offset = 0\n  let parent = el\n\n  while (parent) {\n    offset += parent.offsetTop\n    parent = parent.offsetParent as HTMLElement\n  }\n\n  return offset\n}\n\nexport const getOffsetTopDistance = (\n  el: HTMLElement,\n  containerEl: HTMLElement\n) => {\n  return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl))\n}\n\nexport const getClientXY = (event: MouseEvent | TouchEvent) => {\n  let clientX: number\n  let clientY: number\n  if (event.type === 'touchend') {\n    clientY = (event as TouchEvent).changedTouches[0].clientY\n    clientX = (event as TouchEvent).changedTouches[0].clientX\n  } else if (event.type.startsWith('touch')) {\n    clientY = (event as TouchEvent).touches[0].clientY\n    clientX = (event as TouchEvent).touches[0].clientX\n  } else {\n    clientY = (event as MouseEvent).clientY\n    clientX = (event as MouseEvent).clientX\n  }\n  return {\n    clientX,\n    clientY,\n  }\n}\n","export function easeInOutCubic(t: number, b: number, c: number, d: number) {\n  const cc = c - b\n  t /= d / 2\n  if (t < 1) {\n    return (cc / 2) * t * t * t + b\n  }\n  return (cc / 2) * ((t -= 2) * t * t + 2) + b\n}\n","/**\n* @vue/shared v3.5.25\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n  const map = /* @__PURE__ */ Object.create(null);\n  for (const key of str.split(\",\")) map[key] = 1;\n  return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n  // the leading comma is intentional so empty string \"\" is also included\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n  \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return ((str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  });\n};\nconst camelizeRE = /-\\w/g;\nconst camelize = cacheStringFunction(\n  (str) => {\n    return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase());\n  }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n  (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n  (str) => {\n    const s = str ? `on${capitalize(str)}` : ``;\n    return s;\n  }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](...arg);\n  }\n};\nconst def = (obj, key, value, writable = false) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    writable,\n    value\n  });\n};\nconst looseToNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n  const n = isString(val) ? Number(val) : NaN;\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n  return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n  return source + JSON.stringify(\n    options,\n    (_, val) => typeof val === \"function\" ? val.toString() : val\n  );\n}\n\nconst PatchFlags = {\n  \"TEXT\": 1,\n  \"1\": \"TEXT\",\n  \"CLASS\": 2,\n  \"2\": \"CLASS\",\n  \"STYLE\": 4,\n  \"4\": \"STYLE\",\n  \"PROPS\": 8,\n  \"8\": \"PROPS\",\n  \"FULL_PROPS\": 16,\n  \"16\": \"FULL_PROPS\",\n  \"NEED_HYDRATION\": 32,\n  \"32\": \"NEED_HYDRATION\",\n  \"STABLE_FRAGMENT\": 64,\n  \"64\": \"STABLE_FRAGMENT\",\n  \"KEYED_FRAGMENT\": 128,\n  \"128\": \"KEYED_FRAGMENT\",\n  \"UNKEYED_FRAGMENT\": 256,\n  \"256\": \"UNKEYED_FRAGMENT\",\n  \"NEED_PATCH\": 512,\n  \"512\": \"NEED_PATCH\",\n  \"DYNAMIC_SLOTS\": 1024,\n  \"1024\": \"DYNAMIC_SLOTS\",\n  \"DEV_ROOT_FRAGMENT\": 2048,\n  \"2048\": \"DEV_ROOT_FRAGMENT\",\n  \"CACHED\": -1,\n  \"-1\": \"CACHED\",\n  \"BAIL\": -2,\n  \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n  [1]: `TEXT`,\n  [2]: `CLASS`,\n  [4]: `STYLE`,\n  [8]: `PROPS`,\n  [16]: `FULL_PROPS`,\n  [32]: `NEED_HYDRATION`,\n  [64]: `STABLE_FRAGMENT`,\n  [128]: `KEYED_FRAGMENT`,\n  [256]: `UNKEYED_FRAGMENT`,\n  [512]: `NEED_PATCH`,\n  [1024]: `DYNAMIC_SLOTS`,\n  [2048]: `DEV_ROOT_FRAGMENT`,\n  [-1]: `CACHED`,\n  [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n  \"ELEMENT\": 1,\n  \"1\": \"ELEMENT\",\n  \"FUNCTIONAL_COMPONENT\": 2,\n  \"2\": \"FUNCTIONAL_COMPONENT\",\n  \"STATEFUL_COMPONENT\": 4,\n  \"4\": \"STATEFUL_COMPONENT\",\n  \"TEXT_CHILDREN\": 8,\n  \"8\": \"TEXT_CHILDREN\",\n  \"ARRAY_CHILDREN\": 16,\n  \"16\": \"ARRAY_CHILDREN\",\n  \"SLOTS_CHILDREN\": 32,\n  \"32\": \"SLOTS_CHILDREN\",\n  \"TELEPORT\": 64,\n  \"64\": \"TELEPORT\",\n  \"SUSPENSE\": 128,\n  \"128\": \"SUSPENSE\",\n  \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n  \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n  \"COMPONENT_KEPT_ALIVE\": 512,\n  \"512\": \"COMPONENT_KEPT_ALIVE\",\n  \"COMPONENT\": 6,\n  \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n  \"STABLE\": 1,\n  \"1\": \"STABLE\",\n  \"DYNAMIC\": 2,\n  \"2\": \"DYNAMIC\",\n  \"FORWARDED\": 3,\n  \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n  [1]: \"STABLE\",\n  [2]: \"DYNAMIC\",\n  [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n  start = Math.max(0, Math.min(start, source.length));\n  end = Math.max(0, Math.min(end, source.length));\n  if (start > end) return \"\";\n  let lines = source.split(/(\\r?\\n)/);\n  const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n  lines = lines.filter((_, idx) => idx % 2 === 0);\n  let count = 0;\n  const res = [];\n  for (let i = 0; i < lines.length; i++) {\n    count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n    if (count >= start) {\n      for (let j = i - range; j <= i + range || end > count; j++) {\n        if (j < 0 || j >= lines.length) continue;\n        const line = j + 1;\n        res.push(\n          `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`\n        );\n        const lineLength = lines[j].length;\n        const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n        if (j === i) {\n          const pad = start - (count - (lineLength + newLineSeqLength));\n          const length = Math.max(\n            1,\n            end > count ? lineLength - pad : end - start\n          );\n          res.push(`   |  ` + \" \".repeat(pad) + \"^\".repeat(length));\n        } else if (j > i) {\n          if (end > count) {\n            const length = Math.max(Math.min(end - count, lineLength), 1);\n            res.push(`   |  ` + \"^\".repeat(length));\n          }\n          count += lineLength + newLineSeqLength;\n        }\n      }\n      break;\n    }\n  }\n  return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n  if (isArray(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString(value) || isObject(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction stringifyStyle(styles) {\n  if (!styles) return \"\";\n  if (isString(styles)) return styles;\n  let ret = \"\";\n  for (const key in styles) {\n    const value = styles[key];\n    if (isString(value) || typeof value === \"number\") {\n      const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n      ret += `${normalizedKey}:${value};`;\n    }\n  }\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString(value)) {\n    res = value;\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props) return null;\n  let { class: klass, style } = props;\n  if (klass && !isString(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n  if (attrValidationCache.hasOwnProperty(name)) {\n    return attrValidationCache[name];\n  }\n  const isUnsafe = unsafeAttrCharRE.test(name);\n  if (isUnsafe) {\n    console.error(`unsafe attribute name: ${name}`);\n  }\n  return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n  acceptCharset: \"accept-charset\",\n  className: \"class\",\n  htmlFor: \"for\",\n  httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n  `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n  `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n  `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n  if (value == null) {\n    return false;\n  }\n  const type = typeof value;\n  return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n  const str = \"\" + string;\n  const match = escapeRE.exec(str);\n  if (!match) {\n    return str;\n  }\n  let html = \"\";\n  let escaped;\n  let index;\n  let lastIndex = 0;\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        escaped = \"&quot;\";\n        break;\n      case 38:\n        escaped = \"&amp;\";\n        break;\n      case 39:\n        escaped = \"&#39;\";\n        break;\n      case 60:\n        escaped = \"&lt;\";\n        break;\n      case 62:\n        escaped = \"&gt;\";\n        break;\n      default:\n        continue;\n    }\n    if (lastIndex !== index) {\n      html += str.slice(lastIndex, index);\n    }\n    lastIndex = index + 1;\n    html += escaped;\n  }\n  return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n  return src.replace(commentStripRE, \"\");\n}\nconst cssVarNameEscapeSymbolsRE = /[ !\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n  return key.replace(\n    cssVarNameEscapeSymbolsRE,\n    (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n  );\n}\n\nfunction looseCompareArrays(a, b) {\n  if (a.length !== b.length) return false;\n  let equal = true;\n  for (let i = 0; equal && i < a.length; i++) {\n    equal = looseEqual(a[i], b[i]);\n  }\n  return equal;\n}\nfunction looseEqual(a, b) {\n  if (a === b) return true;\n  let aValidType = isDate(a);\n  let bValidType = isDate(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n  }\n  aValidType = isSymbol(a);\n  bValidType = isSymbol(b);\n  if (aValidType || bValidType) {\n    return a === b;\n  }\n  aValidType = isArray(a);\n  bValidType = isArray(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n  }\n  aValidType = isObject(a);\n  bValidType = isObject(b);\n  if (aValidType || bValidType) {\n    if (!aValidType || !bValidType) {\n      return false;\n    }\n    const aKeysCount = Object.keys(a).length;\n    const bKeysCount = Object.keys(b).length;\n    if (aKeysCount !== bKeysCount) {\n      return false;\n    }\n    for (const key in a) {\n      const aHasKey = a.hasOwnProperty(key);\n      const bHasKey = b.hasOwnProperty(key);\n      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n  }\n  return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n  return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n  return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n  return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (isRef(val)) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce(\n        (entries, [key, val2], i) => {\n          entries[stringifySymbol(key, i) + \" =>\"] = val2;\n          return entries;\n        },\n        {}\n      )\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n    };\n  } else if (isSymbol(val)) {\n    return stringifySymbol(val);\n  } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n  var _a;\n  return (\n    // Symbol.description in es2019+ so we need to cast here to pass\n    // the lib: es2016 check\n    isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n  );\n};\n\nfunction normalizeCssVarValue(value) {\n  if (value == null) {\n    return \"initial\";\n  }\n  if (typeof value === \"string\") {\n    return value === \"\" ? \" \" : value;\n  }\n  if (typeof value !== \"number\" || !Number.isFinite(value)) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      console.warn(\n        \"[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:\",\n        value\n      );\n    }\n  }\n  return String(value);\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeCssVarValue, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nexport default baseTrim;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nexport default noop;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nexport default createAssigner;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nexport default arrayPush;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","import isArray from './isArray.js';\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n  if (!arguments.length) {\n    return [];\n  }\n  var value = arguments[0];\n  return isArray(value) ? value : [value];\n}\n\nexport default castArray;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n  if (number === number) {\n    if (upper !== undefined) {\n      number = number <= upper ? number : upper;\n    }\n    if (lower !== undefined) {\n      number = number >= lower ? number : lower;\n    }\n  }\n  return number;\n}\n\nexport default baseClamp;\n","import baseClamp from './_baseClamp.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n  if (upper === undefined) {\n    upper = lower;\n    lower = undefined;\n  }\n  if (upper !== undefined) {\n    upper = toNumber(upper);\n    upper = upper === upper ? upper : 0;\n  }\n  if (lower !== undefined) {\n    lower = toNumber(lower);\n    lower = lower === lower ? lower : 0;\n  }\n  return baseClamp(toNumber(number), lower, upper);\n}\n\nexport default clamp;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nexport default createBaseEach;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nexport default debounce;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nexport default baseMerge;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arrayIncludesWith;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': true },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = length - 1;\n  if (fromIndex !== undefined) {\n    index = toInteger(fromIndex);\n    index = fromIndex < 0\n      ? nativeMax(length + index, 0)\n      : nativeMin(index, length - 1);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nexport default findLastIndex;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n *   { 'user': 'barney' },\n *   { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n  var func = isArray(collection) ? arrayMap : baseMap;\n  return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n *   return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n  return baseFlatten(map(collection, iteratee), 1);\n}\n\nexport default flatMap;\n","import baseFlatten from './_baseFlatten.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, INFINITY) : [];\n}\n\nexport default flattenDeep;\n","/**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction fromPairs(pairs) {\n  var index = -1,\n      length = pairs == null ? 0 : pairs.length,\n      result = {};\n\n  while (++index < length) {\n    var pair = pairs[index];\n    result[pair[0]] = pair[1];\n  }\n  return result;\n}\n\nexport default fromPairs;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nexport default isNil;\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n  return value === null;\n}\n\nexport default isNull;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nexport default isUndefined;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n\n  // Prevent prototype pollution, see: https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n  var index = -1,\n      length = path.length;\n\n  if (!length) {\n    return true;\n  }\n\n  var isRootPrimitive = object == null || (typeof object !== 'object' && typeof object !== 'function');\n\n  while (++index < length) {\n    var key = path[index];\n\n    // skip non-string keys (e.g., Symbols, numbers)\n    if (typeof key !== 'string') {\n      continue;\n    }\n\n    // Always block \"__proto__\" anywhere in the path if it's not expected\n    if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n      return false;\n    }\n\n    // Block \"constructor.prototype\" chains\n    if (key === 'constructor' &&\n        (index + 1) < length &&\n        typeof path[index + 1] === 'string' &&\n        path[index + 1] === 'prototype') {\n\n      // Allow ONLY when the path starts at a primitive root, e.g., _.unset(0, 'constructor.prototype.a')\n      if (isRootPrimitive && index === 0) {\n        continue;\n      }\n\n      return false;\n    }\n  }\n\n  var obj = parent(object, path);\n  return obj == null || delete obj[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n","import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nexport default omit;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nexport default baseSet;\n","import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nexport default basePickBy;\n","import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n  return basePickBy(object, paths, function(value, path) {\n    return hasIn(object, path);\n  });\n}\n\nexport default basePick;\n","import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n  return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n","import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n  return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nexport default throttle;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseUniq;\n","import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import { isArray, isObject, isString } from '@vue/shared'\nimport { isNil } from 'lodash-unified'\n\nexport {\n  isArray,\n  isFunction,\n  isObject,\n  isString,\n  isDate,\n  isPromise,\n  isSymbol,\n  isPlainObject,\n} from '@vue/shared'\n\nexport const isUndefined = (val: any): val is undefined => val === undefined\nexport const isBoolean = (val: any): val is boolean => typeof val === 'boolean'\nexport const isNumber = (val: any): val is number => typeof val === 'number'\n\nexport const isEmpty = (val: unknown) =>\n  (!val && val !== 0) ||\n  (isArray(val) && val.length === 0) ||\n  (isObject(val) && !Object.keys(val).length)\n\nexport const isElement = (e: unknown): e is Element => {\n  if (typeof Element === 'undefined') return false\n  return e instanceof Element\n}\n\nexport const isPropAbsent = (prop: unknown): prop is null | undefined =>\n  isNil(prop)\n\nexport const isStringNumber = (val: string): boolean => {\n  if (!isString(val)) {\n    return false\n  }\n  return !Number.isNaN(Number(val))\n}\n\nexport const isWindow = (val: unknown): val is Window => val === window\n","import { isClient } from './browser'\n\nexport const rAF = (fn: () => void) =>\n  isClient\n    ? window.requestAnimationFrame(fn)\n    : (setTimeout(fn, 16) as unknown as number)\n\nexport const cAF = (handle: number) =>\n  isClient ? window.cancelAnimationFrame(handle) : clearTimeout(handle)\n","import { camelize, hyphenate, capitalize as toCapitalize } from '@vue/shared'\n\nexport { camelize, hyphenate }\nexport const kebabCase = hyphenate\n\n/**\n * fork from {@link https://github.com/sindresorhus/escape-string-regexp}\n */\nexport const escapeStringRegexp = (string = '') =>\n  string.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d')\n\n// NOTE: improve capitalize types. Restore previous code after the [PR](https://github.com/vuejs/core/pull/6212) merge\nexport const capitalize = <T extends string>(str: T) =>\n  toCapitalize(str) as Capitalize<T>\n","import { get, set } from 'lodash-unified'\n\nimport type { Arrayable } from '.'\n\nexport const keysOf = <T extends object>(arr: T) =>\n  Object.keys(arr) as Array<keyof T>\nexport const entriesOf = <T extends object>(arr: T) =>\n  Object.entries(arr) as [keyof T, T[keyof T]][]\nexport { hasOwn } from '@vue/shared'\n\nexport const getProp = <T = any>(\n  obj: Record<string, any>,\n  path: Arrayable<string>,\n  defaultValue?: any\n): { value: T } => {\n  return {\n    get value() {\n      return get(obj, path, defaultValue)\n    },\n    set value(val: any) {\n      set(obj, path, val)\n    },\n  }\n}\n","import { isString } from './types'\n\nclass ElementPlusError extends Error {\n  constructor(m: string) {\n    super(m)\n    this.name = 'ElementPlusError'\n  }\n}\n\nexport function throwError(scope: string, m: string): never {\n  throw new ElementPlusError(`[${scope}] ${m}`)\n}\n\nexport function debugWarn(err: Error): void\nexport function debugWarn(scope: string, message: string): void\nexport function debugWarn(scope: string | Error, message?: string): void {\n  if (process.env.NODE_ENV !== 'production') {\n    const error: Error = isString(scope)\n      ? new ElementPlusError(`[${scope}] ${message}`)\n      : scope\n    // eslint-disable-next-line no-console\n    console.warn(error)\n  }\n}\n","import { isNumber, isObject, isString, isStringNumber } from '../types'\nimport { isClient } from '../browser'\nimport { camelize } from '../strings'\nimport { entriesOf, keysOf } from '../objects'\nimport { debugWarn } from '../error'\nimport { isShadowRoot } from './aria'\n\nimport type { CSSProperties } from 'vue'\n\nconst SCOPE = 'utils/dom/style'\n\nexport const classNameToArray = (cls = '') =>\n  cls.split(' ').filter((item) => !!item.trim())\n\nexport const hasClass = (el: Element, cls: string): boolean => {\n  if (!el || !cls) return false\n  if (cls.includes(' ')) throw new Error('className should not contain space.')\n  return el.classList.contains(cls)\n}\n\nexport const addClass = (el: Element, cls: string) => {\n  if (!el || !cls.trim()) return\n  el.classList.add(...classNameToArray(cls))\n}\n\nexport const removeClass = (el: Element, cls: string) => {\n  if (!el || !cls.trim()) return\n  el.classList.remove(...classNameToArray(cls))\n}\n\nexport const getStyle = (\n  element: HTMLElement,\n  styleName: keyof CSSProperties\n): string => {\n  if (!isClient || !element || !styleName || isShadowRoot(element)) return ''\n\n  let key = camelize(styleName)\n  if (key === 'float') key = 'cssFloat'\n  try {\n    const style = (element.style as any)[key]\n    if (style) return style\n    const computed: any = document.defaultView?.getComputedStyle(element, '')\n    return computed ? computed[key] : ''\n  } catch {\n    return (element.style as any)[key]\n  }\n}\n\nexport const setStyle = (\n  element: HTMLElement,\n  styleName: CSSProperties | keyof CSSProperties,\n  value?: string | number\n) => {\n  if (!element || !styleName) return\n\n  if (isObject(styleName)) {\n    entriesOf(styleName).forEach(([prop, value]) =>\n      setStyle(element, prop, value)\n    )\n  } else {\n    const key: any = camelize(styleName)\n    element.style[key] = value as any\n  }\n}\n\nexport const removeStyle = (\n  element: HTMLElement,\n  style: CSSProperties | keyof CSSProperties\n) => {\n  if (!element || !style) return\n\n  if (isObject(style)) {\n    keysOf(style).forEach((prop) => removeStyle(element, prop))\n  } else {\n    setStyle(element, style, '')\n  }\n}\n\nexport function addUnit(value?: string | number, defaultUnit = 'px') {\n  if (!value && value !== 0) return ''\n  if (isNumber(value) || isStringNumber(value)) {\n    return `${value}${defaultUnit}`\n  } else if (isString(value)) {\n    return value\n  }\n  debugWarn(SCOPE, 'binding value must be a string or number')\n}\n","import { isClient } from '../browser'\nimport { easeInOutCubic } from '../easings'\nimport { isFunction, isWindow } from '../types'\nimport { cAF, rAF } from '../raf'\nimport { getStyle } from './style'\nimport { isShadowRoot } from './aria'\n\nexport const isScroll = (el: HTMLElement, isVertical?: boolean): boolean => {\n  if (!isClient) return false\n\n  const key = (\n    {\n      undefined: 'overflow',\n      true: 'overflow-y',\n      false: 'overflow-x',\n    } as const\n  )[String(isVertical)]!\n  const overflow = getStyle(el, key)\n  return ['scroll', 'auto', 'overlay'].some((s) => overflow.includes(s))\n}\n\nexport const getScrollContainer = (\n  el: HTMLElement,\n  isVertical?: boolean\n): Window | HTMLElement | undefined => {\n  if (!isClient) return\n\n  let parent: HTMLElement = el\n  while (parent) {\n    if ([window, document, document.documentElement].includes(parent))\n      return window\n\n    if (isScroll(parent, isVertical)) return parent\n\n    if (isShadowRoot(parent)) {\n      parent = parent.host as HTMLElement\n    } else {\n      parent = parent.parentNode as HTMLElement\n    }\n  }\n\n  return parent\n}\n\nlet scrollBarWidth: number\nexport const getScrollBarWidth = (namespace: string): number => {\n  if (!isClient) return 0\n  if (scrollBarWidth !== undefined) return scrollBarWidth\n\n  const outer = document.createElement('div')\n  outer.className = `${namespace}-scrollbar__wrap`\n  outer.style.visibility = 'hidden'\n  outer.style.width = '100px'\n  outer.style.position = 'absolute'\n  outer.style.top = '-9999px'\n  document.body.appendChild(outer)\n\n  const widthNoScroll = outer.offsetWidth\n  outer.style.overflow = 'scroll'\n\n  const inner = document.createElement('div')\n  inner.style.width = '100%'\n  outer.appendChild(inner)\n\n  const widthWithScroll = inner.offsetWidth\n  outer.parentNode?.removeChild(outer)\n  scrollBarWidth = widthNoScroll - widthWithScroll\n\n  return scrollBarWidth\n}\n\n/**\n * Scroll with in the container element, positioning the **selected** element at the top\n * of the container\n */\nexport function scrollIntoView(\n  container: HTMLElement,\n  selected: HTMLElement\n): void {\n  if (!isClient) return\n\n  if (!selected) {\n    container.scrollTop = 0\n    return\n  }\n\n  const offsetParents: HTMLElement[] = []\n  let pointer = selected.offsetParent\n  while (\n    pointer !== null &&\n    container !== pointer &&\n    container.contains(pointer)\n  ) {\n    offsetParents.push(pointer as HTMLElement)\n    pointer = (pointer as HTMLElement).offsetParent\n  }\n  const top =\n    selected.offsetTop +\n    offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0)\n  const bottom = top + selected.offsetHeight\n  const viewRectTop = container.scrollTop\n  const viewRectBottom = viewRectTop + container.clientHeight\n\n  if (top < viewRectTop) {\n    container.scrollTop = top\n  } else if (bottom > viewRectBottom) {\n    container.scrollTop = bottom - container.clientHeight\n  }\n}\n\nexport function animateScrollTo(\n  container: HTMLElement | Window,\n  from: number,\n  to: number,\n  duration: number,\n  callback?: unknown\n) {\n  const startTime = Date.now()\n\n  let handle: number | undefined\n  const scroll = () => {\n    const timestamp = Date.now()\n    const time = timestamp - startTime\n    const nextScrollTop = easeInOutCubic(\n      time > duration ? duration : time,\n      from,\n      to,\n      duration\n    )\n\n    if (isWindow(container)) {\n      container.scrollTo(window.pageXOffset, nextScrollTop)\n    } else {\n      container.scrollTop = nextScrollTop\n    }\n    if (time < duration) {\n      handle = rAF(scroll)\n    } else if (isFunction(callback)) {\n      callback()\n    }\n  }\n\n  scroll()\n\n  return () => {\n    handle && cAF(handle)\n  }\n}\n\nexport const getScrollElement = (\n  target: HTMLElement,\n  container: HTMLElement | Window\n) => {\n  if (isWindow(container)) {\n    return target.ownerDocument.documentElement\n  }\n  return container\n}\n\nexport const getScrollTop = (container: HTMLElement | Window) => {\n  if (isWindow(container)) {\n    return window.scrollY\n  }\n  return container.scrollTop\n}\n","import { isString } from '../types'\nimport { isClient } from '../browser'\n\ntype GetElement = <T extends string | HTMLElement | Window | null | undefined>(\n  target: T\n) => T extends string ? HTMLElement | null : T\n\nexport const getElement = ((\n  target: string | HTMLElement | Window | null | undefined\n) => {\n  if (!isClient || target === '') return null\n  if (isString(target)) {\n    try {\n      return document.querySelector<HTMLElement>(target)\n    } catch {\n      return null\n    }\n  }\n  return target\n}) as GetElement\n","import { isClient } from '../browser'\n\nconst globalNodes: HTMLElement[] = []\nlet target: HTMLElement | undefined = !isClient ? undefined : document.body\n\nexport function createGlobalNode(id?: string) {\n  const el = document.createElement('div')\n  if (id !== undefined) {\n    el.setAttribute('id', id)\n  }\n\n  if (target) {\n    target.appendChild(el)\n    globalNodes.push(el)\n  }\n\n  return el\n}\n\nexport function removeGlobalNode(el: HTMLElement) {\n  globalNodes.splice(globalNodes.indexOf(el), 1)\n  el.remove()\n}\n\nexport function changeGlobalNodesTarget(el: HTMLElement) {\n  if (el === target) return\n\n  target = el\n  globalNodes.forEach((el) => {\n    if (target && !el.contains(target)) {\n      target.appendChild(el)\n    }\n  })\n}\n","/*! Element Plus Icons Vue v0.0.6 */\n\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\add-location.vue?vue&type=script&lang.ts\nvar add_location_vue_vue_type_script_lang_default = {\n  name: \"AddLocation\"\n};\n\n// src/components/add-location.vue\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\n\n// unplugin-vue:/plugin-vue/export-helper\nvar export_helper_default = (sfc, props) => {\n  let target = sfc.__vccOpts || sfc;\n  for (let [key, val] of props)\n    target[key] = val;\n  return target;\n};\n\n// src/components/add-location.vue\nvar _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2 = /* @__PURE__ */ _createElementVNode(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3 = /* @__PURE__ */ _createElementVNode(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4 = /* @__PURE__ */ _createElementVNode(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 384h96a32 32 0 1 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0v96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_5 = [\n  _hoisted_2,\n  _hoisted_3,\n  _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock(), _createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar add_location_default = /* @__PURE__ */ export_helper_default(add_location_vue_vue_type_script_lang_default, [[\"render\", _sfc_render], [\"__file\", \"add-location.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\aim.vue?vue&type=script&lang.ts\nvar aim_vue_vue_type_script_lang_default = {\n  name: \"Aim\"\n};\n\n// src/components/aim.vue\nimport { createElementVNode as _createElementVNode2, openBlock as _openBlock2, createElementBlock as _createElementBlock2 } from \"vue\";\nvar _hoisted_12 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_22 = /* @__PURE__ */ _createElementVNode2(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_32 = /* @__PURE__ */ _createElementVNode2(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32zm0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32zM96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32zm576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_42 = [\n  _hoisted_22,\n  _hoisted_32\n];\nfunction _sfc_render2(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock2(), _createElementBlock2(\"svg\", _hoisted_12, _hoisted_42);\n}\nvar aim_default = /* @__PURE__ */ export_helper_default(aim_vue_vue_type_script_lang_default, [[\"render\", _sfc_render2], [\"__file\", \"aim.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\alarm-clock.vue?vue&type=script&lang.ts\nvar alarm_clock_vue_vue_type_script_lang_default = {\n  name: \"AlarmClock\"\n};\n\n// src/components/alarm-clock.vue\nimport { createElementVNode as _createElementVNode3, openBlock as _openBlock3, createElementBlock as _createElementBlock3 } from \"vue\";\nvar _hoisted_13 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_23 = /* @__PURE__ */ _createElementVNode3(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 832a320 320 0 1 0 0-640 320 320 0 0 0 0 640zm0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_33 = /* @__PURE__ */ _createElementVNode3(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m292.288 824.576 55.424 32-48 83.136a32 32 0 1 1-55.424-32l48-83.136zm439.424 0-55.424 32 48 83.136a32 32 0 1 0 55.424-32l-48-83.136zM512 512h160a32 32 0 1 1 0 64H480a32 32 0 0 1-32-32V320a32 32 0 0 1 64 0v192zM90.496 312.256A160 160 0 0 1 312.32 90.496l-46.848 46.848a96 96 0 0 0-128 128L90.56 312.256zm835.264 0A160 160 0 0 0 704 90.496l46.848 46.848a96 96 0 0 1 128 128l46.912 46.912z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_43 = [\n  _hoisted_23,\n  _hoisted_33\n];\nfunction _sfc_render3(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock3(), _createElementBlock3(\"svg\", _hoisted_13, _hoisted_43);\n}\nvar alarm_clock_default = /* @__PURE__ */ export_helper_default(alarm_clock_vue_vue_type_script_lang_default, [[\"render\", _sfc_render3], [\"__file\", \"alarm-clock.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\apple.vue?vue&type=script&lang.ts\nvar apple_vue_vue_type_script_lang_default = {\n  name: \"Apple\"\n};\n\n// src/components/apple.vue\nimport { createElementVNode as _createElementVNode4, openBlock as _openBlock4, createElementBlock as _createElementBlock4 } from \"vue\";\nvar _hoisted_14 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_24 = /* @__PURE__ */ _createElementVNode4(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M599.872 203.776a189.44 189.44 0 0 1 64.384-4.672l2.624.128c31.168 1.024 51.2 4.096 79.488 16.32 37.632 16.128 74.496 45.056 111.488 89.344 96.384 115.264 82.752 372.8-34.752 521.728-7.68 9.728-32 41.6-30.72 39.936a426.624 426.624 0 0 1-30.08 35.776c-31.232 32.576-65.28 49.216-110.08 50.048-31.36.64-53.568-5.312-84.288-18.752l-6.528-2.88c-20.992-9.216-30.592-11.904-47.296-11.904-18.112 0-28.608 2.88-51.136 12.672l-6.464 2.816c-28.416 12.224-48.32 18.048-76.16 19.2-74.112 2.752-116.928-38.08-180.672-132.16-96.64-142.08-132.608-349.312-55.04-486.4 46.272-81.92 129.92-133.632 220.672-135.04 32.832-.576 60.288 6.848 99.648 22.72 27.136 10.88 34.752 13.76 37.376 14.272 16.256-20.16 27.776-36.992 34.56-50.24 13.568-26.304 27.2-59.968 40.704-100.8a32 32 0 1 1 60.8 20.224c-12.608 37.888-25.408 70.4-38.528 97.664zm-51.52 78.08c-14.528 17.792-31.808 37.376-51.904 58.816a32 32 0 1 1-46.72-43.776l12.288-13.248c-28.032-11.2-61.248-26.688-95.68-26.112-70.4 1.088-135.296 41.6-171.648 105.792C121.6 492.608 176 684.16 247.296 788.992c34.816 51.328 76.352 108.992 130.944 106.944 52.48-2.112 72.32-34.688 135.872-34.688 63.552 0 81.28 34.688 136.96 33.536 56.448-1.088 75.776-39.04 126.848-103.872 107.904-136.768 107.904-362.752 35.776-449.088-72.192-86.272-124.672-84.096-151.68-85.12-41.472-4.288-81.6 12.544-113.664 25.152z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_34 = [\n  _hoisted_24\n];\nfunction _sfc_render4(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock4(), _createElementBlock4(\"svg\", _hoisted_14, _hoisted_34);\n}\nvar apple_default = /* @__PURE__ */ export_helper_default(apple_vue_vue_type_script_lang_default, [[\"render\", _sfc_render4], [\"__file\", \"apple.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\arrow-down-bold.vue?vue&type=script&lang.ts\nvar arrow_down_bold_vue_vue_type_script_lang_default = {\n  name: \"ArrowDownBold\"\n};\n\n// src/components/arrow-down-bold.vue\nimport { createElementVNode as _createElementVNode5, openBlock as _openBlock5, createElementBlock as _createElementBlock5 } from \"vue\";\nvar _hoisted_15 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_25 = /* @__PURE__ */ _createElementVNode5(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M104.704 338.752a64 64 0 0 1 90.496 0l316.8 316.8 316.8-316.8a64 64 0 0 1 90.496 90.496L557.248 791.296a64 64 0 0 1-90.496 0L104.704 429.248a64 64 0 0 1 0-90.496z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_35 = [\n  _hoisted_25\n];\nfunction _sfc_render5(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock5(), _createElementBlock5(\"svg\", _hoisted_15, _hoisted_35);\n}\nvar arrow_down_bold_default = /* @__PURE__ */ export_helper_default(arrow_down_bold_vue_vue_type_script_lang_default, [[\"render\", _sfc_render5], [\"__file\", \"arrow-down-bold.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\arrow-down.vue?vue&type=script&lang.ts\nvar arrow_down_vue_vue_type_script_lang_default = {\n  name: \"ArrowDown\"\n};\n\n// src/components/arrow-down.vue\nimport { createElementVNode as _createElementVNode6, openBlock as _openBlock6, createElementBlock as _createElementBlock6 } from \"vue\";\nvar _hoisted_16 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_26 = /* @__PURE__ */ _createElementVNode6(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_36 = [\n  _hoisted_26\n];\nfunction _sfc_render6(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock6(), _createElementBlock6(\"svg\", _hoisted_16, _hoisted_36);\n}\nvar arrow_down_default = /* @__PURE__ */ export_helper_default(arrow_down_vue_vue_type_script_lang_default, [[\"render\", _sfc_render6], [\"__file\", \"arrow-down.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\arrow-left-bold.vue?vue&type=script&lang.ts\nvar arrow_left_bold_vue_vue_type_script_lang_default = {\n  name: \"ArrowLeftBold\"\n};\n\n// src/components/arrow-left-bold.vue\nimport { createElementVNode as _createElementVNode7, openBlock as _openBlock7, createElementBlock as _createElementBlock7 } from \"vue\";\nvar _hoisted_17 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_27 = /* @__PURE__ */ _createElementVNode7(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M685.248 104.704a64 64 0 0 1 0 90.496L368.448 512l316.8 316.8a64 64 0 0 1-90.496 90.496L232.704 557.248a64 64 0 0 1 0-90.496l362.048-362.048a64 64 0 0 1 90.496 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_37 = [\n  _hoisted_27\n];\nfunction _sfc_render7(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock7(), _createElementBlock7(\"svg\", _hoisted_17, _hoisted_37);\n}\nvar arrow_left_bold_default = /* @__PURE__ */ export_helper_default(arrow_left_bold_vue_vue_type_script_lang_default, [[\"render\", _sfc_render7], [\"__file\", \"arrow-left-bold.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\arrow-left.vue?vue&type=script&lang.ts\nvar arrow_left_vue_vue_type_script_lang_default = {\n  name: \"ArrowLeft\"\n};\n\n// src/components/arrow-left.vue\nimport { createElementVNode as _createElementVNode8, openBlock as _openBlock8, createElementBlock as _createElementBlock8 } from \"vue\";\nvar _hoisted_18 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_28 = /* @__PURE__ */ _createElementVNode8(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_38 = [\n  _hoisted_28\n];\nfunction _sfc_render8(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock8(), _createElementBlock8(\"svg\", _hoisted_18, _hoisted_38);\n}\nvar arrow_left_default = /* @__PURE__ */ export_helper_default(arrow_left_vue_vue_type_script_lang_default, [[\"render\", _sfc_render8], [\"__file\", \"arrow-left.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\arrow-right-bold.vue?vue&type=script&lang.ts\nvar arrow_right_bold_vue_vue_type_script_lang_default = {\n  name: \"ArrowRightBold\"\n};\n\n// src/components/arrow-right-bold.vue\nimport { createElementVNode as _createElementVNode9, openBlock as _openBlock9, createElementBlock as _createElementBlock9 } from \"vue\";\nvar _hoisted_19 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_29 = /* @__PURE__ */ _createElementVNode9(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M338.752 104.704a64 64 0 0 0 0 90.496l316.8 316.8-316.8 316.8a64 64 0 0 0 90.496 90.496l362.048-362.048a64 64 0 0 0 0-90.496L429.248 104.704a64 64 0 0 0-90.496 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_39 = [\n  _hoisted_29\n];\nfunction _sfc_render9(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock9(), _createElementBlock9(\"svg\", _hoisted_19, _hoisted_39);\n}\nvar arrow_right_bold_default = /* @__PURE__ */ export_helper_default(arrow_right_bold_vue_vue_type_script_lang_default, [[\"render\", _sfc_render9], [\"__file\", \"arrow-right-bold.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\arrow-right.vue?vue&type=script&lang.ts\nvar arrow_right_vue_vue_type_script_lang_default = {\n  name: \"ArrowRight\"\n};\n\n// src/components/arrow-right.vue\nimport { createElementVNode as _createElementVNode10, openBlock as _openBlock10, createElementBlock as _createElementBlock10 } from \"vue\";\nvar _hoisted_110 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_210 = /* @__PURE__ */ _createElementVNode10(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_310 = [\n  _hoisted_210\n];\nfunction _sfc_render10(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock10(), _createElementBlock10(\"svg\", _hoisted_110, _hoisted_310);\n}\nvar arrow_right_default = /* @__PURE__ */ export_helper_default(arrow_right_vue_vue_type_script_lang_default, [[\"render\", _sfc_render10], [\"__file\", \"arrow-right.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\arrow-up-bold.vue?vue&type=script&lang.ts\nvar arrow_up_bold_vue_vue_type_script_lang_default = {\n  name: \"ArrowUpBold\"\n};\n\n// src/components/arrow-up-bold.vue\nimport { createElementVNode as _createElementVNode11, openBlock as _openBlock11, createElementBlock as _createElementBlock11 } from \"vue\";\nvar _hoisted_111 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_211 = /* @__PURE__ */ _createElementVNode11(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M104.704 685.248a64 64 0 0 0 90.496 0l316.8-316.8 316.8 316.8a64 64 0 0 0 90.496-90.496L557.248 232.704a64 64 0 0 0-90.496 0L104.704 594.752a64 64 0 0 0 0 90.496z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_311 = [\n  _hoisted_211\n];\nfunction _sfc_render11(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock11(), _createElementBlock11(\"svg\", _hoisted_111, _hoisted_311);\n}\nvar arrow_up_bold_default = /* @__PURE__ */ export_helper_default(arrow_up_bold_vue_vue_type_script_lang_default, [[\"render\", _sfc_render11], [\"__file\", \"arrow-up-bold.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\arrow-up.vue?vue&type=script&lang.ts\nvar arrow_up_vue_vue_type_script_lang_default = {\n  name: \"ArrowUp\"\n};\n\n// src/components/arrow-up.vue\nimport { createElementVNode as _createElementVNode12, openBlock as _openBlock12, createElementBlock as _createElementBlock12 } from \"vue\";\nvar _hoisted_112 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_212 = /* @__PURE__ */ _createElementVNode12(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_312 = [\n  _hoisted_212\n];\nfunction _sfc_render12(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock12(), _createElementBlock12(\"svg\", _hoisted_112, _hoisted_312);\n}\nvar arrow_up_default = /* @__PURE__ */ export_helper_default(arrow_up_vue_vue_type_script_lang_default, [[\"render\", _sfc_render12], [\"__file\", \"arrow-up.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\avatar.vue?vue&type=script&lang.ts\nvar avatar_vue_vue_type_script_lang_default = {\n  name: \"Avatar\"\n};\n\n// src/components/avatar.vue\nimport { createElementVNode as _createElementVNode13, openBlock as _openBlock13, createElementBlock as _createElementBlock13 } from \"vue\";\nvar _hoisted_113 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_213 = /* @__PURE__ */ _createElementVNode13(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M628.736 528.896A416 416 0 0 1 928 928H96a415.872 415.872 0 0 1 299.264-399.104L512 704l116.736-175.104zM720 304a208 208 0 1 1-416 0 208 208 0 0 1 416 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_313 = [\n  _hoisted_213\n];\nfunction _sfc_render13(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock13(), _createElementBlock13(\"svg\", _hoisted_113, _hoisted_313);\n}\nvar avatar_default = /* @__PURE__ */ export_helper_default(avatar_vue_vue_type_script_lang_default, [[\"render\", _sfc_render13], [\"__file\", \"avatar.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\back.vue?vue&type=script&lang.ts\nvar back_vue_vue_type_script_lang_default = {\n  name: \"Back\"\n};\n\n// src/components/back.vue\nimport { createElementVNode as _createElementVNode14, openBlock as _openBlock14, createElementBlock as _createElementBlock14 } from \"vue\";\nvar _hoisted_114 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_214 = /* @__PURE__ */ _createElementVNode14(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_314 = /* @__PURE__ */ _createElementVNode14(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312L237.248 512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_44 = [\n  _hoisted_214,\n  _hoisted_314\n];\nfunction _sfc_render14(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock14(), _createElementBlock14(\"svg\", _hoisted_114, _hoisted_44);\n}\nvar back_default = /* @__PURE__ */ export_helper_default(back_vue_vue_type_script_lang_default, [[\"render\", _sfc_render14], [\"__file\", \"back.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\baseball.vue?vue&type=script&lang.ts\nvar baseball_vue_vue_type_script_lang_default = {\n  name: \"Baseball\"\n};\n\n// src/components/baseball.vue\nimport { createElementVNode as _createElementVNode15, openBlock as _openBlock15, createElementBlock as _createElementBlock15 } from \"vue\";\nvar _hoisted_115 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_215 = /* @__PURE__ */ _createElementVNode15(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M195.2 828.8a448 448 0 1 1 633.6-633.6 448 448 0 0 1-633.6 633.6zm45.248-45.248a384 384 0 1 0 543.104-543.104 384 384 0 0 0-543.104 543.104z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_315 = /* @__PURE__ */ _createElementVNode15(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M497.472 96.896c22.784 4.672 44.416 9.472 64.896 14.528a256.128 256.128 0 0 0 350.208 350.208c5.056 20.48 9.856 42.112 14.528 64.896A320.128 320.128 0 0 1 497.472 96.896zM108.48 491.904a320.128 320.128 0 0 1 423.616 423.68c-23.04-3.648-44.992-7.424-65.728-11.52a256.128 256.128 0 0 0-346.496-346.432 1736.64 1736.64 0 0 1-11.392-65.728z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_45 = [\n  _hoisted_215,\n  _hoisted_315\n];\nfunction _sfc_render15(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock15(), _createElementBlock15(\"svg\", _hoisted_115, _hoisted_45);\n}\nvar baseball_default = /* @__PURE__ */ export_helper_default(baseball_vue_vue_type_script_lang_default, [[\"render\", _sfc_render15], [\"__file\", \"baseball.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-aixin.vue?vue&type=script&lang.ts\nvar basics_aixin_vue_vue_type_script_lang_default = {\n  name: \"BasicsAixin\"\n};\n\n// src/components/basics-aixin.vue\nimport { createElementVNode as _createElementVNode16, openBlock as _openBlock16, createElementBlock as _createElementBlock16 } from \"vue\";\nvar _hoisted_116 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_216 = /* @__PURE__ */ _createElementVNode16(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M689.25060779 62.95703666C877.07192889 62.95703666 997.45185223 213.56847445 997.45185223 416.26889443c0 157.29853667-142.33448334 330.53203001-422.76788224 525.18608669a110.10048 110.10048 0 0 1-125.36793998 0C168.88263111 746.80092445 26.54814777 573.56743111 26.54814777 416.26889443 26.54814777 213.56847445 146.92807111 62.95703666 334.74939221 62.95703666c67.82976 0 113.83845888 23.70218667 177.25060779 77.47811555C575.42428445 86.67136 621.42084779 62.95703666 689.25060779 62.95703666z m0 71.84687445c-47.14951111 0-79.94178333 17.28208555-133.07448889 62.62328889-2.46366777 2.09957888-16.384 14.07810333-20.41325113 17.50053888a36.77297778 36.77297778 0 0 1-47.52573554 0c-4.02924999-3.43457223-17.94958222-15.40096-20.41325113-17.50053888-53.13270557-45.34120334-85.92497778-62.62328889-133.07448889-62.62328889C191.35905223 134.80391111 99.36592555 249.4676389 99.36592555 414.9460389 99.36592555 541.12711111 228.53252779 697.7338789 491.10129778 879.30500779a36.80938667 36.80938667 0 0 0 41.79740444 0C795.46747221 697.74601443 924.63407445 541.12711111 924.63407445 414.9460389c0-165.4784-91.99312555-280.14212779-235.38346666-280.14212779z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_316 = [\n  _hoisted_216\n];\nfunction _sfc_render16(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock16(), _createElementBlock16(\"svg\", _hoisted_116, _hoisted_316);\n}\nvar basics_aixin_default = /* @__PURE__ */ export_helper_default(basics_aixin_vue_vue_type_script_lang_default, [[\"render\", _sfc_render16], [\"__file\", \"basics-aixin.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-aliyu.vue?vue&type=script&lang.ts\nvar basics_aliyu_vue_vue_type_script_lang_default = {\n  name: \"BasicsAliyu\"\n};\n\n// src/components/basics-aliyu.vue\nimport { createElementVNode as _createElementVNode17, openBlock as _openBlock17, createElementBlock as _createElementBlock17 } from \"vue\";\nvar _hoisted_117 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_217 = /* @__PURE__ */ _createElementVNode17(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M340.554667 202.666667c124.309333 0 251.584 86.048 383.626666 254.890666C766.784 402.336 812.373333 373.333333 861.866667 373.333333 934.357333 373.333333 992 435.989333 992 512s-57.642667 138.666667-130.133333 138.666667c-49.493333 0-95.082667-29.013333-137.685334-84.224C592.128 735.296 464.874667 821.333333 340.554667 821.333333 170.133333 821.333333 32 682.816 32 512s138.133333-309.333333 308.554667-309.333333z m0 64C205.514667 266.666667 96 376.490667 96 512s109.514667 245.333333 244.554667 245.333333c103.84 0 219.434667-80.597333 344.8-245.333333C560 347.264 444.394667 266.666667 340.554667 266.666667z m44.288 263.413333a32 32 0 1 1 40.981333 49.173333L391.317333 608l34.506667 28.746667a32 32 0 1 1-40.981333 49.173333l-64-53.333333a32 32 0 0 1 0-49.173334z m-138.666667-96a32 32 0 1 1 40.981333 49.173333L252.650667 512l34.506666 28.746667a32 32 0 1 1-40.981333 49.173333l-64-53.333333a32 32 0 0 1 0-49.173334zM861.866667 437.333333c-29.610667 0-62.528 23.36-97.525334 73.653334l0.746667 1.013333-0.746667 1.013333C799.338667 563.296 832.256 586.666667 861.866667 586.666667c35.904 0 66.133333-32.853333 66.133333-74.666667s-30.229333-74.666667-66.133333-74.666667z m-477.013334-99.253333a32 32 0 1 1 40.96 49.173333L391.328 416l34.506667 28.746667a32 32 0 1 1-40.981334 49.173333l-64-53.333333a32 32 0 0 1 0-49.173334z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_317 = [\n  _hoisted_217\n];\nfunction _sfc_render17(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock17(), _createElementBlock17(\"svg\", _hoisted_117, _hoisted_317);\n}\nvar basics_aliyu_default = /* @__PURE__ */ export_helper_default(basics_aliyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render17], [\"__file\", \"basics-aliyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-anquan.vue?vue&type=script&lang.ts\nvar basics_anquan_vue_vue_type_script_lang_default = {\n  name: \"BasicsAnquan\"\n};\n\n// src/components/basics-anquan.vue\nimport { createElementVNode as _createElementVNode18, openBlock as _openBlock18, createElementBlock as _createElementBlock18 } from \"vue\";\nvar _hoisted_118 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_218 = /* @__PURE__ */ _createElementVNode18(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 26.54814777c82.52681443 0 159.07043555 9.51485667 227.78614557 25.4012689 24.1876389 5.58269667 45.72956445 11.61443555 64.38305109 17.65831112 10.58284999 3.43457223 18.32580779 6.22592 23.03469113 8.09490887C875.7854811 94.32936334 912.49777778 148.03247445 912.49777778 200.95886222v438.08388779c0 49.38259001-28.59311445 108.68053333-66.94380999 137.79550777l-258.98856334 196.62013667c-42.08867555 31.95486777-106.95717888 32.02768555-149.1308089 0l-258.98856334-196.62013667C140.26524445 747.84464555 111.50222222 688.25543111 111.50222222 639.04275001V200.95886222c0-53.27834112 36.60307001-107.19990557 85.51234333-123.34117888 4.73315555-1.86899001 12.40329443-4.63606557 22.81623779-8.00995555a778.73758777 778.73758777 0 0 1 64.38305109-17.65831112C352.92956445 36.05086777 429.47318557 26.54814777 512 26.54814777z m0 72.81777778c-76.74993778 0-147.83222557 8.83522333-211.37787221 23.5322789-22.10019555 5.09724445-41.62749667 10.55857778-58.33917668 15.98350222-5.75260445 1.85685333-10.71635001 3.58020779-14.85482666 5.09724444-2.34230557 0.84954112-3.81079666 1.41994667-4.36906667 1.65053668a36.40888889 36.40888889 0 0 1-2.82775666 1.00731221c-18.2893989 5.72833223-35.91130112 31.43300779-35.91130112 54.32206222v438.08388779c0 26.73626112 18.35008 64.75927666 38.15651555 79.79614777l258.98856335 196.62013667c16.12913778 12.25765888 44.97711445 12.22124999 61.0698422 0l258.98856335-196.62013667C821.47555555 703.68066333 839.68 665.9489189 839.68 639.04275001V200.95886222c0-22.57351111-17.77967445-48.36314112-36.40888889-54.47983445l-2.33016889-0.84953998a163.64581888 163.64581888 0 0 0-4.36906667-1.65053668c-4.13847666-1.51703666-9.10222222-3.24039111-14.85482666-5.09724444a706.30817223 706.30817223 0 0 0-58.33917668-15.98350222C659.83222557 108.20115001 588.74993778 99.36592555 512 99.36592555z m156.27908779 216.99697778a36.40888889 36.40888889 0 0 1 51.53071331 51.45789667l-242.36183665 242.72592555a36.40888889 36.40888889 0 0 1-51.45789668 0.07281778l-121.7270511-121.22946333a36.40888889 36.40888889 0 1 1 51.38507776-51.59139555l95.96169558 95.56119665z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_318 = [\n  _hoisted_218\n];\nfunction _sfc_render18(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock18(), _createElementBlock18(\"svg\", _hoisted_118, _hoisted_318);\n}\nvar basics_anquan_default = /* @__PURE__ */ export_helper_default(basics_anquan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render18], [\"__file\", \"basics-anquan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-bangzhu.vue?vue&type=script&lang.ts\nvar basics_bangzhu_vue_vue_type_script_lang_default = {\n  name: \"BasicsBangzhu\"\n};\n\n// src/components/basics-bangzhu.vue\nimport { createElementVNode as _createElementVNode19, openBlock as _openBlock19, createElementBlock as _createElementBlock19 } from \"vue\";\nvar _hoisted_119 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_219 = /* @__PURE__ */ _createElementVNode19(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M928.51768889 761.48584334a36.40888889 36.40888889 0 0 1-62.44124444-37.47688334A410.49808555 410.49808555 0 0 0 924.63407445 512c0-227.89537223-184.73870222-412.63407445-412.63407445-412.63407445S99.36592555 284.10462777 99.36592555 512s184.73870222 412.63407445 412.63407445 412.63407445a410.49808555 410.49808555 0 0 0 211.98468779-58.53335779 36.40888889 36.40888889 0 0 1 37.46474666 62.44124444A483.30372779 483.30372779 0 0 1 512 997.45185223C243.8970789 997.45185223 26.54814777 780.1029211 26.54814777 512S243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223c0 89.08041443-24.06627555 174.72625778-68.93416334 249.48584334zM669.77185223 427.04592555c0 74.9780389-53.15697778 137.50423666-124.23926556 153.69405667V621.22666667a36.40888889 36.40888889 0 0 1-72.81777778 0v-72.81777778a36.40888889 36.40888889 0 0 1 36.40888889-36.40888889C557.8145189 512 596.95407445 473.77066667 596.95407445 427.04592555s-39.13955555-84.95407445-87.83037667-84.95407332c-30.46210333 0-58.12072334 15.07328-74.15276999 39.39441778a83.15790222 83.15790222 0 0 0-9.69690112 20.15838777 36.40888889 36.40888889 0 0 1-69.27397888-22.40360335c4.3205211-13.3741989 10.43721443-26.09303666 18.18017109-37.81669888 29.41838222-44.66156999 79.85683001-72.1502811 134.95561557-72.1502811C597.64584334 269.27407445 669.77185223 339.71313778 669.77185223 427.04592555zM512 766.86222222a36.40888889 36.40888889 0 1 1 0-72.81777777 36.40888889 36.40888889 0 0 1 0 72.81777777z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_319 = [\n  _hoisted_219\n];\nfunction _sfc_render19(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock19(), _createElementBlock19(\"svg\", _hoisted_119, _hoisted_319);\n}\nvar basics_bangzhu_default = /* @__PURE__ */ export_helper_default(basics_bangzhu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render19], [\"__file\", \"basics-bangzhu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-bianji.vue?vue&type=script&lang.ts\nvar basics_bianji_vue_vue_type_script_lang_default = {\n  name: \"BasicsBianji\"\n};\n\n// src/components/basics-bianji.vue\nimport { createElementVNode as _createElementVNode20, openBlock as _openBlock20, createElementBlock as _createElementBlock20 } from \"vue\";\nvar _hoisted_120 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_220 = /* @__PURE__ */ _createElementVNode20(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M880.58993778 77.46104889l64.36295111 64.36295111c26.65927111 26.65927111 26.65927111 69.88344889 0 96.54272L871.53777778 311.77955555V886.32888889c0 43.98648889-35.65795555 79.64444445-79.64444445 79.64444444H136.53333333c-43.98648889 0-79.64444445-35.65795555-79.64444444-79.64444444V230.96888889c0-43.98648889 35.65795555-79.64444445 79.64444444-79.64444444h573.64935112l73.86453333-73.86339556c26.65927111-26.65927111 69.88231111-26.65927111 96.54272 0z m-64.08305778 31.90670222l-0.27989333 0.27420444-41.68248889 41.68135112h-64.36181333L317.41952 544.08874667l-49.44896 179.57546666a25.03111111 25.03111111 0 0 0 0 13.29152c3.67047111 13.32792889 17.45009778 21.15811555 30.77802667 17.48764445l179.57546666-49.44782223L871.53777778 311.77841778v-64.36181333l41.23306667-41.2319289c8.79502222-8.79388445 8.88604445-22.99448889 0.27761777-31.90328888l-64.63943111-64.64056889c-8.79502222-8.79388445-22.99448889-8.88604445-31.90215111-0.27420445z m-456.448 456.44231111l96.54385778 96.54499556-1.95470223 1.95470222-133.23036444 36.68536889 36.68650667-133.22922667 1.95470222-1.95584zM731.7504 194.11740445l96.54385778 96.54385777-339.51175111 339.51288889-96.54385778-96.54499556 339.51175111-339.51288888zM791.89333333 151.32444445c43.98648889 0 79.64444445 35.65795555 79.64444445 79.64444444v16.44885333l-11.06033778 11.06261333-96.54499555-96.54385777 10.61205333-10.61319111L791.89333333 151.32444445z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_320 = [\n  _hoisted_220\n];\nfunction _sfc_render20(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock20(), _createElementBlock20(\"svg\", _hoisted_120, _hoisted_320);\n}\nvar basics_bianji_default = /* @__PURE__ */ export_helper_default(basics_bianji_vue_vue_type_script_lang_default, [[\"render\", _sfc_render20], [\"__file\", \"basics-bianji.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-bianji1.vue?vue&type=script&lang.ts\nvar basics_bianji1_vue_vue_type_script_lang_default = {\n  name: \"BasicsBianji1\"\n};\n\n// src/components/basics-bianji1.vue\nimport { createElementVNode as _createElementVNode21, openBlock as _openBlock21, createElementBlock as _createElementBlock21 } from \"vue\";\nvar _hoisted_121 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_221 = /* @__PURE__ */ _createElementVNode21(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M965.29066667 320.85333333c-24.576-60.07466667-60.07466667-114.688-106.496-158.37866666-46.42133333-46.42133333-101.03466667-81.92-158.37866667-106.496-60.07466667-24.576-122.88-38.22933333-188.416-38.22933334s-128.34133333 13.65333333-188.416 38.22933334c-60.07466667 24.576-111.95733333 60.07466667-158.37866667 106.496-46.42133333 46.42133333-81.92 101.03466667-106.496 158.37866666-24.576 60.07466667-38.22933333 122.88-38.22933333 188.416 0 65.536 13.65333333 128.34133333 38.22933333 188.416 24.576 60.07466667 60.07466667 114.688 106.496 158.37866667 46.42133333 46.42133333 101.03466667 81.92 158.37866667 106.496 60.07466667 24.576 122.88 38.22933333 188.416 38.22933333s128.34133333-13.65333333 188.416-38.22933333c60.07466667-24.576 114.688-60.07466667 158.37866667-106.496 46.42133333-46.42133333 81.92-101.03466667 106.496-158.37866667 24.576-60.07466667 38.22933333-122.88 38.22933333-188.416 0-65.536-13.65333333-128.34133333-38.22933333-188.416z m-172.032 101.03466667L539.30666667 675.84c-5.46133333 5.46133333-10.92266667 5.46133333-16.384 5.46133333s-10.92266667 0-13.65333334-5.46133333c-8.192-8.192-8.192-21.84533333 0-30.03733333l253.952-253.952c5.46133333-5.46133333 8.192-13.65333333 8.192-24.576s-5.46133333-21.84533333-10.92266666-30.03733334l-120.14933334-120.14933333c-13.65333333-13.65333333-32.768-5.46133333-43.69066666 8.192l-243.02933334 243.02933333-65.536 65.536-24.576 185.68533334 169.30133334-27.30666667-95.57333334-98.304c-8.192-8.192-8.192-21.84533333 0-30.03733333 8.192-8.192 21.84533333-8.192 30.03733334 0l125.61066666 125.61066666c5.46133333 5.46133333 8.192 13.65333333 5.46133334 21.84533334-2.73066667 8.192-8.192 13.65333333-16.384 13.65333333l-240.29866667 38.22933333H238.93333333c-5.46133333 0-10.92266667-2.73066667-13.65333333-5.46133333-5.46133333-5.46133333-8.192-10.92266667-5.46133333-19.11466667l30.03733333-221.184c0-5.46133333 2.73066667-8.192 5.46133333-10.92266666l40.96-40.96 273.06666667-273.06666667c32.768-32.768 76.45866667-35.49866667 103.76533333-8.192l120.14933334 120.14933333c16.384 16.384 24.576 38.22933333 24.576 60.07466667-2.73066667 24.576-10.92266667 43.69066667-24.576 57.344z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_321 = [\n  _hoisted_221\n];\nfunction _sfc_render21(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock21(), _createElementBlock21(\"svg\", _hoisted_121, _hoisted_321);\n}\nvar basics_bianji1_default = /* @__PURE__ */ export_helper_default(basics_bianji1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render21], [\"__file\", \"basics-bianji1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-bianji2.vue?vue&type=script&lang.ts\nvar basics_bianji2_vue_vue_type_script_lang_default = {\n  name: \"BasicsBianji2\"\n};\n\n// src/components/basics-bianji2.vue\nimport { createElementVNode as _createElementVNode22, openBlock as _openBlock22, createElementBlock as _createElementBlock22 } from \"vue\";\nvar _hoisted_122 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_222 = /* @__PURE__ */ _createElementVNode22(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M336.97094315 560.49754567c-0.60659826 0.77425664-1.21319538 1.58344078-1.48331179 2.56144953l-46.76740323 171.46340352c-2.73143581 9.98150144 0.06752939 20.73725952 7.45265265 28.32264192 5.53040099 5.39534336 12.81306738 8.36313088 20.56843605 8.36313088 2.56261347 0 5.12522695-0.3038811 7.65407574-0.97917269l170.24671516-46.43092253c0.27128035 0 0.40633913 0.23635171 0.60776221 0.23635172 1.95485127 0 3.87826688-0.7078912 5.32897792-2.19353202l455.24052992-455.17300053c13.52095858-13.53725838 20.93984654-31.98202083 20.93984654-52.04515272 0-22.74333923-9.64385565-45.46921472-26.53777693-62.3130715l-42.99275946-43.05912376c-16.85782755-16.89392128-39.61979677-26.55407673-62.3468362-26.55407674-20.06080398 0-38.50556643 7.41888797-52.0626176 20.92238166L337.64506965 558.91294094C337.17469411 559.34955065 337.30858781 559.99107755 336.97094315 560.49754567M911.27461319 222.09169635l-45.21772714 45.1851264-73.3051813-74.46947612 44.57852928-44.5773642c7.04631353-7.08007822 20.70116579-6.05084103 28.79534535 2.07360911l43.02303118 43.06028771c4.48719303 4.484864 7.04864256 10.45187698 7.04864256 16.35252452C916.16581632 214.55637845 914.44382379 218.93994951 911.27461319 222.09169635M417.93136299 567.64631723l328.49071331-328.50934216 73.34010994 74.51954063L491.87807118 641.52316701 417.93136299 567.64631723zM358.07961202 700.83701419l23.73764779-87.13118493 63.3248438 63.32600775L358.07961202 700.83701419z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_322 = /* @__PURE__ */ _createElementVNode22(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M940.10605113 402.47243549c-17.23156707 0-31.36028672 14.00996181-31.42548822 31.47671665l0 424.37157547c0 22.254336-18.07451591 40.32768797-40.36378054 40.32768796L150.43806777 898.64841557c-22.254336 0-40.3963813-18.07218802-40.3963813-40.32768796L110.04168647 165.66297259c0-22.27296483 18.1420453-40.36261661 40.3963813-40.36261661l462.35553678 0c17.33053213 0 31.39405141-14.07632725 31.39405142-31.41035235 0-17.29676743-14.06352043-31.39172352-31.39405142-31.39172352L145.65048661 62.49828011c-54.25382059 0-98.40971093 44.12212565-98.40971093 98.40971093L47.24077568 863.10947271c0 54.28758528 44.15589035 98.39224605 98.40971093 98.39224604l727.42011222 0c54.28991431 0 98.42833977-44.10466077 98.42833976-98.39224604L971.49893859 433.74656512C971.42791737 416.48239843 957.33645426 402.47243549 940.10605113 402.47243549\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_46 = [\n  _hoisted_222,\n  _hoisted_322\n];\nfunction _sfc_render22(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock22(), _createElementBlock22(\"svg\", _hoisted_122, _hoisted_46);\n}\nvar basics_bianji2_default = /* @__PURE__ */ export_helper_default(basics_bianji2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render22], [\"__file\", \"basics-bianji2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-bianji3.vue?vue&type=script&lang.ts\nvar basics_bianji3_vue_vue_type_script_lang_default = {\n  name: \"BasicsBianji3\"\n};\n\n// src/components/basics-bianji3.vue\nimport { createElementVNode as _createElementVNode23, openBlock as _openBlock23, createElementBlock as _createElementBlock23 } from \"vue\";\nvar _hoisted_123 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_223 = /* @__PURE__ */ _createElementVNode23(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M971.84426667 196.33493333q-8.73813333 9.8304-16.384 17.47626667l-13.1072 13.1072q-6.5536 6.5536-12.01493334 10.92266667l-147.456-148.54826667q8.73813333-8.73813333 21.84533334-20.75306667t21.84533333-18.56853333q21.84533333-17.47626667 46.96746667-15.29173333t40.41386666 9.8304q16.384 8.73813333 36.59093334 30.58346666t31.1296 45.8752q5.46133333 15.29173333 7.09973333 36.0448t-16.93013333 39.3216zM554.5984 317.57653333l169.30133333-169.30133333 147.456 147.456q-92.84266667 92.84266667-169.30133333 168.20906667-32.768 31.67573333-63.8976 62.80533333t-56.79786667 55.7056-42.05226666 40.96l-19.6608 19.6608q-7.64586667 7.64586667-17.47626667 15.29173333t-21.84533333 13.1072-33.31413334 13.1072-44.2368 14.7456-43.69066666 13.1072-31.67573334 7.09973334q-20.75306667 2.18453333-22.39146666-3.82293334t1.6384-26.76053333q1.09226667-10.92266667 5.46133333-32.22186667t8.73813333-43.14453333 9.28426667-40.96 8.192-26.76053333q5.46133333-12.01493333 11.4688-20.75306667t16.93013333-19.6608zM924.8768 475.9552q22.9376 0 43.69066667 10.92266667t20.75306666 44.78293333l0 247.94453333q0 30.58346667-11.4688 56.25173334t-31.1296 44.78293333-44.78293333 29.4912-51.33653333 10.37653333l-609.4848 0q-26.2144 0-51.33653334-11.4688t-44.2368-31.1296-31.1296-46.42133333-12.01493333-57.344l0-608.39253333q0-21.84533333 12.01493333-45.32906667t31.1296-42.5984 43.14453334-31.67573333 48.05973333-12.56106667l254.49813333 0q30.58346667 0 43.14453334 22.39146667t12.56106666 45.32906666-12.56106666 44.2368-43.14453334 21.2992l-199.8848 0q-22.9376 0-37.13706666 15.83786667t-14.19946667 38.77546667l0 513.36533333q0 21.84533333 14.19946667 36.59093333t37.13706666 14.7456l505.71946667 0q22.9376 0 39.3216-14.7456t16.384-36.59093333l0-203.1616q0-15.29173333 7.09973333-26.2144t17.47626667-17.47626667 22.9376-9.28426666 24.576-2.73066667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_323 = [\n  _hoisted_223\n];\nfunction _sfc_render23(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock23(), _createElementBlock23(\"svg\", _hoisted_123, _hoisted_323);\n}\nvar basics_bianji3_default = /* @__PURE__ */ export_helper_default(basics_bianji3_vue_vue_type_script_lang_default, [[\"render\", _sfc_render23], [\"__file\", \"basics-bianji3.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-bianji6.vue?vue&type=script&lang.ts\nvar basics_bianji6_vue_vue_type_script_lang_default = {\n  name: \"BasicsBianji6\"\n};\n\n// src/components/basics-bianji6.vue\nimport { createElementVNode as _createElementVNode24, openBlock as _openBlock24, createElementBlock as _createElementBlock24 } from \"vue\";\nvar _hoisted_124 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_224 = /* @__PURE__ */ _createElementVNode24(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M911.02928555 61.48854557a36.40888889 36.40888889 0 1 1 51.48216888 51.48216888L447.65335666 627.84094777a36.40888889 36.40888889 0 1 1-51.49430443-51.49430443L911.02928555 61.5006811zM900.3614811 439.18222222a36.40888889 36.40888889 0 0 1 72.81777778 0v400.49777778c0 73.728-59.77125888 133.49925888-133.49925888 133.49925888H184.32c-73.728 0-133.49925888-59.77125888-133.49925888-133.49925888V184.32c0-73.728 59.77125888-133.49925888 133.49925888-133.49925888h388.3614811a36.40888889 36.40888889 0 0 1 0 72.81777778H184.32a60.6814811 60.6814811 0 0 0-60.6814811 60.6814811v655.36a60.6814811 60.6814811 0 0 0 60.6814811 60.6814811h655.36a60.6814811 60.6814811 0 0 0 60.6814811-60.6814811V439.18222222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_324 = [\n  _hoisted_224\n];\nfunction _sfc_render24(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock24(), _createElementBlock24(\"svg\", _hoisted_124, _hoisted_324);\n}\nvar basics_bianji6_default = /* @__PURE__ */ export_helper_default(basics_bianji6_vue_vue_type_script_lang_default, [[\"render\", _sfc_render24], [\"__file\", \"basics-bianji6.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-bofangjilu.vue?vue&type=script&lang.ts\nvar basics_bofangjilu_vue_vue_type_script_lang_default = {\n  name: \"BasicsBofangjilu\"\n};\n\n// src/components/basics-bofangjilu.vue\nimport { createElementVNode as _createElementVNode25, openBlock as _openBlock25, createElementBlock as _createElementBlock25 } from \"vue\";\nvar _hoisted_125 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_225 = /* @__PURE__ */ _createElementVNode25(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M865.27544889 467.79960889l59.22512554 33.32627001C918.7115611 278.25493333 736.25448334 99.36592555 512 99.36592555c-227.89537223 0-412.63407445 184.73870222-412.63407445 412.63407445s184.73870222 412.63407445 412.63407445 412.63407445c139.42177223 0 266.97424555-69.62593223 343.12950557-183.35516444a36.40888889 36.40888889 0 1 1 60.49943665 40.52309333C826.09948445 915.49544334 675.97349888 997.45185223 512 997.45185223 243.8970789 997.45185223 26.54814777 780.1029211 26.54814777 512S243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223c0 12.46397667-0.97090333 29.98878777-2.86416668 52.93852445-2.19667001 26.44499001-31.03251001 41.73672334-54.15215332 28.72661333l-110.87720334-62.40483556a36.40888889 36.40888889 0 1 1 35.71712-63.47283001z m-561.06097778 200.49161444L475.59111111 496.93885667V293.54666667a36.40888889 36.40888889 0 0 1 72.81777778 0v218.45333333a36.40888889 36.40888889 0 0 1-10.66780444 25.74108445l-182.04444445 182.04444444a36.40888889 36.40888889 0 1 1-51.48216889-51.48216889z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_325 = [\n  _hoisted_225\n];\nfunction _sfc_render25(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock25(), _createElementBlock25(\"svg\", _hoisted_125, _hoisted_325);\n}\nvar basics_bofangjilu_default = /* @__PURE__ */ export_helper_default(basics_bofangjilu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render25], [\"__file\", \"basics-bofangjilu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-buganxingqu.vue?vue&type=script&lang.ts\nvar basics_buganxingqu_vue_vue_type_script_lang_default = {\n  name: \"BasicsBuganxingqu\"\n};\n\n// src/components/basics-buganxingqu.vue\nimport { createElementVNode as _createElementVNode26, openBlock as _openBlock26, createElementBlock as _createElementBlock26 } from \"vue\";\nvar _hoisted_126 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_226 = /* @__PURE__ */ _createElementVNode26(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M400.21257443 572.3538011a36.40888889 36.40888889 0 1 0 53.66670223 49.20054557l119.56679111-130.42877668a60.6814811 60.6814811 0 0 0 3.2768-78.13347556 1047.52014222 1047.52014222 0 0 1-69.90506667-101.76284444c-19.43020999-32.3796389 0.93449443-83.31567445 43.05958002-125.44075776 12.40329443-12.37902222 19.3938011-18.84766777 29.36983666-26.40858112C609.24814222 136.58794667 644.06717667 123.6385189 689.23847111 123.6385189 832.64094777 123.6385189 924.63407445 239.85569223 924.63407445 407.56716999c0 127.89228999-129.1666011 286.61077333-391.73537223 470.64557113a36.40888889 36.40888889 0 0 1-41.79740444 0C228.53252779 694.16580779 99.36592555 535.44732445 99.36592555 407.55503445 99.36592555 239.85569223 191.35905223 123.6385189 334.74939221 123.6385189c15.68009443 0 30.25578667 2.30589667 44.29748224 6.74777998a36.40888889 36.40888889 0 0 0 22.02737778-69.39534222A217.42174777 217.42174777 0 0 0 334.74939221 50.82074112C146.92807111 50.82074112 26.54814777 202.88853333 26.54814777 407.56716999 26.54814777 566.37060779 168.88263111 741.30318222 449.31603001 937.83836445a109.22666667 109.22666667 0 0 0 125.36793998 0C855.11736889 741.30318222 997.45185223 566.37060779 997.45185223 407.56716999 997.45185223 202.88853333 877.07192889 50.82074112 689.25060779 50.82074112c-61.94365667 0-111.93306112 18.59280555-154.04600889 50.55980999-13.27710777 10.08526222-22.23369443 18.35008-36.80938667 32.92577223-63.06019555 63.04805888-95.75537778 144.81028779-54.01865557 214.37553778a1110.32547555 1110.32547555 0 0 0 68.50939335 100.74339555L400.22471111 572.3538011z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_326 = [\n  _hoisted_226\n];\nfunction _sfc_render26(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock26(), _createElementBlock26(\"svg\", _hoisted_126, _hoisted_326);\n}\nvar basics_buganxingqu_default = /* @__PURE__ */ export_helper_default(basics_buganxingqu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render26], [\"__file\", \"basics-buganxingqu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-bumen.vue?vue&type=script&lang.ts\nvar basics_bumen_vue_vue_type_script_lang_default = {\n  name: \"BasicsBumen\"\n};\n\n// src/components/basics-bumen.vue\nimport { createElementVNode as _createElementVNode27, openBlock as _openBlock27, createElementBlock as _createElementBlock27 } from \"vue\";\nvar _hoisted_127 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_227 = /* @__PURE__ */ _createElementVNode27(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M488.26953125 905.75L188.34277344 905.75c-7.69042969 0-14.28222656-6.59179688-14.28222656-14.28222656L174.06054687 132.3125c0-7.69042969 6.59179688-14.28222656 14.28222657-14.28222656l647.09472656 0c7.69042969 0 14.28222656 6.59179688 14.28222656 14.28222656l0 506.46972656 56.03027344 24.16992188 0-530.63964844c0-38.45214844-31.86035156-70.3125-70.3125-70.3125L188.34277344 62C149.890625 62 118.03027344 93.86035156 118.03027344 132.3125l0 759.15527344c0 38.45214844 31.86035156 70.3125 70.3125 70.3125l299.92675781 0L488.26953125 905.75 488.26953125 905.75zM817.859375 633.2890625c0-48.33984375-39.55078125-87.890625-87.890625-87.890625-48.33984375 0-87.890625 39.55078125-87.890625 87.890625 0 48.33984375 39.55078125 87.890625 87.890625 87.890625C778.30859375 721.1796875 817.859375 681.62890625 817.859375 633.2890625L817.859375 633.2890625zM847.52246094 750.84277344L847.52246094 750.84277344 831.04296875 750.84277344l-91.18652344 185.66894531L773.9140625 765.125l-43.9453125-43.9453125-43.9453125 43.9453125 34.05761719 171.38671875-91.18652344-185.66894531L611.31640625 750.84277344l0 0c-58.22753906 0-58.22753906 39.55078125-58.22753906 87.890625l0 123.046875 352.66113281 0L905.75 838.73339844C905.75 790.39355469 905.75 750.84277344 847.52246094 750.84277344L847.52246094 750.84277344zM263.04980469 209.21679687l494.38476562 1e-8 0 51.63574218-494.38476562 0L263.04980469 209.21679687 263.04980469 209.21679687zM263.04980469 342.15136719l398.80371094 0 0 56.03027343-398.80371094 0L263.04980469 342.15136719 263.04980469 342.15136719zM263.04980469 484.97363281l324.09667969 0 0 51.63574219L263.04980469 536.609375 263.04980469 484.97363281 263.04980469 484.97363281z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_327 = [\n  _hoisted_227\n];\nfunction _sfc_render27(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock27(), _createElementBlock27(\"svg\", _hoisted_127, _hoisted_327);\n}\nvar basics_bumen_default = /* @__PURE__ */ export_helper_default(basics_bumen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render27], [\"__file\", \"basics-bumen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-caidan.vue?vue&type=script&lang.ts\nvar basics_caidan_vue_vue_type_script_lang_default = {\n  name: \"BasicsCaidan\"\n};\n\n// src/components/basics-caidan.vue\nimport { createElementVNode as _createElementVNode28, openBlock as _openBlock28, createElementBlock as _createElementBlock28 } from \"vue\";\nvar _hoisted_128 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_228 = /* @__PURE__ */ _createElementVNode28(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 26.54814777c81.3253211 0 181.68035555 65.4753189 260.84541667 167.27457223C859.98402333 305.86500779 912.49777778 448.26017223 912.49777778 596.95407445c0 240.99043555-168.96151666 400.49777778-400.49777778 400.49777778S111.50222222 837.94451001 111.50222222 596.95407445c0-148.69390222 52.50161778-291.08906667 139.65236111-403.13135445C330.31964445 92.02346667 430.6746789 26.54814777 512 26.54814777z m0 72.81777778c-54.85605888 0-136.64256 53.37543111-203.36791666 139.16691C231.09328555 338.20823666 184.32 465.0810789 184.32 596.95407445c0 199.81198222 135.45320334 327.68 327.68 327.68s327.68-127.86801778 327.68-327.68c0-131.87299555-46.77328555-258.73370112-124.31208334-358.4212389C648.64256 152.72922112 566.85605888 99.36592555 512 99.36592555z m-84.95407445 594.6785189a60.6814811 60.6814811 0 1 1 0 121.36296334 60.6814811 60.6814811 0 0 1 0-121.36296334z m-109.22666667-145.63555556a48.54518557 48.54518557 0 1 1 0 97.09036999 48.54518557 48.54518557 0 0 1 0-97.09036999z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_328 = [\n  _hoisted_228\n];\nfunction _sfc_render28(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock28(), _createElementBlock28(\"svg\", _hoisted_128, _hoisted_328);\n}\nvar basics_caidan_default = /* @__PURE__ */ export_helper_default(basics_caidan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render28], [\"__file\", \"basics-caidan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-ceshi.vue?vue&type=script&lang.ts\nvar basics_ceshi_vue_vue_type_script_lang_default = {\n  name: \"BasicsCeshi\"\n};\n\n// src/components/basics-ceshi.vue\nimport { createElementVNode as _createElementVNode29, openBlock as _openBlock29, createElementBlock as _createElementBlock29 } from \"vue\";\nvar _hoisted_129 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_229 = /* @__PURE__ */ _createElementVNode29(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M745.01688889 45.96622222a38.83614815 38.83614815 0 0 1 0 77.6722963h-25.89076503v195.13869865a12.94538311 12.94538311 0 0 0 1.32042904 5.69596921l219.51485391 448.55751111c34.56417185 70.65589927 5.3205523 155.94008061-65.3094554 190.50425124A142.39920947 142.39920947 0 0 1 812.06102638 978.03377778H211.92602905c-78.6432 0-142.39920947-63.75600947-142.39921069-142.39920947a142.39920947 142.39920947 0 0 1 14.49882905-62.59092625l219.51485512-448.58340147a12.94538311 12.94538311 0 0 0 1.32042903-5.69596798V123.63851852h-25.89076624a38.83614815 38.83614815 0 0 1-38.77142042-36.5577612L240.14696297 84.80237037a38.83614815 38.83614815 0 0 1 38.83614814-38.83614815z m63.06990459 634.32375349H215.88731616l-62.08605632 126.89064058A64.72691317 64.72691317 0 0 0 211.93897362 900.36148148H812.07397095a64.72691317 64.72691317 0 0 0 58.12476921-93.18086519L808.09973927 680.28997571zM641.45382756 123.63851852H382.54617244v195.13869865a90.61767941 90.61767941 0 0 1-9.21711169 39.83294344L253.89495941 602.61767941h516.18419082l-119.40821098-244.02046459A90.61767941 90.61767941 0 0 1 641.45382756 318.79016297V123.63851852z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_329 = [\n  _hoisted_229\n];\nfunction _sfc_render29(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock29(), _createElementBlock29(\"svg\", _hoisted_129, _hoisted_329);\n}\nvar basics_ceshi_default = /* @__PURE__ */ export_helper_default(basics_ceshi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render29], [\"__file\", \"basics-ceshi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-chanpin.vue?vue&type=script&lang.ts\nvar basics_chanpin_vue_vue_type_script_lang_default = {\n  name: \"BasicsChanpin\"\n};\n\n// src/components/basics-chanpin.vue\nimport { createElementVNode as _createElementVNode30, openBlock as _openBlock30, createElementBlock as _createElementBlock30 } from \"vue\";\nvar _hoisted_130 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_230 = /* @__PURE__ */ _createElementVNode30(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M141.08444445 360.63004445a31.85777778 31.85777778 0 0 1 14.1459911 3.31093333l0.57002667 0.29013333 309.47555556 161.18556444a31.85777778 31.85777778 0 0 1 17.13720889 27.73902223l0.00455111 0.51655111v398.17671111c0 17.59459555-14.26318222 31.85777778-31.85777778 31.85777778a31.85777778 31.85777778 0 0 1-14.14599111-3.31320889l-0.57002667-0.29013334-309.47555555-161.18442666a31.85777778 31.85777778 0 0 1-17.13720889-27.73902222l-0.00455111-0.51655112v-398.1767111c0-17.59459555 14.26318222-31.85777778 31.85777778-31.85777778z m741.8311111 0c17.59459555 0 31.85777778 14.26204445 31.85777778 31.85777777v398.17557333a31.85777778 31.85777778 0 0 1-17.14176 28.25557334l-309.47555555 161.18442666A31.85777778 31.85777778 0 0 1 573.44 983.70673778c-17.59459555 0-31.85777778-14.26318222-31.85777778-31.85777778v-398.17671111a31.85777778 31.85777778 0 0 1 17.14176-28.25557334l309.47555556-161.18556444A31.85777778 31.85777778 0 0 1 882.91555555 360.63004445zM530.23630222 42.50168889l366.27114667 205.50542222a32.27875555 32.27875555 0 0 1 12.88078222 13.33134222c8.18176 15.82990222 1.98769778 35.29159111-13.83424 43.4688L528.77539555 494.35648a32.24462222 32.24462222 0 0 1-30.10104888-0.26168889L126.56184889 293.56487111a32.27875555 32.27875555 0 0 1-13.30062222-13.47584c-8.24661333-15.79690667-2.13333333-35.28362667 13.65333333-43.52682666l372.62108445-194.52586667a32.24462222 32.24462222 0 0 1 30.70065777 0.46648889z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_330 = [\n  _hoisted_230\n];\nfunction _sfc_render30(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock30(), _createElementBlock30(\"svg\", _hoisted_130, _hoisted_330);\n}\nvar basics_chanpin_default = /* @__PURE__ */ export_helper_default(basics_chanpin_vue_vue_type_script_lang_default, [[\"render\", _sfc_render30], [\"__file\", \"basics-chanpin.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-chenggong.vue?vue&type=script&lang.ts\nvar basics_chenggong_vue_vue_type_script_lang_default = {\n  name: \"BasicsChenggong\"\n};\n\n// src/components/basics-chenggong.vue\nimport { createElementVNode as _createElementVNode31, openBlock as _openBlock31, createElementBlock as _createElementBlock31 } from \"vue\";\nvar _hoisted_131 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_231 = /* @__PURE__ */ _createElementVNode31(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M928.51768889 761.48584334a36.40888889 36.40888889 0 0 1-62.44124444-37.47688334A410.49808555 410.49808555 0 0 0 924.63407445 512c0-227.89537223-184.73870222-412.63407445-412.63407445-412.63407445S99.36592555 284.10462777 99.36592555 512s184.73870222 412.63407445 412.63407445 412.63407445a410.49808555 410.49808555 0 0 0 211.98468779-58.53335779 36.40888889 36.40888889 0 0 1 37.46474666 62.44124444A483.30372779 483.30372779 0 0 1 512 997.45185223C243.8970789 997.45185223 26.54814777 780.1029211 26.54814777 512S243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223c0 89.08041443-24.06627555 174.72625778-68.93416334 249.48584334zM355.64809443 486.34387001l95.96169558 95.56119666 216.66929778-216.99697778a36.40888889 36.40888889 0 0 1 51.53071331 51.45789668l-242.36183665 242.72592554a36.40888889 36.40888889 0 0 1-51.45789668 0.07281778l-121.7270511-121.22946332a36.40888889 36.40888889 0 1 1 51.38507776-51.59139556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_331 = [\n  _hoisted_231\n];\nfunction _sfc_render31(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock31(), _createElementBlock31(\"svg\", _hoisted_131, _hoisted_331);\n}\nvar basics_chenggong_default = /* @__PURE__ */ export_helper_default(basics_chenggong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render31], [\"__file\", \"basics-chenggong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-collapse.vue?vue&type=script&lang.ts\nvar basics_collapse_vue_vue_type_script_lang_default = {\n  name: \"BasicsCollapse\"\n};\n\n// src/components/basics-collapse.vue\nimport { createElementVNode as _createElementVNode32, openBlock as _openBlock32, createElementBlock as _createElementBlock32 } from \"vue\";\nvar _hoisted_132 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_232 = /* @__PURE__ */ _createElementVNode32(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1014.7488005 789.17376775v94.2654002H9.2511995v-94.2654002h1005.497601zM229.20379943 333.55766587v314.2180016l-219.95259993-157.1090008 219.95259993-157.1090008z m785.54500107 125.68720124v94.26540017H354.8909992v-94.26540017h659.8578013z m0-345.63980119v94.26540018H9.2511995v-94.26540018h1005.497601z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_332 = [\n  _hoisted_232\n];\nfunction _sfc_render32(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock32(), _createElementBlock32(\"svg\", _hoisted_132, _hoisted_332);\n}\nvar basics_collapse_default = /* @__PURE__ */ export_helper_default(basics_collapse_vue_vue_type_script_lang_default, [[\"render\", _sfc_render32], [\"__file\", \"basics-collapse.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-dianhua.vue?vue&type=script&lang.ts\nvar basics_dianhua_vue_vue_type_script_lang_default = {\n  name: \"BasicsDianhua\"\n};\n\n// src/components/basics-dianhua.vue\nimport { createElementVNode as _createElementVNode33, openBlock as _openBlock33, createElementBlock as _createElementBlock33 } from \"vue\";\nvar _hoisted_133 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_233 = /* @__PURE__ */ _createElementVNode33(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M234.58987166 127.32694624c88.41205782 0 160.08363002 71.67157219 160.08363001 160.08363002 0 70.97223017-46.1849471 131.15711917-110.1397235 152.1395478l-0.01420471 0.00218451c45.79047403 134.93356278 152.55805996 241.69896285 287.47304629 287.45665571v-0.01420472C592.98051238 663.04544716 653.16212327 616.86596404 724.12888945 616.86596404c88.41205782 0 160.08363002 71.67157219 160.08363002 160.08363S812.54094727 937.03322406 724.12888945 937.03322406c-1.52762419 0-3.05087666-0.02185457-4.56757426-0.06447147V937.03322406h0.13331188-0.13331188C363.30694428 937.03322406 74.50624165 648.1440109 74.50624165 291.78145941c0-1.11239018 0.00327812-2.22368673 0.00874209-3.33498466L74.50624165 287.41057626c0-1.34732506 0.01639058-2.69027975 0.05026537-4.02995632 0.15298061-11.72926791 0.61520187-23.38423004 1.38338432-34.95614425l-0.0021845 17.48135093C86.44312588 187.66372222 153.47063351 127.32694624 234.58987166 127.32694624z m367.90277676-65.06716657c98.76449627 7.93315423 190.64485065 54.47542151 255.61804409 131.90781882 65.75448699 78.36230245 95.54752654 178.35611021 85.17323217 278.09750025-1.24788794 12.00463381-11.99261359 20.72454695-23.99724605 19.47556677-12.00572606-1.24788794-20.72563919-11.99261359-19.476659-23.99724741 9.16137348-88.08314845-17.11856813-176.28212595-75.18139202-245.47977682-57.37550207-68.37701855-138.41715767-109.42836125-225.63596466-116.43598208-12.03085874-0.96596582-21.00100509-11.50307376-20.03394704-23.53393249 0.96596582-12.03085874 11.50307376-21.00100509 23.53393251-20.03394704z m-15.19647084 132.5634517c65.06716656 3.99389566 125.94811809 34.09617453 168.69208581 85.0355499 43.17559371 51.45514014 62.18784557 117.43363542 54.22628055 182.80129918-1.45878239 11.98168562-12.35539638 20.51146663-24.33598976 19.05268426-11.98168562-1.45987463-20.51037301-12.35539638-19.05159064-24.33598977 6.51261699-53.47230279-9.01057738-107.3401709-44.32076504-149.42195089-34.95942372-41.66217422-84.66402501-66.23747058-137.88828046-69.50470705-12.04724931-0.73977167-21.21408541-11.10532394-20.47431374-23.15257188 0.73977167-12.04724931 11.10532394-21.21408541 23.15257328-20.47431375z m-0.09069639 127.2506404c27.77150515 3.61144281 53.31385821 17.37098583 71.68250015 39.26146644 19.37722191 23.09465942 28.43260064 52.45607299 25.92589817 81.89725496-1.02497191 12.026487-11.60469675 20.94527712-23.63118512 19.92030523-11.88771249-1.01185945-20.73984529-11.36102114-19.95199275-23.2159511l0.03168891-0.41414179c1.5363663-18.03973119-3.98515356-35.94178013-15.85756773-50.09033088-11.0954896-13.22410959-26.38156321-21.56266348-43.10784412-23.91638536l-0.72775145-0.09834488c-11.96857315-1.55603501-20.40984367-12.52039719-18.85380866-24.49006396 1.55603501-11.96857315 12.52039719-20.40984367 24.4900626-18.85380866zM719.56131519-353.47030384c14.56597063 0 29.01720723 0.48298223 43.34168676 1.4336497h-86.68337354A654.47105058 654.47105058 0 0 1 719.56131519-353.47030384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_333 = [\n  _hoisted_233\n];\nfunction _sfc_render33(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock33(), _createElementBlock33(\"svg\", _hoisted_133, _hoisted_333);\n}\nvar basics_dianhua_default = /* @__PURE__ */ export_helper_default(basics_dianhua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render33], [\"__file\", \"basics-dianhua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-dianhua1.vue?vue&type=script&lang.ts\nvar basics_dianhua1_vue_vue_type_script_lang_default = {\n  name: \"BasicsDianhua1\"\n};\n\n// src/components/basics-dianhua1.vue\nimport { createElementVNode as _createElementVNode34, openBlock as _openBlock34, createElementBlock as _createElementBlock34 } from \"vue\";\nvar _hoisted_134 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_234 = /* @__PURE__ */ _createElementVNode34(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M437.21614222 581.90506667a579.87223666 579.87223666 0 0 1-93.20675555-114.51809224c77.12616334-34.6733989 127.58888334-106.33822777 127.58888334-193.18556444C471.58613333 150.86023111 372.00782222 50.82074112 249.06714112 50.82074112 122.94675001 50.82074112 26.54814777 144.20954112 26.54814777 274.20140999c0 180.05409223 93.93493333 373.8221989 228.25946112 500.23386112 113.78991445 107.0906789 294.66927445 184.02266112 470.42711666 198.62262556 0.94663111 0.08495445 1.9053989 0.12136334 2.86416668 0.12136221h46.83396665a34.72194333 34.72194333 0 0 0 0-69.45602333h-45.36547555c-160.05347555-13.62906112-325.43478557-84.11667001-427.18549334-179.87204778-121.07169223-113.95982222-206.40199111-289.94825443-206.40199111-449.64977778 0-91.14358557 64.83209443-153.92464555 153.08724224-153.92464554 84.51716779 0 153.0872411 68.8734811 153.0872411 153.92464554 0 68.61861888-46.53056 122.86786333-117.20021333 140.34413113a34.72194333 34.72194333 0 0 0-22.51283001 49.67385998c31.37232555 60.65720889 75.13580999 118.81434112 126.94566002 168.0391589 58.32704 55.40219221 125.08880555 97.97632 195.75845888 123.06204445a34.70980779 34.70980779 0 0 0 45.92374556-27.37948445c11.89356999-76.33730333 70.11138333-129.73700779 143.86365554-129.73700779 84.50503111 0 153.0872411 68.88561778 153.08724224 153.92464669 0 29.1028389-8.00995555 56.91923001-22.92546446 81.07045888a34.73408 34.73408 0 0 0 59.07949113 36.49384334A223.11367111 223.11367111 0 0 0 997.45185223 752.1287589c0-123.32904334-99.59044779-223.38067001-222.51899335-223.38067001-94.51747555 0-172.04413667 59.60135111-202.09360555 146.61859556-48.20536889-22.24583111-94.17765888-54.09147221-135.62311111-93.46161778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_334 = [\n  _hoisted_234\n];\nfunction _sfc_render34(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock34(), _createElementBlock34(\"svg\", _hoisted_134, _hoisted_334);\n}\nvar basics_dianhua1_default = /* @__PURE__ */ export_helper_default(basics_dianhua1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render34], [\"__file\", \"basics-dianhua1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-diantong-guan.vue?vue&type=script&lang.ts\nvar basics_diantong_guan_vue_vue_type_script_lang_default = {\n  name: \"BasicsDiantongGuan\"\n};\n\n// src/components/basics-diantong-guan.vue\nimport { createElementVNode as _createElementVNode35, openBlock as _openBlock35, createElementBlock as _createElementBlock35 } from \"vue\";\nvar _hoisted_135 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_235 = /* @__PURE__ */ _createElementVNode35(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M304.87387653 552.04931574l-159.5699655-136.77228438A96.65885804 96.65885804 0 0 1 111.55616175 341.88534205V146.35828151a96.65885804 96.65885804 0 0 1 96.65885675-96.65885805h607.569963a96.65885804 96.65885804 0 0 1 96.65885675 96.65885805v195.52706054a96.65885804 96.65885804 0 0 1-33.74774928 73.39168931L719.12612347 552.04931574V892.01232595a96.65885804 96.65885804 0 0 1-96.65885806 96.65885805H401.53273459a96.65885804 96.65885804 0 0 1-96.65885806-96.65885805V552.04931574zM208.2150185 132.54987283a13.80840865 13.80840865 0 0 0-13.80840736 13.80840868v195.52706054a13.80840865 13.80840865 0 0 0 4.83294244 10.49439068l164.37529157 140.90099671A69.04204071 69.04204071 0 0 1 387.72432592 545.69744752V892.01232595a13.80840865 13.80840865 0 0 0 13.80840867 13.80840865h220.93453082a13.80840865 13.80840865 0 0 0 13.80840867-13.80840865V545.69744752a69.04204071 69.04204071 0 0 1 24.10948077-52.41671808L824.77425526 352.37973273a13.80840865 13.80840865 0 0 0 4.8191336-10.49439068V146.35828151a13.80840865 13.80840865 0 0 0-13.80840736-13.80840868H208.2150185z m262.35975681 414.25224691a41.42522469 41.42522469 0 0 1 82.85044938 0v110.46726672a41.42522469 41.42522469 0 0 1-82.85044938 0v-110.46726672z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_335 = [\n  _hoisted_235\n];\nfunction _sfc_render35(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock35(), _createElementBlock35(\"svg\", _hoisted_135, _hoisted_335);\n}\nvar basics_diantong_guan_default = /* @__PURE__ */ export_helper_default(basics_diantong_guan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render35], [\"__file\", \"basics-diantong-guan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-diantong-kai.vue?vue&type=script&lang.ts\nvar basics_diantong_kai_vue_vue_type_script_lang_default = {\n  name: \"BasicsDiantongKai\"\n};\n\n// src/components/basics-diantong-kai.vue\nimport { createElementVNode as _createElementVNode36, openBlock as _openBlock36, createElementBlock as _createElementBlock36 } from \"vue\";\nvar _hoisted_136 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_236 = /* @__PURE__ */ _createElementVNode36(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M341.33333333 641.47911147l-131.4816-112.6968896A79.6444448 79.6444448 0 0 1 182.0444448 468.30933333V307.2a79.6444448 79.6444448 0 0 1 79.64444373-79.6444448h500.62222294a79.6444448 79.6444448 0 0 1 79.64444373 79.6444448v161.10933333a79.6444448 79.6444448 0 0 1-27.80728853 60.47288854L682.66666667 641.47911147V921.6a79.6444448 79.6444448 0 0 1-79.6444448 79.6444448H420.97777813a79.6444448 79.6444448 0 0 1-79.6444448-79.6444448V641.47911147zM261.68888853 295.82222187a11.37777813 11.37777813 0 0 0-11.37777706 11.37777813v161.10933333a11.37777813 11.37777813 0 0 0 3.98222186 8.64711147l135.44106667 116.09884373A56.88888853 56.88888853 0 0 1 409.6 636.24533333V921.6a11.37777813 11.37777813 0 0 0 11.37777813 11.37777813h182.04444374a11.37777813 11.37777813 0 0 0 11.37777813-11.37777813V636.24533333a56.88888853 56.88888853 0 0 1 19.8656-43.1900448L769.7180448 476.9564448a11.37777813 11.37777813 0 0 0 3.97084373-8.64711147V307.2a11.37777813 11.37777813 0 0 0-11.37777706-11.37777813H261.68888853z m216.17777814 341.33333333a34.13333333 34.13333333 0 0 1 68.26666666 0v91.02222293a34.13333333 34.13333333 0 0 1-68.26666666 0v-91.02222293z m0-580.26666667a34.13333333 34.13333333 0 0 1 68.26666666 0v91.02222294a34.13333333 34.13333333 0 0 1-68.26666666 0V56.88888853z m277.64053333 11.78737814a34.13333333 34.13333333 0 1 1 59.11893333 34.13333333l-45.51111146 78.8252448a34.13333333 34.13333333 0 1 1-59.11893334-34.13333333l45.51111147-78.8252448z m-487.0144 0l45.51111147 78.8252448a34.13333333 34.13333333 0 1 1-59.11893334 34.13333333l-45.51111146-78.8252448a34.13333333 34.13333333 0 0 1 59.11893333-34.13333333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_336 = [\n  _hoisted_236\n];\nfunction _sfc_render36(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock36(), _createElementBlock36(\"svg\", _hoisted_136, _hoisted_336);\n}\nvar basics_diantong_kai_default = /* @__PURE__ */ export_helper_default(basics_diantong_kai_vue_vue_type_script_lang_default, [[\"render\", _sfc_render36], [\"__file\", \"basics-diantong-kai.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-dianying.vue?vue&type=script&lang.ts\nvar basics_dianying_vue_vue_type_script_lang_default = {\n  name: \"BasicsDianying\"\n};\n\n// src/components/basics-dianying.vue\nimport { createElementVNode as _createElementVNode37, openBlock as _openBlock37, createElementBlock as _createElementBlock37 } from \"vue\";\nvar _hoisted_137 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_237 = /* @__PURE__ */ _createElementVNode37(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M890.68885333 936.78250667c-34.68553443-23.56868779-88.49787221-21.57833443-163.9006811 10.67994112A483.58286222 483.58286222 0 0 1 512 997.45185223C243.8970789 997.45185223 26.54814777 780.1029211 26.54814777 512S243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223a483.57072555 483.57072555 0 0 1-50.52340224 215.85616555 36.40888889 36.40888889 0 0 1-65.19618332-32.41604665A410.75294777 410.75294777 0 0 0 924.63407445 512c0-227.89537223-184.73870222-412.63407445-412.63407445-412.63407445S99.36592555 284.10462777 99.36592555 512s184.73870222 412.63407445 412.63407445 412.63407445c64.51655111 0 126.84856889-14.8062811 183.31875555-42.84112668l1.82044445-0.84953998c96.42287445-41.45758777 175.41802667-44.51593443 234.47324445-4.39334002a36.40888889 36.40888889 0 1 1-40.92359112 60.2324389zM512 402.77333333a72.81777778 72.81777778 0 1 1 0-145.63555555 72.81777778 72.81777778 0 0 1 0 145.63555555z m182.04444445 182.04444445a72.81777778 72.81777778 0 1 1 0-145.63555556 72.81777778 72.81777778 0 0 1 0 145.63555556zM512 766.86222222a72.81777778 72.81777778 0 1 1 0-145.63555555 72.81777778 72.81777778 0 0 1 0 145.63555555zM329.95555555 584.81777778a72.81777778 72.81777778 0 1 1 0-145.63555556 72.81777778 72.81777778 0 0 1 0 145.63555556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_337 = [\n  _hoisted_237\n];\nfunction _sfc_render37(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock37(), _createElementBlock37(\"svg\", _hoisted_137, _hoisted_337);\n}\nvar basics_dianying_default = /* @__PURE__ */ export_helper_default(basics_dianying_vue_vue_type_script_lang_default, [[\"render\", _sfc_render37], [\"__file\", \"basics-dianying.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-dianyingpiao.vue?vue&type=script&lang.ts\nvar basics_dianyingpiao_vue_vue_type_script_lang_default = {\n  name: \"BasicsDianyingpiao\"\n};\n\n// src/components/basics-dianyingpiao.vue\nimport { createElementVNode as _createElementVNode38, openBlock as _openBlock38, createElementBlock as _createElementBlock38 } from \"vue\";\nvar _hoisted_138 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_238 = /* @__PURE__ */ _createElementVNode38(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M657.63555555 378.50074112a36.40888889 36.40888889 0 0 1 0 72.81777778H366.36444445a36.40888889 36.40888889 0 0 1 0-72.81777778h291.2711111z m0 194.18073998a36.40888889 36.40888889 0 0 1 0 72.81777778H366.36444445a36.40888889 36.40888889 0 0 1 0-72.81777778h291.2711111zM62.95703666 427.04592555a36.40888889 36.40888889 0 0 1-36.40888889-36.40888889V220.72888889c0-73.728 59.77125888-133.49925888 133.49926002-133.49925888h703.90518442c73.728 0 133.49925888 59.77125888 133.49926002 133.49925888v169.90814777a36.40888889 36.40888889 0 0 1-36.40888889 36.40888889 84.95407445 84.95407445 0 0 0 0 169.9081489 36.40888889 36.40888889 0 0 1 36.40888889 36.40888889v169.90814777c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49925888V633.36296334a36.40888889 36.40888889 0 0 1 36.40888889-36.40888889 84.95407445 84.95407445 0 0 0 0-169.9081489z m157.77185223 84.95407445c0 74.60181333-51.78557667 137.11587555-121.36296334 153.54842112V803.27111111a60.6814811 60.6814811 0 0 0 60.68148224 60.6814811h703.90518442a60.6814811 60.6814811 0 0 0 60.68148224-60.6814811V665.54842112C855.05668779 649.11587555 803.27111111 586.60181333 803.27111111 512c0-74.60181333 51.78557667-137.11587555 121.36296334-153.54842112V220.72888889a60.6814811 60.6814811 0 0 0-60.68148224-60.6814811H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.6814811v137.72268999C168.94331221 374.88412445 220.72888889 437.39818667 220.72888889 512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_338 = [\n  _hoisted_238\n];\nfunction _sfc_render38(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock38(), _createElementBlock38(\"svg\", _hoisted_138, _hoisted_338);\n}\nvar basics_dianyingpiao_default = /* @__PURE__ */ export_helper_default(basics_dianyingpiao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render38], [\"__file\", \"basics-dianyingpiao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-dianzan.vue?vue&type=script&lang.ts\nvar basics_dianzan_vue_vue_type_script_lang_default = {\n  name: \"BasicsDianzan\"\n};\n\n// src/components/basics-dianzan.vue\nimport { createElementVNode as _createElementVNode39, openBlock as _openBlock39, createElementBlock as _createElementBlock39 } from \"vue\";\nvar _hoisted_139 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_239 = /* @__PURE__ */ _createElementVNode39(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M636.7853989 393.69538333c18.90835001-84.46862222 32.11264-145.56273778 39.63714332-183.40370888C695.35516445 115.02174777 646.19102777 26.54814777 548.74870557 26.54814777c-87.86678557 0-131.9943589 43.66639445-158.01457778 130.9506378l-0.66749668 2.54862222c-15.61941333 70.60897223-39.50364445 125.34366777-71.11869668 164.50749554a180.06622777 180.06622777 0 0 1-136.22992554 67.08944668l-24.92795222 0.53399666C98.34647666 393.45265778 50.82074112 442.38620445 50.82074112 502.32737223V863.95259221c0 73.728 59.28580779 133.49925888 132.43126443 133.49926002h469.35912334c96.41073778 0 182.46921443-60.94848 215.17653333-152.3712l97.50300445-272.59335111c24.80659001-69.35893333-10.84984889-145.86614557-79.65051222-170.87905223a131.47249778 131.47249778 0 0 0-44.92856888-7.91286556H636.7853989zM548.70016 99.36592555c44.66156999 0 67.69626112 41.50613333 56.76145778 96.62919111-8.61676999 43.39939555-25.01290667 118.81434112-49.17627221 226.03851889-5.13365333 22.77982777 12.01493333 44.47952555 35.17098666 44.47952555h248.79407332c6.9419611 0 13.83537778 1.21363001 20.37684224 3.60448 31.22668999 11.35957333 47.41651001 46.1421989 36.15402666 77.67229668l-97.35736888 272.58121443C777.08098333 882.94589667 718.28062777 924.63407445 652.40481223 924.63407445H183.74959445C150.54468779 924.63407445 123.6385189 897.46090667 123.6385189 863.95259221V502.32737223c0-20.32829667 16.09272889-36.91861333 36.21470777-37.34338446l24.87940778-0.53399666a251.58542222 251.58542222 0 0 0 190.4427611-93.93493333c39.07887445-48.47236779 67.29576334-112.9889189 85.18466333-193.28265444C477.9819611 118.71118222 497.83694222 99.36592555 548.71229667 99.36592555z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_339 = [\n  _hoisted_239\n];\nfunction _sfc_render39(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock39(), _createElementBlock39(\"svg\", _hoisted_139, _hoisted_339);\n}\nvar basics_dianzan_default = /* @__PURE__ */ export_helper_default(basics_dianzan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render39], [\"__file\", \"basics-dianzan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-dingdan.vue?vue&type=script&lang.ts\nvar basics_dingdan_vue_vue_type_script_lang_default = {\n  name: \"BasicsDingdan\"\n};\n\n// src/components/basics-dingdan.vue\nimport { createElementVNode as _createElementVNode40, openBlock as _openBlock40, createElementBlock as _createElementBlock40 } from \"vue\";\nvar _hoisted_140 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_240 = /* @__PURE__ */ _createElementVNode40(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M863.95259221 220.72888889a36.40888889 36.40888889 0 0 1 72.81777778 0v643.22370332c0 73.728-59.77125888 133.49925888-133.49925888 133.49926002H220.72888889c-73.728 0-133.49925888-59.77125888-133.49925888-133.49926002V160.04740779c0-73.728 59.77125888-133.49925888 133.49925888-133.49926002h679.63259221a36.40888889 36.40888889 0 0 1 0 72.81777778H220.72888889a60.6814811 60.6814811 0 0 0-60.6814811 60.68148224v703.90518442a60.6814811 60.6814811 0 0 0 60.6814811 60.68148224h582.54222222a60.6814811 60.6814811 0 0 0 60.6814811-60.68148224V220.72888889zM317.81925888 427.04592555a36.40888889 36.40888889 0 0 1 0-72.81777778h388.36148224a36.40888889 36.40888889 0 0 1 0 72.81777778H317.81925888z m0 194.18074112a36.40888889 36.40888889 0 0 1 0-72.81777778h242.72592669a36.40888889 36.40888889 0 0 1 0 72.81777778H317.81925888z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_340 = [\n  _hoisted_240\n];\nfunction _sfc_render40(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock40(), _createElementBlock40(\"svg\", _hoisted_140, _hoisted_340);\n}\nvar basics_dingdan_default = /* @__PURE__ */ export_helper_default(basics_dingdan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render40], [\"__file\", \"basics-dingdan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-dingwei.vue?vue&type=script&lang.ts\nvar basics_dingwei_vue_vue_type_script_lang_default = {\n  name: \"BasicsDingwei\"\n};\n\n// src/components/basics-dingwei.vue\nimport { createElementVNode as _createElementVNode41, openBlock as _openBlock41, createElementBlock as _createElementBlock41 } from \"vue\";\nvar _hoisted_141 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_241 = /* @__PURE__ */ _createElementVNode41(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M773.61066667 690.07466667C830.64 721.6576 864 763.63946667 864 810.66666667c0 102.72-159.03253333 178.13333333-352 178.13333333s-352-75.41333333-352-178.13333333c0-46.10986667 32.08853333-87.39733333 87.14666667-118.7712 10.2368-5.83253333 23.264-2.26346667 29.0976 7.97333333 5.83253333 10.2368 2.26346667 23.264-7.97333334 29.0976C225.20426667 753.50613333 202.66666667 782.5056 202.66666667 810.66666667c0 32.24426667 29.69493333 65.536 84.65706666 91.59893333C345.9104 930.04586667 426.1184 946.13333333 512 946.13333333c85.8816 0 166.09066667-16.08746667 224.67626667-43.86773333C791.63733333 876.20266667 821.33333333 842.91093333 821.33333333 810.66666667c0-28.784-23.56693333-58.44266667-68.3936-83.2672-10.3072-5.70773333-14.0352-18.6912-8.32746666-28.99733334 5.7088-10.3072 18.6912-14.03626667 28.9984-8.32746666zM512 34.13333333c173.1968 0 313.6 110.93333333 313.6 313.6 1.7344 266.47573333-304.14293333 494.93333333-313.6 494.93333334-9.45706667 0-313.6064-222.22933333-313.6064-494.93333334 0-202.66666667 140.4096-313.6 313.6064-313.6z m0 179.2c-64.80106667 0-117.33333333 52.53226667-117.33333333 117.33333334s52.53226667 117.33333333 117.33333333 117.33333333 117.33333333-52.53226667 117.33333333-117.33333333-52.53226667-117.33333333-117.33333333-117.33333334z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_341 = [\n  _hoisted_241\n];\nfunction _sfc_render41(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock41(), _createElementBlock41(\"svg\", _hoisted_141, _hoisted_341);\n}\nvar basics_dingwei_default = /* @__PURE__ */ export_helper_default(basics_dingwei_vue_vue_type_script_lang_default, [[\"render\", _sfc_render41], [\"__file\", \"basics-dingwei.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-dingwei1.vue?vue&type=script&lang.ts\nvar basics_dingwei1_vue_vue_type_script_lang_default = {\n  name: \"BasicsDingwei1\"\n};\n\n// src/components/basics-dingwei1.vue\nimport { createElementVNode as _createElementVNode42, openBlock as _openBlock42, createElementBlock as _createElementBlock42 } from \"vue\";\nvar _hoisted_142 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_242 = /* @__PURE__ */ _createElementVNode42(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M667.02904889 896.87836445a36.40888889 36.40888889 0 1 1-46.31210667-56.19105224C792.23921778 699.38441443 876.08888889 573.48247666 876.08888889 465.43303111 876.08888889 263.21806222 713.03774777 99.36592555 512 99.36592555c-201.03774777 0-364.08888889 163.85213667-364.08888889 366.06710556 0 131.10840889 123.35331555 287.90935666 374.52610332 465.91241444a36.40888889 36.40888889 0 0 1-42.11294776 59.40717112C211.65093888 800.34626333 75.09333333 626.7486811 75.09333333 465.43303111 75.09333333 223.08332999 270.65761223 26.54814777 512 26.54814777s436.90666667 196.53518222 436.90666667 438.88488334c0 134.68861667-95.23351666 277.67845888-281.87761778 431.44533334zM512 633.36296334c-93.83784334 0-169.90814777-76.07030557-169.90814777-169.90814891s76.07030557-169.90814777 169.90814777-169.90814776 169.90814777 76.07030557 169.90814777 169.90814776-76.07030557 169.90814777-169.90814777 169.90814891z m0-72.81777777a97.09036999 97.09036999 0 1 0 0-194.18074112 97.09036999 97.09036999 0 0 0 0 194.18074112z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_342 = [\n  _hoisted_242\n];\nfunction _sfc_render42(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock42(), _createElementBlock42(\"svg\", _hoisted_142, _hoisted_342);\n}\nvar basics_dingwei1_default = /* @__PURE__ */ export_helper_default(basics_dingwei1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render42], [\"__file\", \"basics-dingwei1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-ditu.vue?vue&type=script&lang.ts\nvar basics_ditu_vue_vue_type_script_lang_default = {\n  name: \"BasicsDitu\"\n};\n\n// src/components/basics-ditu.vue\nimport { createElementVNode as _createElementVNode43, openBlock as _openBlock43, createElementBlock as _createElementBlock43 } from \"vue\";\nvar _hoisted_143 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_243 = /* @__PURE__ */ _createElementVNode43(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M26.54814777 463.8917211C26.54814777 443.53915221 42.84719445 427.04592555 62.95703666 427.04592555s36.40888889 16.50536334 36.40888889 36.84579555V823.90281443c0 6.78419001 5.43706112 12.28193223 12.13629667 12.28193224a12.01493333 12.01493333 0 0 0 5.74046777-1.45635556l176.18261334-95.59760554a84.08026112 84.08026112 0 0 1 82.89090446 1.46849109l287.33895111 169.34987889a12.01493333 12.01493333 0 0 0 11.51734443 0.38836111l242.72592668-122.04259556c4.12634112-2.07530667 6.73564445-6.33514667 6.73564444-10.99548444V463.8917211C924.63407445 443.53915221 940.93312 427.04592555 961.04296334 427.04592555s36.40888889 16.50536334 36.40888889 36.84579555V777.29943666c0 32.63450112-18.26512555 62.45338112-47.14951111 76.98052779l-242.72592669 122.04259555a84.08026112 84.08026112 0 0 1-80.56073443-2.70639445L339.66459221 804.29056a12.01493333 12.01493333 0 0 0-11.84502442-0.21845333l-176.18261334 95.60974222a84.16521443 84.16521443 0 0 1-40.1468689 10.19448889c-46.9189211 0-84.95407445-38.47205888-84.95407332-85.96138667V463.8917211z m764.58666666-150.49007331c0 99.90599111-83.25499221 219.49705443-246.96149333 364.41656888a48.54518557 48.54518557 0 0 1-64.3466422 0C316.1080411 532.9108389 232.86518557 413.3076389 232.86518557 313.40164779 232.86518557 161.52803555 357.9904 38.68444445 512 38.68444445s279.13481443 122.84359111 279.13481443 274.71720334z m-485.45185109 0c0 69.99002112 67.93898667 170.16300999 206.31703666 295.48240554 138.37804999-125.31939555 206.31703666-225.49238557 206.31703666-295.48240554C718.31703666 202.05112889 626.0933211 111.50222222 512 111.50222222s-206.31703666 90.53676999-206.31703666 201.89942557zM512 390.63703666a72.81777778 72.81777778 0 1 1 0-145.63555556 72.81777778 72.81777778 0 0 1 0 145.63555556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_343 = [\n  _hoisted_243\n];\nfunction _sfc_render43(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock43(), _createElementBlock43(\"svg\", _hoisted_143, _hoisted_343);\n}\nvar basics_ditu_default = /* @__PURE__ */ export_helper_default(basics_ditu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render43], [\"__file\", \"basics-ditu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-duanxin.vue?vue&type=script&lang.ts\nvar basics_duanxin_vue_vue_type_script_lang_default = {\n  name: \"BasicsDuanxin\"\n};\n\n// src/components/basics-duanxin.vue\nimport { createElementVNode as _createElementVNode44, openBlock as _openBlock44, createElementBlock as _createElementBlock44 } from \"vue\";\nvar _hoisted_144 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_244 = /* @__PURE__ */ _createElementVNode44(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M898.84444445 96.71111111c37.70254222 0 68.26666667 30.56412445 68.26666666 68.26666667v514.27555555c0 37.70254222-30.56412445 68.26666667-68.26666666 68.26666667H452.50332445L270.39744 918.74645333c-14.19150222 13.34385778-36.51356445 12.65664-49.85742222-1.536a35.27111111 35.27111111 0 0 1-9.5744-24.36437333L211.80871111 747.52H125.15555555c-37.70254222 0-68.26666667-30.56412445-68.26666666-68.26666667V164.97777778c0-37.70254222 30.56412445-68.26666667 68.26666666-68.26666667h773.6888889zM273.06666667 365.22666667c-31.41859555 0-56.88888889 25.47029333-56.88888889 56.88888888s25.47029333 56.88888889 56.88888889 56.8888889 56.88888889-25.47029333 56.88888888-56.8888889-25.47029333-56.88888889-56.88888888-56.88888888z m238.93333333 0c-31.41859555 0-56.88888889 25.47029333-56.88888889 56.88888888s25.47029333 56.88888889 56.88888889 56.8888889 56.88888889-25.47029333 56.88888889-56.8888889-25.47029333-56.88888889-56.88888889-56.88888888z m238.93333333 0c-31.41859555 0-56.88888889 25.47029333-56.88888888 56.88888888s25.47029333 56.88888889 56.88888888 56.8888889 56.88888889-25.47029333 56.88888889-56.8888889-25.47029333-56.88888889-56.88888889-56.88888888z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_344 = [\n  _hoisted_244\n];\nfunction _sfc_render44(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock44(), _createElementBlock44(\"svg\", _hoisted_144, _hoisted_344);\n}\nvar basics_duanxin_default = /* @__PURE__ */ export_helper_default(basics_duanxin_vue_vue_type_script_lang_default, [[\"render\", _sfc_render44], [\"__file\", \"basics-duanxin.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-dyanjing.vue?vue&type=script&lang.ts\nvar basics_dyanjing_vue_vue_type_script_lang_default = {\n  name: \"BasicsDyanjing\"\n};\n\n// src/components/basics-dyanjing.vue\nimport { createElementVNode as _createElementVNode45, openBlock as _openBlock45, createElementBlock as _createElementBlock45 } from \"vue\";\nvar _hoisted_145 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_245 = /* @__PURE__ */ _createElementVNode45(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M718.8707552 150.67591147l79.6444448 34.13333333a34.13333333 34.13333333 0 0 1 17.2828448 16.49777707l170.66666667 352.71111146c0.3868448 0.80782187 0.7395552 1.62702187 1.05813333 2.44622187a79.41688853 79.41688853 0 0 1 7.64586667 44.30506667l-23.6316448 204.8A79.6444448 79.6444448 0 0 1 892.416 876.08888853h-260.20977813a79.6444448 79.6444448 0 0 1-79.12106667-70.51946666L545.4620448 739.5555552h-66.93546667l-7.62311146 66.0252448A79.6444448 79.6444448 0 0 1 391.8051552 876.08888853h-260.20977707a79.6444448 79.6444448 0 0 1-79.12106666-70.51946666l-23.6316448-204.8a79.26897813 79.26897813 0 0 1 7.58897813-44.16853334l0.27306667-0.68266666 0.85333333-1.90008854 170.66666667-352.71111146a34.13333333 34.13333333 0 0 1 15.0528-15.45102187l2.21866666-1.0467552 79.64444374-34.13333333a34.13333333 34.13333333 0 0 1 28.71751146 61.8951104l-1.8204448 0.84195626-67.92533333 29.11573334-130.38933333 269.4599104 281.71377813 0.01137813a79.6444448 79.6444448 0 0 1 79.12106667 88.76942187L486.4 671.28888853h51.1772448l-8.12373333-70.50808853A79.6444448 79.6444448 0 0 1 608.57457813 512h281.71377707l-130.38933333-269.47128853-67.92533334-29.11573334a34.13333333 34.13333333 0 0 1 26.89706667-62.73706666zM415.42542187 580.26666667H107.9523552a11.37777813 11.37777813 0 0 0-11.29813333 12.68622186l23.6316448 204.8a11.37777813 11.37777813 0 0 0 11.29813333 10.06933334h260.20977813a11.37777813 11.37777813 0 0 0 11.29813334-10.06933334l23.63164373-204.8A11.37777813 11.37777813 0 0 0 415.42542187 580.26666667z m500.62222293 0H608.57457813a11.37777813 11.37777813 0 0 0-11.29813333 12.68622186l23.63164373 204.8a11.37777813 11.37777813 0 0 0 11.29813334 10.06933334h260.20977813a11.37777813 11.37777813 0 0 0 11.29813333-10.06933334l23.6316448-204.8A11.37777813 11.37777813 0 0 0 916.0476448 580.26666667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_345 = [\n  _hoisted_245\n];\nfunction _sfc_render45(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock45(), _createElementBlock45(\"svg\", _hoisted_145, _hoisted_345);\n}\nvar basics_dyanjing_default = /* @__PURE__ */ export_helper_default(basics_dyanjing_vue_vue_type_script_lang_default, [[\"render\", _sfc_render45], [\"__file\", \"basics-dyanjing.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-ertongpiao.vue?vue&type=script&lang.ts\nvar basics_ertongpiao_vue_vue_type_script_lang_default = {\n  name: \"BasicsErtongpiao\"\n};\n\n// src/components/basics-ertongpiao.vue\nimport { createElementVNode as _createElementVNode46, openBlock as _openBlock46, createElementBlock as _createElementBlock46 } from \"vue\";\nvar _hoisted_146 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_246 = /* @__PURE__ */ _createElementVNode46(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 102.4c173.51111147 0 325.9392 108.86257813 384.4892448 268.0832A147.9907552 147.9907552 0 0 1 1001.2444448 512a147.9907552 147.9907552 0 0 1-104.7552 141.5168C837.9392 812.73742187 685.52248853 921.6 512 921.6c-173.51111147 0-325.9392-108.86257813-384.4892448-268.0832A147.9907552 147.9907552 0 0 1 22.7555552 512a147.9907552 147.9907552 0 0 1 104.7552-141.5168C186.0608 211.26257813 338.47751147 102.4 512 102.4z m0 68.26666667c-150.2208 0-281.48622187 97.92853333-325.74577813 239.03573333a34.13333333 34.13333333 0 0 1-27.52284374 23.54062187 79.6672 79.6672 0 0 0 0 157.51395626 34.13333333 34.13333333 0 0 1 27.52284374 23.552C230.51377813 755.39342187 361.7792 853.33333333 512 853.33333333s281.48622187-97.92853333 325.74577813-239.03573333a34.13333333 34.13333333 0 0 1 27.52284374-23.54062187 79.6672 79.6672 0 0 0 0-157.51395626 34.13333333 34.13333333 0 0 1-27.52284374-23.552 341.12853333 341.12853333 0 0 0-137.2956448-182.3175104c-17.8176 74.22862187-82.79608853 106.1091552-182.272 90.80604373a34.13333333 34.13333333 0 0 1 10.38791147-67.47022187c73.8304 11.35502187 104.2432-5.31342187 108.14577707-56.47928853A340.5027552 340.5027552 0 0 0 512 170.66666667zM354.8956448 647.73688853a34.13333333 34.13333333 0 0 1 48.0711104-4.43733333A169.8019552 169.8019552 0 0 0 512 682.66666667c40.41386667 0 78.58631147-14.0515552 108.99911147-39.3443552a34.13333333 34.13333333 0 0 1 43.6451552 52.49706666A238.0572448 238.0572448 0 0 1 512 750.93333333a238.0572448 238.0572448 0 0 1-152.6784-55.13671146 34.13333333 34.13333333 0 0 1-4.4259552-48.0711104zM375.46666667 398.22222187a45.51111147 45.51111147 0 0 1 45.51111146 45.51111146v45.51111147a45.51111147 45.51111147 0 1 1-91.02222293 0v-45.51111147a45.51111147 45.51111147 0 0 1 45.51111147-45.51111146z m273.06666666 0a45.51111147 45.51111147 0 0 1 45.51111147 45.51111146v45.51111147a45.51111147 45.51111147 0 1 1-91.02222293 0v-45.51111147a45.51111147 45.51111147 0 0 1 45.51111146-45.51111146z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_346 = [\n  _hoisted_246\n];\nfunction _sfc_render46(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock46(), _createElementBlock46(\"svg\", _hoisted_146, _hoisted_346);\n}\nvar basics_ertongpiao_default = /* @__PURE__ */ export_helper_default(basics_ertongpiao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render46], [\"__file\", \"basics-ertongpiao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-expand.vue?vue&type=script&lang.ts\nvar basics_expand_vue_vue_type_script_lang_default = {\n  name: \"BasicsExpand\"\n};\n\n// src/components/basics-expand.vue\nimport { createElementVNode as _createElementVNode47, openBlock as _openBlock47, createElementBlock as _createElementBlock47 } from \"vue\";\nvar _hoisted_147 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_247 = /* @__PURE__ */ _createElementVNode47(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1014.7488005 804.44476258v94.2654002H9.2511995v-94.2654002h1005.497601z m-219.95259993-455.61610187l219.95259993 157.10900079-219.95259993 157.1090008v-314.21800159z m-125.68719977 109.9763007v94.26540018H9.2511995v-94.26540018h659.8578013zM1014.7488005 113.60506592v94.26540018H9.2511995v-94.26540018h1005.497601z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_347 = [\n  _hoisted_247\n];\nfunction _sfc_render47(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock47(), _createElementBlock47(\"svg\", _hoisted_147, _hoisted_347);\n}\nvar basics_expand_default = /* @__PURE__ */ export_helper_default(basics_expand_vue_vue_type_script_lang_default, [[\"render\", _sfc_render47], [\"__file\", \"basics-expand.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-fanbei.vue?vue&type=script&lang.ts\nvar basics_fanbei_vue_vue_type_script_lang_default = {\n  name: \"BasicsFanbei\"\n};\n\n// src/components/basics-fanbei.vue\nimport { createElementVNode as _createElementVNode48, openBlock as _openBlock48, createElementBlock as _createElementBlock48 } from \"vue\";\nvar _hoisted_148 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_248 = /* @__PURE__ */ _createElementVNode48(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 26.54814777c268.1029211 0 485.45185223 217.34892999 485.45185223 485.45185223S780.1029211 997.45185223 512 997.45185223 26.54814777 780.1029211 26.54814777 512 243.8970789 26.54814777 512 26.54814777z m0 72.81777778c-227.89537223 0-412.63407445 184.73870222-412.63407445 412.63407445s184.73870222 412.63407445 412.63407445 412.63407445 412.63407445-184.73870222 412.63407445-412.63407445-184.73870222-412.63407445-412.63407445-412.63407445z m133.49925888 230.58963c67.02876445 0 121.36296334 54.3341989 121.36296334 121.36296335a112.16364999 112.16364999 0 0 1-42.10081223 87.58764999L652.19849443 596.95407445H742.58963001a36.40888889 36.40888889 0 0 1 0 72.81777778H548.40888889c-34.41853667 0-49.61317888-43.33871445-22.74341888-64.84423111l153.60910222-122.89213667A39.34587221 39.34587221 0 0 0 694.04444445 451.3185189a48.54518557 48.54518557 0 1 0-97.09037 0 36.40888889 36.40888889 0 0 1-72.81777778 0c0-67.02876445 54.3341989-121.36296334 121.36296221-121.36296335zM255.66928555 461.98632334a36.40888889 36.40888889 0 0 1 51.48216888 0L354.22814777 509.05088l47.07669333-47.06455666a36.40888889 36.40888889 0 0 1 49.73454223-1.6384l1.74762666 1.6384a36.40888889 36.40888889 0 0 1 0 51.48216889L405.72245333 560.54518557l47.06455666 47.07669333a36.40888889 36.40888889 0 0 1 1.6384 49.73454222l-1.6384 1.74762667a36.40888889 36.40888889 0 0 1-51.48216889 0L354.22814777 612.03948999l-47.07669334 47.0645578a36.40888889 36.40888889 0 0 1-49.73454222 1.6384l-1.74762666-1.6384a36.40888889 36.40888889 0 0 1 0-51.48216889L302.73384334 560.54518557l-47.06455779-47.07669334a36.40888889 36.40888889 0 0 1-1.6384-49.73454222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_348 = [\n  _hoisted_248\n];\nfunction _sfc_render48(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock48(), _createElementBlock48(\"svg\", _hoisted_148, _hoisted_348);\n}\nvar basics_fanbei_default = /* @__PURE__ */ export_helper_default(basics_fanbei_vue_vue_type_script_lang_default, [[\"render\", _sfc_render48], [\"__file\", \"basics-fanbei.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-faxian.vue?vue&type=script&lang.ts\nvar basics_faxian_vue_vue_type_script_lang_default = {\n  name: \"BasicsFaxian\"\n};\n\n// src/components/basics-faxian.vue\nimport { createElementVNode as _createElementVNode49, openBlock as _openBlock49, createElementBlock as _createElementBlock49 } from \"vue\";\nvar _hoisted_149 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_249 = /* @__PURE__ */ _createElementVNode49(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 26.54814777c268.1029211 0 485.45185223 217.34892999 485.45185223 485.45185223S780.1029211 997.45185223 512 997.45185223 26.54814777 780.1029211 26.54814777 512 243.8970789 26.54814777 512 26.54814777z m0 72.81777778c-227.89537223 0-412.63407445 184.73870222-412.63407445 412.63407445s184.73870222 412.63407445 412.63407445 412.63407445 412.63407445-184.73870222 412.63407445-412.63407445-184.73870222-412.63407445-412.63407445-412.63407445z m169.71396779 180.79440668a48.54518557 48.54518557 0 0 1 62.12569998 62.12569998L654.95343445 589.18684445a109.22666667 109.22666667 0 0 1-65.77872668 65.76659l-246.88867556 88.88623332a48.54518557 48.54518557 0 0 1-62.12569998-62.12569998l88.88623332-246.90081224a109.22666667 109.22666667 0 0 1 65.77872668-65.76659z m-23.8599589 85.98565888l-198.36776334 71.40996779a36.40888889 36.40888889 0 0 0-21.93028665 21.93028665l-71.40996779 198.36776334 198.36776334-71.40996779a36.40888889 36.40888889 0 0 0 21.93028665-21.93028665l71.40996779-198.36776334z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_349 = [\n  _hoisted_249\n];\nfunction _sfc_render49(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock49(), _createElementBlock49(\"svg\", _hoisted_149, _hoisted_349);\n}\nvar basics_faxian_default = /* @__PURE__ */ export_helper_default(basics_faxian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render49], [\"__file\", \"basics-faxian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-fenxiang.vue?vue&type=script&lang.ts\nvar basics_fenxiang_vue_vue_type_script_lang_default = {\n  name: \"BasicsFenxiang\"\n};\n\n// src/components/basics-fenxiang.vue\nimport { createElementVNode as _createElementVNode50, openBlock as _openBlock50, createElementBlock as _createElementBlock50 } from \"vue\";\nvar _hoisted_150 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_250 = /* @__PURE__ */ _createElementVNode50(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M926.25224651 537.89076502a38.83614815 38.83614815 0 0 1 77.6722963 0v323.63456831c0 78.6432-63.75600947 142.39920947-142.39920948 142.39920948H162.47466667c-78.6432 0-142.39920947-63.75600947-142.39920948-142.39920948V201.31081482c0-78.6432 63.75600947-142.39920947 142.39920948-142.39920948h336.57995022a38.83614815 38.83614815 0 0 1 0 77.6722963H162.47466667a64.72691317 64.72691317 0 0 0-64.72691318 64.72691318v660.21451851a64.72691317 64.72691317 0 0 0 64.72691318 64.72691318h699.05066666a64.72691317 64.72691317 0 0 0 64.72691318-64.72691318V537.89076502z m-51.04364324-336.5799502l-108.97423171-115.78350343a38.83614815 38.83614815 0 0 1 56.57132207-53.23141331l170.56836267 181.23535761C1016.70163555 238.30871822 999.12180622 278.98311111 965.08839466 278.98311111H770.14387675C671.02108089 278.98311111 589.6722963 365.40648653 589.6722963 473.16385185v233.0168889a38.83614815 38.83614815 0 1 1-77.6722963 0V473.16385185c0-149.63567882 115.03267082-271.85303703 258.14387675-271.85303703h105.06472652z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_350 = [\n  _hoisted_250\n];\nfunction _sfc_render50(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock50(), _createElementBlock50(\"svg\", _hoisted_150, _hoisted_350);\n}\nvar basics_fenxiang_default = /* @__PURE__ */ export_helper_default(basics_fenxiang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render50], [\"__file\", \"basics-fenxiang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-fujian.vue?vue&type=script&lang.ts\nvar basics_fujian_vue_vue_type_script_lang_default = {\n  name: \"BasicsFujian\"\n};\n\n// src/components/basics-fujian.vue\nimport { createElementVNode as _createElementVNode51, openBlock as _openBlock51, createElementBlock as _createElementBlock51 } from \"vue\";\nvar _hoisted_151 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_251 = /* @__PURE__ */ _createElementVNode51(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M630.19804445 56.88888889a68.26666667 68.26666667 0 0 1 49.60597333 21.36632889l89.30190222 94.45262222 0.06371555 0.06826667 124.73116445 132.28942222A68.26666667 68.26666667 0 0 1 912.49777778 351.8976V898.84444445c0 37.70254222-30.56412445 68.26666667-68.26666667 68.26666666H179.76888889c-37.70254222 0-68.26666667-30.56412445-68.26666667-68.26666666V125.15555555c0-37.70254222 30.56412445-68.26666667 68.26666667-68.26666666h450.42915556z m122.5875911 301.81831111c-49.28170667-49.28170667-128.88519111-49.72088889-177.80053333-0.80554667L360.17493333 572.71182222l-0.91022222 0.92501333c-29.74606222 30.72568889-29.44227555 79.74684445 0.91022222 110.09934223 30.65856 30.65969778 80.36579555 30.65969778 111.02435556 0l169.98855111-169.98855111 0.27534222-0.27875556c8.61070222-8.90652445 8.51854222-23.10826667-0.27534222-31.90215111-8.88604445-8.88604445-23.29372445-8.88604445-32.18090667 0L439.01838222 651.55527111l-0.38912 0.38229334c-12.91377778 12.50190222-33.51665778 12.37447111-46.27342222-0.38229334-12.88533333-12.88533333-12.88533333-33.77720889 0-46.66254222L607.16373333 390.08256l0.93866667-0.9216c31.13870222-30.13176889 81.22936889-29.54467555 112.50005333 1.72714667 31.58698667 31.58698667 31.86915555 82.37511111 0.80554667 113.43872L484.87537778 740.85831111l-1.51552 1.49048889c-50.31822222 48.71395555-130.60096 48.21674667-180.30819556-1.49048889-50.21013333-50.21013333-50.21013333-131.61472 0-181.82371556l151.94225778-151.94225777 0.27420445-0.27875556c8.61070222-8.90766222 8.51968-23.10826667-0.27420445-31.90328889-8.88604445-8.88604445-23.29486222-8.88604445-32.18204445 0L270.87189333 526.85482667l-2.01955555 2.05141333c-65.95697778 68.13013333-65.28341333 176.83228445 2.01955555 244.13411555 67.98222222 67.98222222 178.20330667 67.98222222 246.18552889 0l236.53262223-236.53262222 1.45294222-1.47569778c47.44988445-49.02912 46.53056-127.53578667-2.25735112-176.32483555z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_351 = [\n  _hoisted_251\n];\nfunction _sfc_render51(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock51(), _createElementBlock51(\"svg\", _hoisted_151, _hoisted_351);\n}\nvar basics_fujian_default = /* @__PURE__ */ export_helper_default(basics_fujian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render51], [\"__file\", \"basics-fujian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-fuzhi.vue?vue&type=script&lang.ts\nvar basics_fuzhi_vue_vue_type_script_lang_default = {\n  name: \"BasicsFuzhi\"\n};\n\n// src/components/basics-fuzhi.vue\nimport { createElementVNode as _createElementVNode52, openBlock as _openBlock52, createElementBlock as _createElementBlock52 } from \"vue\";\nvar _hoisted_152 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_252 = /* @__PURE__ */ _createElementVNode52(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M369.60079053 20.07545719h543.70607408a90.61767941 90.61767941 0 0 1 90.6176782 90.6176782v543.70607408a90.61767941 90.61767941 0 0 1-90.6176782 90.61767942H369.60079053a90.61767941 90.61767941 0 0 1-90.61767942-90.61767942V110.69313539a90.61767941 90.61767941 0 0 1 90.61767942-90.6176782z m0 77.6722963a12.94538311 12.94538311 0 0 0-12.94538312 12.9453819v543.70607408a12.94538311 12.94538311 0 0 0 12.94538312 12.94538312h543.70607408a12.94538311 12.94538311 0 0 0 12.9453819-12.94538312V110.69313539a12.94538311 12.94538311 0 0 0-12.9453819-12.9453819H369.60079053z m297.74380206 724.94143169a38.83614815 38.83614815 0 0 1 77.6722963 0v90.61767943a90.61767941 90.61767941 0 0 1-90.61767942 90.6176782H110.69313539a90.61767941 90.61767941 0 0 1-90.6176782-90.6176782V369.60079053a90.61767941 90.61767941 0 0 1 90.6176782-90.61767942h90.61767943a38.83614815 38.83614815 0 0 1 0 77.6722963h-90.61767943a12.94538311 12.94538311 0 0 0-12.9453819 12.94538312v543.70607408a12.94538311 12.94538311 0 0 0 12.9453819 12.9453819h543.70607408a12.94538311 12.94538311 0 0 0 12.94538312-12.9453819v-90.61767943z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_352 = [\n  _hoisted_252\n];\nfunction _sfc_render52(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock52(), _createElementBlock52(\"svg\", _hoisted_152, _hoisted_352);\n}\nvar basics_fuzhi_default = /* @__PURE__ */ export_helper_default(basics_fuzhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render52], [\"__file\", \"basics-fuzhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-gengduo.vue?vue&type=script&lang.ts\nvar basics_gengduo_vue_vue_type_script_lang_default = {\n  name: \"BasicsGengduo\"\n};\n\n// src/components/basics-gengduo.vue\nimport { createElementVNode as _createElementVNode53, openBlock as _openBlock53, createElementBlock as _createElementBlock53 } from \"vue\";\nvar _hoisted_153 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_253 = /* @__PURE__ */ _createElementVNode53(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64c247.424 0 448 200.576 448 448S759.424 960 512 960 64 759.424 64 512 264.576 64 512 64z m0 398c-27.614 0-50 22.386-50 50s22.386 50 50 50 50-22.386 50-50-22.386-50-50-50z m-204 0c-27.614 0-50 22.386-50 50s22.386 50 50 50 50-22.386 50-50-22.386-50-50-50z m408 0c-27.614 0-50 22.386-50 50s22.386 50 50 50 50-22.386 50-50-22.386-50-50-50z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_353 = [\n  _hoisted_253\n];\nfunction _sfc_render53(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock53(), _createElementBlock53(\"svg\", _hoisted_153, _hoisted_353);\n}\nvar basics_gengduo_default = /* @__PURE__ */ export_helper_default(basics_gengduo_vue_vue_type_script_lang_default, [[\"render\", _sfc_render53], [\"__file\", \"basics-gengduo.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-gengduoneirong.vue?vue&type=script&lang.ts\nvar basics_gengduoneirong_vue_vue_type_script_lang_default = {\n  name: \"BasicsGengduoneirong\"\n};\n\n// src/components/basics-gengduoneirong.vue\nimport { createElementVNode as _createElementVNode54, openBlock as _openBlock54, createElementBlock as _createElementBlock54 } from \"vue\";\nvar _hoisted_154 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_254 = /* @__PURE__ */ _createElementVNode54(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M269.65333333 56.88888889c117.50627555 0 212.76444445 95.25816889 212.76444445 212.76444444v212.76444445H269.65333333c-117.50627555 0-212.76444445-95.25816889-212.76444444-212.76444445s95.25816889-212.76444445 212.76444444-212.76444444z m484.69333334 0c-117.50627555 0-212.76444445 95.25816889-212.76444445 212.76444444v212.76444445h212.76444445c117.50627555 0 212.76444445-95.25816889 212.76444444-212.76444445s-95.25816889-212.76444445-212.76444444-212.76444444zM269.65333333 967.11111111c117.50627555 0 212.76444445-95.25816889 212.76444445-212.76444444V541.58222222H269.65333333c-117.50627555 0-212.76444445 95.25816889-212.76444444 212.76444445s95.25816889 212.76444445 212.76444444 212.76444444z m484.69333334 0c-117.50627555 0-212.76444445-95.25816889-212.76444445-212.76444444V541.58222222h212.76444445c117.50627555 0 212.76444445 95.25816889 212.76444444 212.76444445s-95.25816889 212.76444445-212.76444444 212.76444444z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_354 = [\n  _hoisted_254\n];\nfunction _sfc_render54(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock54(), _createElementBlock54(\"svg\", _hoisted_154, _hoisted_354);\n}\nvar basics_gengduoneirong_default = /* @__PURE__ */ export_helper_default(basics_gengduoneirong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render54], [\"__file\", \"basics-gengduoneirong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-gerenxinxi.vue?vue&type=script&lang.ts\nvar basics_gerenxinxi_vue_vue_type_script_lang_default = {\n  name: \"BasicsGerenxinxi\"\n};\n\n// src/components/basics-gerenxinxi.vue\nimport { createElementVNode as _createElementVNode55, openBlock as _openBlock55, createElementBlock as _createElementBlock55 } from \"vue\";\nvar _hoisted_155 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_255 = /* @__PURE__ */ _createElementVNode55(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M810.26161778 340.77573751c0-182.27098864-149.13080889-325.8784338-331.40179753-325.87843381s-331.40179753 143.60744516-331.40179753 325.87843381c0 121.51399286 66.2803595 231.98125827 171.22426249 287.21489163-143.60744516 55.23363335-248.55134815 182.27098864-276.16816548 331.40179753 0 11.04672615 0 22.0934536 5.52336374 27.61681602 0 16.57008987 5.52336372 22.0934536 16.57008986 22.09345361H70.13093706c16.57008987 0 33.14017975-11.04672615 38.66354218-27.61681603 33.14017975-176.74762492 187.79435236-298.26161778 364.54197728-303.78498151h5.52336373c182.27098864-5.52336372 325.8784338-154.65417262 331.40179753-336.92516125z m-596.52323556 0c0-143.60744516 115.99062914-259.5980743 259.5980743-259.59807431S732.93453212 202.69165606 732.93453212 340.77573751c0 143.60744516-115.99062914 254.07471187-254.07471187 259.59807559h-11.04672616c-138.08408273-5.52336372-248.55134815-115.99062914-254.07471187-259.59807559zM732.93453212 677.70089876c0 11.04672615 5.52336372 22.0934536 11.04672615 27.61681603 5.52336372 5.52336372 16.57008987 11.04672615 27.61681603 11.04672746H953.86906294c22.0934536 0 38.66354348-16.57008987 38.66354348-38.66354349 0-22.0934536-16.57008987-38.66354348-38.66354348-38.66354346h-182.27098864c-22.0934536 0-38.66354348 16.57008987-38.66354218 38.66354346z m220.93453082 104.94390299h-298.26161778c-22.0934536 0-38.66354348 16.57008987-38.66354217 38.66354219 0 22.0934536 16.57008987 38.66354348 38.66354217 38.66354347H953.86906294c22.0934536 0 38.66354348-16.57008987 38.66354348-38.66354347-5.52336372-22.0934536-22.0934536-38.66354348-38.66354348-38.66354219z m0 149.1308089h-292.73825405c-22.0934536 0-38.66354348 16.57008987-38.66354348 38.66354217 0 22.0934536 16.57008987 38.66354348 38.66354348 38.66354348H953.86906294c11.04672615 0 22.0934536-5.52336372 27.61681733-11.04672616 5.52336372-5.52336372 11.04672615-16.57008987 11.04672615-27.61681732-5.52336372-22.0934536-22.0934536-38.66354348-38.66354348-38.66354217z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_355 = [\n  _hoisted_255\n];\nfunction _sfc_render55(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock55(), _createElementBlock55(\"svg\", _hoisted_155, _hoisted_355);\n}\nvar basics_gerenxinxi_default = /* @__PURE__ */ export_helper_default(basics_gerenxinxi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render55], [\"__file\", \"basics-gerenxinxi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-gongsi.vue?vue&type=script&lang.ts\nvar basics_gongsi_vue_vue_type_script_lang_default = {\n  name: \"BasicsGongsi\"\n};\n\n// src/components/basics-gongsi.vue\nimport { createElementVNode as _createElementVNode56, openBlock as _openBlock56, createElementBlock as _createElementBlock56 } from \"vue\";\nvar _hoisted_156 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_256 = /* @__PURE__ */ _createElementVNode56(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M956.624449 922.846357h-29.442936V592.832598c0-17.701887-8.850944-41.545246-29.984829-50.396189l-267.334627-174.851297V93.747751l-2.890104-6.141471C614.869642 57.802081 588.316811 42.809667 555.622508 48.770506L136.376786 173.586876c-23.843359 8.850944-41.545246 32.694302-41.545246 59.427765v689.831716H64.84671c-18.243782 0-29.98483 14.992415-29.98483 29.98483 0 18.243782 12.102311 29.98483 29.98483 29.98483h891.777739c18.243782 0 29.98483-12.102311 29.98483-29.98483-0.180632-18.243782-12.282942-29.98483-29.98483-29.98483z m-89.231964-333.265126v333.265126H629.862057V435.683189l237.530428 153.898042zM153.536779 233.014641l415.994355-124.81637v814.648086H153.536779V233.014641z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_356 = /* @__PURE__ */ _createElementVNode56(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M450.856236 325.136708H272.753572c-18.243782 0-29.98483 11.741048-29.98483 29.98483 0 18.243782 12.102311 29.98483 29.98483 29.98483h178.102664c18.243782 0 29.98483-11.741048 29.984829-29.98483 0-18.424413-12.282942-29.98483-29.984829-29.98483zM450.856236 503.058741H272.753572c-18.243782 0-29.98483 12.102311-29.98483 29.984829v0.361263c0 18.243782 12.102311 29.98483 29.98483 29.98483h178.102664c18.243782 0 29.98483-12.102311 29.984829-29.98483v-0.180631-0.180632c0-18.243782-12.282942-29.98483-29.984829-29.984829zM450.856236 681.703299H272.753572c-18.243782 0-29.98483 11.741048-29.98483 29.984829v0.361263c0 18.243782 12.102311 29.98483 29.98483 29.98483h178.102664c18.243782 0 29.98483-11.741048 29.984829-29.98483v-0.180631-0.180632c0-18.243782-12.282942-29.98483-29.984829-29.984829zM688.747927 712.049391c0 18.243782 12.102311 29.98483 29.98483 29.98483h59.427765c18.243782 0 29.98483-11.741048 29.98483-29.98483v-0.180631-0.180632c0-18.243782-12.102311-29.98483-29.98483-29.984829h-59.427765c-18.243782 0-29.98483 11.741048-29.98483 29.984829v0.361263z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_47 = [\n  _hoisted_256,\n  _hoisted_356\n];\nfunction _sfc_render56(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock56(), _createElementBlock56(\"svg\", _hoisted_156, _hoisted_47);\n}\nvar basics_gongsi_default = /* @__PURE__ */ export_helper_default(basics_gongsi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render56], [\"__file\", \"basics-gongsi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-gongyi.vue?vue&type=script&lang.ts\nvar basics_gongyi_vue_vue_type_script_lang_default = {\n  name: \"BasicsGongyi\"\n};\n\n// src/components/basics-gongyi.vue\nimport { createElementVNode as _createElementVNode57, openBlock as _openBlock57, createElementBlock as _createElementBlock57 } from \"vue\";\nvar _hoisted_157 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_257 = /* @__PURE__ */ _createElementVNode57(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M335.56737897 33.0208391c145.14363141 0 262.83010489 117.72531083 263.71039171 263.17963143a348.89100917 348.89100917 0 0 1 32.19516681-1.47577363C822.90925629 294.7246969 978.03377778 450.63888592 978.03377778 642.8519289 978.03377778 835.07791645 822.90925629 990.9791609 631.47293749 990.9791609h-94.69547497a38.83614815 38.83614815 0 0 1 0-77.67229629h94.69547497C779.93058608 913.30686461 900.36148148 792.26753539 900.36148148 642.8519289s-120.43089541-270.4549357-268.88854399-270.45493571c-22.48612978 0-44.58389808 2.77031231-65.94377955 8.18148148-27.70311941 7.02934282-53.2573049-17.28208592-47.61311763-45.30883911 2.45962311-12.19455052 3.70237986-24.69979022 3.70237864-37.39921066C521.61841895 194.44976238 438.27604502 110.69313539 335.55443317 110.69313539 232.87165747 110.69313539 149.52928355 194.44976238 149.52928355 297.88336947v226.01343764a38.83614815 38.83614815 0 1 1-77.6722963 0v-226.02638221C71.85698725 151.63938133 189.88004147 33.0208391 335.56737897 33.0208391zM110.27888355 667.34459259A38.83614815 38.83614815 0 0 1 149.52928355 705.7664889L151.71705363 913.30686461H356.65540741a38.83614815 38.83614815 0 0 1 0 77.67229629H113.28221275a38.83614815 38.83614815 0 0 1-38.83614814-38.42189631l-2.58907736-245.962272A38.83614815 38.83614815 0 0 1 110.27888355 667.34459259z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_357 = [\n  _hoisted_257\n];\nfunction _sfc_render57(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock57(), _createElementBlock57(\"svg\", _hoisted_157, _hoisted_357);\n}\nvar basics_gongyi_default = /* @__PURE__ */ export_helper_default(basics_gongyi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render57], [\"__file\", \"basics-gongyi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-gongzuo.vue?vue&type=script&lang.ts\nvar basics_gongzuo_vue_vue_type_script_lang_default = {\n  name: \"BasicsGongzuo\"\n};\n\n// src/components/basics-gongzuo.vue\nimport { createElementVNode as _createElementVNode58, openBlock as _openBlock58, createElementBlock as _createElementBlock58 } from \"vue\";\nvar _hoisted_158 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_258 = /* @__PURE__ */ _createElementVNode58(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M56.88888889 612.12444445a9.10222222 9.10222222 0 0 0 9.10222222 9.10222222h236.65777778v88.74666666c0 12.43591111 9.97717333 22.54279111 22.36416 22.75214222L325.40444445 732.72888889c12.56789333 0 22.75555555-10.18766222 22.75555555-22.75555556v-88.74666666h327.68v88.74666666c0 12.43591111 9.97717333 22.54279111 22.36416 22.75214222L698.59555555 732.72888889c12.56789333 0 22.75555555-10.18766222 22.75555556-22.75555556v-88.74666666h236.65777778a9.10222222 9.10222222 0 0 0 9.09767111-8.81777778L967.11111111 612.12444445v241.20888888c0 62.83719111-50.94058667 113.77777778-113.77777778 113.77777778H170.66666667c-62.83719111 0-113.77777778-50.94058667-113.77777778-113.77777778z m557.51111111-475.59111112H409.6v88.74666667h204.8v-88.74666667zM56.88888889 352.71111111c0-62.83719111 50.94058667-113.77777778 113.77777778-113.77777778h159.32643555a69.51594667 69.51594667 0 0 1-0.03754667-2.27555555v-111.50222223c0-37.70254222 30.56412445-68.26666667 68.26666667-68.26666666h227.55555556c37.70254222 0 68.26666667 30.56412445 68.26666667 68.26666666v111.50222223c0 0.76231111-0.01251555 1.52007111-0.03754667 2.27555555H853.33333333c62.83719111 0 113.77777778 50.94058667 113.77777778 113.77777778v232.10666667a9.10222222 9.10222222 0 0 0-9.10222222-9.10222223H721.35111111v-88.74666666c0-12.43591111-9.97717333-22.54279111-22.36416-22.75214222L698.59555555 464.21333333c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555556v88.74666666H348.16v-88.74666666c0-12.43591111-9.97717333-22.54279111-22.36416-22.75214222L325.40444445 464.21333333c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555556v88.74666666H65.99111111a9.10222222 9.10222222 0 0 0-9.09767111 8.81777778L56.88888889 584.81777778V352.71111111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_358 = [\n  _hoisted_258\n];\nfunction _sfc_render58(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock58(), _createElementBlock58(\"svg\", _hoisted_158, _hoisted_358);\n}\nvar basics_gongzuo_default = /* @__PURE__ */ export_helper_default(basics_gongzuo_vue_vue_type_script_lang_default, [[\"render\", _sfc_render58], [\"__file\", \"basics-gongzuo.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-guanyu.vue?vue&type=script&lang.ts\nvar basics_guanyu_vue_vue_type_script_lang_default = {\n  name: \"BasicsGuanyu\"\n};\n\n// src/components/basics-guanyu.vue\nimport { createElementVNode as _createElementVNode59, openBlock as _openBlock59, createElementBlock as _createElementBlock59 } from \"vue\";\nvar _hoisted_159 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_259 = /* @__PURE__ */ _createElementVNode59(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64c247.424 0 448 200.576 448 448S759.424 960 512 960 64 759.424 64 512 264.576 64 512 64z m24 353.8h-48V728h48V417.8z m-24-117c-10.2 0-18.6 3-25.8 10.2-7.2 6-10.2 14.4-10.2 25.2 0 10.2 3 18.6 10.2 25.8 7.2 6.6 15.6 10.2 25.8 10.2 10.2 0 18.6-3.6 25.8-10.2 7.2-7.2 10.8-15.6 10.8-25.8 0-10.8-3.6-19.2-10.8-25.2-7.2-7.2-15.6-10.2-25.8-10.2z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_359 = [\n  _hoisted_259\n];\nfunction _sfc_render59(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock59(), _createElementBlock59(\"svg\", _hoisted_159, _hoisted_359);\n}\nvar basics_guanyu_default = /* @__PURE__ */ export_helper_default(basics_guanyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render59], [\"__file\", \"basics-guanyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-guanzhu.vue?vue&type=script&lang.ts\nvar basics_guanzhu_vue_vue_type_script_lang_default = {\n  name: \"BasicsGuanzhu\"\n};\n\n// src/components/basics-guanzhu.vue\nimport { createElementVNode as _createElementVNode60, openBlock as _openBlock60, createElementBlock as _createElementBlock60 } from \"vue\";\nvar _hoisted_160 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_260 = /* @__PURE__ */ _createElementVNode60(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M809.5744 169.30133333a34.13333333 34.13333333 0 0 1 48.27591147-0.0227552A487.7312 487.7312 0 0 1 1001.2444448 515.32231147a487.7312 487.7312 0 0 1-143.24622293 345.89582186 34.13333333 34.13333333 0 1 1-48.2759104-48.26453333A419.47591147 419.47591147 0 0 0 932.97777813 515.32231147a419.47591147 419.47591147 0 0 0-123.392-297.7564448 34.13333333 34.13333333 0 0 1 0-48.27591147z m-643.584 0.13653334a34.13333333 34.13333333 0 0 1 48.28728853 48.26453333A419.47591147 419.47591147 0 0 0 91.02222187 515.32231147a419.47591147 419.47591147 0 0 0 123.1644448 297.54026666 34.13333333 34.13333333 0 0 1-48.29866667 48.2531552A487.7312 487.7312 0 0 1 22.7555552 515.32231147a487.7312 487.7312 0 0 1 143.24622293-345.8844448zM318.71431147 270.79111147a34.13333333 34.13333333 0 0 1 0.03413333 48.26453333A272.04266667 272.04266667 0 0 0 238.93333333 512a272.0540448 272.0540448 0 0 0 80.1564448 193.26293333 34.13333333 34.13333333 0 1 1-48.2304 48.32142187A340.30933333 340.30933333 0 0 1 170.66666667 512a340.30933333 340.30933333 0 0 1 99.78311146-241.16337813 34.13333333 34.13333333 0 0 1 48.26453334-0.03413334z m434.51733333-0.2844448A340.30933333 340.30933333 0 0 1 853.33333333 512a340.30933333 340.30933333 0 0 1-99.89688853 241.28853333 34.13333333 34.13333333 0 0 1-48.29866667-48.2531552A272.0540448 272.0540448 0 0 0 785.06666667 512a272.0540448 272.0540448 0 0 0-80.0768-193.19466667 34.13333333 34.13333333 0 1 1 48.24177813-48.28728853zM570.40213333 375.46666667C645.76853333 375.46666667 694.0444448 436.4515552 694.0444448 515.11751147c0 61.8723552-51.14311147 124.57528853-149.43573333 193.31982186a56.88888853 56.88888853 0 0 1-65.21742294 0C381.09866667 639.6928 329.9555552 576.98986667 329.9555552 515.11751147 329.9555552 436.4515552 378.23146667 375.46666667 453.6092448 375.46666667c23.07413333 0 40.0156448 6.39431147 58.3907552 19.64942186C530.37511147 381.86097813 547.31662187 375.46666667 570.3907552 375.46666667z m0 68.26666666c-8.87466667 0-15.53066667 3.54986667-29.35466666 15.50791147l-6.7584 5.87093333a34.13333333 34.13333333 0 0 1-44.55537814 0l-6.7584-5.87093333c-13.824-11.94666667-20.48-15.50791147-29.35466666-15.50791147C419.89688853 443.73333333 398.22222187 471.1196448 398.22222187 515.11751147c0 31.93742187 36.70471147 77.8012448 113.77777813 132.77866666 77.07306667-54.97742187 113.77777813-100.8412448 113.77777813-132.77866666C625.77777813 471.1196448 604.10311147 443.73333333 570.3907552 443.73333333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_360 = [\n  _hoisted_260\n];\nfunction _sfc_render60(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock60(), _createElementBlock60(\"svg\", _hoisted_160, _hoisted_360);\n}\nvar basics_guanzhu_default = /* @__PURE__ */ export_helper_default(basics_guanzhu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render60], [\"__file\", \"basics-guanzhu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-guojihua.vue?vue&type=script&lang.ts\nvar basics_guojihua_vue_vue_type_script_lang_default = {\n  name: \"BasicsGuojihua\"\n};\n\n// src/components/basics-guojihua.vue\nimport { createElementVNode as _createElementVNode61, openBlock as _openBlock61, createElementBlock as _createElementBlock61 } from \"vue\";\nvar _hoisted_161 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_261 = /* @__PURE__ */ _createElementVNode61(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M496 0C222.048 0 0 222.048 0 496S222.048 992 496 992 992 769.952 992 496 769.952 0 496 0z m431.2 480h-191.872c-1.76-70.88-14.368-138.592-36.736-200.576a522.688 522.688 0 0 0 119.552-70.304A429.856 429.856 0 0 1 927.2 480zM478.304 927.104c-53.184-44.288-97.792-101.792-130.432-168.576A495.904 495.904 0 0 1 480 736.8v190.368l-1.696-0.064z m35.328-862.208c60.352 50.24 109.6 117.536 142.912 196.032-45.632 15.584-94.112 24.64-144.576 26.24V64.8l1.664 0.096z m53.312 5.44a430.816 430.816 0 0 1 229.248 115.648 489.504 489.504 0 0 1-109.696 63.936c-29.12-69.024-69.984-130.048-119.552-179.584zM480 64.8v222.368a495.744 495.744 0 0 1-144.576-26.24c33.312-78.496 82.56-145.792 142.912-196.032L480 64.8zM305.472 249.952a490.72 490.72 0 0 1-109.664-63.936 430.72 430.72 0 0 1 229.248-115.648c-49.6 49.504-90.432 110.528-119.584 179.584z m17.888 40.48c49.344 17.12 101.92 27.104 156.64 28.768V480H288.672c1.728-67.008 13.6-131.04 34.688-189.568zM480 512v192.8a525.152 525.152 0 0 0-145.248 24.608A601.12 601.12 0 0 1 288.672 512H480z m-54.944 409.664a429.792 429.792 0 0 1-209.44-97.664 486.368 486.368 0 0 1 102.016-54.4 554.144 554.144 0 0 0 107.424 152.064z m86.944 5.536v-190.368c45.824 1.472 90.24 8.64 132.128 21.728-32.672 66.784-77.248 124.288-130.432 168.576a31.2 31.2 0 0 0-1.696 0.064z m162.368-157.6a490.24 490.24 0 0 1 102.016 54.4 430.08 430.08 0 0 1-209.44 97.664 554.816 554.816 0 0 0 107.424-152.064z m-17.12-40.192A525.568 525.568 0 0 0 512 704.8V512h191.328a601.792 601.792 0 0 1-46.08 217.408zM512 480V319.2a526.08 526.08 0 0 0 156.64-28.736c21.056 58.528 32.928 122.56 34.688 189.568H512zM173.888 209.12a523.2 523.2 0 0 0 119.52 70.304C271.04 341.408 258.432 409.12 256.672 480H64.8a429.728 429.728 0 0 1 109.088-270.88zM64.8 512h191.872a631.168 631.168 0 0 0 48.096 228.384 519.36 519.36 0 0 0-113.216 61.792A430.816 430.816 0 0 1 64.8 512z m735.648 290.144a520.192 520.192 0 0 0-113.248-61.792 631.2 631.2 0 0 0 48.128-228.384h191.872a430.848 430.848 0 0 1-126.752 290.176z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_361 = [\n  _hoisted_261\n];\nfunction _sfc_render61(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock61(), _createElementBlock61(\"svg\", _hoisted_161, _hoisted_361);\n}\nvar basics_guojihua_default = /* @__PURE__ */ export_helper_default(basics_guojihua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render61], [\"__file\", \"basics-guojihua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-hengpai.vue?vue&type=script&lang.ts\nvar basics_hengpai_vue_vue_type_script_lang_default = {\n  name: \"BasicsHengpai\"\n};\n\n// src/components/basics-hengpai.vue\nimport { createElementVNode as _createElementVNode62, openBlock as _openBlock62, createElementBlock as _createElementBlock62 } from \"vue\";\nvar _hoisted_162 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_262 = /* @__PURE__ */ _createElementVNode62(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M170.12053333 169.02826667q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973334 19.6608-48.05973333 48.05973333-19.6608l741.64906667 0q28.39893333 0 48.05973333 19.6608t19.6608 48.05973333-19.6608 48.05973334-48.05973333 19.6608l-741.64906667 0zM170.12053333 438.81813333q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973333 19.6608-48.05973333 48.05973333-19.6608l673.92853334 0q28.39893333 0 48.05973333 19.6608t19.6608 48.05973333-19.6608 48.05973333-48.05973333 19.6608l-673.92853334 0zM911.7696 573.16693333q28.39893333 0 48.05973333 19.6608t19.6608 48.05973334-19.6608 48.05973333-48.05973333 19.6608l-741.64906667 0q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973333 19.6608-48.05973334 48.05973333-19.6608l741.64906667 0zM844.04906667 842.9568q28.39893333 0 48.05973333 19.6608t19.6608 48.05973333-19.6608 48.05973334-48.05973333 19.6608l-673.92853334 0q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973334 19.6608-48.05973333 48.05973333-19.6608l673.92853334 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_362 = [\n  _hoisted_262\n];\nfunction _sfc_render62(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock62(), _createElementBlock62(\"svg\", _hoisted_162, _hoisted_362);\n}\nvar basics_hengpai_default = /* @__PURE__ */ export_helper_default(basics_hengpai_vue_vue_type_script_lang_default, [[\"render\", _sfc_render62], [\"__file\", \"basics-hengpai.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-hongbao.vue?vue&type=script&lang.ts\nvar basics_hongbao_vue_vue_type_script_lang_default = {\n  name: \"BasicsHongbao\"\n};\n\n// src/components/basics-hongbao.vue\nimport { createElementVNode as _createElementVNode63, openBlock as _openBlock63, createElementBlock as _createElementBlock63 } from \"vue\";\nvar _hoisted_163 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_263 = /* @__PURE__ */ _createElementVNode63(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M362.35946667 571.07948999C383.31884999 508.52901888 442.39834112 463.45481443 512 463.45481443s128.68115001 45.07420445 149.64053333 107.62467556A806.86952334 806.86952334 0 0 0 863.95259221 504.92453888V160.04740779a60.6814811 60.6814811 0 0 0-60.6814811-60.68148224H220.72888889a60.6814811 60.6814811 0 0 0-60.6814811 60.68148224v344.87713109a806.85738667 806.85738667 0 0 0 202.31205888 66.15495111z m305.79825778 72.82991446C657.15010333 720.29525333 591.43205888 778.9985189 512 778.9985189c-79.43205888 0-145.15010333-58.70326557-156.15772445-135.07697778A879.62661888 879.62661888 0 0 1 160.04740779 584.95127666V863.95259221a60.6814811 60.6814811 0 0 0 60.6814811 60.68148224h582.54222222a60.6814811 60.6814811 0 0 0 60.6814811-60.68148224V584.96341333a879.63875555 879.63875555 0 0 1-195.79486776 58.94599112zM220.72888889 26.54814777h582.54222222c73.728 0 133.49925888 59.77125888 133.49925888 133.49926002v703.90518442c0 73.728-59.77125888 133.49925888-133.49925888 133.49926002H220.72888889c-73.728 0-133.49925888-59.77125888-133.49925888-133.49926002V160.04740779c0-73.728 59.77125888-133.49925888 133.49925888-133.49926002z m291.27111111 679.63259335a84.95407445 84.95407445 0 1 0 0-169.90814891 84.95407445 84.95407445 0 0 0 0 169.90814891z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_363 = [\n  _hoisted_263\n];\nfunction _sfc_render63(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock63(), _createElementBlock63(\"svg\", _hoisted_163, _hoisted_363);\n}\nvar basics_hongbao_default = /* @__PURE__ */ export_helper_default(basics_hongbao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render63], [\"__file\", \"basics-hongbao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-huati.vue?vue&type=script&lang.ts\nvar basics_huati_vue_vue_type_script_lang_default = {\n  name: \"BasicsHuati\"\n};\n\n// src/components/basics-huati.vue\nimport { createElementVNode as _createElementVNode64, openBlock as _openBlock64, createElementBlock as _createElementBlock64 } from \"vue\";\nvar _hoisted_164 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_264 = /* @__PURE__ */ _createElementVNode64(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M471.06427221 548.40888889h72.16241778l9.7090378-72.81777778h-72.16241778l-9.7090378 72.81777778z m-9.70903666 72.81777778l-10.35226112 77.62375111a36.40888889 36.40888889 0 0 1-72.18668998-9.61194667L387.88209778 621.22666667H329.95555555a36.40888889 36.40888889 0 0 1 0-72.81777778h67.63557888l9.7090378-72.81777778H329.95555555a36.40888889 36.40888889 0 0 1 0-72.81777778h87.05365334l10.35226112-77.62375111a36.40888889 36.40888889 0 0 1 72.18668999 9.61194667L490.48234667 402.77333333h72.16241778l10.35226112-77.62375111a36.40888889 36.40888889 0 0 1 72.18668998 9.61194667L636.11790222 402.77333333H694.04444445a36.40888889 36.40888889 0 0 1 0 72.81777778h-67.63557888l-9.7090378 72.81777778H694.04444445a36.40888889 36.40888889 0 0 1 0 72.81777778h-87.05365334l-10.35226112 77.62375111a36.40888889 36.40888889 0 0 1-72.18668999-9.61194667L533.51765333 621.22666667h-72.16241778zM108.73514667 784.26567111c-12.52465778-21.26279111-20.72879445-35.52293888-24.80659001-43.13239666A483.42508999 483.42508999 0 0 1 26.54814777 512C26.54814777 243.8970789 243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223-217.34892999 485.45185223-485.45185223 485.45185223a483.30372779 483.30372779 0 0 1-249.31593443-68.83707335 3170.48604445 3170.48604445 0 0 0-22.8162378-13.38633443l-118.79006777 32.4039111c-27.18530333 7.40314112-52.11325667-17.53694777-44.69797888-44.71011555l32.35536555-118.65656889z m74.29840554 4.30838556l-19.63652664 72.02891776 72.02891776-19.63652664a36.40888889 36.40888889 0 0 1 27.90134556 3.65302442 5138.0224 5138.0224 0 0 1 36.80938666 21.55406222A410.49808555 410.49808555 0 0 0 512 924.63407445c227.89537223 0 412.63407445-184.73870222 412.63407445-412.63407445S739.89537223 99.36592555 512 99.36592555 99.36592555 284.10462777 99.36592555 512c0 68.93416334 16.89372445 135.34397667 48.72723 194.71473778 4.22343111 7.86432 14.70919111 25.97167445 31.14173668 53.73952a36.40888889 36.40888889 0 0 1 3.79865998 28.11979889z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_364 = [\n  _hoisted_264\n];\nfunction _sfc_render64(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock64(), _createElementBlock64(\"svg\", _hoisted_164, _hoisted_364);\n}\nvar basics_huati_default = /* @__PURE__ */ export_helper_default(basics_huati_vue_vue_type_script_lang_default, [[\"render\", _sfc_render64], [\"__file\", \"basics-huati.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-huatifuhao.vue?vue&type=script&lang.ts\nvar basics_huatifuhao_vue_vue_type_script_lang_default = {\n  name: \"BasicsHuatifuhao\"\n};\n\n// src/components/basics-huatifuhao.vue\nimport { createElementVNode as _createElementVNode65, openBlock as _openBlock65, createElementBlock as _createElementBlock65 } from \"vue\";\nvar _hoisted_165 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_265 = /* @__PURE__ */ _createElementVNode65(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M717.3571743 77.59361463a47.1327001 47.1327001 0 0 1 92.03445189 20.42416905L762.7773858 307.75829911H936.19430083a47.1327001 47.1327001 0 0 1 47.0541461 44.36758218L983.32700093 354.8909992a47.1327001 47.1327001 0 0 1-47.1327001 47.1327001H741.81904565l-48.87660998 219.9526014H936.19430083a47.1327001 47.1327001 0 0 1 47.0541461 44.36758071L983.32700093 669.1090008a47.1327001 47.1327001 0 0 1-47.1327001 47.13270009H671.99980542l-51.1389796 230.16468448a47.1327001 47.1327001 0 0 1-53.52703592 36.32360185l-2.71798522-0.5184597a47.1327001 47.1327001 0 0 1-35.78943074-56.2450226L575.42490293 716.24170089H357.78180528l-51.13897958 230.19610726a47.1327001 47.1327001 0 0 1-53.52703592 36.29217907l-2.7179867-0.50274978a47.1327001 47.1327001 0 0 1-35.78942927-56.24502112L261.20690279 716.24170089 87.80569917 716.24170089a47.1327001 47.1327001 0 0 1-47.0541461-44.36758218L40.67299907 669.1090008a47.1327001 47.1327001 0 0 1 47.1327001-47.1327001h194.35954377l48.87661001-219.9526014H87.80569917a47.1327001 47.1327001 0 0 1-47.0541461-44.36758071L40.67299907 354.8909992a47.1327001 47.1327001 0 0 1 47.1327001-47.13270009h264.17878401l51.154691-230.16468448a47.1327001 47.1327001 0 0 1 53.52703592-36.32360185l2.71798522 0.5184597a47.1327001 47.1327001 0 0 1 35.78943074 56.2450226l-46.6142404 209.70909409h217.64309766zM645.25985456 402.0236993H427.60104551l-48.87660998 219.9526014h217.65880905l48.87660998-219.9526014z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_365 = [\n  _hoisted_265\n];\nfunction _sfc_render65(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock65(), _createElementBlock65(\"svg\", _hoisted_165, _hoisted_365);\n}\nvar basics_huatifuhao_default = /* @__PURE__ */ export_helper_default(basics_huatifuhao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render65], [\"__file\", \"basics-huatifuhao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-huiyuan.vue?vue&type=script&lang.ts\nvar basics_huiyuan_vue_vue_type_script_lang_default = {\n  name: \"BasicsHuiyuan\"\n};\n\n// src/components/basics-huiyuan.vue\nimport { createElementVNode as _createElementVNode66, openBlock as _openBlock66, createElementBlock as _createElementBlock66 } from \"vue\";\nvar _hoisted_166 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_266 = /* @__PURE__ */ _createElementVNode66(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M283.43713223 351.84943445L465.51798557 121.85448334a59.28580779 59.28580779 0 0 1 92.96402886 0l182.08085334 229.99495111 174.25294222-74.67463111a59.28580779 59.28580779 0 0 1 81.39814002 66.53117554l-101.76284444 490.30637113a127.90442667 127.90442667 0 0 1-125.24657778 101.90848H254.79547221a127.90442667 127.90442667 0 0 1-125.24657778-101.90848l-101.75070776-490.30637113a59.28580779 59.28580779 0 0 1 81.39813888-66.53117554l174.25294222 74.67463111zM512 180.46065778L334.10616889 405.16418333a59.28580779 59.28580779 0 0 1-69.83224889 17.69472l-159.90784-68.53366443 96.48355555 464.88082887a55.08664889 55.08664889 0 0 0 53.93370112 43.89698446h514.43332666a55.08664889 55.08664889 0 0 0 53.93370112-43.89698446l96.48355555-464.88082887-159.90784 68.53366443a59.28580779 59.28580779 0 0 1-69.83224889-17.69472L512 180.46065778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_366 = [\n  _hoisted_266\n];\nfunction _sfc_render66(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock66(), _createElementBlock66(\"svg\", _hoisted_166, _hoisted_366);\n}\nvar basics_huiyuan_default = /* @__PURE__ */ export_helper_default(basics_huiyuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render66], [\"__file\", \"basics-huiyuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-jianshao.vue?vue&type=script&lang.ts\nvar basics_jianshao_vue_vue_type_script_lang_default = {\n  name: \"BasicsJianshao\"\n};\n\n// src/components/basics-jianshao.vue\nimport { createElementVNode as _createElementVNode67, openBlock as _openBlock67, createElementBlock as _createElementBlock67 } from \"vue\";\nvar _hoisted_167 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_267 = /* @__PURE__ */ _createElementVNode67(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 62c247.424 0 448 200.576 448 448S759.424 958 512 958 64 757.424 64 510 264.576 62 512 62z m204 430H308c-11.046 0-20 8.954-20 20s8.954 20 20 20h408c11.046 0 20-8.954 20-20s-8.954-20-20-20z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_367 = [\n  _hoisted_267\n];\nfunction _sfc_render67(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock67(), _createElementBlock67(\"svg\", _hoisted_167, _hoisted_367);\n}\nvar basics_jianshao_default = /* @__PURE__ */ export_helper_default(basics_jianshao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render67], [\"__file\", \"basics-jianshao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-jianshao1.vue?vue&type=script&lang.ts\nvar basics_jianshao1_vue_vue_type_script_lang_default = {\n  name: \"BasicsJianshao1\"\n};\n\n// src/components/basics-jianshao1.vue\nimport { createElementVNode as _createElementVNode68, openBlock as _openBlock68, createElementBlock as _createElementBlock68 } from \"vue\";\nvar _hoisted_168 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_268 = /* @__PURE__ */ _createElementVNode68(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 997.45185223C243.8970789 997.45185223 26.54814777 780.1029211 26.54814777 512S243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223-217.34892999 485.45185223-485.45185223 485.45185223z m0-72.81777778c227.89537223 0 412.63407445-184.73870222 412.63407445-412.63407445S739.89537223 99.36592555 512 99.36592555 99.36592555 284.10462777 99.36592555 512s184.73870222 412.63407445 412.63407445 412.63407445zM329.95555555 475.59111111h364.0888889a36.40888889 36.40888889 0 0 1 0 72.81777778H329.95555555a36.40888889 36.40888889 0 0 1 0-72.81777778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_368 = [\n  _hoisted_268\n];\nfunction _sfc_render68(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock68(), _createElementBlock68(\"svg\", _hoisted_168, _hoisted_368);\n}\nvar basics_jianshao1_default = /* @__PURE__ */ export_helper_default(basics_jianshao1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render68], [\"__file\", \"basics-jianshao1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-jichushezhi.vue?vue&type=script&lang.ts\nvar basics_jichushezhi_vue_vue_type_script_lang_default = {\n  name: \"BasicsJichushezhi\"\n};\n\n// src/components/basics-jichushezhi.vue\nimport { createElementVNode as _createElementVNode69, openBlock as _openBlock69, createElementBlock as _createElementBlock69 } from \"vue\";\nvar _hoisted_169 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_269 = /* @__PURE__ */ _createElementVNode69(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M511.0290963 333.83917037c-99.39626667 0-180.70945185 81.31318518-180.70945185 180.70945185S411.63282963 695.25807408 511.0290963 695.25807408s180.70945185-81.31318518 180.70945185-180.70945186-81.31318518-180.70945185-180.70945185-180.70945185z m0 293.69837038c-63.2301037 0-112.98891852-49.75881482-112.98891852-112.98891853 0-63.2301037 49.75881482-112.98891852 112.98891852-112.98891852 63.2301037 0 112.98891852 49.75881482 112.98891852 112.98891852 0 63.2301037-49.75881482 112.98891852-112.98891852 112.98891853z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_369 = /* @__PURE__ */ _createElementVNode69(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M944.78032592 397.06927408H872.448s-8.98085925-4.49042963-8.98085925-8.98085926l-13.59265186-36.16616297v-8.98085926l49.75881481-49.75881481c13.59265185-13.59265185 18.08308148-27.06394075 18.08308148-45.14702223 0-18.08308148-4.49042963-31.67573333-18.08308148-45.14702222L822.81054815 126.06577778c-22.57351111-22.57351111-67.8418963-22.57351111-90.4154074 0l-49.75881483 49.75881481s-4.49042963 4.49042963-13.59265184 0l-36.16616297-13.59265184s-4.49042963-4.49042963-4.49042963-8.98085927v-72.33232593c0-36.16616297-27.06394075-63.2301037-63.2301037-63.2301037h-108.49848889c-36.16616297 0-63.2301037 27.06394075-63.23010371 63.2301037v72.33232593s-4.49042963 8.98085925-8.98085926 8.98085927L348.28136297 175.82459259h-8.98085927l-49.75881481-49.75881481c-13.59265185-13.59265185-27.06394075-18.08308148-45.14702222-18.08308148-18.08308148 0-31.67573333 4.49042963-45.14702222 18.08308148L122.42488889 202.88853333c-13.59265185 13.59265185-18.08308148 27.06394075-18.08308148 45.14702222 0 18.08308148 4.49042963 31.67573333 18.08308148 45.14702223l49.75881481 49.75881481s4.49042963 8.98085925 0 13.59265186L158.59105185 388.20977778s-4.49042963 4.49042963-8.98085926 4.49042963h-72.33232592c-36.16616297 4.49042963-63.2301037 31.67573333-63.2301037 67.84189629v112.98891852c0 36.16616297 27.06394075 63.2301037 63.2301037 63.2301037h72.33232592s8.98085925 4.49042963 8.98085926 8.98085926L172.1837037 681.90814815v8.98085926l-49.75881481 49.75881481c-13.59265185 13.59265185-18.08308148 27.06394075-18.08308148 45.14702223 0 18.08308148 4.49042963 31.67573333 18.08308148 45.14702222l76.82275556 76.82275555c22.57351111 22.57351111 67.8418963 22.57351111 90.4154074 0l49.75881482-49.75881481s4.49042963-4.49042963 13.59265185 0l36.16616296 13.59265184s4.49042963 4.49042963 4.49042963 8.98085927v72.33232593c0 31.67573333 27.06394075 58.73967408 63.23010371 58.73967407h112.98891851c36.16616297 0 63.2301037-27.06394075 63.2301037-63.2301037V876.08888889s4.49042963-8.98085925 8.98085927-8.98085926l36.16616295-13.59265185h8.98085927l49.75881481 49.75881481c22.57351111 22.57351111 67.8418963 22.57351111 90.41540742 0l76.82275555-76.82275556c13.59265185-13.59265185 18.08308148-27.06394075 18.08308148-45.14702221 0-18.08308148-4.49042963-31.67573333-18.08308148-45.14702223l-49.75881482-49.75881481s-4.49042963-8.98085925 0-13.59265186l13.59265185-36.16616295s4.49042963-4.49042963 8.98085926-4.49042964h72.33232593c36.16616297 0 63.2301037-27.06394075 63.2301037-63.2301037v-108.49848888c-4.49042963-36.28752592-31.67573333-63.35146667-67.8418963-63.35146667zM800.23703703 613.94488889l-13.59265185 31.67573333c-13.59265185 27.06394075-8.98085925 63.2301037 13.59265185 85.92497778l49.75881482 49.75881482-72.33232593 72.33232593-49.75881481-49.75881483c-22.57351111-22.57351111-63.2301037-27.06394075-85.92497778-13.59265184L610.304 803.87792592c-31.67573333 8.98085925-49.75881482 40.65659259-49.75881482 72.33232593V944.05214815h-99.39626666v-67.96325926c0-31.67573333-22.57351111-63.2301037-49.75881482-72.33232592L379.71437037 790.16391111c-27.06394075-13.59265185-67.8418963-8.98085925-85.80361482 13.59265186l-49.7588148 49.75881481-72.33232593-72.33232593 49.75881481-49.75881482c18.08308148-18.08308148 27.06394075-58.73967408 13.59265185-81.31318518l-13.59265185-31.67573333c-8.98085925-31.67573333-40.65659259-49.75881482-72.33232593-49.75881482h-67.84189629v-103.88669629h67.84189629c31.67573333 0 63.2301037-22.57351111 72.33232593-49.75881482l13.59265185-31.67573334c13.59265185-27.06394075 4.49042963-67.8418963-18.08308148-85.8036148l-45.14702222-49.75881482 72.33232592-72.33232593 49.75881482 49.75881482c18.08308148 18.08308148 63.2301037 22.57351111 81.31318518 13.59265185l31.67573333-13.59265185c31.67573333-8.98085925 54.24924445-40.65659259 54.24924445-72.33232593v-67.84189629h103.8866963v67.84189629c0 31.67573333 22.57351111 63.2301037 49.75881481 72.33232593l31.67573333 13.59265185c27.06394075 13.59265185 67.8418963 8.98085925 85.92497778-13.59265185l49.75881482-49.75881482 72.33232593 72.33232593-49.75881482 49.75881482c-22.57351111 18.08308148-31.67573333 58.73967408-18.08308148 81.31318518l13.59265185 31.67573334c8.98085925 31.67573333 40.65659259 49.75881482 72.33232592 49.75881481h67.8418963V564.18607408h-67.8418963c-31.7970963 0.12136297-63.47282963 22.69487408-72.45368889 49.75881481z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_48 = [\n  _hoisted_269,\n  _hoisted_369\n];\nfunction _sfc_render69(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock69(), _createElementBlock69(\"svg\", _hoisted_169, _hoisted_48);\n}\nvar basics_jichushezhi_default = /* @__PURE__ */ export_helper_default(basics_jichushezhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render69], [\"__file\", \"basics-jichushezhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-jichushuju.vue?vue&type=script&lang.ts\nvar basics_jichushuju_vue_vue_type_script_lang_default = {\n  name: \"BasicsJichushuju\"\n};\n\n// src/components/basics-jichushuju.vue\nimport { createElementVNode as _createElementVNode70, openBlock as _openBlock70, createElementBlock as _createElementBlock70 } from \"vue\";\nvar _hoisted_170 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_270 = /* @__PURE__ */ _createElementVNode70(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M267.31500615 866.18567111h-120.54740384c-30.5165822 0-55.23363292-24.71705073-55.23363292-55.23363291V299.48859733c0-30.5165822 24.71705073-55.23363292 55.23363292-55.23363291h120.54740384c30.5165822 0 55.23363292 24.71705073 55.23363293 55.23363291v511.46344087c0 30.3784981-24.85513482 55.23363292-55.23363293 55.23363291z m-92.93058739-82.85044938h65.31377093V327.10541379h-65.31377093v456.22980794z m687.93489804 82.85044938h-120.54740385c-30.5165822 0-55.23363292-24.71705073-55.23363292-55.23363291V299.48859733c0-30.5165822 24.71705073-55.23363292 55.23363292-55.23363291h120.54740385c30.5165822 0 55.23363292 24.71705073 55.23363293 55.23363291v511.46344087c0 30.3784981-24.71705073 55.23363292-55.23363293 55.23363291z m-92.79250331-82.85044938h65.31377094V327.10541379h-65.31377094v456.22980794z m-204.64060996 77.32708609H444.33879967c-30.5165822 0-55.23363292-24.71705073-55.23363292-55.23363292V59.22229413c0-30.5165822 24.71705073-55.23363292 55.23363292-55.23363294h120.54740386c30.5165822 0 55.23363292 24.71705073 55.23363292 55.23363294v746.20638077c0 30.3784981-24.85513482 55.23363292-55.23363292 55.23363292z m-92.93058739-82.85044939h65.31377092V86.83911058H471.95561614v690.97274785z m456.64406016 224.11046558h-836.78953875c-22.92195766 0-41.42522469-18.50326702-41.42522469-41.42522469s18.50326702-41.42522469 41.42522469-41.42522469h836.92762284c22.92195766 0 41.42522469 18.50326702 41.4252247 41.42522469s-18.64135111 41.42522469-41.56330879 41.42522469z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_370 = [\n  _hoisted_270\n];\nfunction _sfc_render70(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock70(), _createElementBlock70(\"svg\", _hoisted_170, _hoisted_370);\n}\nvar basics_jichushuju_default = /* @__PURE__ */ export_helper_default(basics_jichushuju_vue_vue_type_script_lang_default, [[\"render\", _sfc_render70], [\"__file\", \"basics-jichushuju.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-jigou.vue?vue&type=script&lang.ts\nvar basics_jigou_vue_vue_type_script_lang_default = {\n  name: \"BasicsJigou\"\n};\n\n// src/components/basics-jigou.vue\nimport { createElementVNode as _createElementVNode71, openBlock as _openBlock71, createElementBlock as _createElementBlock71 } from \"vue\";\nvar _hoisted_171 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_271 = /* @__PURE__ */ _createElementVNode71(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M50.82074075 958.56351763c-13.40575289 0-24.27259259-10.8668397-24.2725926-24.2725926 0-13.40453925 10.8668397-24.27259259 24.2725926-24.27259258h64.32237036V259.92912592c0-31.40023941 20.12804741-59.26396208 49.938432-69.12955733l367.72977778-121.70763377c38.17836089-12.6363117 79.37259141 8.07063703 92.00890311 46.25021155A72.81777778 72.81777778 0 0 1 628.50844445 138.22149215v771.7968403h23.05896296v-483.0245926l218.17177126 124.6701037A72.81777778 72.81777778 0 0 1 906.42962963 614.88787911v295.13045334h66.74962962c13.40575289 0 24.27259259 10.86805333 24.2725926 24.27259258 0 13.40575289-10.8668397 24.27259259-24.2725926 24.2725926H50.82074075z m411.42044443-287.63022222H282.624c-13.40575289 0-24.27259259 10.86805333-24.27259259 24.27259259 0 13.26497185 10.64231822 24.04564385 23.855104 24.2689517l0.41748859 0.00364089h179.61718518c13.40575289 0 24.27259259-10.8668397 24.2725926-24.27259259 0-13.40453925-10.8668397-24.27259259-24.2725926-24.27259259z m377.43881482 0H718.31703703c-13.40575289 0-24.27259259 10.86805333-24.27259258 24.27259259 0 13.26497185 10.64231822 24.04564385 23.855104 24.2689517l0.41748858 0.00364089h121.36296297c13.40575289 0 24.27259259-10.8668397 24.27259259-24.27259259 0-13.40453925-10.8668397-24.27259259-24.27259259-24.27259259z m-377.43881482-145.63555556H282.624c-13.40575289 0-24.27259259 10.86805333-24.27259259 24.2725926 0 13.26497185 10.64231822 24.04564385 23.855104 24.2689517l0.41748859 0.00364088h179.61718518c13.40575289 0 24.27259259-10.8668397 24.2725926-24.27259258 0-13.40453925-10.8668397-24.27259259-24.2725926-24.2725926z m0-145.63555555H282.624c-13.40575289 0-24.27259259 10.86805333-24.27259259 24.27259259 0 13.26497185 10.64231822 24.04564385 23.855104 24.2689517l0.41748859 0.00364089h179.61718518c13.40575289 0 24.27259259-10.8668397 24.2725926-24.27259259 0-13.40453925-10.8668397-24.27259259-24.2725926-24.27259259z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_371 = [\n  _hoisted_271\n];\nfunction _sfc_render71(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock71(), _createElementBlock71(\"svg\", _hoisted_171, _hoisted_371);\n}\nvar basics_jigou_default = /* @__PURE__ */ export_helper_default(basics_jigou_vue_vue_type_script_lang_default, [[\"render\", _sfc_render71], [\"__file\", \"basics-jigou.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-jigou2.vue?vue&type=script&lang.ts\nvar basics_jigou2_vue_vue_type_script_lang_default = {\n  name: \"BasicsJigou2\"\n};\n\n// src/components/basics-jigou2.vue\nimport { createElementVNode as _createElementVNode72, openBlock as _openBlock72, createElementBlock as _createElementBlock72 } from \"vue\";\nvar _hoisted_172 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_272 = /* @__PURE__ */ _createElementVNode72(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M624.820224 115.34214637A72.81777778 72.81777778 0 0 1 628.50844445 138.22149215V387.34810075l245.49542873 163.6640237A72.81777778 72.81777778 0 0 1 906.42962963 611.60015645v298.418176h66.74962962c13.40575289 0 24.27259259 10.86805333 24.2725926 24.27259258 0 13.40575289-10.8668397 24.27259259-24.2725926 24.2725926H50.82074075c-13.40575289 0-24.27259259-10.8668397-24.2725926-24.2725926 0-13.40453925 10.8668397-24.27259259 24.2725926-24.27259258h64.32237036V259.92912592c0-31.40023941 20.12804741-59.26396208 49.938432-69.12955733l367.72977778-121.70763377c38.17836089-12.6363117 79.37259141 8.07063703 92.00890311 46.25021155z m-76.34944-0.29369837l-0.40656592 0.12985837-367.72977778 121.70763378a24.27259259 24.27259259 0 0 0-16.64128948 22.57472474l-0.00485452 0.46846103v650.08920653h415.06133333v-555.84237037l1.21362962 0.80949095V138.22149215a24.27259259 24.27259259 0 0 0-1.03401243-7.00871112l-0.19418074-0.61773748c-4.16881778-12.59140741-17.65345659-19.48118282-30.26428208-15.54659555zM628.50844445 445.69334518v464.32498727h229.376V611.60015645a24.27259259 24.27259259 0 0 0-10.40687408-19.92173037l-0.4017114-0.2742803L628.50844445 445.69334518zM462.24118518 670.93329541c13.40575289 0 24.27259259 10.86805333 24.2725926 24.27259259 0 13.40575289-10.8668397 24.27259259-24.2725926 24.27259259H282.624c-13.40575289 0-24.27259259-10.8668397-24.27259259-24.27259259 0-13.40453925 10.8668397-24.27259259 24.27259259-24.27259259h179.61718518z m341.02992593 0c13.40575289 0 24.27259259 10.86805333 24.27259259 24.27259259 0 13.40575289-10.8668397 24.27259259-24.27259259 24.27259259H681.90814815c-13.40575289 0-24.27259259-10.8668397-24.2725926-24.27259259 0-13.40453925 10.8668397-24.27259259 24.2725926-24.27259259h121.36296296z m-341.02992593-145.63555556c13.40575289 0 24.27259259 10.86805333 24.2725926 24.2725926 0 13.40575289-10.8668397 24.27259259-24.2725926 24.27259258H282.624c-13.40575289 0-24.27259259-10.8668397-24.27259259-24.27259258 0-13.40453925 10.8668397-24.27259259 24.27259259-24.2725926h179.61718518z m0-145.63555555c13.40575289 0 24.27259259 10.86805333 24.2725926 24.27259259 0 13.40575289-10.8668397 24.27259259-24.2725926 24.27259259H282.624c-13.40575289 0-24.27259259-10.8668397-24.27259259-24.27259259 0-13.40453925 10.8668397-24.27259259 24.27259259-24.27259259h179.61718518z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_372 = [\n  _hoisted_272\n];\nfunction _sfc_render72(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock72(), _createElementBlock72(\"svg\", _hoisted_172, _hoisted_372);\n}\nvar basics_jigou2_default = /* @__PURE__ */ export_helper_default(basics_jigou2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render72], [\"__file\", \"basics-jigou2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-jiju.vue?vue&type=script&lang.ts\nvar basics_jiju_vue_vue_type_script_lang_default = {\n  name: \"BasicsJiju\"\n};\n\n// src/components/basics-jiju.vue\nimport { createElementVNode as _createElementVNode73, openBlock as _openBlock73, createElementBlock as _createElementBlock73 } from \"vue\";\nvar _hoisted_173 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_273 = /* @__PURE__ */ _createElementVNode73(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M803.27111111 26.54814777c73.728 0 133.49925888 59.77125888 133.49925888 133.49926002v703.90518442c0 73.728-59.77125888 133.49925888-133.49925888 133.49926002H220.72888889c-73.728 0-133.49925888-59.77125888-133.49925888-133.49926002V160.04740779c0-73.728 59.77125888-133.49925888 133.49925888-133.49926002h582.54222222z m0 72.81777778H220.72888889a60.6814811 60.6814811 0 0 0-60.6814811 60.68148224v703.90518442a60.6814811 60.6814811 0 0 0 60.6814811 60.68148224h582.54222222a60.6814811 60.6814811 0 0 0 60.6814811-60.68148224V160.04740779a60.6814811 60.6814811 0 0 0-60.6814811-60.68148224zM621.22666667 754.72592555a36.40888889 36.40888889 0 0 1 0 72.81777778H402.77333333a36.40888889 36.40888889 0 0 1 0-72.81777778z m84.95407445-582.54222222a84.95407445 84.95407445 0 0 1 84.95407331 84.95407445v315.54370332a84.95407445 84.95407445 0 0 1-84.95407331 84.95407445H317.81925888a84.95407445 84.95407445 0 0 1-84.95407331-84.95407445V257.13777778a84.95407445 84.95407445 0 0 1 84.95407331-84.95407445h388.36148224z m0 72.81777777H317.81925888a12.13629667 12.13629667 0 0 0-12.13629554 12.13629668v315.54370332a12.13629667 12.13629667 0 0 0 12.13629554 12.13629668h388.36148224a12.13629667 12.13629667 0 0 0 12.13629554-12.13629668V257.13777778a12.13629667 12.13629667 0 0 0-12.13629554-12.13629668z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_373 = [\n  _hoisted_273\n];\nfunction _sfc_render73(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock73(), _createElementBlock73(\"svg\", _hoisted_173, _hoisted_373);\n}\nvar basics_jiju_default = /* @__PURE__ */ export_helper_default(basics_jiju_vue_vue_type_script_lang_default, [[\"render\", _sfc_render73], [\"__file\", \"basics-jiju.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-jingying.vue?vue&type=script&lang.ts\nvar basics_jingying_vue_vue_type_script_lang_default = {\n  name: \"BasicsJingying\"\n};\n\n// src/components/basics-jingying.vue\nimport { createElementVNode as _createElementVNode74, openBlock as _openBlock74, createElementBlock as _createElementBlock74 } from \"vue\";\nvar _hoisted_174 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_274 = /* @__PURE__ */ _createElementVNode74(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M898.84444445 56.88888889c37.70254222 0 68.26666667 30.56412445 68.26666666 68.26666666v773.6888889c0 37.70254222-30.56412445 68.26666667-68.26666666 68.26666666H125.15555555c-37.70254222 0-68.26666667-30.56412445-68.26666666-68.26666666V125.15555555c0-37.70254222 30.56412445-68.26666667 68.26666666-68.26666666h773.6888889zM341.33333333 546.13333333c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555556v150.18666666c0 12.56789333 10.18766222 22.75555555 22.75555555 22.75555556s22.75555555-10.18766222 22.75555556-22.75555556V568.88888889c0-12.56789333-10.18766222-22.75555555-22.75555556-22.75555556z m170.66666667-200.24888888c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555555v350.43555555c0 12.56789333 10.18766222 22.75555555 22.75555555 22.75555556s22.75555555-10.18766222 22.75555555-22.75555556V368.64c0-12.56789333-10.18766222-22.75555555-22.75555555-22.75555555z m170.66666667 129.70666666c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555556v220.72888888c0 12.56789333 10.18766222 22.75555555 22.75555556 22.75555556s22.75555555-10.18766222 22.75555555-22.75555556V498.34666667c0-12.56789333-10.18766222-22.75555555-22.75555555-22.75555556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_374 = [\n  _hoisted_274\n];\nfunction _sfc_render74(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock74(), _createElementBlock74(\"svg\", _hoisted_174, _hoisted_374);\n}\nvar basics_jingying_default = /* @__PURE__ */ export_helper_default(basics_jingying_vue_vue_type_script_lang_default, [[\"render\", _sfc_render74], [\"__file\", \"basics-jingying.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-jisuanqi.vue?vue&type=script&lang.ts\nvar basics_jisuanqi_vue_vue_type_script_lang_default = {\n  name: \"BasicsJisuanqi\"\n};\n\n// src/components/basics-jisuanqi.vue\nimport { createElementVNode as _createElementVNode75, openBlock as _openBlock75, createElementBlock as _createElementBlock75 } from \"vue\";\nvar _hoisted_175 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_275 = /* @__PURE__ */ _createElementVNode75(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M414.15111111 56.88888889c37.70254222 0 68.26666667 30.56412445 68.26666667 68.26666666v288.99555556c0 37.70254222-30.56412445 68.26666667-68.26666667 68.26666667H125.15555555c-37.70254222 0-68.26666667-30.56412445-68.26666666-68.26666667V125.15555555c0-37.70254222 30.56412445-68.26666667 68.26666666-68.26666666h288.99555556z m-144.49777778 105.81333333c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555556v61.44h-61.44c-12.43591111 0-22.54279111 9.97717333-22.75214223 22.36416L162.70222222 269.65333333c0 12.56789333 10.18766222 22.75555555 22.75555556 22.75555556h61.44v61.44c0 12.43591111 9.97717333 22.54279111 22.36416 22.75214222L269.65333333 376.60444445c12.56789333 0 22.75555555-10.18766222 22.75555556-22.75555556v-61.44h61.44c12.43591111 0 22.54279111-9.97717333 22.75214222-22.36416L376.60444445 269.65333333c0-12.56789333-10.18766222-22.75555555-22.75555556-22.75555555h-61.44v-61.44c0-12.43591111-9.97717333-22.54279111-22.36416-22.75214223z m629.19111112-105.81333333c37.70254222 0 68.26666667 30.56412445 68.26666666 68.26666666v288.99555556c0 37.70254222-30.56412445 68.26666667-68.26666666 68.26666667H609.84888889c-37.70254222 0-68.26666667-30.56412445-68.26666667-68.26666667V125.15555555c0-37.70254222 30.56412445-68.26666667 68.26666667-68.26666666h288.99555556z m-60.30222223 190.00888889H670.15111111c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555555s10.18766222 22.75555555 22.75555556 22.75555556h168.39111111c12.56789333 0 22.75555555-10.18766222 22.75555556-22.75555556s-10.18766222-22.75555555-22.75555556-22.75555555zM414.15111111 542.72c37.70254222 0 68.26666667 30.56412445 68.26666667 68.26666667v288.99555555c0 37.70254222-30.56412445 68.26666667-68.26666667 68.26666667H125.15555555c-37.70254222 0-68.26666667-30.56412445-68.26666666-68.26666667V610.98666667c0-37.70254222 30.56412445-68.26666667 68.26666666-68.26666667h288.99555556zM226.20842667 679.85863111c-8.88604445-8.88604445-23.29486222-8.88604445-32.18090667 0-8.88604445 8.88604445-8.88604445 23.29486222 0 32.18090667L237.47242667 755.48444445l-43.44490667 43.44490666c-8.88604445 8.88604445-8.88604445 23.29486222 0 32.18090667 8.88604445 8.88604445 23.29486222 8.88604445 32.18090667 0L269.65333333 787.66535111l43.44490667 43.44490667c8.88604445 8.88604445 23.29486222 8.88604445 32.18090667 0 8.88604445-8.88604445 8.88604445-23.29486222 0-32.18090667L301.83424 755.48444445l43.44490667-43.44490667c8.88604445-8.88604445 8.88604445-23.29486222 0-32.18090667-8.88604445-8.88604445-23.29486222-8.88604445-32.18090667 0L269.65333333 723.30353778zM898.84444445 542.72c37.70254222 0 68.26666667 30.56412445 68.26666666 68.26666667v288.99555555c0 37.70254222-30.56412445 68.26666667-68.26666666 68.26666667H609.84888889c-37.70254222 0-68.26666667-30.56412445-68.26666667-68.26666667V610.98666667c0-37.70254222 30.56412445-68.26666667 68.26666667-68.26666667h288.99555556z m-60.30222223 246.89777778H670.15111111c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555555s10.18766222 22.75555555 22.75555556 22.75555556h168.39111111c12.56789333 0 22.75555555-10.18766222 22.75555556-22.75555556s-10.18766222-22.75555555-22.75555556-22.75555555z m0-113.77777778H670.15111111c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555555s10.18766222 22.75555555 22.75555556 22.75555556h168.39111111c12.56789333 0 22.75555555-10.18766222 22.75555556-22.75555556s-10.18766222-22.75555555-22.75555556-22.75555555z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_375 = [\n  _hoisted_275\n];\nfunction _sfc_render75(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock75(), _createElementBlock75(\"svg\", _hoisted_175, _hoisted_375);\n}\nvar basics_jisuanqi_default = /* @__PURE__ */ export_helper_default(basics_jisuanqi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render75], [\"__file\", \"basics-jisuanqi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-juzhong.vue?vue&type=script&lang.ts\nvar basics_juzhong_vue_vue_type_script_lang_default = {\n  name: \"BasicsJuzhong\"\n};\n\n// src/components/basics-juzhong.vue\nimport { createElementVNode as _createElementVNode76, openBlock as _openBlock76, createElementBlock as _createElementBlock76 } from \"vue\";\nvar _hoisted_176 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_276 = /* @__PURE__ */ _createElementVNode76(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M102.4 170.12053333q-28.39893333 0-48.05973333-20.20693333t-19.6608-48.60586667 19.6608-48.05973333 48.05973333-19.6608l819.2 0q28.39893333 0 48.05973333 19.6608t19.6608 48.05973333-19.6608 48.60586667-48.05973333 20.20693333l-819.2 0zM785.06666667 306.65386667q28.39893333 0 48.05973333 19.6608t19.6608 48.05973333-19.6608 48.60586667-48.05973333 20.20693333l-546.13333334 0q-28.39893333 0-48.05973333-20.20693333t-19.6608-48.60586667 19.6608-48.05973333 48.05973333-19.6608l546.13333334 0zM921.6 578.62826667q28.39893333 0 48.05973333 20.20693333t19.6608 48.60586667-19.6608 48.05973333-48.05973333 19.6608l-819.2 0q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973333 19.6608-48.60586667 48.05973333-20.20693333l819.2 0zM785.06666667 851.69493333q28.39893333 0 48.05973333 20.20693334t19.6608 48.60586666-19.6608 48.05973334-48.05973333 19.6608l-546.13333334 0q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973334 19.6608-48.60586666 48.05973333-20.20693334l546.13333334 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_376 = [\n  _hoisted_276\n];\nfunction _sfc_render76(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock76(), _createElementBlock76(\"svg\", _hoisted_176, _hoisted_376);\n}\nvar basics_juzhong_default = /* @__PURE__ */ export_helper_default(basics_juzhong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render76], [\"__file\", \"basics-juzhong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-juzuo.vue?vue&type=script&lang.ts\nvar basics_juzuo_vue_vue_type_script_lang_default = {\n  name: \"BasicsJuzuo\"\n};\n\n// src/components/basics-juzuo.vue\nimport { createElementVNode as _createElementVNode77, openBlock as _openBlock77, createElementBlock as _createElementBlock77 } from \"vue\";\nvar _hoisted_177 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_277 = /* @__PURE__ */ _createElementVNode77(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M921.6 33.5872q28.39893333 0 48.05973333 19.6608t19.6608 48.05973333-19.6608 48.05973334-48.05973333 19.6608l-751.47946667 0q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973334 19.6608-48.05973333 48.05973333-19.6608l751.47946667 0zM170.12053333 443.1872q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973333 19.6608-49.152 48.05973333-20.75306667l477.32053334 0q28.39893333 0 48.05973333 20.75306667t19.6608 49.152-19.6608 48.05973333-48.05973333 19.6608l-477.32053334 0zM852.7872 579.72053333q29.4912 0 49.152 19.6608t19.6608 48.05973334-19.6608 48.05973333-49.152 19.6608l-682.66666667 0q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973333 19.6608-48.05973334 48.05973333-19.6608l682.66666667 0zM579.72053333 852.7872q28.39893333 0 48.05973334 20.20693333t19.6608 48.60586667-19.6608 48.05973333-48.05973334 19.6608l-409.6 0q-28.39893333 0-48.05973333-19.6608t-19.6608-48.05973333 19.6608-48.60586667 48.05973333-20.20693333l409.6 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_377 = [\n  _hoisted_277\n];\nfunction _sfc_render77(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock77(), _createElementBlock77(\"svg\", _hoisted_177, _hoisted_377);\n}\nvar basics_juzuo_default = /* @__PURE__ */ export_helper_default(basics_juzuo_vue_vue_type_script_lang_default, [[\"render\", _sfc_render77], [\"__file\", \"basics-juzuo.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-kabao.vue?vue&type=script&lang.ts\nvar basics_kabao_vue_vue_type_script_lang_default = {\n  name: \"BasicsKabao\"\n};\n\n// src/components/basics-kabao.vue\nimport { createElementVNode as _createElementVNode78, openBlock as _openBlock78, createElementBlock as _createElementBlock78 } from \"vue\";\nvar _hoisted_178 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_278 = /* @__PURE__ */ _createElementVNode78(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M900.36148148 369.60079053H123.63851852v194.18074074h258.90765392a38.83614815 38.83614815 0 0 1 38.83614815 38.83614814 90.61767941 90.61767941 0 0 0 181.23535882 0 38.83614815 38.83614815 0 0 1 38.83614815-38.83614814h258.90765392V369.60079053z m0-77.6722963V162.47466667a64.72691317 64.72691317 0 0 0-64.72691317-64.72691318H188.36543169a64.72691317 64.72691317 0 0 0-64.72691317 64.72691318v129.45382756h776.72296296z m0 349.52533333H675.78498253C658.25693392 715.66970668 591.57526755 770.90765392 512 770.90765392c-79.57526755 0-146.25693392-55.23794845-163.78498253-129.45382636H123.63851852v220.07150577a64.72691317 64.72691317 0 0 0 64.72691317 64.72691318h647.26913662a64.72691317 64.72691317 0 0 0 64.72691317-64.72691318V641.45382756zM188.36543169 20.07545719h647.26913662c78.6432 0 142.39920947 63.75600947 142.39920947 142.39920948v699.05066666c0 78.6432-63.75600947 142.39920947-142.39920947 142.39920948H188.36543169c-78.6432 0-142.39920947-63.75600947-142.39920947-142.39920948V162.47466667c0-78.6432 63.75600947-142.39920947 142.39920947-142.39920948z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_378 = [\n  _hoisted_278\n];\nfunction _sfc_render78(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock78(), _createElementBlock78(\"svg\", _hoisted_178, _hoisted_378);\n}\nvar basics_kabao_default = /* @__PURE__ */ export_helper_default(basics_kabao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render78], [\"__file\", \"basics-kabao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-kehu.vue?vue&type=script&lang.ts\nvar basics_kehu_vue_vue_type_script_lang_default = {\n  name: \"BasicsKehu\"\n};\n\n// src/components/basics-kehu.vue\nimport { createElementVNode as _createElementVNode79, openBlock as _openBlock79, createElementBlock as _createElementBlock79 } from \"vue\";\nvar _hoisted_179 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_279 = /* @__PURE__ */ _createElementVNode79(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M434.06222222 111.50222222C558.79566222 111.50222222 659.91111111 212.61767111 659.91111111 337.35111111c0 86.50979555-48.64 161.65888-120.06286222 199.59239111l-2.15608889 1.12981333 4.77411555 1.39946667C699.92561778 586.752 814.64888889 732.81422222 814.64888889 905.67111111c0 1.90008889-0.01365333 3.79676445-0.04096 5.69002667L50.10773333 911.36l-0.04551111-5.68888889c0-175.40778667 118.13432889-323.22332445 279.18108445-368.22584889C257.29024 499.68583111 208.21333333 424.25002667 208.21333333 337.35111111 208.21333333 212.61767111 309.32878222 111.50222222 434.06222222 111.50222222zM632.60444445 134.25777778c111.85152 0 202.52444445 90.67292445 202.52444444 202.52444444 0 77.25397333-43.25489778 144.40448-106.86691556 178.55488l-1.91829333 1.01489778 4.26666667 1.26293333C871.43310222 560.32938667 973.93777778 691.17041778 973.93777778 845.95256889c0 1.70439111-0.01137778 3.40650667-0.03754667 5.10520889l-112.85731556-0.00227556c-21.22069333-141.83765333-110.97656889-261.26791111-234.48803555-323.51232l-3.74784-1.86709333 1.47342222-1.47797334C673.04106667 474.87431111 703.14666667 407.06844445 703.14666667 332.23111111c0-77.67608889-32.43349333-147.77912889-84.49706667-197.50229333 4.60686222-0.31175111 9.26151111-0.47104 13.95484445-0.47104z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_379 = [\n  _hoisted_279\n];\nfunction _sfc_render79(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock79(), _createElementBlock79(\"svg\", _hoisted_179, _hoisted_379);\n}\nvar basics_kehu_default = /* @__PURE__ */ export_helper_default(basics_kehu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render79], [\"__file\", \"basics-kehu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-kehu2.vue?vue&type=script&lang.ts\nvar basics_kehu2_vue_vue_type_script_lang_default = {\n  name: \"BasicsKehu2\"\n};\n\n// src/components/basics-kehu2.vue\nimport { createElementVNode as _createElementVNode80, openBlock as _openBlock80, createElementBlock as _createElementBlock80 } from \"vue\";\nvar _hoisted_180 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_280 = /* @__PURE__ */ _createElementVNode80(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M682.59506252 616.72410075c89.63989808 72.87360475 145.11126755 180.34050845 150.98887585 297.62567584 0.59103763 11.7758483-8.454144 21.80164267-20.20086519 22.3926803-11.74672118 0.59225125-21.74824297-8.4747757-22.33806696-20.24941037-5.26472533-105.05784889-54.9397997-201.29503763-135.2784403-266.60651615-9.13499022-7.42741333-10.53430518-20.87078875-3.12630992-30.02883792 7.40799525-9.15683555 20.8198163-10.56100503 29.95480652-3.1335917zM426.43911111 86.016C559.48811378 86.016 667.34459259 193.87247882 667.34459259 326.92148148c0 132.39971082-106.80790282 239.85205097-238.96003318 240.8981997-0.91629037 0.12985837-1.85078518 0.20753067-2.80105719 0.22330785l-0.36651614 0.00364089c-193.27051852 0-352.67591585 150.44638341-365.46999941 342.30302341l-0.34224356 5.82542222c-0.60074667 11.7758483-10.60955022 20.83316622-22.35505778 20.23120593-11.74672118-0.60074667-20.78219378-10.63382282-20.18266074-22.40967111 9.04275437-177.4180883 130.2528-324.19809659 293.05029216-372.10491259l4.92733628-1.41630578-2.27919644-1.20756148C236.94662163 498.630656 185.53362963 418.77989452 185.53362963 326.92148148 185.53362963 193.87247882 293.39010845 86.016 426.43911111 86.016z m444.7394323 502.12590933c80.71607941 65.56512711 130.66543408 162.25257245 135.95807289 267.77524149 0.53156978 10.59498667-7.61309867 19.61468208-18.18988089 20.14625185-10.57799585 0.53399703-19.5831277-7.62402133-20.11469749-18.219008-4.74043733-94.51990282-49.46997097-181.10509511-121.81200592-239.86661452-8.224768-6.68224475-9.48572918-18.77727763-2.81440711-27.01660918s18.74693689-9.50150637 26.97291852-2.81926164zM640.03792592 110.28859259c119.64324978 0 216.63288889 96.98963911 216.6328889 216.63288889 0 107.86982875-78.84102163 197.32404148-182.04201719 213.88644504l-0.00121363-38.9490157c81.91271822-16.10365155 143.70102992-88.30369185 143.70102992-174.93742934 0-87.11676208-62.48008059-159.63962785-145.07485867-175.20200059a295.2518163 295.2518163 0 0 0-37.5812551-41.38477037A201.47465482 201.47465482 0 0 1 640.03792592 110.28859259z m-213.59881481 18.36585719c-109.49973333 0-198.2670317 88.76729837-198.2670317 198.2670317S316.93937778 525.18851318 426.43911111 525.18851318 624.70614282 436.42121482 624.70614282 326.92148148 535.93884445 128.65444978 426.43911111 128.65444978z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_380 = [\n  _hoisted_280\n];\nfunction _sfc_render80(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock80(), _createElementBlock80(\"svg\", _hoisted_180, _hoisted_380);\n}\nvar basics_kehu2_default = /* @__PURE__ */ export_helper_default(basics_kehu2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render80], [\"__file\", \"basics-kehu2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-lajitong.vue?vue&type=script&lang.ts\nvar basics_lajitong_vue_vue_type_script_lang_default = {\n  name: \"BasicsLajitong\"\n};\n\n// src/components/basics-lajitong.vue\nimport { createElementVNode as _createElementVNode81, openBlock as _openBlock81, createElementBlock as _createElementBlock81 } from \"vue\";\nvar _hoisted_181 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_281 = /* @__PURE__ */ _createElementVNode81(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M607.57333333 58.02666667c28.90524445 0 52.33777778 23.43253333 52.33777778 52.33777778v60.30222222h284.44444444c12.56789333 0 22.75555555 10.18766222 22.75555556 22.75555555s-10.18766222 22.75555555-22.75555556 22.75555556H79.64444445c-12.56789333 0-22.75555555-10.18766222-22.75555556-22.75555556s10.18766222-22.75555555 22.75555556-22.75555555h284.44444444v-60.30222222c0-28.90524445 23.43253333-52.33777778 52.33777778-52.33777778h191.14666666z m234.38222222 219.59111111c12.56789333 0 22.75555555 10.18766222 22.75555556 22.75555555v596.19555556c0 37.70254222-30.56412445 68.26666667-68.26666666 68.26666666H227.55555555c-37.70254222 0-68.26666667-30.56412445-68.26666666-68.26666666V300.37333333c0-12.56789333 10.18766222-22.75555555 22.75555556-22.75555555h659.9111111zM341.33333333 405.04888889c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555556v386.84444444c0 12.56789333 10.18766222 22.75555555 22.75555555 22.75555556s22.75555555-10.18766222 22.75555556-22.75555556V427.80444445c0-12.56789333-10.18766222-22.75555555-22.75555556-22.75555556z m170.66666667 0c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555556v386.84444444c0 12.56789333 10.18766222 22.75555555 22.75555555 22.75555556s22.75555555-10.18766222 22.75555555-22.75555556V427.80444445c0-12.56789333-10.18766222-22.75555555-22.75555555-22.75555556z m170.66666667 0c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555556v386.84444444c0 12.56789333 10.18766222 22.75555555 22.75555556 22.75555556s22.75555555-10.18766222 22.75555555-22.75555556V427.80444445c0-12.56789333-10.18766222-22.75555555-22.75555555-22.75555556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_381 = [\n  _hoisted_281\n];\nfunction _sfc_render81(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock81(), _createElementBlock81(\"svg\", _hoisted_181, _hoisted_381);\n}\nvar basics_lajitong_default = /* @__PURE__ */ export_helper_default(basics_lajitong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render81], [\"__file\", \"basics-lajitong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-lianjie.vue?vue&type=script&lang.ts\nvar basics_lianjie_vue_vue_type_script_lang_default = {\n  name: \"BasicsLianjie\"\n};\n\n// src/components/basics-lianjie.vue\nimport { createElementVNode as _createElementVNode82, openBlock as _openBlock82, createElementBlock as _createElementBlock82 } from \"vue\";\nvar _hoisted_182 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_282 = /* @__PURE__ */ _createElementVNode82(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M433.15655111 483.03672889l-74.82140444 74.82140444c-4.36906667 4.36906667-4.44302222 11.40394667-0.22300445 15.86289778l0.22300445 0.22755556 91.71626666 91.71626666c4.36792889 4.36906667 11.40394667 4.44302222 15.86176 0.22300445l0.22755556-0.22300445 74.82254222-74.82026666 82.86663111 82.86549333c13.33020445 13.33020445 13.33020445 34.94229333 0 48.27249778L402.58332445 943.22801778c-13.32906667 13.33020445-34.94115555 13.33020445-48.27136 0L80.77198222 669.68803555c-13.33020445-13.33020445-13.33020445-34.94115555 0-48.27136l221.24544-221.24657777c13.33020445-13.33020445 34.94115555-13.33020445 48.27249778 0l82.86663111 82.86663111z m175.38730667-27.35331556c4.44302222 4.44302222 4.44302222 11.64629333 0 16.09045334L471.77386667 608.54385778c-4.44416 4.44302222-11.64743111 4.44302222-16.09045334 0l-40.22727111-40.22727111c-4.44302222-4.44302222-4.44302222-11.64629333 0-16.09045334l136.76999111-136.76999111c4.44416-4.44302222 11.64743111-4.44302222 16.09045334 0l40.22727111 40.22727111z m334.68416-101.37144888c13.33020445 13.33020445 13.33020445 34.94115555 0 48.27136L721.98257778 623.82990222c-13.33020445 13.33020445-34.94115555 13.33020445-48.27249778 0l-82.86663111-82.86663111 74.82140444-74.82140444c4.36906667-4.36906667 4.44302222-11.40394667 0.22300445-15.86289778l-0.22300445-0.22755556-91.71626666-91.71626666c-4.36792889-4.36906667-11.40394667-4.44302222-15.86176-0.22300445l-0.22755556 0.22300445-74.82254222 74.82026666-82.86663111-82.86549333c-13.33020445-13.33020445-13.33020445-34.94229333 0-48.27249778l221.24657777-221.24544c13.32906667-13.33020445 34.94115555-13.33020445 48.27136 0l273.53998223 273.53998223z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_382 = [\n  _hoisted_282\n];\nfunction _sfc_render82(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock82(), _createElementBlock82(\"svg\", _hoisted_182, _hoisted_382);\n}\nvar basics_lianjie_default = /* @__PURE__ */ export_helper_default(basics_lianjie_vue_vue_type_script_lang_default, [[\"render\", _sfc_render82], [\"__file\", \"basics-lianjie.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-lihe.vue?vue&type=script&lang.ts\nvar basics_lihe_vue_vue_type_script_lang_default = {\n  name: \"BasicsLihe\"\n};\n\n// src/components/basics-lihe.vue\nimport { createElementVNode as _createElementVNode83, openBlock as _openBlock83, createElementBlock as _createElementBlock83 } from \"vue\";\nvar _hoisted_183 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_283 = /* @__PURE__ */ _createElementVNode83(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M565.42397667 108.49242112a115.29481443 115.29481443 0 1 1 199.69061888 115.29481443l-21.69969777 37.58611002H912.49777778a84.95407445 84.95407445 0 0 1 84.90552889 82.0413622l0.04854556 2.91271111v97.09037113a84.95407445 84.95407445 0 0 1-84.95407445 84.95407332h-12.13629668v327.68c0 73.74013667-59.77125888 133.49925888-133.49925888 133.49926001H281.41036999c-73.728 0-133.49925888-59.75912334-133.49925888-133.49926001v-327.68h-12.13629668a84.95407445 84.95407445 0 0 1-84.90552888-82.02922667L50.82074112 443.42992555v-97.09037a84.95407445 84.95407445 0 0 1 84.95407331-84.95407445l161.70401224-0.01213553-21.69969778-37.58611002a115.29481443 115.29481443 0 1 1 199.69061888-115.29481443l44.97711445 77.87861333zM827.54370333 528.384H220.72888889v327.68a60.6814811 60.6814811 0 0 0 60.6814811 60.6814811h485.45185223a60.6814811 60.6814811 0 0 0 60.68148111-60.6814811v-327.68z m84.95407445-194.18074112H135.77481443a12.13629667 12.13629667 0 0 0-12.13629553 12.13629667v97.09037a12.13629667 12.13629667 0 0 0 12.13629553 12.13629667h776.72296335a12.13629667 12.13629667 0 0 0 12.13629667-12.13629667v-97.09037a12.13629667 12.13629667 0 0 0-12.13629667-12.13629667zM354.38592 129.34257778a42.47703666 42.47703666 0 0 0-15.53445888 58.03576889l42.70762667 73.9949989h95.58546887l1.26217557-2.18453334-65.99718002-114.28750222a42.47703666 42.47703666 0 0 0-58.01149554-15.55873223z m332.12188445 0a42.47703666 42.47703666 0 0 0-58.01149668 15.55873223L562.48699221 259.20094777l1.2500389 2.1723978h95.59760555l42.71976334-73.9949989a42.47703666 42.47703666 0 0 0-13.4955611-56.76145778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_383 = [\n  _hoisted_283\n];\nfunction _sfc_render83(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock83(), _createElementBlock83(\"svg\", _hoisted_183, _hoisted_383);\n}\nvar basics_lihe_default = /* @__PURE__ */ export_helper_default(basics_lihe_vue_vue_type_script_lang_default, [[\"render\", _sfc_render83], [\"__file\", \"basics-lihe.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-lipinka.vue?vue&type=script&lang.ts\nvar basics_lipinka_vue_vue_type_script_lang_default = {\n  name: \"BasicsLipinka\"\n};\n\n// src/components/basics-lipinka.vue\nimport { createElementVNode as _createElementVNode84, openBlock as _openBlock84, createElementBlock as _createElementBlock84 } from \"vue\";\nvar _hoisted_184 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_284 = /* @__PURE__ */ _createElementVNode84(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M366.36444445 603.04649443c-17.52481223 18.68989667-41.90663111 38.49633223-73.30323002 60.24457558a36.40888889 36.40888889 0 1 1-41.46972444-59.85621334c27.2581211-18.88407666 47.33155555-35.40157667 60.07466667-48.4602311-25.48622222-4.93947221-48.30245888-12.77952-66.08213333-23.54441558-65.22045667-39.46723555-64.12819001-127.41897443-5.09724445-163.81572665C278.98311111 343.87588779 323.49904555 350.70862222 366.36444445 384.93297778V160.04740779H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.6814811v582.54222222a60.6814811 60.6814811 0 0 0 60.68148224 60.6814811h206.31703666V603.04649443z m72.81777777-14.66064554V863.95259221h424.77036999a60.6814811 60.6814811 0 0 0 60.68148224-60.6814811V220.72888889a60.6814811 60.6814811 0 0 0-60.68148224-60.6814811H439.18222222v213.34395221c45.38974777-26.59062557 94.69952-21.05647445 130.38023111 14.78200889l2.18453334 2.18453333 1.78403555 2.54862223c26.73626112 37.98660779 25.03717888 78.81310777-3.75011555 109.94270776-16.29904555 17.62190222-40.34104889 31.14173667-69.88079446 40.8386378 23.18032555 17.19713223 51.85839445 32.64663666 86.20411336 46.27569778a36.40888889 36.40888889 0 0 1-26.84548779 67.69625998c-48.20536889-19.12680334-88.31582777-42.16149333-120.07651556-69.27397888z m0-114.56663666c1.67480889 2.87630222 3.3374811 5.80115001 5.00015445 8.76240555l0.08495332 0.16990777c4.10206777-0.75244999 8.16772779-1.60199111 12.16056889-2.51221334 29.06643001-6.69923555 50.60835555-16.79663445 59.89262222-26.82121443 4.47829333-4.8545189 5.00015445-7.54877667-0.42476999-15.80145778-19.19962112-16.72381667-47.69564445-7.70654777-76.71352889 33.25345223v2.94912zM160.04740779 87.22963001h703.90518442c73.728 0 133.49925888 59.77125888 133.49926002 133.49925888v582.54222222c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49925888V220.72888889c0-73.728 59.77125888-133.49925888 133.49926002-133.49925888z m123.23195221 381.91710777c14.58782777 8.82308779 37.39192889 14.79414557 63.66700999 17.53694777 1.96608-4.12634112 3.95643221-8.15559111 5.98319446-12.09988665-32.22186667-43.44794112-59.12803555-54.28565333-74.22558778-44.97711445-13.22856334 8.14345443-13.47128889 28.60524999 4.57538333 39.54005333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_384 = [\n  _hoisted_284\n];\nfunction _sfc_render84(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock84(), _createElementBlock84(\"svg\", _hoisted_184, _hoisted_384);\n}\nvar basics_lipinka_default = /* @__PURE__ */ export_helper_default(basics_lipinka_vue_vue_type_script_lang_default, [[\"render\", _sfc_render84], [\"__file\", \"basics-lipinka.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-maiyizengyi.vue?vue&type=script&lang.ts\nvar basics_maiyizengyi_vue_vue_type_script_lang_default = {\n  name: \"BasicsMaiyizengyi\"\n};\n\n// src/components/basics-maiyizengyi.vue\nimport { createElementVNode as _createElementVNode85, openBlock as _openBlock85, createElementBlock as _createElementBlock85 } from \"vue\";\nvar _hoisted_185 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_285 = /* @__PURE__ */ _createElementVNode85(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M180.38784 129.55117c25.85031111-70.99733333 112.47919445-101.13175666 191.85057223-72.2473711L829.26705778 223.66814777 863.95259221 223.66814777c73.728 0 133.49925888 59.77125888 133.49926002 133.49926002v133.49925888a36.40888889 36.40888889 0 0 1-36.40888889 36.40888889 72.81777778 72.81777778 0 1 0 0 145.63555556 36.40888889 36.40888889 0 0 1 36.40888889 36.40888888v133.49925888c0 73.728-59.77125888 133.49925888-133.49926002 133.49926002H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49926002V709.12a36.40888889 36.40888889 0 0 1 36.40888889-36.40888888 72.81777778 72.81777778 0 1 0 0-145.63555556 36.40888889 36.40888889 0 0 1-36.40888889-36.40888889V357.16740779c0-68.93416334 52.24675555-125.67134777 119.29979335-132.75894557zM863.95259221 296.48592555h-46.90678442l-0.07281778 0.18204445-0.5339978-0.19417999L160.04740779 296.48592555a60.6814811 60.6814811 0 0 0-60.68148224 60.68148224v101.67788999c62.81747001 16.16554667 109.22666667 73.18186667 109.22666666 141.04803556s-46.40919666 124.88248889-109.22666666 141.04803555V842.61925888a60.6814811 60.6814811 0 0 0 60.68148224 60.68148224h703.90518442a60.6814811 60.6814811 0 0 0 60.68148224-60.68148224v-101.67788999c-62.81747001-16.16554667-109.22666667-73.18186667-109.22666666-141.04803555s46.40919666-124.88248889 109.22666666-141.04803556V357.16740779a60.6814811 60.6814811 0 0 0-60.68148224-60.68148224zM657.68410112 643.94808889a36.40888889 36.40888889 0 0 1 0 72.81777778h-291.27111111a36.40888889 36.40888889 0 0 1 0-72.81777778z m0-169.90814777a36.40888889 36.40888889 0 0 1 0 72.81777778h-291.27111111a36.40888889 36.40888889 0 0 1 0-72.81777778z m-310.36150557-348.31170446c-44.2974811-16.1170011-87.67260445-1.0437211-98.51031665 28.72661334l-25.19495111 69.20116224H616.37214777z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_385 = [\n  _hoisted_285\n];\nfunction _sfc_render85(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock85(), _createElementBlock85(\"svg\", _hoisted_185, _hoisted_385);\n}\nvar basics_maiyizengyi_default = /* @__PURE__ */ export_helper_default(basics_maiyizengyi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render85], [\"__file\", \"basics-maiyizengyi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-menhu.vue?vue&type=script&lang.ts\nvar basics_menhu_vue_vue_type_script_lang_default = {\n  name: \"BasicsMenhu\"\n};\n\n// src/components/basics-menhu.vue\nimport { createElementVNode as _createElementVNode86, openBlock as _openBlock86, createElementBlock as _createElementBlock86 } from \"vue\";\nvar _hoisted_186 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_286 = /* @__PURE__ */ _createElementVNode86(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M793.95043555 602.87658667h-191.07384888v188.74368c0 83.88608 55.92405333 158.45148445 137.47996444 179.42300444 48.93354667 13.98101333 100.19726222 4.66033778 144.47047111-20.97152 11.65084445-6.99050667 25.63185778-2.33016889 32.62236445 6.99050667s2.33016889 25.63185778-6.99050667 32.62236444c-53.59388445 32.62236445-118.83861333 41.94304-179.42300445 25.63185778-102.52743111-27.96202667-172.43249778-121.16878222-172.43249777-226.02638222v-104.8576-55.92405333-74.56540445H807.93144889c6.99050667 0 13.98101333 2.33016889 20.97152 2.33016889 9.32067555 2.33016889 16.31118222 2.33016889 23.30168889 4.66033778 123.49895111 32.62236445 198.06435555 160.78165333 165.44199111 284.28060444-2.33016889 11.65084445-16.31118222 20.97152-27.96202667 16.31118222-11.65084445-2.33016889-20.97152-16.31118222-16.31118222-27.96202666 25.63185778-100.19726222-32.62236445-202.72469333-132.81962667-228.35655112-4.66033778 0-9.32067555-2.33016889-18.64135111-2.33016888-6.99050667 0-13.98101333-2.33016889-18.64135111-2.33016889-6.99050667 2.33016889-9.32067555 2.33016889-9.32067556 2.33016889z m-552.25002666-128.15928889c-128.15928889 0-233.01688889-104.8576-233.01688889-233.01688889s104.8576-233.01688889 233.01688889-233.01688889 233.01688889 104.8576 233.01688889 233.01688889v233.01688889h-233.01688889z m186.41351111-233.01688889c0-102.52743111-83.88608-186.41351111-186.41351111-186.41351111s-186.41351111 83.88608-186.41351111 186.41351111 83.88608 186.41351111 186.41351111 186.41351111h186.41351111v-186.41351111z m-186.41351111 314.5728h233.01688889v233.01688889c0 128.15928889-104.8576 233.01688889-233.01688889 233.01688889s-233.01688889-104.8576-233.01688889-233.01688889 104.8576-233.01688889 233.01688889-233.01688889z m0 46.60337778c-102.52743111 0-186.41351111 83.88608-186.41351111 186.41351111s83.88608 186.41351111 186.41351111 186.41351111 186.41351111-83.88608 186.41351111-186.41351111v-186.41351111h-186.41351111z m547.58968889-128.15928889h-233.01688889v-233.01688889c0-128.15928889 104.8576-233.01688889 233.01688889-233.01688889s233.01688889 104.8576 233.01688889 233.01688889-104.8576 233.01688889-233.01688889 233.01688889z m0-46.60337778c102.52743111 0 186.41351111-83.88608 186.41351111-186.41351111s-83.88608-186.41351111-186.41351111-186.41351111-186.41351111 83.88608-186.41351111 186.41351111v186.41351111h186.41351111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_386 = [\n  _hoisted_286\n];\nfunction _sfc_render86(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock86(), _createElementBlock86(\"svg\", _hoisted_186, _hoisted_386);\n}\nvar basics_menhu_default = /* @__PURE__ */ export_helper_default(basics_menhu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render86], [\"__file\", \"basics-menhu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-mima.vue?vue&type=script&lang.ts\nvar basics_mima_vue_vue_type_script_lang_default = {\n  name: \"BasicsMima\"\n};\n\n// src/components/basics-mima.vue\nimport { createElementVNode as _createElementVNode87, openBlock as _openBlock87, createElementBlock as _createElementBlock87 } from \"vue\";\nvar _hoisted_187 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_287 = /* @__PURE__ */ _createElementVNode87(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M772.57498398 419.73172553L336.09235274 419.73172553C343.59306055 356.48251362 289.15098606 99.34113071 490.2285198 93.07927854c191.18921321-7.25293669 161.43415306 234.63925943 161.43415306 234.63925942l93.63496224 0.63069015c0 0 27.20977494-323.79181669-255.0691153-325.36854205C182.1589075 18.61279184 254.4405033 369.63690811 245.04772503 419.73172553c2.18489086 0 5.02299653 0 8.01877475 0-61.46976471 0-111.31681099 49.86957093-111.316811 111.316811l0 371.07105309c0 61.46976471 49.86957093 111.31681099 111.316811 111.31681101l519.50848418 0c61.46976471 0 111.31681099-49.86957093 111.31681101-111.31681101L883.89179497 531.04853653C883.89179497 469.60129646 834.02222403 419.73172553 772.57498398 419.73172553zM549.91883731 743.41091901l0 84.51247971c0 20.42985585-16.66823961 37.09809545-37.09809544 37.09809543-20.42985585 0-37.09809545-16.66823961-37.09809545-37.09809543l0-84.51247974c-22.0966798-12.86157407-37.09809545-36.53497924-37.09809545-63.92495137 0-40.99485958 33.22385598-74.21871555 74.21871555-74.21871555 40.99485958 0 74.21871555 33.22385598 74.21871555 74.21871555C587.0394574 706.87593972 572.03804177 730.5493449 549.91883731 743.41091901z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_387 = [\n  _hoisted_287\n];\nfunction _sfc_render87(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock87(), _createElementBlock87(\"svg\", _hoisted_187, _hoisted_387);\n}\nvar basics_mima_default = /* @__PURE__ */ export_helper_default(basics_mima_vue_vue_type_script_lang_default, [[\"render\", _sfc_render87], [\"__file\", \"basics-mima.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-mingxinghuodong.vue?vue&type=script&lang.ts\nvar basics_mingxinghuodong_vue_vue_type_script_lang_default = {\n  name: \"BasicsMingxinghuodong\"\n};\n\n// src/components/basics-mingxinghuodong.vue\nimport { createElementVNode as _createElementVNode88, openBlock as _openBlock88, createElementBlock as _createElementBlock88 } from \"vue\";\nvar _hoisted_188 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_288 = /* @__PURE__ */ _createElementVNode88(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 26.54814777c268.1029211 0 485.45185223 217.34892999 485.45185223 485.45185223S780.1029211 997.45185223 512 997.45185223 26.54814777 780.1029211 26.54814777 512 243.8970789 26.54814777 512 26.54814777z m0 72.81777778c-227.89537223 0-412.63407445 184.73870222-412.63407445 412.63407445s184.73870222 412.63407445 412.63407445 412.63407445 412.63407445-184.73870222 412.63407445-412.63407445-184.73870222-412.63407445-412.63407445-412.63407445z m24.05413888 150.52648334a62.30774557 62.30774557 0 0 1 33.35054222 33.84812999l42.51344669 104.05660445 110.01552554 8.98086001c34.27290112 2.79134777 59.56494222 33.01072555 56.87068445 67.27148999a62.69610667 62.69610667 0 0 1-21.25065444 42.3314011l-84.28657777 73.49741114 25.78962886 110.07620664c7.82791111 33.37481443-12.52465778 67.06517333-45.86306332 75.16008334a61.68879445 61.68879445 0 0 1-47.14951111-7.57304888L512 699.06887111l-94.05629667 58.47267556a61.81015666 61.81015666 0 0 1-85.71865999-20.87443001 62.93883221 62.93883221 0 0 1-7.28177777-46.71260445l25.78962886-110.07620664-84.28657777-73.49741114a62.86601443 62.86601443 0 0 1-6.72350777-87.72114886 61.91938333 61.91938333 0 0 1 42.34353778-21.8938789l110.01552554-8.98085888 42.51344669-104.04446891c13.08292779-32.00341333 49.58890667-47.33155555 81.45881998-33.84812999zM512 335.7688411l-34.95253333 85.53661668a62.11356445 62.11356445 0 0 1-52.38025444 38.52060444l-92.18730666 7.52450333 70.73033443 61.66452224a62.81747001 62.81747001 0 0 1 19.78216334 61.65238442l-21.39629113 91.28922112 77.79366002-48.36314112a61.68879445 61.68879445 0 0 1 65.20832 0l77.79365888 48.36314112-21.38415445-91.28922112a62.81747001 62.81747001 0 0 1 19.78216334-61.65238442l70.73033443-61.66452224-92.18730666-7.52450333a62.11356445 62.11356445 0 0 1-52.39239111-38.52060444L512 335.7688411z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_388 = [\n  _hoisted_288\n];\nfunction _sfc_render88(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock88(), _createElementBlock88(\"svg\", _hoisted_188, _hoisted_388);\n}\nvar basics_mingxinghuodong_default = /* @__PURE__ */ export_helper_default(basics_mingxinghuodong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render88], [\"__file\", \"basics-mingxinghuodong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-paihangbang.vue?vue&type=script&lang.ts\nvar basics_paihangbang_vue_vue_type_script_lang_default = {\n  name: \"BasicsPaihangbang\"\n};\n\n// src/components/basics-paihangbang.vue\nimport { createElementVNode as _createElementVNode89, openBlock as _openBlock89, createElementBlock as _createElementBlock89 } from \"vue\";\nvar _hoisted_189 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_289 = /* @__PURE__ */ _createElementVNode89(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M548.40888889 681.90814777a36.40888889 36.40888889 0 0 1-72.81777778 0V342.09185223a36.40888889 36.40888889 0 0 1 72.81777778 0v339.81629554z m182.04444444 0a36.40888889 36.40888889 0 0 1-72.81777778 0V487.72740779a36.40888889 36.40888889 0 0 1 72.81777778 0v194.18073998z m-364.08888888 0a36.40888889 36.40888889 0 0 1-72.81777778 0V439.18222222a36.40888889 36.40888889 0 0 1 72.81777778 0v242.72592555zM160.04740779 87.22963001h703.90518442c73.728 0 133.49925888 59.77125888 133.49926002 133.49925888v582.54222222c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49925888V220.72888889c0-73.728 59.77125888-133.49925888 133.49926002-133.49925888z m0 72.81777778a60.6814811 60.6814811 0 0 0-60.68148224 60.6814811v582.54222222a60.6814811 60.6814811 0 0 0 60.68148224 60.6814811h703.90518442a60.6814811 60.6814811 0 0 0 60.68148224-60.6814811V220.72888889a60.6814811 60.6814811 0 0 0-60.68148224-60.6814811H160.04740779z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_389 = [\n  _hoisted_289\n];\nfunction _sfc_render89(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock89(), _createElementBlock89(\"svg\", _hoisted_189, _hoisted_389);\n}\nvar basics_paihangbang_default = /* @__PURE__ */ export_helper_default(basics_paihangbang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render89], [\"__file\", \"basics-paihangbang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-pengyouquan.vue?vue&type=script&lang.ts\nvar basics_pengyouquan_vue_vue_type_script_lang_default = {\n  name: \"BasicsPengyouquan\"\n};\n\n// src/components/basics-pengyouquan.vue\nimport { createElementVNode as _createElementVNode90, openBlock as _openBlock90, createElementBlock as _createElementBlock90 } from \"vue\";\nvar _hoisted_190 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_290 = /* @__PURE__ */ _createElementVNode90(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M131.68488334 672.36901888A414.23606557 414.23606557 0 0 0 306.41114112 869.85083221v-353.65167331L148.46938112 663.49738667c-4.89092779 4.56324779-10.69207666 7.52450333-16.78449778 8.88376888z m-22.74342001-71.59201109l238.59958556-222.50685668H123.6385189c-0.70390557 0-1.40780999-0.01213667-2.09958002-0.0606811A412.08794112 412.08794112 0 0 0 99.36592555 512c0 30.47424 3.30107221 60.19603001 9.57553778 88.77700779z m343.6999111-222.50685668a36.48170667 36.48170667 0 0 1-5.8618311 7.03905223l-70.66965334 65.88795221c2.00248889 4.50256555 3.10689223 9.49058333 3.10689223 14.73346333v90.50036224c4.07779555 1.86899001 7.86432 4.5268389 11.15325668 7.97354667l76.88343665 80.60928h103.04929224l77.70870442-82.98799446v-109.08103111l-77.57520554-76.03389667c-3.15543666 0.88595001-6.46864555 1.35926557-9.8910811 1.35926556h-107.90381114zM379.14396445 902.78874112A412.12435001 412.12435001 0 0 0 512 924.63407445c37.28270222 0 73.41245667-4.93947221 107.77031111-14.21160334l-240.54139221-252.19223666V900.3614811c0 0.81313223-0.03640889 1.61412779-0.08495445 2.42726002z m313.41985222-19.64866446a414.4545189 414.4545189 0 0 0 177.14137999-165.29635556H536.69736334l150.12598443 157.40776335c2.30589667 2.42725888 4.22343111 5.08510777 5.7404689 7.88859221z m210.13997-238.04131556A412.11221333 412.11221333 0 0 0 924.63407445 512c0-41.71244999-6.18951111-81.9806811-17.69472-119.93088L670.05098667 645.01380779H900.3614811c0.78885888 0 1.56558222 0.02427221 2.34230557 0.07281778zM154.69530112 305.45237333h342.82609778l-158.98548224-155.80577223a36.38461667 36.38461667 0 0 1-6.71137109-8.98085888A414.4545189 414.4545189 0 0 0 154.70743666 305.46451001z m250.7358811-192.19038776l242.58028999 237.72577109v-222.09422223c0-2.18453333 0.19418112-4.30838557 0.55827001-6.39582776A412.00298667 412.00298667 0 0 0 512 99.36592555c-36.84579555 0-72.57505223 4.83024555-106.5566811 13.89606002zM720.84138667 437.60450333V484.28069888l152.95374222-163.35454777c0.84954112-0.91022222 1.75976334-1.77189888 2.66998556-2.57289444a414.5758811 414.5758811 0 0 0-155.62372778-162.32296334v281.58634667zM512 997.45185223C243.8970789 997.45185223 26.54814777 780.1029211 26.54814777 512S243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223-217.34892999 485.45185223-485.45185223 485.45185223z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_390 = [\n  _hoisted_290\n];\nfunction _sfc_render90(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock90(), _createElementBlock90(\"svg\", _hoisted_190, _hoisted_390);\n}\nvar basics_pengyouquan_default = /* @__PURE__ */ export_helper_default(basics_pengyouquan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render90], [\"__file\", \"basics-pengyouquan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-pinglun.vue?vue&type=script&lang.ts\nvar basics_pinglun_vue_vue_type_script_lang_default = {\n  name: \"BasicsPinglun\"\n};\n\n// src/components/basics-pinglun.vue\nimport { createElementVNode as _createElementVNode91, openBlock as _openBlock91, createElementBlock as _createElementBlock91 } from \"vue\";\nvar _hoisted_191 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_291 = /* @__PURE__ */ _createElementVNode91(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M108.73514667 784.26567111c-12.52465778-21.26279111-20.72879445-35.52293888-24.80659001-43.13239666A483.42508999 483.42508999 0 0 1 26.54814777 512C26.54814777 243.8970789 243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223-217.34892999 485.45185223-485.45185223 485.45185223a483.30372779 483.30372779 0 0 1-249.31593443-68.83707335 3170.48604445 3170.48604445 0 0 0-22.8162378-13.38633443l-118.79006777 32.4039111c-27.18530333 7.40314112-52.11325667-17.53694777-44.69797888-44.71011555l32.35536555-118.65656889z m74.29840554 4.30838556l-19.63652664 72.02891776 72.02891776-19.63652664a36.40888889 36.40888889 0 0 1 27.90134556 3.65302442 5138.0224 5138.0224 0 0 1 36.80938666 21.55406222A410.49808555 410.49808555 0 0 0 512 924.63407445c227.89537223 0 412.63407445-184.73870222 412.63407445-412.63407445S739.89537223 99.36592555 512 99.36592555 99.36592555 284.10462777 99.36592555 512c0 68.93416334 16.89372445 135.34397667 48.72723 194.71473778 4.22343111 7.86432 14.70919111 25.97167445 31.14173668 53.73952a36.40888889 36.40888889 0 0 1 3.79865998 28.11979889z m166.10948779-80.52432668a36.40888889 36.40888889 0 1 1 46.55483221-55.98473444A181.12208555 181.12208555 0 0 0 512 694.04444445c43.10812445 0 83.8253989-14.98832555 116.2657189-41.96731222a36.40888889 36.40888889 0 0 1 46.55483221 55.99687111A253.92772779 253.92772779 0 0 1 512 766.86222222a253.92772779 253.92772779 0 0 1-162.85696-58.81249223z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_391 = [\n  _hoisted_291\n];\nfunction _sfc_render91(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock91(), _createElementBlock91(\"svg\", _hoisted_191, _hoisted_391);\n}\nvar basics_pinglun_default = /* @__PURE__ */ export_helper_default(basics_pinglun_vue_vue_type_script_lang_default, [[\"render\", _sfc_render91], [\"__file\", \"basics-pinglun.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-qinghuiyuan.vue?vue&type=script&lang.ts\nvar basics_qinghuiyuan_vue_vue_type_script_lang_default = {\n  name: \"BasicsQinghuiyuan\"\n};\n\n// src/components/basics-qinghuiyuan.vue\nimport { createElementVNode as _createElementVNode92, openBlock as _openBlock92, createElementBlock as _createElementBlock92 } from \"vue\";\nvar _hoisted_192 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_292 = /* @__PURE__ */ _createElementVNode92(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M233.48413667 117.19414557c36.53025223-63.25437667 117.16380445-85.1968 180.79440555-49.47968L794.73929443 246.33647445H863.95259221c73.728 0 133.49925888 59.67416889 133.49926002 133.25653334v460.32971776C997.45185223 913.51722667 937.68059221 973.17925888 863.95259221 973.17925888H160.04740779c-73.728 0-133.49925888-59.66203221-133.49926002-133.25653333V379.59300779c0-73.20613888 59.15230777-132.62544555 132.35844778-133.2443978zM863.95259221 319.02075221l-72.42941554 0.02427336a36.26325333 36.26325333 0 0 1-8.64104334 0L160.04740779 319.03288889c-33.50831445 0-60.6814811 27.11248555-60.68148224 60.5601189v460.32971776a60.6208 60.6208 0 0 0 60.68148224 60.57225557h703.90518442c33.50831445 0 60.6814811-27.11248555 60.68148224-60.5601189V379.59300779a60.6208 60.6208 0 0 0-60.68148224-60.57225558zM600.21873778 473.6007589a36.4331611 36.4331611 0 0 1 48.20536889-18.04667335 36.3117989 36.3117989 0 0 1 18.0830811 48.12041557l-121.3629622 266.51306667c-12.93729223 28.39893333-53.3511589 28.39893333-66.28845114 0l-121.3629622-266.51306667a36.3117989 36.3117989 0 0 1 18.0830811-48.12041557 36.4331611 36.4331611 0 0 1 48.20536889 18.04667335L512 667.30818333zM379.38668999 131.49070222a60.6208 60.6208 0 0 0-82.84235776 22.11233223l-53.54534002 92.73344h380.71561558l-241.59725113-113.41368888a36.48170667 36.48170667 0 0 1-1.38353778-0.6917689z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_392 = [\n  _hoisted_292\n];\nfunction _sfc_render92(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock92(), _createElementBlock92(\"svg\", _hoisted_192, _hoisted_392);\n}\nvar basics_qinghuiyuan_default = /* @__PURE__ */ export_helper_default(basics_qinghuiyuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render92], [\"__file\", \"basics-qinghuiyuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-qingkong1.vue?vue&type=script&lang.ts\nvar basics_qingkong1_vue_vue_type_script_lang_default = {\n  name: \"BasicsQingkong1\"\n};\n\n// src/components/basics-qingkong1.vue\nimport { createElementVNode as _createElementVNode93, openBlock as _openBlock93, createElementBlock as _createElementBlock93 } from \"vue\";\nvar _hoisted_193 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_293 = /* @__PURE__ */ _createElementVNode93(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M914.467662 517.094527c-20.887562 0-38.208955 17.321393-38.208956 38.208956 0 22.925373-2.037811 45.341294-6.113432 67.757214-32.095522 171.685572-182.893532 296.501493-358.145274 296.501492-200.724378 0-364.258706-163.534328-364.258706-364.258706S311.275622 191.044776 512 191.044776c31.076617 0 61.643781 4.075622 91.701493 11.717413L568.039801 280.199005c-14.774129 31.58607 10.698507 67.247761 45.341294 63.681592l251.160199-23.434826c34.642786-3.056716 52.983085-42.79403 32.604975-70.81393L750.933333 44.322388c-19.868657-28.529353-63.172139-24.453731-77.946268 7.132338L635.797015 132.457711c-40.246766-11.717413-81.512438-17.830846-123.797015-17.830845-243.008955 0-440.676617 197.667662-440.676617 440.676617s197.667662 440.676617 440.676617 440.676617c211.932338 0 394.316418-150.79801 433.034826-359.16418 5.094527-27.000995 7.641791-54.511443 7.641791-81.512437 0-20.887562-17.321393-38.208955-38.208955-38.208956z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_393 = [\n  _hoisted_293\n];\nfunction _sfc_render93(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock93(), _createElementBlock93(\"svg\", _hoisted_193, _hoisted_393);\n}\nvar basics_qingkong1_default = /* @__PURE__ */ export_helper_default(basics_qingkong1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render93], [\"__file\", \"basics-qingkong1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-qingkong2.vue?vue&type=script&lang.ts\nvar basics_qingkong2_vue_vue_type_script_lang_default = {\n  name: \"BasicsQingkong2\"\n};\n\n// src/components/basics-qingkong2.vue\nimport { createElementVNode as _createElementVNode94, openBlock as _openBlock94, createElementBlock as _createElementBlock94 } from \"vue\";\nvar _hoisted_194 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_294 = /* @__PURE__ */ _createElementVNode94(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M229.12 475.52l687.296 183.872-1.408 1.472-1.024 12.864c-2.56 34.048-6.4 62.976-17.92 139.52l-6.528 43.648c-3.84 26.048-6.528 46.976-8.768 66.304-4.224 36.544-23.488 65.28-54.656 81.6-15.424 8.128-32 12.672-45.824 13.44l-4.032 0.192-90.432-24.32a18.88 18.88 0 0 1-12.16-26.688l35.392-71.552-20.352 26.24a515.328 515.328 0 0 1-47.36 50.56 19.008 19.008 0 0 1-18.112 4.672l-75.456-20.16a18.88 18.88 0 0 1-12.16-26.624l35.456-71.552-20.352 26.24a510.336 510.336 0 0 1-47.36 50.56 18.944 18.944 0 0 1-18.112 4.672l-88.448-23.68a18.944 18.944 0 0 1-12.096-26.56l35.392-71.552-20.352 26.24a515.84 515.84 0 0 1-47.36 50.56 18.944 18.944 0 0 1-18.112 4.672l-62.528-16.704a18.944 18.944 0 0 1-12.096-26.688l35.392-71.488-20.352 26.24c-8.32 10.688-20.48 24-36.48 39.936a44.736 44.736 0 0 1-43.136 11.52l-78.08-20.864-23.104-8.704c-29.632-25.536-44.608-61.44-39.36-95.552 5.76-37.12 32.32-67.648 82.112-88.704 34.368-14.656 67.584-74.176 89.664-157.44l3.84-14.464-1.024-1.792z m-42.88-76.16a60.224 60.224 0 0 1 5.056-6.4l123.776-135.424c9.92-10.752 24.832-19.392 41.856-23.936 16.64-4.416 33.984-4.672 48.64-0.768l123.584 33.024 4.096-2.368 55.36-205.824c8.704-32.448 43.968-51.456 78.72-42.24l83.2 22.272c34.752 9.28 55.808 43.392 47.104 75.84l-55.36 205.824 2.368 4.096 118.528 31.68c14.592 3.84 29.568 12.8 41.728 24.96 12.416 12.352 21.12 27.2 24.192 41.472l39.36 179.072a58.688 58.688 0 0 1 1.28 9.856c-0.704 6.592-5.312 10.304-13.696 11.2L194.944 418.048c-10.432-2.944-13.376-9.216-8.768-18.752z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_394 = [\n  _hoisted_294\n];\nfunction _sfc_render94(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock94(), _createElementBlock94(\"svg\", _hoisted_194, _hoisted_394);\n}\nvar basics_qingkong2_default = /* @__PURE__ */ export_helper_default(basics_qingkong2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render94], [\"__file\", \"basics-qingkong2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-qingkong3.vue?vue&type=script&lang.ts\nvar basics_qingkong3_vue_vue_type_script_lang_default = {\n  name: \"BasicsQingkong3\"\n};\n\n// src/components/basics-qingkong3.vue\nimport { createElementVNode as _createElementVNode95, openBlock as _openBlock95, createElementBlock as _createElementBlock95 } from \"vue\";\nvar _hoisted_195 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_295 = /* @__PURE__ */ _createElementVNode95(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M274.56 798.997333l19.434667-25.130666-33.792 68.565333a18.133333 18.133333 0 0 0 11.562666 25.536l59.733334 16a18.133333 18.133333 0 0 0 17.28-4.48c20.522667-19.818667 35.626667-35.989333 45.290666-48.469333l19.456-25.130667-33.813333 68.565333a18.133333 18.133333 0 0 0 11.562667 25.536l84.48 22.634667a18.133333 18.133333 0 0 0 17.28-4.48c20.522667-19.84 35.626667-35.989333 45.269333-48.469333l19.456-25.130667-33.813333 68.565333A18.133333 18.133333 0 0 0 535.530667 938.666667l72.106666 19.328a18.133333 18.133333 0 0 0 17.28-4.48c20.522667-19.84 35.626667-36.010667 45.269334-48.490667l19.456-25.130667-33.813334 68.586667a18.133333 18.133333 0 0 0 11.584 25.514667l86.421334 23.338666 3.84-0.213333c13.269333-0.704 29.056-5.034667 43.84-12.8 29.781333-15.701333 48.170667-43.2 52.181333-78.250667 2.133333-18.517333 4.778667-38.549333 8.405333-63.530666 1.642667-11.221333 2.944-20.010667 6.229334-41.834667 11.050667-73.322667 14.634667-101.034667 17.130666-133.674667l0.938667-12.373333 2.837333-2.922667 12.330667-1.344a41.813333 41.813333 0 0 0 24.810667-11.221333c10.730667-10.24 14.805333-25.386667 11.093333-42.197333l-37.546667-171.584c-3.029333-13.696-11.264-27.946667-23.146666-39.829334-11.648-11.626667-25.92-20.138667-39.893334-23.893333L723.626667 331.306667l-2.261334-3.925334L774.250667 130.133333c8.32-31.061333-11.754667-63.744-44.970667-72.64l-79.509333-21.312c-33.194667-8.896-66.922667 9.365333-75.264 40.426667l-52.842667 197.269333-3.925333 2.261334-118.101334-31.637334c-13.994667-3.754667-30.634667-3.498667-46.506666 0.746667-16.256 4.352-30.506667 12.586667-39.957334 22.933333l-118.314666 129.792c-11.605333 12.714667-15.658667 27.84-11.52 42.090667 4.16 14.229333 15.850667 25.194667 32.896 30.528l13.610666 4.266667 2.133334 3.882666-3.626667 13.802667c-21.12 79.850667-52.885333 136.917333-85.717333 150.890667-47.530667 20.202667-72.938667 49.429333-78.421334 85.034666-5.034667 32.682667 9.28 67.114667 37.589334 91.541334l22.037333 8.341333 74.666667 20.010667a42.666667 42.666667 0 0 0 41.216-11.050667c15.274667-15.274667 26.88-28.032 34.837333-38.293333z m551.381333-396.565333c14.144 3.797333 29.952 19.2 32.768 32l34.56 157.781333a10.666667 10.666667 0 0 1-13.184 12.586667L240.64 433.493333a10.666667 10.666667 0 0 1-5.12-17.493333l108.8-119.36c8.832-9.685333 30.229333-15.146667 44.373333-11.349333l141.333334 37.866666a21.333333 21.333333 0 0 0 26.133333-15.082666l58.304-217.642667a21.333333 21.333333 0 0 1 26.133333-15.082667l77.056 20.650667a21.333333 21.333333 0 0 1 15.082667 26.133333l-58.325333 217.642667a21.333333 21.333333 0 0 0 15.082666 26.112l136.448 36.565333zM315.456 701.568c-33.664 45.141333-64.597333 79.082667-92.8 101.802667l-5.909333 4.778666-2.837334 0.597334-88.106666-24.106667-2.922667-3.2c-13.034667-14.165333-19.370667-31.04-16.981333-46.592 3.285333-21.333333 22.058667-39.338667 53.205333-52.586667 31.722667-13.482667 59.818667-47.104 82.922667-99.904 10.026667-22.954667 18.88-48.725333 26.389333-76.586666l3.882667-14.4 3.904-2.261334 566.165333 151.701334 2.346667 3.306666-0.789334 12.224c-1.984 30.592-30.336 229.397333-32.128 244.906667-2.346667 20.416-11.306667 34.986667-27.605333 44.394667a73.237333 73.237333 0 0 1-21.397333 8.106666l-5.013334 0.725334-60.373333-16.170667 11.242667-20.288c8.277333-14.976 22.656-43.84 43.093333-86.613333a21.12 21.12 0 0 0-9.962667-28.16l-3.136-1.493334a21.333333 21.333333 0 0 0-26.261333 6.485334c-33.642667 45.056-64.533333 78.912-92.672 101.546666l-5.909333 4.757334-2.837334 0.597333-52.544-14.08 11.114667-20.266667c3.562667-6.485333 7.04-13.013333 10.453333-19.626666 7.04-13.504 17.898667-35.797333 32.597334-66.816a21.290667 21.290667 0 0 0-9.984-28.309334l-3.029334-1.450666a21.333333 21.333333 0 0 0-26.368 6.442666c-33.6 45.013333-64.469333 78.826667-92.608 101.482667l-5.909333 4.757333-2.837333 0.597334-52.138667-13.973334 11.114667-20.266666c3.242667-5.888 6.72-12.416 10.453333-19.626667 6.997333-13.461333 17.962667-35.946667 32.896-67.434667a20.970667 20.970667 0 0 0-10.112-28.010666l-3.328-1.536a21.333333 21.333333 0 0 0-26.069333 6.613333c-33.642667 45.056-64.554667 78.976-92.778667 101.696l-5.909333 4.757333-2.837334 0.597334-32.64-8.746667 11.093334-20.245333c3.541333-6.506667 7.04-13.034667 10.453333-19.626667 6.976-13.482667 17.941333-35.968 32.874667-67.456a21.056 21.056 0 0 0-10.069334-28.074667l-3.242666-1.514666a21.333333 21.333333 0 0 0-26.154667 6.549333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_395 = [\n  _hoisted_295\n];\nfunction _sfc_render95(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock95(), _createElementBlock95(\"svg\", _hoisted_195, _hoisted_395);\n}\nvar basics_qingkong3_default = /* @__PURE__ */ export_helper_default(basics_qingkong3_vue_vue_type_script_lang_default, [[\"render\", _sfc_render95], [\"__file\", \"basics-qingkong3.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-quanbu.vue?vue&type=script&lang.ts\nvar basics_quanbu_vue_vue_type_script_lang_default = {\n  name: \"BasicsQuanbu\"\n};\n\n// src/components/basics-quanbu.vue\nimport { createElementVNode as _createElementVNode96, openBlock as _openBlock96, createElementBlock as _createElementBlock96 } from \"vue\";\nvar _hoisted_196 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_296 = /* @__PURE__ */ _createElementVNode96(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M102.4 56.88888889h334.50666667c25.13464889 0 45.51111111 20.37646222 45.51111111 45.51111111v334.50666667c0 25.13464889-20.37646222 45.51111111-45.51111111 45.51111111H102.4c-25.13464889 0-45.51111111-20.37646222-45.51111111-45.51111111V102.4c0-25.13464889 20.37646222-45.51111111 45.51111111-45.51111111z m651.94666667 0c-117.50627555 0-212.76444445 95.25816889-212.76444445 212.76444444s95.25816889 212.76444445 212.76444445 212.76444445 212.76444445-95.25816889 212.76444444-212.76444445-95.25816889-212.76444445-212.76444444-212.76444444zM102.4 967.11111111h334.50666667c25.13464889 0 45.51111111-20.37646222 45.51111111-45.51111111V587.09333333c0-25.13464889-20.37646222-45.51111111-45.51111111-45.51111111H102.4c-25.13464889 0-45.51111111 20.37646222-45.51111111 45.51111111v334.50666667c0 25.13464889 20.37646222 45.51111111 45.51111111 45.51111111z m819.2 0H587.09333333c-25.13464889 0-45.51111111-20.37646222-45.51111111-45.51111111V587.09333333c0-25.13464889 20.37646222-45.51111111 45.51111111-45.51111111h334.50666667c25.13464889 0 45.51111111 20.37646222 45.51111111 45.51111111v334.50666667c0 25.13464889-20.37646222 45.51111111-45.51111111 45.51111111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_396 = [\n  _hoisted_296\n];\nfunction _sfc_render96(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock96(), _createElementBlock96(\"svg\", _hoisted_196, _hoisted_396);\n}\nvar basics_quanbu_default = /* @__PURE__ */ export_helper_default(basics_quanbu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render96], [\"__file\", \"basics-quanbu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-quanping.vue?vue&type=script&lang.ts\nvar basics_quanping_vue_vue_type_script_lang_default = {\n  name: \"BasicsQuanping\"\n};\n\n// src/components/basics-quanping.vue\nimport { createElementVNode as _createElementVNode97, openBlock as _openBlock97, createElementBlock as _createElementBlock97 } from \"vue\";\nvar _hoisted_197 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_297 = /* @__PURE__ */ _createElementVNode97(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M159.74586236 905.7444596H295.25237467v58.9158742H59.58887374v-235.66349954h58.91587556v135.50651232l176.74762537-176.74762536 41.24111301 41.24111304-176.74762532 176.74762534z m683.42415089 0l-176.74762536-176.74762534 41.24111304-41.24111304 176.74762534 176.74762536V728.99683426h58.91587421v235.66349955h-235.66349955v-58.91587421h135.50651232zM159.74586236 139.83808263l176.74762532 176.74762537-41.24111301 41.24111301-176.74762537-176.74762532V316.585708H59.58887374V80.92220707h235.66350093v58.91587556H159.74586236z m683.42415089 0H707.66350093V80.92220707h235.66349955v235.66350093h-58.91587421V181.07919569l-176.74762534 176.74762532-41.24111304-41.24111301 176.74762536-176.74762537z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_397 = [\n  _hoisted_297\n];\nfunction _sfc_render97(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock97(), _createElementBlock97(\"svg\", _hoisted_197, _hoisted_397);\n}\nvar basics_quanping_default = /* @__PURE__ */ export_helper_default(basics_quanping_vue_vue_type_script_lang_default, [[\"render\", _sfc_render97], [\"__file\", \"basics-quanping.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-quanpingzuidahua.vue?vue&type=script&lang.ts\nvar basics_quanpingzuidahua_vue_vue_type_script_lang_default = {\n  name: \"BasicsQuanpingzuidahua\"\n};\n\n// src/components/basics-quanpingzuidahua.vue\nimport { createElementVNode as _createElementVNode98, openBlock as _openBlock98, createElementBlock as _createElementBlock98 } from \"vue\";\nvar _hoisted_198 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_298 = /* @__PURE__ */ _createElementVNode98(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M898.84444445 56.88888889c37.70254222 0 68.26666667 30.56412445 68.26666666 68.26666666v773.6888889c0 37.70254222-30.56412445 68.26666667-68.26666666 68.26666666H125.15555555c-37.70254222 0-68.26666667-30.56412445-68.26666666-68.26666666V125.15555555c0-37.70254222 30.56412445-68.26666667 68.26666666-68.26666666h773.6888889zM456.85873778 567.03203555c-8.88604445-8.88604445-23.29486222-8.88604445-32.18090667 0L218.99719111 772.71267555V613.74691555c0-12.56789333-10.18766222-22.75555555-22.75555556-22.75555555-12.56675555 0-22.75555555 10.18766222-22.75555555 22.75555555v213.90222223c0 12.56675555 10.1888 22.75555555 22.75555555 22.75555555h213.90222223c12.56789333 0 22.75555555-10.1888 22.75555555-22.75555555 0-12.56789333-10.18766222-22.75555555-22.75555555-22.75555556H251.17923555l205.67950223-205.67950222c8.88604445-8.88604445 8.88604445-23.29486222 0-32.18204445zM827.61272889 173.52248889h-213.90222222c-12.56789333 0-22.75555555 10.1888-22.75555556 22.75555556 0 12.56789333 10.18766222 22.75555555 22.75555556 22.75555555H772.67626667L566.99562667 424.71424c-8.88604445 8.88604445-8.88604445 23.29372445 0 32.18090667 8.88604445 8.88604445 23.29486222 8.88604445 32.18204444 0l205.67950222-205.68064V410.18026667c0 12.56789333 10.18766222 22.75555555 22.75555556 22.75555555 12.56675555 0 22.75555555-10.18766222 22.75555556-22.75555555v-213.90222222c0-12.56675555-10.1888-22.75555555-22.75555556-22.75555556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_398 = [\n  _hoisted_298\n];\nfunction _sfc_render98(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock98(), _createElementBlock98(\"svg\", _hoisted_198, _hoisted_398);\n}\nvar basics_quanpingzuidahua_default = /* @__PURE__ */ export_helper_default(basics_quanpingzuidahua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render98], [\"__file\", \"basics-quanpingzuidahua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-quanpingzuixiaohua.vue?vue&type=script&lang.ts\nvar basics_quanpingzuixiaohua_vue_vue_type_script_lang_default = {\n  name: \"BasicsQuanpingzuixiaohua\"\n};\n\n// src/components/basics-quanpingzuixiaohua.vue\nimport { createElementVNode as _createElementVNode99, openBlock as _openBlock99, createElementBlock as _createElementBlock99 } from \"vue\";\nvar _hoisted_199 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_299 = /* @__PURE__ */ _createElementVNode99(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M898.84444445 56.88888889c37.70254222 0 68.26666667 30.56412445 68.26666666 68.26666666v773.6888889c0 37.70254222-30.56412445 68.26666667-68.26666666 68.26666666H125.15555555c-37.70254222 0-68.26666667-30.56412445-68.26666666-68.26666666V125.15555555c0-37.70254222 30.56412445-68.26666667 68.26666666-68.26666666h773.6888889zM440.76828445 560.36693333h-213.90222223c-12.56789333 0-22.75555555 10.1888-22.75555555 22.75555556 0 12.56789333 10.18766222 22.75555555 22.75555555 22.75555556H385.83182222L180.15118222 811.55868445c-8.88604445 8.88604445-8.88604445 23.29372445 0 32.18090666 8.88604445 8.88604445 23.29486222 8.88604445 32.18204445 0l205.67950222-205.68064V797.02471111c0 12.56789333 10.18766222 22.75555555 22.75555556 22.75555556 12.56675555 0 22.75555555-10.18766222 22.75555555-22.75555556v-213.90222222c0-12.56675555-10.1888-22.75555555-22.75555555-22.75555556z m402.93489777-380.17934222c-8.88604445-8.88604445-23.29486222-8.88604445-32.18090667 0L605.84163555 385.86823111V226.90247111c0-12.56789333-10.18766222-22.75555555-22.75555555-22.75555556-12.56675555 0-22.75555555 10.18766222-22.75555555 22.75555556v213.90222222c0 12.56675555 10.1888 22.75555555 22.75555555 22.75555556h213.90222222c12.56789333 0 22.75555555-10.1888 22.75555556-22.75555556 0-12.56789333-10.18766222-22.75555555-22.75555556-22.75555555H638.02368l205.67950222-205.67950223c8.88604445-8.88604445 8.88604445-23.29486222 0-32.18204444z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_399 = [\n  _hoisted_299\n];\nfunction _sfc_render99(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock99(), _createElementBlock99(\"svg\", _hoisted_199, _hoisted_399);\n}\nvar basics_quanpingzuixiaohua_default = /* @__PURE__ */ export_helper_default(basics_quanpingzuixiaohua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render99], [\"__file\", \"basics-quanpingzuixiaohua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-qupiao.vue?vue&type=script&lang.ts\nvar basics_qupiao_vue_vue_type_script_lang_default = {\n  name: \"BasicsQupiao\"\n};\n\n// src/components/basics-qupiao.vue\nimport { createElementVNode as _createElementVNode100, openBlock as _openBlock100, createElementBlock as _createElementBlock100 } from \"vue\";\nvar _hoisted_1100 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2100 = /* @__PURE__ */ _createElementVNode100(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M863.95259221 26.54814777c73.728 0 133.49925888 59.77125888 133.49926002 133.49926002v169.90814776c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888h-24.27259221v497.58814891c0 30.00092445-34.24862777 47.1252389-58.25422222 29.12711111L706.18074112 933.73629667l-67.96326002 50.97244445a48.54518557 48.54518557 0 0 1-58.25422222 0l-67.96325888-50.97244445-67.96325888 50.97244445a48.54518557 48.54518557 0 0 1-58.25422222 0l-67.96326002-50.97244445-75.24503666 56.43377778c-24.00559445 17.99812779-58.25422222 0.87381333-58.25422222-29.12711111V463.45481443h-24.27259221c-72.56291555 0-131.59386112-57.89013333-133.45071446-130.00400554L26.54814777 329.95555555V160.04740779c0-73.728 59.77125888-133.49925888 133.49926002-133.49926002z m-109.22666666 242.72592668H269.27407445a12.13629667 12.13629667 0 0 0-12.13629667 12.13629554v606.81481558l31.55436999-23.66577778a48.54518557 48.54518557 0 0 1 58.25422222 0l67.96326002 50.97244444 67.96325888-50.97244444a48.54518557 48.54518557 0 0 1 58.25422222 0l67.96325888 50.97244444 67.96326002-50.97244444a48.54518557 48.54518557 0 0 1 58.25422222 0L766.86222222 888.22518557V281.41036999a12.13629667 12.13629667 0 0 0-12.13629667-12.13629554zM548.38461667 599.58764999a36.40888889 36.40888889 0 1 1 0 72.81777778h-145.63555555a36.40888889 36.40888889 0 1 1 0-72.81777778z m72.85418667-157.77185109a36.40888889 36.40888889 0 0 1 0 72.81777777H402.76119666a36.40888889 36.40888889 0 0 1 0-72.81777777zM863.95259221 99.36592555H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.68148224v169.90814776a60.6814811 60.6814811 0 0 0 60.68148224 60.68148111h24.27259221v-109.22666667a84.95407445 84.95407445 0 0 1 84.95407445-84.95407332h485.4518511a84.95407445 84.95407445 0 0 1 84.95407445 84.95407332v109.22666667h24.27259221a60.6814811 60.6814811 0 0 0 60.6208-58.04790443L924.63407445 329.95555555V160.04740779a60.6814811 60.6814811 0 0 0-60.68148224-60.68148224z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3100 = [\n  _hoisted_2100\n];\nfunction _sfc_render100(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock100(), _createElementBlock100(\"svg\", _hoisted_1100, _hoisted_3100);\n}\nvar basics_qupiao_default = /* @__PURE__ */ export_helper_default(basics_qupiao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render100], [\"__file\", \"basics-qupiao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-quxiaoquanping.vue?vue&type=script&lang.ts\nvar basics_quxiaoquanping_vue_vue_type_script_lang_default = {\n  name: \"BasicsQuxiaoquanping\"\n};\n\n// src/components/basics-quxiaoquanping.vue\nimport { createElementVNode as _createElementVNode101, openBlock as _openBlock101, createElementBlock as _createElementBlock101 } from \"vue\";\nvar _hoisted_1101 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2101 = /* @__PURE__ */ _createElementVNode101(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M271.25570605 724.90794538H135.74919375v-58.91587559h235.66350093v235.66350093H312.4968191v-135.50651369L118.07443121 960.57144492l-41.24111303-41.24111166L271.25570605 724.90794538z m494.89335098 0l194.42238789 194.42238788-41.24111166 41.24111166-194.42238788-194.42238789V901.65557072h-58.91587559v-235.66350093h235.66350093v58.91587559h-135.50651369zM271.25570605 312.4968191L76.83331818 118.07443121l41.24111303-41.24111303L312.4968191 271.25570605V135.74919375h58.91587558v235.66350093H135.74919375V312.4968191h135.5065123z m494.89335098 0H901.65557072v58.91587558h-235.66350093V135.74919375h58.91587559v135.5065123L919.33033326 76.83331818l41.24111166 41.24111303L766.14905703 312.4968191z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3101 = [\n  _hoisted_2101\n];\nfunction _sfc_render101(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock101(), _createElementBlock101(\"svg\", _hoisted_1101, _hoisted_3101);\n}\nvar basics_quxiaoquanping_default = /* @__PURE__ */ export_helper_default(basics_quxiaoquanping_vue_vue_type_script_lang_default, [[\"render\", _sfc_render101], [\"__file\", \"basics-quxiaoquanping.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-remen.vue?vue&type=script&lang.ts\nvar basics_remen_vue_vue_type_script_lang_default = {\n  name: \"BasicsRemen\"\n};\n\n// src/components/basics-remen.vue\nimport { createElementVNode as _createElementVNode102, openBlock as _openBlock102, createElementBlock as _createElementBlock102 } from \"vue\";\nvar _hoisted_1102 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2102 = /* @__PURE__ */ _createElementVNode102(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M401.07306667 83.2c31.83893333 6.45226667 287.75466667 73.51893333 287.75466666 326.37866667 11.62453333-37.49333333 50.91626667-95.232 101.12-95.232-14.65813333 28.75093333-18.18346667 107.9008 25.62133334 173.73866666 43.80373333 65.8368 91.02933333 302.44586667-115.0112 410.44266667l-3.712 0.6976C645.67786667 925.968 581.6192 941.86666667 512.10133333 941.86666667c-111.22773333 0-208.48-40.69973333-261.31733333-101.39733334-90.18026667-80.58986667-104.2304-213.36853333-42.14933333-398.336 17.93813333 7.45173333 37.1744 45.09866667 37.1744 66.016 2.59946667-12.7712 14.56853333-83.8688 108.37013333-178.73386666 93.80266667-94.86613333 86.66986667-205.73866667 46.89386667-246.21546667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3102 = [\n  _hoisted_2102\n];\nfunction _sfc_render102(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock102(), _createElementBlock102(\"svg\", _hoisted_1102, _hoisted_3102);\n}\nvar basics_remen_default = /* @__PURE__ */ export_helper_default(basics_remen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render102], [\"__file\", \"basics-remen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-rili.vue?vue&type=script&lang.ts\nvar basics_rili_vue_vue_type_script_lang_default = {\n  name: \"BasicsRili\"\n};\n\n// src/components/basics-rili.vue\nimport { createElementVNode as _createElementVNode103, openBlock as _openBlock103, createElementBlock as _createElementBlock103 } from \"vue\";\nvar _hoisted_1103 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2103 = /* @__PURE__ */ _createElementVNode103(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M967.11111111 397.08444445v513.13777777c0 31.41859555-25.47029333 56.88888889-56.88888889 56.88888889H113.77777778c-31.41859555 0-56.88888889-25.47029333-56.88888889-56.88888889V397.08444445h910.22222222zM349.29777778 714.52444445H219.59111111c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555555s10.18766222 22.75555555 22.75555556 22.75555555h129.70666667c12.56789333 0 22.75555555-10.18766222 22.75555555-22.75555555s-10.18766222-22.75555555-22.75555555-22.75555555z m227.55555555 0H447.14666667c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555555s10.18766222 22.75555555 22.75555556 22.75555555h129.70666666c12.56789333 0 22.75555555-10.18766222 22.75555556-22.75555555s-10.18766222-22.75555555-22.75555556-22.75555555z m227.55555556 0H674.70222222c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555555s10.18766222 22.75555555 22.75555555 22.75555555h129.70666667c12.56789333 0 22.75555555-10.18766222 22.75555556-22.75555555s-10.18766222-22.75555555-22.75555556-22.75555555zM349.29777778 550.68444445H219.59111111c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555555s10.18766222 22.75555555 22.75555556 22.75555555h129.70666667c12.56789333 0 22.75555555-10.18766222 22.75555555-22.75555555s-10.18766222-22.75555555-22.75555555-22.75555555z m227.55555555 0H447.14666667c-12.56789333 0-22.75555555 10.18766222-22.75555556 22.75555555s10.18766222 22.75555555 22.75555556 22.75555555h129.70666666c12.56789333 0 22.75555555-10.18766222 22.75555556-22.75555555s-10.18766222-22.75555555-22.75555556-22.75555555z m227.55555556 0H674.70222222c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555555s10.18766222 22.75555555 22.75555555 22.75555555h129.70666667c12.56789333 0 22.75555555-10.18766222 22.75555556-22.75555555s-10.18766222-22.75555555-22.75555556-22.75555555z m-83.05777778-493.79555556c12.56789333 0 22.75555555 10.18766222 22.75555556 22.75555556v56.88888888h166.11555555c31.41859555 0 56.88888889 25.47029333 56.88888889 56.88888889v158.15111111H56.88888889V193.42222222c0-31.41859555 25.47029333-56.88888889 56.88888889-56.88888889h167.25333333v-56.88888888c0-12.56789333 10.18766222-22.75555555 22.75555556-22.75555556s22.75555555 10.18766222 22.75555555 22.75555556v56.88888888h372.05333333v-56.88888888c0-12.56789333 10.18766222-22.75555555 22.75555556-22.75555556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3103 = [\n  _hoisted_2103\n];\nfunction _sfc_render103(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock103(), _createElementBlock103(\"svg\", _hoisted_1103, _hoisted_3103);\n}\nvar basics_rili_default = /* @__PURE__ */ export_helper_default(basics_rili_vue_vue_type_script_lang_default, [[\"render\", _sfc_render103], [\"__file\", \"basics-rili.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-rili1.vue?vue&type=script&lang.ts\nvar basics_rili1_vue_vue_type_script_lang_default = {\n  name: \"BasicsRili1\"\n};\n\n// src/components/basics-rili1.vue\nimport { createElementVNode as _createElementVNode104, openBlock as _openBlock104, createElementBlock as _createElementBlock104 } from \"vue\";\nvar _hoisted_1104 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2104 = /* @__PURE__ */ _createElementVNode104(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M770.90765392 97.74775349h90.66946135C940.23325984 97.74775349 1003.92454281 161.49081717 1003.92454281 240.26347141V861.3958791C1003.92454281 940.11675139 940.20736948 1003.92454281 861.57711527 1003.92454281H162.42288473C83.76674016 1003.92454281 20.07545719 940.18147911 20.07545719 861.40882489V240.27641719C20.07545719 161.5555449 83.79263052 97.74775349 162.42288473 97.74775349H253.09234608v-38.83614815a38.83614815 38.83614815 0 0 1 77.6722963 0v38.83614815h362.47071524v-38.83614815a38.83614815 38.83614815 0 0 1 77.6722963 0v38.83614815z m0 77.67229629v38.83614816a38.83614815 38.83614815 0 0 1-77.6722963 0v-38.83614816H330.76464238v38.83614816a38.83614815 38.83614815 0 0 1-77.6722963 0v-38.83614816h-90.66946135A64.75280475 64.75280475 0 0 0 97.74775349 240.26347141V861.3958791A64.68807702 64.68807702 0 0 0 162.42288473 926.25224651h699.15423054A64.75280475 64.75280475 0 0 0 926.25224651 861.40882489V240.27641719A64.68807702 64.68807702 0 0 0 861.57711527 175.42004978H770.90765392z m-12.94538191 271.85303705a38.83614815 38.83614815 0 0 1 0 77.67229628H266.03772799a38.83614815 38.83614815 0 0 1 0-77.67229628h491.92454402zM602.61767941 641.45382756a38.83614815 38.83614815 0 0 1 0 77.6722963H266.03772799a38.83614815 38.83614815 0 0 1 0-77.6722963h336.57995142z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3104 = [\n  _hoisted_2104\n];\nfunction _sfc_render104(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock104(), _createElementBlock104(\"svg\", _hoisted_1104, _hoisted_3104);\n}\nvar basics_rili1_default = /* @__PURE__ */ export_helper_default(basics_rili1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render104], [\"__file\", \"basics-rili1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-riqian.vue?vue&type=script&lang.ts\nvar basics_riqian_vue_vue_type_script_lang_default = {\n  name: \"BasicsRiqian\"\n};\n\n// src/components/basics-riqian.vue\nimport { createElementVNode as _createElementVNode105, openBlock as _openBlock105, createElementBlock as _createElementBlock105 } from \"vue\";\nvar _hoisted_1105 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2105 = /* @__PURE__ */ _createElementVNode105(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M770.90765392 97.74775349h90.66946135C940.23325984 97.74775349 1003.92454281 161.49081717 1003.92454281 240.26347141V861.3958791C1003.92454281 940.11675139 940.20736948 1003.92454281 861.57711527 1003.92454281H162.42288473C83.76674016 1003.92454281 20.07545719 940.18147911 20.07545719 861.40882489V240.27641719C20.07545719 161.5555449 83.79263052 97.74775349 162.42288473 97.74775349H253.09234608v-38.83614815a38.83614815 38.83614815 0 0 1 77.6722963 0v38.83614815h362.47071524v-38.83614815a38.83614815 38.83614815 0 0 1 77.6722963 0v38.83614815z m0 77.67229629v38.83614816a38.83614815 38.83614815 0 0 1-77.6722963 0v-38.83614816H330.76464238v38.83614816a38.83614815 38.83614815 0 0 1-77.6722963 0v-38.83614816h-90.66946135A64.75280475 64.75280475 0 0 0 97.74775349 240.26347141V861.3958791A64.68807702 64.68807702 0 0 0 162.42288473 926.25224651h699.15423054A64.75280475 64.75280475 0 0 0 926.25224651 861.40882489V240.27641719A64.68807702 64.68807702 0 0 0 861.57711527 175.42004978H770.90765392z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3105 = [\n  _hoisted_2105\n];\nfunction _sfc_render105(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock105(), _createElementBlock105(\"svg\", _hoisted_1105, _hoisted_3105);\n}\nvar basics_riqian_default = /* @__PURE__ */ export_helper_default(basics_riqian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render105], [\"__file\", \"basics-riqian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-saomiao.vue?vue&type=script&lang.ts\nvar basics_saomiao_vue_vue_type_script_lang_default = {\n  name: \"BasicsSaomiao\"\n};\n\n// src/components/basics-saomiao.vue\nimport { createElementVNode as _createElementVNode106, openBlock as _openBlock106, createElementBlock as _createElementBlock106 } from \"vue\";\nvar _hoisted_1106 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2106 = /* @__PURE__ */ _createElementVNode106(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64c247.424 0 448 200.576 448 448S759.424 960 512 960 64 759.424 64 512 264.576 64 512 64z m190 495.109c-11.046 0-20 8.954-20 20V652l-0.004 0.496C681.731 668.836 668.403 682 652 682h-88.744l-0.345 0.003c-10.886 0.184-19.655 9.066-19.655 19.997 0 11.046 8.954 20 20 20H652l1.158-0.01C691.284 721.373 722 690.274 722 652v-72.891l-0.003-0.345c-0.184-10.887-9.066-19.655-19.997-19.655z m-380-0.43c-11.046 0-20 8.955-20 20V652l0.01 1.158C302.627 691.284 333.726 722 372 722h76.744l0.344-0.003c10.887-0.184 19.656-9.066 19.656-19.997 0-11.046-8.954-20-20-20H372l-0.496-0.004C355.164 681.731 342 668.403 342 652v-73.32l-0.003-0.345c-0.184-10.887-9.066-19.656-19.997-19.656zM630 492H394c-11.046 0-20 8.954-20 20s8.954 20 20 20h236c11.046 0 20-8.954 20-20s-8.954-20-20-20zM446.781 302H372l-1.158 0.01C332.716 302.627 302 333.726 302 372v77.743l0.003 0.345c0.184 10.887 9.066 19.655 19.997 19.655 11.046 0 20-8.954 20-20V372l0.004-0.496C342.269 355.164 355.597 342 372 342h74.781l0.345-0.003c10.886-0.184 19.655-9.066 19.655-19.997 0-11.046-8.954-20-20-20zM652 302h-86.177l-0.345 0.003c-10.886 0.184-19.655 9.066-19.655 19.997 0 11.046 8.954 20 20 20H652l0.496 0.004C668.836 342.269 682 355.597 682 372v74.565l0.003 0.344c0.184 10.887 9.066 19.656 19.997 19.656 11.046 0 20-8.954 20-20V372l-0.01-1.158C721.373 332.716 690.274 302 652 302z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3106 = [\n  _hoisted_2106\n];\nfunction _sfc_render106(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock106(), _createElementBlock106(\"svg\", _hoisted_1106, _hoisted_3106);\n}\nvar basics_saomiao_default = /* @__PURE__ */ export_helper_default(basics_saomiao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render106], [\"__file\", \"basics-saomiao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-saoyisao.vue?vue&type=script&lang.ts\nvar basics_saoyisao_vue_vue_type_script_lang_default = {\n  name: \"BasicsSaoyisao\"\n};\n\n// src/components/basics-saoyisao.vue\nimport { createElementVNode as _createElementVNode107, openBlock as _openBlock107, createElementBlock as _createElementBlock107 } from \"vue\";\nvar _hoisted_1107 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2107 = /* @__PURE__ */ _createElementVNode107(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M732.07150577 97.74775349a38.83614815 38.83614815 0 0 1 0-77.6722963h181.23535884a90.61767941 90.61767941 0 0 1 90.6176782 90.6176782v181.23535884a38.83614815 38.83614815 0 0 1-77.6722963 0V110.69313539a12.94538311 12.94538311 0 0 0-12.9453819-12.9453819H732.07150577z m194.18074074 634.32375228a38.83614815 38.83614815 0 0 1 77.6722963 0v181.23535884a90.61767941 90.61767941 0 0 1-90.6176782 90.6176782H732.07150577a38.83614815 38.83614815 0 0 1 0-77.6722963h181.23535884a12.94538311 12.94538311 0 0 0 12.9453819-12.9453819V732.07150577zM291.92849423 926.25224651a38.83614815 38.83614815 0 0 1 0 77.6722963H110.69313539a90.61767941 90.61767941 0 0 1-90.6176782-90.6176782V732.07150577a38.83614815 38.83614815 0 0 1 77.6722963 0v181.23535884a12.94538311 12.94538311 0 0 0 12.9453819 12.9453819h181.23535884zM97.74775349 291.92849423a38.83614815 38.83614815 0 0 1-77.6722963 0V110.69313539a90.61767941 90.61767941 0 0 1 90.6176782-90.6176782h181.23535884a38.83614815 38.83614815 0 0 1 0 77.6722963H110.69313539a12.94538311 12.94538311 0 0 0-12.9453819 12.9453819v181.23535884z m763.77757984 181.23535762a38.83614815 38.83614815 0 0 1 0 77.6722963H162.47466667a38.83614815 38.83614815 0 0 1 0-77.6722963h699.05066666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3107 = [\n  _hoisted_2107\n];\nfunction _sfc_render107(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock107(), _createElementBlock107(\"svg\", _hoisted_1107, _hoisted_3107);\n}\nvar basics_saoyisao_default = /* @__PURE__ */ export_helper_default(basics_saoyisao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render107], [\"__file\", \"basics-saoyisao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shaixuan.vue?vue&type=script&lang.ts\nvar basics_shaixuan_vue_vue_type_script_lang_default = {\n  name: \"BasicsShaixuan\"\n};\n\n// src/components/basics-shaixuan.vue\nimport { createElementVNode as _createElementVNode108, openBlock as _openBlock108, createElementBlock as _createElementBlock108 } from \"vue\";\nvar _hoisted_1108 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2108 = /* @__PURE__ */ _createElementVNode108(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M782.82069333 55.75111111a73.95555555 73.95555555 0 0 1 47.97212445 17.66968889c31.08636445 26.49429333 34.80803555 73.17276445 8.31374222 104.25799111L623.51701333 430.62727111v492.96611556c0 14.9504-8.23751111 27.97568-20.42197333 34.78528-14.51804445 11.80444445-35.82293333 12.04792889-50.688-0.42552889L322.76821333 765.26250667l-13.59303111-7.71640889a39.82222222 39.82222222 0 0 1-20.16483555-34.63168v-1.77152a40.03043555 40.03043555 0 0 1 0-5.74805333V430.62954667L73.4208 177.67879111A73.95555555 73.95555555 0 0 1 55.75111111 129.70666667c0-40.84508445 33.11047111-73.95555555 73.95555556-73.95555556h653.11402666z m162.68743112 810.95338667c12.56789333 0 22.75555555 10.1888 22.75555555 22.75555555 0 12.56789333-10.18766222 22.75555555-22.75555555 22.75555556h-243.48444445c-12.56789333 0-22.75555555-10.18766222-22.75555555-22.75555556 0-12.56675555 10.18766222-22.75555555 22.75555555-22.75555555h243.48444445z m0-193.42222223c12.56789333 0 22.75555555 10.1888 22.75555555 22.75555556 0 12.56789333-10.18766222 22.75555555-22.75555555 22.75555556h-243.48444445c-12.56789333 0-22.75555555-10.18766222-22.75555555-22.75555556 0-12.56675555 10.18766222-22.75555555 22.75555555-22.75555556h243.48444445z m0-193.42222222c12.56789333 0 22.75555555 10.1888 22.75555555 22.75555556 0 12.56789333-10.18766222 22.75555555-22.75555555 22.75555556h-243.48444445c-12.56789333 0-22.75555555-10.18766222-22.75555555-22.75555556 0-12.56675555 10.18766222-22.75555555 22.75555555-22.75555556h243.48444445z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3108 = [\n  _hoisted_2108\n];\nfunction _sfc_render108(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock108(), _createElementBlock108(\"svg\", _hoisted_1108, _hoisted_3108);\n}\nvar basics_shaixuan_default = /* @__PURE__ */ export_helper_default(basics_shaixuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render108], [\"__file\", \"basics-shaixuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shaixuan1.vue?vue&type=script&lang.ts\nvar basics_shaixuan1_vue_vue_type_script_lang_default = {\n  name: \"BasicsShaixuan1\"\n};\n\n// src/components/basics-shaixuan1.vue\nimport { createElementVNode as _createElementVNode109, openBlock as _openBlock109, createElementBlock as _createElementBlock109 } from \"vue\";\nvar _hoisted_1109 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2109 = /* @__PURE__ */ _createElementVNode109(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M664.50469888 511.44172999l255.8573989-349.73164999a85.03902777 85.03902777 0 0 0-18.2893989-118.74152334A84.74775666 84.74775666 0 0 0 851.93765888 26.54814777H172.06234112C125.21623666 26.54814777 87.22963001 64.58330112 87.22963001 111.50222222c0 18.05880889 5.74046777 35.64430222 16.39613554 50.20785778l255.86953557 349.73164999V961.04296334c0 20.10984334 16.27477333 36.40888889 36.36034333 36.40888889a36.38461667 36.38461667 0 0 0 36.34820778-36.40888889V499.52388779c0-7.73082112-2.46366777-15.26746112-7.02691556-21.51765334L162.28048555 118.67477333A12.14843221 12.14843221 0 0 1 172.06234112 99.36592555h679.87531776a12.13629667 12.13629667 0 0 1 9.7697189 19.30884778L598.81092779 478.00623445a36.44529778 36.44529778 0 0 0-7.02691556 21.51765334v358.8702811c0 20.10984334 16.27477333 36.40888889 36.36034332 36.40888889a36.38461667 36.38461667 0 0 0 36.36034333-36.40888889V511.44172999z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3109 = [\n  _hoisted_2109\n];\nfunction _sfc_render109(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock109(), _createElementBlock109(\"svg\", _hoisted_1109, _hoisted_3109);\n}\nvar basics_shaixuan1_default = /* @__PURE__ */ export_helper_default(basics_shaixuan1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render109], [\"__file\", \"basics-shaixuan1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shanchu.vue?vue&type=script&lang.ts\nvar basics_shanchu_vue_vue_type_script_lang_default = {\n  name: \"BasicsShanchu\"\n};\n\n// src/components/basics-shanchu.vue\nimport { createElementVNode as _createElementVNode110, openBlock as _openBlock110, createElementBlock as _createElementBlock110 } from \"vue\";\nvar _hoisted_1110 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2110 = /* @__PURE__ */ _createElementVNode110(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 62c247.424 0 448 200.576 448 448S759.424 958 512 958 64 757.424 64 510 264.576 62 512 62zM381.892 353.608c-7.81-7.81-20.473-7.81-28.284 0-7.81 7.81-7.81 20.474 0 28.284L483.716 512 353.608 642.108c-7.81 7.81-7.81 20.473 0 28.284 7.81 7.81 20.474 7.81 28.284 0L512 540.284l130.108 130.108c7.81 7.81 20.473 7.81 28.284 0 7.81-7.81 7.81-20.474 0-28.284L540.284 511.999l130.108-130.107c7.81-7.81 7.81-20.473 0-28.284-7.81-7.81-20.474-7.81-28.284 0L511.999 483.715z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3110 = [\n  _hoisted_2110\n];\nfunction _sfc_render110(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock110(), _createElementBlock110(\"svg\", _hoisted_1110, _hoisted_3110);\n}\nvar basics_shanchu_default = /* @__PURE__ */ export_helper_default(basics_shanchu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render110], [\"__file\", \"basics-shanchu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shandian.vue?vue&type=script&lang.ts\nvar basics_shandian_vue_vue_type_script_lang_default = {\n  name: \"BasicsShandian\"\n};\n\n// src/components/basics-shandian.vue\nimport { createElementVNode as _createElementVNode111, openBlock as _openBlock111, createElementBlock as _createElementBlock111 } from \"vue\";\nvar _hoisted_1111 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2111 = /* @__PURE__ */ _createElementVNode111(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M388.0163552 591.5420448h-183.18222187c-23.91608853 0-40.41386667-23.9388448-31.90328853-46.27342293L354.95253333 67.49297813A34.13333333 34.13333333 0 0 1 386.8444448 45.51111147h307.15448853c24.23466667 0 40.7552 24.5532448 31.60746667 47.0016l-105.984 260.1415104h199.52071147c29.34328853 0 44.99911147 34.5884448 25.6455104 56.63857813l-489.17617707 557.39733333c-23.7795552 27.10186667-67.8684448 3.61813333-58.64106667-31.232l91.04497707-343.91608853zM410.36231147 113.77777813L254.35022187 523.2867552h177.99395626a34.13333333 34.13333333 0 0 1 32.9955552 42.8600896l-65.2060448 246.35164373 343.6544-391.58897706H568.86613333c-24.23466667 0-40.7552-24.5532448-31.60746666-47.0016l105.984-260.14151147H410.36231147z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3111 = [\n  _hoisted_2111\n];\nfunction _sfc_render111(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock111(), _createElementBlock111(\"svg\", _hoisted_1111, _hoisted_3111);\n}\nvar basics_shandian_default = /* @__PURE__ */ export_helper_default(basics_shandian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render111], [\"__file\", \"basics-shandian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shangchuan.vue?vue&type=script&lang.ts\nvar basics_shangchuan_vue_vue_type_script_lang_default = {\n  name: \"BasicsShangchuan\"\n};\n\n// src/components/basics-shangchuan.vue\nimport { createElementVNode as _createElementVNode112, openBlock as _openBlock112, createElementBlock as _createElementBlock112 } from \"vue\";\nvar _hoisted_1112 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2112 = /* @__PURE__ */ _createElementVNode112(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M572.6814811 816.82735445l58.5333578-62.47765333a36.1054811 36.1054811 0 0 1 51.45789553-1.39567445 37.13706667 37.13706667 0 0 1 1.38353778 52.07684778l-110.84079331 118.32888889a42.13722112 42.13722112 0 0 1-60.09894002 1.58985444l-123.29263331-118.5594789a37.13706667 37.13706667 0 0 1-1.31072-52.07684665 36.1054811 36.1054811 0 0 1 51.48216888-1.33499335L499.86370333 810.5771611V512.08495445c0-20.34043221 16.29904555-36.83365888 36.40888888-36.83366002s36.40888889 16.50536334 36.40888889 36.83366002v304.7424zM512 87.22963001c139.96790557 0 259.65605888 98.65595221 295.16686222 235.38346666C912.83759445 324.43354112 997.45185223 414.25427001 997.45185223 524.16056889c0 111.04711111-86.37402112 201.5838811-193.57392668 201.5838811-20.10984334 0-36.40888889-16.49322667-36.40888889-36.83365888 0-20.34043221 16.29904555-36.83365888 36.40888889-36.83365888 66.39767666 0 120.75614777-56.97991111 120.7561489-127.91656334 0-70.92451555-54.35847111-127.90442667-120.7561489-127.90442667-6.66282667 0-13.22856334 0.57040555-19.68507222 1.68694557-20.0491611 3.47098112-39.03032889-10.35226112-42.12508444-30.70483001C724.02109667 248.82441443 626.59091001 160.90908445 512 160.90908445c-84.00744334 0-160.34474667 47.25873778-201.81447111 122.72222776a36.3117989 36.3117989 0 0 1-34.27290112 18.85980445 159.71365888 159.71365888 0 0 0-10.88625778-0.36408889c-91.19212999 0-165.66044445 78.03638557-165.66044444 174.96898446 0 96.92046222 74.46831445 174.98112 165.66044444 174.98112 20.10984334 0 36.40888889 16.49322667 36.40888889 36.83365888 0 20.34043221-16.29904555 36.83365888-36.40888889 36.83365888C133.01987555 725.74444999 26.54814777 614.13907001 26.54814777 477.09601223c0-134.6157989 102.73374777-244.69200555 231.48771556-248.5513489C314.12982557 141.35751111 408.47739221 87.22963001 512 87.22963001z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3112 = [\n  _hoisted_2112\n];\nfunction _sfc_render112(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock112(), _createElementBlock112(\"svg\", _hoisted_1112, _hoisted_3112);\n}\nvar basics_shangchuan_default = /* @__PURE__ */ export_helper_default(basics_shangchuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render112], [\"__file\", \"basics-shangchuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shangquan.vue?vue&type=script&lang.ts\nvar basics_shangquan_vue_vue_type_script_lang_default = {\n  name: \"BasicsShangquan\"\n};\n\n// src/components/basics-shangquan.vue\nimport { createElementVNode as _createElementVNode113, openBlock as _openBlock113, createElementBlock as _createElementBlock113 } from \"vue\";\nvar _hoisted_1113 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2113 = /* @__PURE__ */ _createElementVNode113(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M99.36592555 924.63407445V160.04740779c0-73.728 59.77125888-133.49925888 133.49926002-133.49926002h315.54370332c73.728 0 133.49925888 59.77125888 133.49925888 133.49926002v74.94162887l170.61205333 88.35223779A133.49925888 133.49925888 0 0 1 924.63407445 441.88861667V924.63407445h36.40888889a36.40888889 36.40888889 0 0 1 0 72.81777778H62.95703666a36.40888889 36.40888889 0 0 1 0-72.81777778h36.40888889z m582.54222222 0h169.9081489V441.88861667a60.6814811 60.6814811 0 0 0-32.768-53.88515555L681.90814777 316.99399111V924.63407445z m-509.72444444 0h436.90666666V160.04740779a60.6814811 60.6814811 0 0 0-60.6814811-60.68148224H232.86518557a60.6814811 60.6814811 0 0 0-60.68148224 60.68148224v764.58666666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3113 = [\n  _hoisted_2113\n];\nfunction _sfc_render113(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock113(), _createElementBlock113(\"svg\", _hoisted_1113, _hoisted_3113);\n}\nvar basics_shangquan_default = /* @__PURE__ */ export_helper_default(basics_shangquan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render113], [\"__file\", \"basics-shangquan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shangsheng.vue?vue&type=script&lang.ts\nvar basics_shangsheng_vue_vue_type_script_lang_default = {\n  name: \"BasicsShangsheng\"\n};\n\n// src/components/basics-shangsheng.vue\nimport { createElementVNode as _createElementVNode114, openBlock as _openBlock114, createElementBlock as _createElementBlock114 } from \"vue\";\nvar _hoisted_1114 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2114 = /* @__PURE__ */ _createElementVNode114(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M529.143158 7.436293l347.212925 397.874796a21.748783 21.748783 0 0 1-16.375554 36.077393h-170.66398a21.492915 21.492915 0 0 0-21.492915 18.678367c-12.793402 92.624229-90.065549 502.268955-455.95684 562.909679a21.748783 21.748783 0 0 1-17.654895-38.380206c62.687669-49.126663 144.56544-144.309572 167.593564-313.694212a1571.285609 1571.285609 0 0 0 12.793402-207.508977 22.260519 22.260519 0 0 0-21.748783-22.260519H165.298811a21.748783 21.748783 0 0 1-16.375554-36.077393L496.39205 7.436293a21.748783 21.748783 0 0 1 32.751108 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3114 = [\n  _hoisted_2114\n];\nfunction _sfc_render114(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock114(), _createElementBlock114(\"svg\", _hoisted_1114, _hoisted_3114);\n}\nvar basics_shangsheng_default = /* @__PURE__ */ export_helper_default(basics_shangsheng_vue_vue_type_script_lang_default, [[\"render\", _sfc_render114], [\"__file\", \"basics-shangsheng.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shezhi.vue?vue&type=script&lang.ts\nvar basics_shezhi_vue_vue_type_script_lang_default = {\n  name: \"BasicsShezhi\"\n};\n\n// src/components/basics-shezhi.vue\nimport { createElementVNode as _createElementVNode115, openBlock as _openBlock115, createElementBlock as _createElementBlock115 } from \"vue\";\nvar _hoisted_1115 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2115 = /* @__PURE__ */ _createElementVNode115(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M611.864 75.171c49.256 11.214 95.426 30.545 137.026 56.512l-0.008 0.007c-6.142 42.935 3.696 82.901 31.111 110.317 27.56 27.559 67.801 37.356 110.992 31.014l0.012-0.013c26.104 41.309 45.64 87.18 57.143 136.15l-0.013 0.003C912.763 435.257 891 470.813 891 510c0 39.478 22.088 75.272 57.918 101.419h0.012c-11.06 48.812-30.09 94.598-55.648 135.92-44.062-7.042-85.243 2.609-113.289 30.654-28.19 28.191-37.795 69.652-30.552 113.965l0.009 0.01c-41.039 25.7-86.539 44.935-135.074 56.281l-0.002-0.011C588.146 911.63 551.96 889 512 889c-39.96 0-76.146 22.631-102.374 59.238l-0.002 0.011c-48.535-11.345-94.035-30.582-135.074-56.282l0.01-0.009c7.242-44.313-2.363-85.774-30.553-113.965-28.046-28.045-69.227-37.696-113.283-30.662-25.564-41.314-44.594-87.1-55.654-135.911l0.012-0.001C110.912 585.272 133 549.479 133 510c0-39.187-21.763-74.743-57.127-100.839l-0.013-0.004c11.503-48.968 31.04-94.84 57.143-136.149l0.012 0.013c43.19 6.342 83.432-3.455 110.992-31.014 27.415-27.416 37.253-67.382 31.111-110.317l-0.008-0.007c41.6-25.967 87.77-45.298 137.025-56.512v0.01C438.14 109.774 473.3 131 512 131c38.439 0 73.385-20.94 99.334-55.117l0.53-0.712zM512 348c-89.576 0-164 74.424-164 164s74.424 164 164 164 164-74.424 164-164-74.424-164-164-164z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3115 = [\n  _hoisted_2115\n];\nfunction _sfc_render115(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock115(), _createElementBlock115(\"svg\", _hoisted_1115, _hoisted_3115);\n}\nvar basics_shezhi_default = /* @__PURE__ */ export_helper_default(basics_shezhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render115], [\"__file\", \"basics-shezhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shezhi1.vue?vue&type=script&lang.ts\nvar basics_shezhi1_vue_vue_type_script_lang_default = {\n  name: \"BasicsShezhi1\"\n};\n\n// src/components/basics-shezhi1.vue\nimport { createElementVNode as _createElementVNode116, openBlock as _openBlock116, createElementBlock as _createElementBlock116 } from \"vue\";\nvar _hoisted_1116 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2116 = /* @__PURE__ */ _createElementVNode116(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1004.06613333 558.03297223l-207.4821211 376.22518443a83.95889778 83.95889778 0 0 1-73.46100224 43.60571335h-412.02725888a83.95889778 83.95889778 0 0 1-73.4610011-43.60571335l-207.48212224-376.22518443a85.71866112 85.71866112 0 0 1 0-82.69672334l207.48212224-376.22518556a83.95889778 83.95889778 0 0 1 73.4610011-43.60571222h412.02725888a83.95889778 83.95889778 0 0 1 73.46100224 43.60571222l207.4821211 376.22518556a85.71866112 85.71866112 0 0 1 0 82.69672334z m-63.70341888-35.43798556a12.25765888 12.25765888 0 0 0 0-11.80861668l-207.11803335-376.22518442a11.96638777 11.96638777 0 0 0-10.47362332-6.23805668H311.44770333a11.96638777 11.96638777 0 0 0-10.47362333 6.23805668l-207.11803221 376.22518442a12.25765888 12.25765888 0 0 0 0 11.80861668l207.11803221 376.22518556a11.96638777 11.96638777 0 0 0 10.47362333 6.22592h411.32335445a11.96638777 11.96638777 0 0 0 10.47362332-6.22592l207.11803335-376.22518556zM513.97821667 706.18074112c-107.24844999 0-194.18074112-86.93228999-194.18074112-194.18074112s86.93228999-194.18074112 194.18074112-194.18074112c107.23631445 0 194.18074112 86.93228999 194.18073999 194.18074112s-86.94442667 194.18074112-194.18073999 194.18074112z m0-72.81777778c67.02876445 0 121.36296334-54.3341989 121.36296221-121.36296334s-54.3341989-121.36296334-121.36296221-121.36296334-121.36296334 54.3341989-121.36296334 121.36296334 54.3341989 121.36296334 121.36296334 121.36296334z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3116 = [\n  _hoisted_2116\n];\nfunction _sfc_render116(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock116(), _createElementBlock116(\"svg\", _hoisted_1116, _hoisted_3116);\n}\nvar basics_shezhi1_default = /* @__PURE__ */ export_helper_default(basics_shezhi1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render116], [\"__file\", \"basics-shezhi1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shijian.vue?vue&type=script&lang.ts\nvar basics_shijian_vue_vue_type_script_lang_default = {\n  name: \"BasicsShijian\"\n};\n\n// src/components/basics-shijian.vue\nimport { createElementVNode as _createElementVNode117, openBlock as _openBlock117, createElementBlock as _createElementBlock117 } from \"vue\";\nvar _hoisted_1117 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2117 = /* @__PURE__ */ _createElementVNode117(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M928.51768889 761.48584334a36.40888889 36.40888889 0 0 1-62.44124444-37.47688334A410.49808555 410.49808555 0 0 0 924.63407445 512c0-227.89537223-184.73870222-412.63407445-412.63407445-412.63407445S99.36592555 284.10462777 99.36592555 512s184.73870222 412.63407445 412.63407445 412.63407445a410.49808555 410.49808555 0 0 0 211.98468779-58.53335779 36.40888889 36.40888889 0 0 1 37.46474666 62.44124444A483.30372779 483.30372779 0 0 1 512 997.45185223C243.8970789 997.45185223 26.54814777 780.1029211 26.54814777 512S243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223c0 89.08041443-24.06627555 174.72625778-68.93416334 249.48584334z m-624.30321778-93.18248334L475.59111111 496.91458333V293.54666667a36.40888889 36.40888889 0 0 1 72.81777778 0v218.45333333a36.40888889 36.40888889 0 0 1-10.66780444 25.74108445l-182.04444445 182.04444444a36.40888889 36.40888889 0 1 1-51.48216889-51.48216889z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3117 = [\n  _hoisted_2117\n];\nfunction _sfc_render117(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock117(), _createElementBlock117(\"svg\", _hoisted_1117, _hoisted_3117);\n}\nvar basics_shijian_default = /* @__PURE__ */ export_helper_default(basics_shijian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render117], [\"__file\", \"basics-shijian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shoucang.vue?vue&type=script&lang.ts\nvar basics_shoucang_vue_vue_type_script_lang_default = {\n  name: \"BasicsShoucang\"\n};\n\n// src/components/basics-shoucang.vue\nimport { createElementVNode as _createElementVNode118, openBlock as _openBlock118, createElementBlock as _createElementBlock118 } from \"vue\";\nvar _hoisted_1118 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2118 = /* @__PURE__ */ _createElementVNode118(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M310.62243555 972.37826333c-40.86291001 25.38913223-94.29902222 12.25765888-119.11774776-29.07856555a87.98814777 87.98814777 0 0 1-10.19448889-65.34181888l52.88997888-225.55306667a14.95191666 14.95191666 0 0 0-4.57538333-14.63637333l-173.12426666-150.85416335c-35.95984555-31.31164445-40.11045888-86.07061333-9.36922112-122.57659221a86.10702222 86.10702222 0 0 1 58.86103666-30.43783111L333.19594667 315.392c4.95160889-0.41263445 9.38135666-3.67729778 11.4081189-8.64104334l87.53910442-214.09640221c18.24085333-44.60088889 68.97057223-65.90008889 113.23164444-47.17378446a86.82306333 86.82306333 0 0 1 46.45774223 47.17378446l87.53910556 214.08426667c2.0267611 4.9758811 6.45651001 8.2526811 11.4081189 8.65317888l227.22787555 18.51998777c47.64709888 3.88361443 82.92731221 46.03297223 79.15292445 93.8863889a87.53910557 87.53910557 0 0 1-29.67324445 59.1401711l-173.12426666 150.85416334c-4.02924999 3.50739001-5.84969443 9.18717667-4.57538446 14.62423666l52.88998002 225.55306666c10.94693888 46.66405888-17.47626667 93.68007111-63.87332779 104.93041778a85.65797888 85.65797888 0 0 1-65.45104555-10.51003221l-194.53269333-120.87751111a12.85233778 12.85233778 0 0 0-13.66547001 0l-194.54483001 120.87751111zM557.26838557 789.65418667l194.53269333 120.87751111c2.98552889 1.84471666 6.50505443 2.41512334 9.84253553 1.60199111 7.29391445-1.77189888 12.01493333-9.58767445 10.15808-17.54908444l-52.88997888-225.55306667a87.76969443 87.76969443 0 0 1 27.62221-86.16770333L919.65819221 432.02180779c2.82775666-2.46366777 4.61179221-6.04387555 4.92733668-9.95176334 0.64322333-8.11918222-5.10938112-14.98832555-12.48824889-15.58300445l-227.22787555-18.53212445a86.45897443 86.45897443 0 0 1-72.89059556-53.66670222l-87.53910556-214.08426666a14.00528555 14.00528555 0 0 0-7.43954888-7.67013888c-6.71137223-2.83989333-14.4786011 0.42476999-17.43985778 7.67013888l-87.55124224 214.08426666a86.45897443 86.45897443 0 0 1-72.89059555 53.66670222l-227.21573888 18.53212445a13.28924445 13.28924445 0 0 0-9.07795001 4.75742777 15.04900779 15.04900779 0 0 0 1.5170378 20.77734002l173.12426666 150.8541622a87.76969443 87.76969443 0 0 1 27.62221 86.16770446l-52.88997888 225.54093a15.17036999 15.17036999 0 0 0 1.72335331 11.23820998c3.96856889 6.59000889 12.03920555 8.56822557 18.27726222 4.69674667l194.54483001-120.86537443a85.67011555 85.67011555 0 0 1 90.52463446 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3118 = [\n  _hoisted_2118\n];\nfunction _sfc_render118(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock118(), _createElementBlock118(\"svg\", _hoisted_1118, _hoisted_3118);\n}\nvar basics_shoucang_default = /* @__PURE__ */ export_helper_default(basics_shoucang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render118], [\"__file\", \"basics-shoucang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shougongshuru.vue?vue&type=script&lang.ts\nvar basics_shougongshuru_vue_vue_type_script_lang_default = {\n  name: \"BasicsShougongshuru\"\n};\n\n// src/components/basics-shougongshuru.vue\nimport { createElementVNode as _createElementVNode119, openBlock as _openBlock119, createElementBlock as _createElementBlock119 } from \"vue\";\nvar _hoisted_1119 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2119 = /* @__PURE__ */ _createElementVNode119(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M916.26666667 896c11.7824 0 21.33333333 9.55093333 21.33333333 21.33333333s-9.55093333 21.33333333-21.33333333 21.33333334H528c-11.7824 0-21.33333333-9.55093333-21.33333333-21.33333334s9.55093333-21.33333333 21.33333333-21.33333333h388.26666667zM199.24053333 619.57226667L409.85706667 830.18666667c-5.75786667 4.69866667-12.1024 8.528-18.75413334 11.30026666l-213.99893333 89.16586667c-38.17066667 15.904-75.36746667-0.0192-83.08053333-35.5648-2.91093333-13.41226667-1.24906667-28.36266667 4.752-42.7648l89.16586666-213.99893333c2.7712-6.65066667 6.60053333-12.99626667 11.2992-18.75306667z m395.69386667-396.26666667l211.18933333 211.18933333-365.81013333 365.80906667-211.18933333-211.18933333 365.81013333-365.81013334z m178.00213333-105.59573333l138.78186667 138.78186666c19.99466667 19.99466667 15.9424 56.46506667-9.05066667 81.4592l-66.3744 66.37333334-211.18933333-211.18933334 66.3744-66.37333333c24.99306667-24.99413333 61.46346667-29.04533333 81.45813333-9.05173333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3119 = [\n  _hoisted_2119\n];\nfunction _sfc_render119(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock119(), _createElementBlock119(\"svg\", _hoisted_1119, _hoisted_3119);\n}\nvar basics_shougongshuru_default = /* @__PURE__ */ export_helper_default(basics_shougongshuru_vue_vue_type_script_lang_default, [[\"render\", _sfc_render119], [\"__file\", \"basics-shougongshuru.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shouji.vue?vue&type=script&lang.ts\nvar basics_shouji_vue_vue_type_script_lang_default = {\n  name: \"BasicsShouji\"\n};\n\n// src/components/basics-shouji.vue\nimport { createElementVNode as _createElementVNode120, openBlock as _openBlock120, createElementBlock as _createElementBlock120 } from \"vue\";\nvar _hoisted_1120 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2120 = /* @__PURE__ */ _createElementVNode120(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M852 779v121c0 33.137-26.863 60-60 60H232c-33.137 0-60-26.863-60-60V779h680z m-340 39c-24.3 0-44 19.7-44 44s19.7 44 44 44 44-19.7 44-44-19.7-44-44-44zM792 64c33.137 0 60 26.863 60 60v615H172V124c0-33.137 26.863-60 60-60h560z m-200 70H432c-11.046 0-20 8.954-20 20s8.954 20 20 20h160c11.046 0 20-8.954 20-20s-8.954-20-20-20z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3120 = [\n  _hoisted_2120\n];\nfunction _sfc_render120(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock120(), _createElementBlock120(\"svg\", _hoisted_1120, _hoisted_3120);\n}\nvar basics_shouji_default = /* @__PURE__ */ export_helper_default(basics_shouji_vue_vue_type_script_lang_default, [[\"render\", _sfc_render120], [\"__file\", \"basics-shouji.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shouqi.vue?vue&type=script&lang.ts\nvar basics_shouqi_vue_vue_type_script_lang_default = {\n  name: \"BasicsShouqi\"\n};\n\n// src/components/basics-shouqi.vue\nimport { createElementVNode as _createElementVNode121, openBlock as _openBlock121, createElementBlock as _createElementBlock121 } from \"vue\";\nvar _hoisted_1121 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2121 = /* @__PURE__ */ _createElementVNode121(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M853.33333333 56.88888889c62.83719111 0 113.77777778 50.94058667 113.77777778 113.77777778v682.66666666c0 62.83719111-50.94058667 113.77777778-113.77777778 113.77777778H170.66666667c-62.83719111 0-113.77777778-50.94058667-113.77777778-113.77777778V170.66666667c0-62.83719111 50.94058667-113.77777778 113.77777778-113.77777778h682.66666666z m-109.22666666 432.35555556H279.89333333c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555555s10.18766222 22.75555555 22.75555555 22.75555555h464.21333334c12.56789333 0 22.75555555-10.18766222 22.75555555-22.75555555s-10.18766222-22.75555555-22.75555555-22.75555555z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3121 = [\n  _hoisted_2121\n];\nfunction _sfc_render121(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock121(), _createElementBlock121(\"svg\", _hoisted_1121, _hoisted_3121);\n}\nvar basics_shouqi_default = /* @__PURE__ */ export_helper_default(basics_shouqi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render121], [\"__file\", \"basics-shouqi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shouye.vue?vue&type=script&lang.ts\nvar basics_shouye_vue_vue_type_script_lang_default = {\n  name: \"BasicsShouye\"\n};\n\n// src/components/basics-shouye.vue\nimport { createElementVNode as _createElementVNode122, openBlock as _openBlock122, createElementBlock as _createElementBlock122 } from \"vue\";\nvar _hoisted_1122 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2122 = /* @__PURE__ */ _createElementVNode122(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M437.73724445 932.36565333c0 18.85184-15.28035555 34.13333333-34.13333334 34.13333334h-101.26222222c-74.77589333 0-135.39555555-60.61852445-135.39555556-135.39555556v-271.92888889H112.64c-29.86097778 0-54.12408889-23.96387555-54.60650667-53.70993777l-0.00682666-0.90339556a54.61333333 54.61333333 0 0 1 15.41347555-38.02567111l0.48128-0.49038223L459.264 78.68643555c28.51726222-28.66744889 74.69738667-29.07363555 103.71413333-1.12867555l0.87495112 0.85560889L949.46417778 466.04515555c21.27189333 21.38339555 21.18200889 55.96273778-0.20138667 77.23463112a54.61333333 54.61333333 0 0 1-37.82997333 15.89134222l-0.68721778 0.00341333H857.57724445v270.79111111c0 74.02951111-59.41134222 134.18268445-133.15527112 135.37735112l-2.23914666 0.01820444h-101.26222222c-18.66296889 0-33.82727111-14.97770667-34.12878223-33.56899556l-0.00455111-0.56433778-0.00113778-38.68444444h-1.13777778v-253.72444444h-147.9111111v293.54666666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3122 = [\n  _hoisted_2122\n];\nfunction _sfc_render122(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock122(), _createElementBlock122(\"svg\", _hoisted_1122, _hoisted_3122);\n}\nvar basics_shouye_default = /* @__PURE__ */ export_helper_default(basics_shouye_vue_vue_type_script_lang_default, [[\"render\", _sfc_render122], [\"__file\", \"basics-shouye.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shouye2.vue?vue&type=script&lang.ts\nvar basics_shouye2_vue_vue_type_script_lang_default = {\n  name: \"BasicsShouye2\"\n};\n\n// src/components/basics-shouye2.vue\nimport { createElementVNode as _createElementVNode123, openBlock as _openBlock123, createElementBlock as _createElementBlock123 } from \"vue\";\nvar _hoisted_1123 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2123 = /* @__PURE__ */ _createElementVNode123(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1000.10666667 501.76l-126.29333334-119.46666667-344.74666666-320.85333333c-10.24-10.24-23.89333333-10.24-34.13333334 0l-334.50666666 317.44c-3.41333333 3.41333333-6.82666667 6.82666667-10.24 10.24l-126.29333334 119.46666667c-10.24 10.24-10.24 23.89333333 0 34.13333333s23.89333333 10.24 34.13333334 0l88.74666666-85.33333333 0 419.84c0 51.2 44.37333333 95.57333333 98.98666667 95.57333333l88.74666667 0c40.96 0 75.09333333-30.72 75.09333333-71.68l0-232.10666667 105.81333333 0 105.81333334 0 0 232.10666667c0 37.54666667 34.13333333 71.68 75.09333333 71.68l88.74666667 0c54.61333333 0 98.98666667-40.96 98.98666666-95.57333333l0-423.25333334 85.33333334 78.50666667c10.24 10.24 23.89333333 10.24 34.13333333 0C1010.34666667 525.65333333 1010.34666667 512 1000.10666667 501.76zM829.44 880.64c0 27.30666667-20.48 47.78666667-47.78666667 47.78666667l-88.74666666 0c-13.65333333 0-23.89333333-10.24-23.89333334-23.89333334L669.01333333 648.53333333c0-13.65333333-10.24-23.89333333-23.89333333-23.89333333l-129.70666667 0-129.70666666 0c-13.65333333 0-23.89333333 10.24-23.89333334 23.89333333l0 256c0 13.65333333-10.24 23.89333333-23.89333333 23.89333334l-88.74666667 0c-27.30666667 0-47.78666667-20.48-47.78666666-47.78666667l0-467.62666667 314.02666666-300.37333333 314.02666667 300.37333333L829.44 880.64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3123 = [\n  _hoisted_2123\n];\nfunction _sfc_render123(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock123(), _createElementBlock123(\"svg\", _hoisted_1123, _hoisted_3123);\n}\nvar basics_shouye2_default = /* @__PURE__ */ export_helper_default(basics_shouye2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render123], [\"__file\", \"basics-shouye2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shuaxin.vue?vue&type=script&lang.ts\nvar basics_shuaxin_vue_vue_type_script_lang_default = {\n  name: \"BasicsShuaxin\"\n};\n\n// src/components/basics-shuaxin.vue\nimport { createElementVNode as _createElementVNode124, openBlock as _openBlock124, createElementBlock as _createElementBlock124 } from \"vue\";\nvar _hoisted_1124 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2124 = /* @__PURE__ */ _createElementVNode124(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 56.88888889c251.35104 0 455.11111111 203.76007111 455.11111111 455.11111111S763.35104 967.11111111 512 967.11111111 56.88888889 763.35104 56.88888889 512s203.76007111-455.11111111 455.11111111-455.11111111z m4.98801778 244.62222222C398.11527111 301.51111111 301.51111111 395.61443555 301.51111111 512s96.60416 210.48888889 215.47690667 210.48888889c87.35744 0 165.13706667-51.27623111 198.58773333-128.67015111 4.98574222-11.53592889-0.32426667-24.92871111-11.86019556-29.91559111-11.53706667-4.98574222-24.93098667 0.32426667-29.91672888 11.86019555l-0.79758222 1.81589333C646.31352889 637.32053333 585.472 676.97777778 516.98915555 676.97777778 422.98481778 676.97777778 347.02222222 602.97898667 347.02222222 512s75.96487111-164.97777778 169.96579556-164.97777778c57.52263111 0 109.44853333 27.97795555 140.40405333 71.92803556l-36.35655111-9.74165333c-12.13895111-3.25290667-24.61696 3.95150222-27.86872889 16.09045333-3.25404445 12.14008889 3.95036445 24.61696 16.09045334 27.86986667l90.11882666 24.14705777c12.13895111 3.25290667 24.61696-3.95150222 27.86872889-16.09045333 0.05006222-0.18318222 0.09671111-0.36750222 0.14108445-0.55068444 0.05347555-0.18204445 0.10467555-0.36408889 0.1536-0.5484089l24.14705777-90.11882666c3.25404445-12.14008889-3.95036445-24.61696-16.09045333-27.86986667-12.13895111-3.25290667-24.61696 3.95150222-27.86986667 16.09045333l-10.33329777 38.57521778C658.41948445 338.61404445 591.30652445 301.51111111 516.98801778 301.51111111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3124 = [\n  _hoisted_2124\n];\nfunction _sfc_render124(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock124(), _createElementBlock124(\"svg\", _hoisted_1124, _hoisted_3124);\n}\nvar basics_shuaxin_default = /* @__PURE__ */ export_helper_default(basics_shuaxin_vue_vue_type_script_lang_default, [[\"render\", _sfc_render124], [\"__file\", \"basics-shuaxin.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shuaxin1.vue?vue&type=script&lang.ts\nvar basics_shuaxin1_vue_vue_type_script_lang_default = {\n  name: \"BasicsShuaxin1\"\n};\n\n// src/components/basics-shuaxin1.vue\nimport { createElementVNode as _createElementVNode125, openBlock as _openBlock125, createElementBlock as _createElementBlock125 } from \"vue\";\nvar _hoisted_1125 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2125 = /* @__PURE__ */ _createElementVNode125(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M865.27544889 467.79960889a36.40888889 36.40888889 0 0 0-35.71712 63.46069333l110.87720334 62.40483556c23.11964445 13.01011001 51.94334777-2.28162333 54.15215332-28.72661333 1.9053989-22.9376 2.86416555-40.47454777 2.86416668-52.93852445C997.45185223 243.8970789 780.1029211 26.54814777 512 26.54814777S26.54814777 243.8970789 26.54814777 512s217.34892999 485.45185223 485.45185223 485.45185223c163.96136334 0 314.08734777-81.95640889 403.62894222-215.64984889a36.40888889 36.40888889 0 1 0-60.49943665-40.52309333C778.97424555 854.99600555 651.42177223 924.63407445 512 924.63407445c-227.89537223 0-412.63407445-184.73870222-412.63407445-412.63407445s184.73870222-412.63407445 412.63407445-412.63407445c224.25448334 0 406.72369778 178.88900779 412.4884389 401.75995335l-59.21299001-33.32627001z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3125 = [\n  _hoisted_2125\n];\nfunction _sfc_render125(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock125(), _createElementBlock125(\"svg\", _hoisted_1125, _hoisted_3125);\n}\nvar basics_shuaxin1_default = /* @__PURE__ */ export_helper_default(basics_shuaxin1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render125], [\"__file\", \"basics-shuaxin1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-shuju.vue?vue&type=script&lang.ts\nvar basics_shuju_vue_vue_type_script_lang_default = {\n  name: \"BasicsShuju\"\n};\n\n// src/components/basics-shuju.vue\nimport { createElementVNode as _createElementVNode126, openBlock as _openBlock126, createElementBlock as _createElementBlock126 } from \"vue\";\nvar _hoisted_1126 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2126 = /* @__PURE__ */ _createElementVNode126(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 997.45185223C243.8970789 997.45185223 26.54814777 780.1029211 26.54814777 512S243.8970789 26.54814777 512 26.54814777s485.45185223 217.34892999 485.45185223 485.45185223-217.34892999 485.45185223-485.45185223 485.45185223z m0-72.81777778c227.89537223 0 412.63407445-184.73870222 412.63407445-412.63407445S739.89537223 99.36592555 512 99.36592555 99.36592555 284.10462777 99.36592555 512s184.73870222 412.63407445 412.63407445 412.63407445z m9.34494777-302.27873223l-92.64848555-100.92544-108.94753223 112.94037333a36.40888889 36.40888889 0 1 1-52.40452665-50.55980998l135.80515556-140.7810378a36.40888889 36.40888889 0 0 1 53.03561443 0.65536l93.06112 101.38662002 155.42954667-155.86645334a36.40888889 36.40888889 0 1 1 51.55498667 51.40935112l-182.28717 182.82116664a36.40888889 36.40888889 0 0 1-52.61084444-1.09226666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3126 = [\n  _hoisted_2126\n];\nfunction _sfc_render126(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock126(), _createElementBlock126(\"svg\", _hoisted_1126, _hoisted_3126);\n}\nvar basics_shuju_default = /* @__PURE__ */ export_helper_default(basics_shuju_vue_vue_type_script_lang_default, [[\"render\", _sfc_render126], [\"__file\", \"basics-shuju.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-size.vue?vue&type=script&lang.ts\nvar basics_size_vue_vue_type_script_lang_default = {\n  name: \"BasicsSize\"\n};\n\n// src/components/basics-size.vue\nimport { createElementVNode as _createElementVNode127, openBlock as _openBlock127, createElementBlock as _createElementBlock127 } from \"vue\";\nvar _hoisted_1127 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2127 = /* @__PURE__ */ _createElementVNode127(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1007.16088889 395.49155555H638.21748148c-5.33997037 0-9.70903703 4.36906667-9.70903703 9.70903704v135.92651852c0 5.33997037 4.36906667 9.70903703 9.70903703 9.70903704h58.25422222c5.33997037 0 9.70903703-4.36906667 9.70903705-9.70903704v-67.96325926h72.81777777v388.36148148h-55.82696297c-5.33997037 0-9.70903703 4.36906667-9.70903703 9.70903704v58.25422222c0 5.33997037 4.36906667 9.70903703 9.70903703 9.70903704h199.03525927c5.33997037 0 9.70903703-4.36906667 9.70903703-9.70903704v-58.25422222c0-5.33997037-4.36906667-9.70903703-9.70903703-9.70903704h-55.82696297V473.16385185h72.81777778v67.96325926c0 5.33997037 4.36906667 9.70903703 9.70903704 9.70903704h58.25422222c5.33997037 0 9.70903703-4.36906667 9.70903703-9.70903704V405.20059259c0-5.33997037-4.36906667-9.70903703-9.70903703-9.70903704z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3127 = /* @__PURE__ */ _createElementVNode127(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M686.76266667 249.856V94.51140741c0-5.33997037-4.36906667-9.70903703-9.70903704-9.70903704H16.83911111c-5.33997037 0-9.70903703 4.36906667-9.70903703 9.70903704v155.34459259c0 5.33997037 4.36906667 9.70903703 9.70903703 9.70903703h67.96325926c5.33997037 0 9.70903703-4.36906667 9.70903704-9.70903703v-77.6722963h203.88977777v679.6325926h-111.65392593c-5.33997037 0-9.70903703 4.36906667-9.70903703 9.70903703v67.96325926c0 5.33997037 4.36906667 9.70903703 9.70903703 9.70903704h320.39822223c5.33997037 0 9.70903703-4.36906667 9.70903704-9.70903704v-67.96325926c0-5.33997037-4.36906667-9.70903703-9.70903704-9.70903703h-111.65392593V172.1837037h203.88977778v77.6722963c0 5.33997037 4.36906667 9.70903703 9.70903704 9.70903703h67.96325926c5.33997037 0 9.70903703-4.36906667 9.70903704-9.70903703z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_49 = [\n  _hoisted_2127,\n  _hoisted_3127\n];\nfunction _sfc_render127(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock127(), _createElementBlock127(\"svg\", _hoisted_1127, _hoisted_49);\n}\nvar basics_size_default = /* @__PURE__ */ export_helper_default(basics_size_vue_vue_type_script_lang_default, [[\"render\", _sfc_render127], [\"__file\", \"basics-size.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-sousuo.vue?vue&type=script&lang.ts\nvar basics_sousuo_vue_vue_type_script_lang_default = {\n  name: \"BasicsSousuo\"\n};\n\n// src/components/basics-sousuo.vue\nimport { createElementVNode as _createElementVNode128, openBlock as _openBlock128, createElementBlock as _createElementBlock128 } from \"vue\";\nvar _hoisted_1128 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2128 = /* @__PURE__ */ _createElementVNode128(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M801.13436445 801.70325333c8.88604445-8.88604445 23.29372445-8.88604445 32.18090666 0l120.67953778 120.67953778c8.88604445 8.88604445 8.88604445 23.29372445 0 32.18090667-8.88604445 8.88604445-23.29486222 8.88604445-32.18090667 0L801.13436445 833.88416c-8.88604445-8.88604445-8.88604445-23.29486222 0-32.18090667zM179.23185778 179.80074667c158.18183111-158.18183111 414.64376889-158.18183111 572.8256 0 156.59918222 156.59918222 158.16590222 409.52490667 4.69902222 568.05148444l-4.69902222 4.77411556c-158.18183111 158.18183111-414.64376889 158.18183111-572.8256 0C22.63267555 596.02716445 21.06595555 343.10144 174.53511111 184.576l4.69902222-4.77525333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3128 = [\n  _hoisted_2128\n];\nfunction _sfc_render128(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock128(), _createElementBlock128(\"svg\", _hoisted_1128, _hoisted_3128);\n}\nvar basics_sousuo_default = /* @__PURE__ */ export_helper_default(basics_sousuo_vue_vue_type_script_lang_default, [[\"render\", _sfc_render128], [\"__file\", \"basics-sousuo.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-sousuo1.vue?vue&type=script&lang.ts\nvar basics_sousuo1_vue_vue_type_script_lang_default = {\n  name: \"BasicsSousuo1\"\n};\n\n// src/components/basics-sousuo1.vue\nimport { createElementVNode as _createElementVNode129, openBlock as _openBlock129, createElementBlock as _createElementBlock129 } from \"vue\";\nvar _hoisted_1129 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2129 = /* @__PURE__ */ _createElementVNode129(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M836.86437888 785.37007445c70.62110777-82.75740445 110.68302222-187.73636779 110.68302222-298.31016334C947.55953778 232.70741333 741.40027221 26.54814777 487.05991111 26.54814777 232.71955001 26.54814777 26.54814777 232.71955001 26.54814777 487.04777443 26.54814777 741.38813667 232.71955001 947.57167445 487.04777443 947.57167445a460.4510811 460.4510811 0 0 0 134.49443556-19.96420778 36.40888889 36.40888889 0 0 0-21.23851776-69.65020445 387.63330333 387.63330333 0 0 1-113.2559178 16.79663445C272.93923555 874.74176 99.36592555 701.16844999 99.36592555 487.04777443 99.36592555 272.93923555 272.93923555 99.36592555 487.04777443 99.36592555 701.16844999 99.36592555 874.75389667 272.93923555 874.75389667 487.04777443c0 101.5808-40.25609443 197.62744889-110.52525112 270.02045668a42.08867555 42.08867555 0 0 0 0.43690666 59.07948999l170.63632669 170.63632669a36.40888889 36.40888889 0 0 0 51.49430443-51.48216889L836.86437888 785.37007445z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3129 = [\n  _hoisted_2129\n];\nfunction _sfc_render129(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock129(), _createElementBlock129(\"svg\", _hoisted_1129, _hoisted_3129);\n}\nvar basics_sousuo1_default = /* @__PURE__ */ export_helper_default(basics_sousuo1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render129], [\"__file\", \"basics-sousuo1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-sousuo2.vue?vue&type=script&lang.ts\nvar basics_sousuo2_vue_vue_type_script_lang_default = {\n  name: \"BasicsSousuo2\"\n};\n\n// src/components/basics-sousuo2.vue\nimport { createElementVNode as _createElementVNode130, openBlock as _openBlock130, createElementBlock as _createElementBlock130 } from \"vue\";\nvar _hoisted_1130 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2130 = /* @__PURE__ */ _createElementVNode130(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1004 958.70000002L778.6 733.4c66.30000001-76.70000001 106.70000002-176.30000001 106.69999998-285.40000001 0-241.2-196.2-437.30000001-437.29999997-437.29999997S10.69999998 206.8 10.69999998 448.00000001 206.8 885.29999998 448.00000001 885.29999998c109.10000001 0 208.70000001-40.4 285.39999999-106.69999998L958.70000002 1004c6.2 6.2 14.40000001 9.4 22.59999996 9.4 8.2 0 16.4-3.10000001 22.60000001-9.4 12.59999999-12.50000001 12.59999999-32.8 0.10000001-45.29999998zM448.00000001 821.30000001C242.09999998 821.30000001 74.69999999 653.90000002 74.69999999 448.00000001S242.09999998 74.69999999 448.00000001 74.69999999 821.30000001 242.09999998 821.30000001 448.00000001 653.90000002 821.30000001 448.00000001 821.30000001z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3130 = [\n  _hoisted_2130\n];\nfunction _sfc_render130(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock130(), _createElementBlock130(\"svg\", _hoisted_1130, _hoisted_3130);\n}\nvar basics_sousuo2_default = /* @__PURE__ */ export_helper_default(basics_sousuo2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render130], [\"__file\", \"basics-sousuo2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tanhao.vue?vue&type=script&lang.ts\nvar basics_tanhao_vue_vue_type_script_lang_default = {\n  name: \"BasicsTanhao\"\n};\n\n// src/components/basics-tanhao.vue\nimport { createElementVNode as _createElementVNode131, openBlock as _openBlock131, createElementBlock as _createElementBlock131 } from \"vue\";\nvar _hoisted_1131 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2131 = /* @__PURE__ */ _createElementVNode131(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 26.54814777c268.1029211 0 485.45185223 217.34892999 485.45185223 485.45185223 0 89.08041443-24.06627555 174.72625778-68.93416334 249.48584334a36.40888889 36.40888889 0 0 1-62.44124444-37.47688334A410.49808555 410.49808555 0 0 0 924.63407445 512c0-227.89537223-184.73870222-412.63407445-412.63407445-412.63407445S99.36592555 284.10462777 99.36592555 512s184.73870222 412.63407445 412.63407445 412.63407445a410.49808555 410.49808555 0 0 0 211.98468779-58.53335779 36.40888889 36.40888889 0 0 1 37.46474666 62.44124444A483.30372779 483.30372779 0 0 1 512 997.45185223C243.8970789 997.45185223 26.54814777 780.1029211 26.54814777 512S243.8970789 26.54814777 512 26.54814777z m0 643.22370446a48.54518557 48.54518557 0 1 1 0 97.09036999 48.54518557 48.54518557 0 0 1 0-97.09036999z m0-412.63407445a48.54518557 48.54518557 0 0 1 48.54518557 48.54518556v266.99851776a48.54518557 48.54518557 0 1 1-97.09037114 0V305.68296334a48.54518557 48.54518557 0 0 1 48.54518557-48.54518556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3131 = [\n  _hoisted_2131\n];\nfunction _sfc_render131(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock131(), _createElementBlock131(\"svg\", _hoisted_1131, _hoisted_3131);\n}\nvar basics_tanhao_default = /* @__PURE__ */ export_helper_default(basics_tanhao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render131], [\"__file\", \"basics-tanhao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-taolunqu.vue?vue&type=script&lang.ts\nvar basics_taolunqu_vue_vue_type_script_lang_default = {\n  name: \"BasicsTaolunqu\"\n};\n\n// src/components/basics-taolunqu.vue\nimport { createElementVNode as _createElementVNode132, openBlock as _openBlock132, createElementBlock as _createElementBlock132 } from \"vue\";\nvar _hoisted_1132 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2132 = /* @__PURE__ */ _createElementVNode132(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M519.9250011 893.72292779c-24.22404779 4.36906667-49.18840889 6.63855445-74.67463111 6.63855331a416.88177778 416.88177778 0 0 1-215.04303332-59.3707611 2410.26844445 2410.26844445 0 0 0-17.41558556-10.2187611l-98.92295111 26.97898667c-27.18530333 7.40314112-52.12539221-17.52481223-44.71011555-44.71011556l26.94257777-98.81372444c-10.03671666-17.07576889-16.67527111-28.61738667-20.06129777-34.9403978A416.97886777 416.97886777 0 0 1 26.54814777 481.65925888C26.54814777 250.41427001 214.00538112 62.95703666 445.25036999 62.95703666c211.07446557 0 385.66722333 156.18199666 414.5152 359.28291555A291.10120334 291.10120334 0 0 1 997.45185223 669.77185223c0 48.59372999-11.94211555 95.54906112-34.43067335 137.49209998-2.03889778 3.79866112-5.67978667 10.15808-11.03189333 19.29671112l16.62672668 60.93634446c7.40314112 27.18530333-17.52481223 52.12539221-44.71011556 44.71011555l-61.03343445-16.65099889-7.08759665 4.17488554A290.0574811 290.0574811 0 0 1 706.18074112 961.04296334a290.20311666 290.20311666 0 0 1-186.25574002-67.32003555z m90.86445113-27.35521224A217.72515555 217.72515555 0 0 0 706.18074112 888.22518557a217.23970333 217.23970333 0 0 0 112.15151331-30.94755556c2.51221333-1.50490112 9.42990222-5.54628779 21.06861114-12.3304778a36.40888889 36.40888889 0 0 1 27.90134442-3.65302442l14.2965578 3.89575111-3.89575112-14.2965578a36.40888889 36.40888889 0 0 1 3.79865999-28.13193443 1133.99125333 1133.99125333 0 0 0 17.34276779-29.91597A217.3125211 217.3125211 0 0 0 924.63407445 669.77185223a218.08924445 218.08924445 0 0 0-62.16211-152.67460778C849.30408334 674.21373667 749.39809223 806.6450011 610.78945223 866.37985223z m-440.37764778-147.82008888l-14.23587556 52.18607445 52.18607445-14.23587555a36.40888889 36.40888889 0 0 1 27.90134443 3.6651611c17.35490333 10.10953443 27.73143666 16.17768334 31.3965989 18.37435221A344.064 344.064 0 0 0 445.25036999 827.54370333C636.27567445 827.54370333 791.13481443 672.68456334 791.13481443 481.65925888S636.27567445 135.77481443 445.25036999 135.77481443 99.36592555 290.63395555 99.36592555 481.65925888c0 57.79304334 14.16305778 113.45009778 40.85077333 163.22104889 3.53166222 6.59000889 12.43970333 21.96669667 26.39644445 45.53538446a36.40888889 36.40888889 0 0 1 3.79866112 28.13193444zM596.95407445 354.22814777a36.40888889 36.40888889 0 0 1 0 72.81777778H293.54666667a36.40888889 36.40888889 0 0 1 0-72.81777778h303.40740778zM451.3185189 536.27259221a36.40888889 36.40888889 0 0 1 0 72.81777778H293.54666667a36.40888889 36.40888889 0 0 1 0-72.81777778h157.77185223z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3132 = [\n  _hoisted_2132\n];\nfunction _sfc_render132(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock132(), _createElementBlock132(\"svg\", _hoisted_1132, _hoisted_3132);\n}\nvar basics_taolunqu_default = /* @__PURE__ */ export_helper_default(basics_taolunqu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render132], [\"__file\", \"basics-taolunqu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tianjiayouhuiquan.vue?vue&type=script&lang.ts\nvar basics_tianjiayouhuiquan_vue_vue_type_script_lang_default = {\n  name: \"BasicsTianjiayouhuiquan\"\n};\n\n// src/components/basics-tianjiayouhuiquan.vue\nimport { createElementVNode as _createElementVNode133, openBlock as _openBlock133, createElementBlock as _createElementBlock133 } from \"vue\";\nvar _hoisted_1133 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2133 = /* @__PURE__ */ _createElementVNode133(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M863.95259221 87.22963001c73.728 0 133.49925888 59.77125888 133.49926002 133.49925888v169.90814777a36.40888889 36.40888889 0 0 1-36.40888889 36.40888889 84.95407445 84.95407445 0 0 0 0 169.9081489 36.40888889 36.40888889 0 0 1 36.40888889 36.40888889v169.90814777c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49925888V633.36296334a36.40888889 36.40888889 0 0 1 36.40888889-36.40888889 84.95407445 84.95407445 0 0 0 0-169.9081489 36.40888889 36.40888889 0 0 1-36.40888889-36.40888889V220.72888889c0-73.728 59.77125888-133.49925888 133.49926002-133.49925888h703.90518442z m0 72.81777778H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.6814811v137.72268999C168.94331221 374.88412445 220.72888889 437.39818667 220.72888889 512c0 74.60181333-51.78557667 137.11587555-121.36296334 153.54842112V803.27111111a60.6814811 60.6814811 0 0 0 60.68148224 60.6814811h703.90518442a60.6814811 60.6814811 0 0 0 60.68148224-60.6814811V665.54842112C855.05668779 649.11587555 803.27111111 586.60181333 803.27111111 512c0-74.60181333 51.78557667-137.11587555 121.36296334-153.54842112V220.72888889a60.6814811 60.6814811 0 0 0-60.68148224-60.6814811zM512 360.29629667a36.40888889 36.40888889 0 0 1 36.40888889 36.4088889l-0.01213668 84.95407331H633.36296334a36.40888889 36.40888889 0 0 1 36.34820665 34.27290112L669.77185223 518.06814777a36.40888889 36.40888889 0 0 1-36.40888889 36.40888889h-84.95407445v84.95407445a36.40888889 36.40888889 0 0 1-34.27290112 36.34820779L512 675.84a36.40888889 36.40888889 0 0 1-36.40888889-36.40888889v-84.95407445h-84.95407445a36.40888889 36.40888889 0 0 1-36.34820665-34.27289999L354.22814777 518.06814777a36.40888889 36.40888889 0 0 1 36.40888889-36.40888889h84.94193777l0.01213668-84.95407331a36.40888889 36.40888889 0 0 1 34.27290112-36.34820779z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3133 = [\n  _hoisted_2133\n];\nfunction _sfc_render133(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock133(), _createElementBlock133(\"svg\", _hoisted_1133, _hoisted_3133);\n}\nvar basics_tianjiayouhuiquan_default = /* @__PURE__ */ export_helper_default(basics_tianjiayouhuiquan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render133], [\"__file\", \"basics-tianjiayouhuiquan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tishi.vue?vue&type=script&lang.ts\nvar basics_tishi_vue_vue_type_script_lang_default = {\n  name: \"BasicsTishi\"\n};\n\n// src/components/basics-tishi.vue\nimport { createElementVNode as _createElementVNode134, openBlock as _openBlock134, createElementBlock as _createElementBlock134 } from \"vue\";\nvar _hoisted_1134 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2134 = /* @__PURE__ */ _createElementVNode134(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M546.13333333 807.82222187h112.18488854a11.37777813 11.37777813 0 0 0 11.37777813-11.37777707v-0.3868448l-3.44746667-100.59093333a34.13333333 34.13333333 0 0 1 15.24622187-29.6163552C766.86222187 609.26862187 819.2 513.91146667 819.2 409.6c0-169.66542187-137.53457813-307.2-307.2-307.2S204.8 239.93457813 204.8 409.6c0 104.33422187 52.37191147 199.71413333 137.7507552 256.2844448a34.13333333 34.13333333 0 0 1 15.26897813 27.2839104l3.5612448 103.66293333a11.37777813 11.37777813 0 0 0 11.37777707 10.99093334H477.86666667V576.7395552l-81.74933334-86.8579552a34.13333333 34.13333333 0 0 1 49.72088854-46.78542187l67.584 71.81653334 77.53955626-73.23875627a34.13333333 34.13333333 0 0 1 46.87644374 49.62986667L546.13333333 577.91146667V807.82222187z m341.33333334-398.22222187a374.9660448 374.9660448 0 0 1-152.3484448 302.02311147l2.81031146 82.09066666A79.6444448 79.6444448 0 0 1 658.31822187 876.08888853h-285.58222187a79.6444448 79.6444448 0 0 1-79.59893333-76.91377706l-2.9696-86.6076448A374.97742187 374.97742187 0 0 1 136.53333333 409.6C136.53333333 202.24 304.64 34.13333333 512 34.13333333s375.46666667 168.10666667 375.46666667 375.46666667zM409.6 989.86666667a34.13333333 34.13333333 0 0 1 0-68.26666667h204.8a34.13333333 34.13333333 0 0 1 0 68.26666667H409.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3134 = [\n  _hoisted_2134\n];\nfunction _sfc_render134(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock134(), _createElementBlock134(\"svg\", _hoisted_1134, _hoisted_3134);\n}\nvar basics_tishi_default = /* @__PURE__ */ export_helper_default(basics_tishi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render134], [\"__file\", \"basics-tishi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tongxunlu.vue?vue&type=script&lang.ts\nvar basics_tongxunlu_vue_vue_type_script_lang_default = {\n  name: \"BasicsTongxunlu\"\n};\n\n// src/components/basics-tongxunlu.vue\nimport { createElementVNode as _createElementVNode135, openBlock as _openBlock135, createElementBlock as _createElementBlock135 } from \"vue\";\nvar _hoisted_1135 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2135 = /* @__PURE__ */ _createElementVNode135(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M844.23111111 34.13333333c37.70254222 0 68.26666667 30.56412445 68.26666667 68.26666667v819.2c0 37.70254222-30.56412445 68.26666667-68.26666667 68.26666667H179.76888889c-37.70254222 0-68.26666667-30.56412445-68.26666667-68.26666667V739.55555555h68.26666667c12.43591111 0 22.54279111-9.97717333 22.75214222-22.36416L202.52444445 716.8c0-12.56789333-10.18766222-22.75555555-22.75555556-22.75555555h-68.26666667V534.75555555h68.26666667c12.43591111 0 22.54279111-9.97717333 22.75214222-22.36416L202.52444445 512c0-12.56789333-10.18766222-22.75555555-22.75555556-22.75555555h-68.26666667V329.95555555h68.26666667c12.43591111 0 22.54279111-9.97717333 22.75214222-22.36416L202.52444445 307.2c0-12.56789333-10.18766222-22.75555555-22.75555556-22.75555555h-68.26666667V102.4c0-37.70254222 30.56412445-68.26666667 68.26666667-68.26666667h664.46222222zM672.43349333 563.2H443.72650667C393.45948445 563.2 352.71111111 603.95178667 352.71111111 654.22222222s40.74951111 91.02222222 91.01539556 91.02222223h228.70698666c50.26702222 0 91.01539555-40.75178667 91.01539556-91.02222223s-40.74951111-91.02222222-91.01539556-91.02222222zM558.08 278.75555555C493.6704 278.75555555 441.45777778 336.57287111 441.45777778 407.89333333S493.6704 537.03111111 558.08 537.03111111 674.70222222 479.21379555 674.70222222 407.89333333 622.4896 278.75555555 558.08 278.75555555z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3135 = [\n  _hoisted_2135\n];\nfunction _sfc_render135(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock135(), _createElementBlock135(\"svg\", _hoisted_1135, _hoisted_3135);\n}\nvar basics_tongxunlu_default = /* @__PURE__ */ export_helper_default(basics_tongxunlu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render135], [\"__file\", \"basics-tongxunlu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tongzhi.vue?vue&type=script&lang.ts\nvar basics_tongzhi_vue_vue_type_script_lang_default = {\n  name: \"BasicsTongzhi\"\n};\n\n// src/components/basics-tongzhi.vue\nimport { createElementVNode as _createElementVNode136, openBlock as _openBlock136, createElementBlock as _createElementBlock136 } from \"vue\";\nvar _hoisted_1136 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2136 = /* @__PURE__ */ _createElementVNode136(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M849.58663111 203.77144889C925.82115555 287.66890667 968.81777778 396.72945778 968.81777778 512.41870222c0 117.07733333-44.03996445 227.34506667-121.92426667 311.58499556-10.87715555 11.76462222-29.23292445 12.48483555-40.99868444 1.60768-11.76576-10.87715555-12.48597333-29.23406222-1.60768-40.99982223 68.06528-73.62104889 106.50396445-169.86339555 106.50396444-272.19285333 0-101.11772445-37.52732445-196.30535111-104.14990222-269.62488889-10.77589333-11.85905778-9.89866667-30.208 1.96152889-40.98389333 11.85905778-10.77589333 30.208-9.89866667 40.98275555 1.96152889z m-105.57895111 116.14435556c44.29368889 53.85102222 68.93454222 121.32352 68.93454222 192.50289777 0 72.80412445-25.78204445 141.70680889-71.93258667 196.09031111-10.36743111 12.21745778-28.67655111 13.71704889-40.89400888 3.34961778-12.21745778-10.36743111-13.71704889-28.67655111-3.34961778-40.89400889 37.33276445-43.99331555 58.14954667-99.62496 58.14954666-158.54592 0-57.03111111-19.49809778-110.99249778-54.65201777-154.33159111l-1.07064889-1.30958222c-10.17856-12.37560889-8.39907555-30.65969778 3.97653333-40.83825778 12.37560889-10.17856 30.65856-8.39907555 40.83825778 3.97653334zM555.03758222 130.01386667A58.02666667 58.02666667 0 0 1 570.5728 169.52888889v685.90705778c0 32.04664889-25.98001778 58.02666667-58.02666667 58.02666666a58.02666667 58.02666667 0 0 1-39.51729778-15.53635555L282.38848 720.63089778 129.70666667 720.63203555c-40.43662222 0-73.29223111-32.45169778-73.94531556-72.73244444l-0.01024-1.22311111v-268.51555555c0-40.84508445 33.11047111-73.95555555 73.95555556-73.95555556l152.82062222-0.00113778 190.50154666-177.16679111c23.46780445-21.82371555 60.18389333-20.49251555 82.00874667 2.97528889z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3136 = [\n  _hoisted_2136\n];\nfunction _sfc_render136(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock136(), _createElementBlock136(\"svg\", _hoisted_1136, _hoisted_3136);\n}\nvar basics_tongzhi_default = /* @__PURE__ */ export_helper_default(basics_tongzhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render136], [\"__file\", \"basics-tongzhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tuichu.vue?vue&type=script&lang.ts\nvar basics_tuichu_vue_vue_type_script_lang_default = {\n  name: \"BasicsTuichu\"\n};\n\n// src/components/basics-tuichu.vue\nimport { createElementVNode as _createElementVNode137, openBlock as _openBlock137, createElementBlock as _createElementBlock137 } from \"vue\";\nvar _hoisted_1137 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2137 = /* @__PURE__ */ _createElementVNode137(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M855.07609173 553.70286613L479.95223253 553.70286613c-17.28759893 0-31.31698987-13.88749333-31.31698986-31.27769493 0-17.26795093 13.92787947-31.27660373 31.31698986-31.27660373l383.32995627 0-79.69999893-79.70109014c-12.19781013-12.17597973-12.23819627-31.88785813 0.06112533-44.18608853 12.21745707-12.21745707 32.13236053-12.0962976 44.1675328-0.0414784l116.61761173 116.59796373c5.9258976 1.14064533 11.60729387 3.95023467 16.20917014 8.55320214 7.12657707 7.12657707 10.09989547 16.7374688 8.95925013 25.94122133 1.14064533 9.20593493-1.83267307 18.81682773-8.95925013 25.9434048-4.60187627 4.60296747-10.28327253 7.452944-16.20917014 8.55320213l-116.61761173 116.59687254c-12.03408107 12.053728-31.95007573 12.17488747-44.1675328-0.0425696-12.2993216-12.2993216-12.25784427-32.01010987-0.06112533-44.18499734L855.07609173 553.70286613zM761.52898667 220.078848l0-104.21786987c0-46.14101333-37.3651392-83.4461184-83.4461184-83.4461184l-542.26059734 0c-46.06024 0-83.4461184 37.3454912-83.4461184 83.4461184l0 792.2769504c0 46.13992107 37.3454912 83.4461184 83.4461184 83.4461184l542.26059734 0c46.06024 0 83.4461184-37.3869696 83.4461184-83.4461184l0-104.21786986c0-17.26795093-14.009744-31.27660373-31.29734294-31.27660374-17.28869013 0-31.29734293 14.0086528-31.29734293 31.27660374l0 83.4461184c0 23.00938133-18.77425813 41.6635712-41.52058027 41.6635712l-500.9441312 0c-22.928608 0-41.54022827-18.61380373-41.54022826-41.6635712l0-750.77601707c0-22.96899413 18.77425813-41.6210016 41.54022826-41.6210016l500.9441312 0c22.9493472 0 41.52058027 18.57123413 41.52058027 41.6210016l0 83.48759573c0 17.26685973 14.0086528 31.27660373 31.29734293 31.27660374C747.51924267 251.35545173 761.52898667 237.34570773 761.52898667 220.078848z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3137 = [\n  _hoisted_2137\n];\nfunction _sfc_render137(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock137(), _createElementBlock137(\"svg\", _hoisted_1137, _hoisted_3137);\n}\nvar basics_tuichu_default = /* @__PURE__ */ export_helper_default(basics_tuichu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render137], [\"__file\", \"basics-tuichu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tuichu1.vue?vue&type=script&lang.ts\nvar basics_tuichu1_vue_vue_type_script_lang_default = {\n  name: \"BasicsTuichu1\"\n};\n\n// src/components/basics-tuichu1.vue\nimport { createElementVNode as _createElementVNode138, openBlock as _openBlock138, createElementBlock as _createElementBlock138 } from \"vue\";\nvar _hoisted_1138 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2138 = /* @__PURE__ */ _createElementVNode138(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M773.46133333 119.92177777v89.54311111c88.74666667 73.38666667 145.29422222 184.09244445 145.29422222 307.99644445 0 220.27377778-179.2 399.58755555-399.58755556 399.58755555S119.69422221 737.73511111 119.69422221 517.46133333c0-123.79022222 56.66133333-234.60977778 145.29422223-307.99644445v-89.54311111C134.03022221 203.88977777 47.10399999 350.32177777 47.10399999 517.46133333c0 260.77866667 211.39911111 472.17777778 472.17777778 472.17777778s472.17777778-211.39911111 472.17777778-472.17777778c0-167.13955555-87.04-313.57155555-217.99822222-397.53955556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3138 = /* @__PURE__ */ _createElementVNode138(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M482.87288888 45.28355555h72.59022223v508.47288889h-72.59022223z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_410 = [\n  _hoisted_2138,\n  _hoisted_3138\n];\nfunction _sfc_render138(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock138(), _createElementBlock138(\"svg\", _hoisted_1138, _hoisted_410);\n}\nvar basics_tuichu1_default = /* @__PURE__ */ export_helper_default(basics_tuichu1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render138], [\"__file\", \"basics-tuichu1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tupian.vue?vue&type=script&lang.ts\nvar basics_tupian_vue_vue_type_script_lang_default = {\n  name: \"BasicsTupian\"\n};\n\n// src/components/basics-tupian.vue\nimport { createElementVNode as _createElementVNode139, openBlock as _openBlock139, createElementBlock as _createElementBlock139 } from \"vue\";\nvar _hoisted_1139 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2139 = /* @__PURE__ */ _createElementVNode139(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M900 160c33.137 0 60 26.863 60 60v584c0 33.137-26.863 60-60 60H124c-33.137 0-60-26.863-60-60V220c0-33.137 26.863-60 60-60h776zM679.391 364.539c-38.35-17.061-83.269 0.197-100.33 38.547L489.12 605.26l-8.025 16.052a37 37 0 0 1-16.547 16.547c-18.277 9.139-40.502 1.73-49.64-16.547L399.25 590h-0.001l-10.328-20.659a86 86 0 0 0-38.46-38.46c-42.483-21.241-94.14-4.022-115.382 38.46L138 763.5h204.211c0.869 0.323 1.808 0.5 2.789 0.5h533.5L717.939 403.086a76 76 0 0 0-38.548-38.547zM356 252c-52.467 0-95 42.533-95 95s42.533 95 95 95 95-42.533 95-95-42.533-95-95-95z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3139 = [\n  _hoisted_2139\n];\nfunction _sfc_render139(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock139(), _createElementBlock139(\"svg\", _hoisted_1139, _hoisted_3139);\n}\nvar basics_tupian_default = /* @__PURE__ */ export_helper_default(basics_tupian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render139], [\"__file\", \"basics-tupian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tupian1.vue?vue&type=script&lang.ts\nvar basics_tupian1_vue_vue_type_script_lang_default = {\n  name: \"BasicsTupian1\"\n};\n\n// src/components/basics-tupian1.vue\nimport { createElementVNode as _createElementVNode140, openBlock as _openBlock140, createElementBlock as _createElementBlock140 } from \"vue\";\nvar _hoisted_1140 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2140 = /* @__PURE__ */ _createElementVNode140(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M997.45185223 559.69564445V803.27111111c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49925888V220.72888889c0-73.728 59.77125888-133.49925888 133.49926002-133.49925888h703.90518442c73.728 0 133.49925888 59.77125888 133.49926002 133.49925888v338.96675556z m-72.81777778-84.9055289V220.72888889a60.6814811 60.6814811 0 0 0-60.68148224-60.6814811H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.6814811v391.94168889A330.05871445 330.05871445 0 0 1 147.91111111 609.09036999a326.40568889 326.40568889 0 0 1 208.55011556 74.9173578C415.32226333 530.64135111 563.09380779 427.04592555 730.45333333 427.04592555c74.75958557 0 144.49474333 19.09039445 194.18074112 47.74419z m0 93.57084445c-6.06814777-9.46631111-24.04200334-24.6366811-49.66172444-37.45260999C836.00270222 511.41745778 786.25602333 499.86370333 730.45333333 499.86370333c-138.5479589 0-260.69978112 86.7745189-307.69152 214.69108224-3.10689223 8.47113443-8.42259001 23.11964445-15.92282112 43.89698332-8.73813333 24.23618333-39.20023666 31.97914112-58.4484022 14.85482666-18.70203221-16.6509989-32.48886557-28.52029667-41.11777223-35.43798556A253.60004779 253.60004779 0 0 0 147.91111111 681.90814777c-16.45681778 0-32.68304555 1.55344555-48.54518556 4.61179335V803.27111111a60.6814811 60.6814811 0 0 0 60.68148224 60.6814811h703.90518442a60.6814811 60.6814811 0 0 0 60.68148224-60.6814811V568.34882333zM293.54666667 475.59111111a109.22666667 109.22666667 0 1 1 0-218.45333333 109.22666667 109.22666667 0 0 1 0 218.45333333z m0-72.81777778a36.40888889 36.40888889 0 1 0 0-72.81777778 36.40888889 36.40888889 0 0 0 0 72.81777778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3140 = [\n  _hoisted_2140\n];\nfunction _sfc_render140(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock140(), _createElementBlock140(\"svg\", _hoisted_1140, _hoisted_3140);\n}\nvar basics_tupian1_default = /* @__PURE__ */ export_helper_default(basics_tupian1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render140], [\"__file\", \"basics-tupian1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tuzhi.vue?vue&type=script&lang.ts\nvar basics_tuzhi_vue_vue_type_script_lang_default = {\n  name: \"BasicsTuzhi\"\n};\n\n// src/components/basics-tuzhi.vue\nimport { createElementVNode as _createElementVNode141, openBlock as _openBlock141, createElementBlock as _createElementBlock141 } from \"vue\";\nvar _hoisted_1141 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2141 = /* @__PURE__ */ _createElementVNode141(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M953.27573333 231.65155555L764.92041482 44.63122963c-19.41807408-19.41807408-45.38974815-30.09801482-72.81777779-30.09801481H141.96432592c-57.04059259 0-103.40124445 46.36065185-103.40124444 103.40124443v797.5973926c0 57.04059259 46.36065185 103.40124445 103.40124444 103.40124445h738.6149926c57.04059259 0 103.40124445-46.36065185 103.40124445-103.40124445v-610.4557037c-0.12136297-27.30666667-11.28675555-54.12788148-30.70482964-73.4245926z m-72.81777778 698.68657778H466.85297778v-103.40124444h-88.59496296v103.40124444H141.96432592c-8.13131852 0-14.80628148-6.67496297-14.80628147-14.80628148v-265.78488888h73.91004444v-88.59496297h-73.91004444V117.93445925c0-8.13131852 6.67496297-14.80628148 14.80628147-14.80628147h236.2936889v280.59117037h88.59496296V103.24954075h225.1282963c3.88361482 0 7.64586667 1.57771852 10.43721481 4.2477037l188.47668148 187.02032592c2.79134815 2.79134815 4.36906667 6.5536 4.36906666 10.55857778v256.07585185H644.16426667v88.59496297h251.09997036v265.90625185c0 8.13131852-6.67496297 14.68491852-14.80628148 14.68491851z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3141 = /* @__PURE__ */ _createElementVNode141(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M260.05048889 767.95448889h325.01001481V442.94447408H260.05048889v325.01001481z m88.71632593-236.41505186h147.69872593v147.69872594H348.76681482V531.53943703z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_411 = [\n  _hoisted_2141,\n  _hoisted_3141\n];\nfunction _sfc_render141(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock141(), _createElementBlock141(\"svg\", _hoisted_1141, _hoisted_411);\n}\nvar basics_tuzhi_default = /* @__PURE__ */ export_helper_default(basics_tuzhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render141], [\"__file\", \"basics-tuzhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-tuzhi2.vue?vue&type=script&lang.ts\nvar basics_tuzhi2_vue_vue_type_script_lang_default = {\n  name: \"BasicsTuzhi2\"\n};\n\n// src/components/basics-tuzhi2.vue\nimport { createElementVNode as _createElementVNode142, openBlock as _openBlock142, createElementBlock as _createElementBlock142 } from \"vue\";\nvar _hoisted_1142 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2142 = /* @__PURE__ */ _createElementVNode142(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M833.51324445 746.31395555h-80.78222223v-80.78222222a28.44444445 28.44444445 0 1 0-56.88888889 0v80.78222222h-80.78222222a28.44444445 28.44444445 0 1 0 0 56.8888889h80.78222222v80.78222222a28.44444445 28.44444445 0 0 0 56.88888889 0v-80.78222222h80.78222223a28.44444445 28.44444445 0 1 0 0-56.8888889z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3142 = /* @__PURE__ */ _createElementVNode142(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M972.17422222 265.89866667l-227.55555555-250.40213334a36.40888889 36.40888889 0 0 0-7.50933334-6.30328888 36.2496 36.2496 0 0 0-23.04-8.21475556h-604.16a70.20088889 70.20088889 0 0 0-70.00746666 70.2464v879.27466666a70.20088889 70.20088889 0 0 0 70.00746666 70.23502223h804.19271112a70.20088889 70.20088889 0 0 0 70.00746666-70.23502223v-657.63555555a36.31786667 36.31786667 0 0 0-11.93528889-26.96533333zM401.63555555 947.92817778V715.53706667h-72.81777777v232.39111111H112.71964445v-362.95111111H201.38666667v-72.81777778h-88.66702222V73.79626667H328.81777778V391.73688889h72.81777777V73.79626667h297.56302223L911.28035555 307.2v204.93653333H539.30666667v72.81777778h371.97368888v362.95111111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_412 = /* @__PURE__ */ _createElementVNode142(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M446.00888889 437.94204445H288.73386667a36.40888889 36.40888889 0 0 0-36.40888889 36.40888888v157.32053334a36.40888889 36.40888889 0 0 0 36.40888889 36.40888888H446.00888889a36.40888889 36.40888889 0 0 0 36.40888889-36.40888888V474.35093333a36.40888889 36.40888889 0 0 0-36.40888889-36.40888888z m-36.40888889 157.32053333h-84.45724445v-84.50275556H409.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_52 = [\n  _hoisted_2142,\n  _hoisted_3142,\n  _hoisted_412\n];\nfunction _sfc_render142(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock142(), _createElementBlock142(\"svg\", _hoisted_1142, _hoisted_52);\n}\nvar basics_tuzhi2_default = /* @__PURE__ */ export_helper_default(basics_tuzhi2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render142], [\"__file\", \"basics-tuzhi2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-wenjuan.vue?vue&type=script&lang.ts\nvar basics_wenjuan_vue_vue_type_script_lang_default = {\n  name: \"BasicsWenjuan\"\n};\n\n// src/components/basics-wenjuan.vue\nimport { createElementVNode as _createElementVNode143, openBlock as _openBlock143, createElementBlock as _createElementBlock143 } from \"vue\";\nvar _hoisted_1143 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2143 = /* @__PURE__ */ _createElementVNode143(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M948.84598557 764.64128l1.21362886 1.15294777a33.93308445 33.93308445 0 0 1 0 49.39472668l-184.61733888 174.03448889a36.32393443 36.32393443 0 0 1-25.89885667 9.90321778 36.32393443 36.32393443 0 0 1-25.91099221-9.90321778l-106.02268445-99.9424a33.93308445 33.93308445 0 0 1 0-49.39472668l1.22576555-1.15294777a36.40888889 36.40888889 0 0 1 49.95299556 0l80.75491555 76.11884999 159.34957113-150.21093888a36.40888889 36.40888889 0 0 1 49.95299556 0zM803.27111111 26.54814777c73.728 0 133.49925888 59.77125888 133.49925888 133.49926002v449.0429622a36.40888889 36.40888889 0 0 1-72.81777778 0V160.04740779a60.6814811 60.6814811 0 0 0-60.6814811-60.68148224H220.72888889a60.6814811 60.6814811 0 0 0-60.6814811 60.68148224v703.90518442a60.6814811 60.6814811 0 0 0 60.6814811 60.68148224h266.9985189a36.40888889 36.40888889 0 0 1 0 72.81777778H220.72888889c-73.728 0-133.49925888-59.77125888-133.49925888-133.49926002V160.04740779c0-73.728 59.77125888-133.49925888 133.49925888-133.49926002zM560.54518557 548.40888889a36.40888889 36.40888889 0 0 1 0 72.81777778H317.81925888a36.40888889 36.40888889 0 0 1 0-72.81777778z m145.63555555-194.18074112a36.40888889 36.40888889 0 0 1 0 72.81777778H317.81925888a36.40888889 36.40888889 0 0 1 0-72.81777778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3143 = [\n  _hoisted_2143\n];\nfunction _sfc_render143(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock143(), _createElementBlock143(\"svg\", _hoisted_1143, _hoisted_3143);\n}\nvar basics_wenjuan_default = /* @__PURE__ */ export_helper_default(basics_wenjuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render143], [\"__file\", \"basics-wenjuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-WIFI.vue?vue&type=script&lang.ts\nvar basics_WIFI_vue_vue_type_script_lang_default = {\n  name: \"BasicsWifi\"\n};\n\n// src/components/basics-WIFI.vue\nimport { createElementVNode as _createElementVNode144, openBlock as _openBlock144, createElementBlock as _createElementBlock144 } from \"vue\";\nvar _hoisted_1144 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2144 = /* @__PURE__ */ _createElementVNode144(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1015.21291734 248.53557097a38.83614815 38.83614815 0 1 1-48.46751289 60.68795376C837.87411911 206.32067792 679.26729008 149.52928355 512.06472651 149.52928355c-167.25434429 0-325.91295525 56.83023053-454.81013096 159.79780506a38.83614815 38.83614815 0 1 1-48.46751289-60.68795499C151.289856 134.79743883 326.99753601 71.85698725 512.06472651 71.85698725c185.00246399 0 360.65836206 62.88866964 503.14819083 176.67858372z m-285.70459735 361.8234465a38.83614815 38.83614815 0 0 1-46.6551585 62.11194668A283.28381038 283.28381038 0 0 0 512.02589036 615.56306132c-62.55208889 0-121.94550518 20.18185125-170.87905185 56.93379319a38.83614815 38.83614815 0 1 1-46.6551585-62.0860551A360.94316089 360.94316089 0 0 1 512.02589036 537.89076502c79.49759525 0 155.21513836 25.70953008 217.48242963 72.48119823z m155.3445926-181.24830341a38.83614815 38.83614815 0 0 1-46.65515851 62.09900089C744.80976236 421.05868683 631.39526519 382.54617244 512.03883615 382.54617244c-119.38231941 0-232.83565394 38.53840475-326.22364445 108.71532445a38.83614815 38.83614815 0 1 1-46.66810429-62.08605511C245.89471289 348.96585008 375.67217422 304.87387614 512.03883615 304.87387614c136.31488 0 266.07939675 44.06608236 372.81407644 124.23683792zM512 926.25224651a77.6722963 77.6722963 0 1 1 0-155.34459259 77.6722963 77.6722963 0 0 1 0 155.34459259z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3144 = [\n  _hoisted_2144\n];\nfunction _sfc_render144(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock144(), _createElementBlock144(\"svg\", _hoisted_1144, _hoisted_3144);\n}\nvar basics_WIFI_default = /* @__PURE__ */ export_helper_default(basics_WIFI_vue_vue_type_script_lang_default, [[\"render\", _sfc_render144], [\"__file\", \"basics-WIFI.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-wodeguanzhu.vue?vue&type=script&lang.ts\nvar basics_wodeguanzhu_vue_vue_type_script_lang_default = {\n  name: \"BasicsWodeguanzhu\"\n};\n\n// src/components/basics-wodeguanzhu.vue\nimport { createElementVNode as _createElementVNode145, openBlock as _openBlock145, createElementBlock as _createElementBlock145 } from \"vue\";\nvar _hoisted_1145 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2145 = /* @__PURE__ */ _createElementVNode145(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 26.54814777c147.456 0 266.9985189 119.5425189 266.9985189 266.9985189 0 95.86460445-50.51126557 179.92059221-126.37525333 227.00942222a483.87413333 483.87413333 0 0 1 173.91312554 94.9665189 36.40888889 36.40888889 0 1 1-47.21019221 55.45073778A410.78935666 410.78935666 0 0 0 512 572.6814811c-214.66680889 0-393.02181888 164.60458667-411.12917333 377.07472669a36.40888889 36.40888889 0 0 1-72.55077888-6.17737558c17.19713223-201.75379001 157.06794667-366.75887445 343.09309554-423.01060664C295.54915555 473.50366777 245.0014811 389.42340779 245.0014811 293.54666667c0-147.456 119.5425189-266.9985189 266.9985189-266.9985189z m473.25487445 713.82054002l1.21362888 1.15294776a33.93308445 33.93308445 0 0 1 0 49.39472555l-184.61733888 174.03448889a36.32393443 36.32393443 0 0 1-25.89885668 9.90321778 36.32393443 36.32393443 0 0 1-25.91099222-9.90321778l-106.02268444-99.9424a33.93308445 33.93308445 0 0 1 0-49.39472554l1.22576555-1.15294778a36.40888889 36.40888889 0 0 1 49.95299555 0l80.75491556 76.11885 159.34957113-150.21093888a36.40888889 36.40888889 0 0 1 49.95299555 0zM512 99.36592555c-107.24844999 0-194.18074112 86.93228999-194.18074112 194.18074112s86.93228999 194.18074112 194.18074112 194.18074112 194.18074112-86.93228999 194.18074112-194.18074112-86.93228999-194.18074112-194.18074112-194.18074112z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3145 = [\n  _hoisted_2145\n];\nfunction _sfc_render145(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock145(), _createElementBlock145(\"svg\", _hoisted_1145, _hoisted_3145);\n}\nvar basics_wodeguanzhu_default = /* @__PURE__ */ export_helper_default(basics_wodeguanzhu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render145], [\"__file\", \"basics-wodeguanzhu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-xiajiang.vue?vue&type=script&lang.ts\nvar basics_xiajiang_vue_vue_type_script_lang_default = {\n  name: \"BasicsXiajiang\"\n};\n\n// src/components/basics-xiajiang.vue\nimport { createElementVNode as _createElementVNode146, openBlock as _openBlock146, createElementBlock as _createElementBlock146 } from \"vue\";\nvar _hoisted_1146 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2146 = /* @__PURE__ */ _createElementVNode146(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M507.649902 1015.81158L160.153845 618.161453a21.75049 21.75049 0 0 1 16.376839-36.080224h187.565987a22.262266 22.262266 0 0 0 21.750489-22.262266 1630.774944 1630.774944 0 0 0-12.538517-207.525259C350.022825 182.895773 268.138628 87.705395 204.934264 38.574877A21.75049 21.75049 0 0 1 223.102321 0.447548C588.766434 60.837143 665.532868 470.514012 679.350826 563.401397a21.238713 21.238713 0 0 0 21.494601 18.679832h170.677372a21.75049 21.75049 0 0 1 16.120951 36.080224L540.403581 1015.81158a21.75049 21.75049 0 0 1-32.753679 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3146 = [\n  _hoisted_2146\n];\nfunction _sfc_render146(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock146(), _createElementBlock146(\"svg\", _hoisted_1146, _hoisted_3146);\n}\nvar basics_xiajiang_default = /* @__PURE__ */ export_helper_default(basics_xiajiang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render146], [\"__file\", \"basics-xiajiang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-xiangji.vue?vue&type=script&lang.ts\nvar basics_xiangji_vue_vue_type_script_lang_default = {\n  name: \"BasicsXiangji\"\n};\n\n// src/components/basics-xiangji.vue\nimport { createElementVNode as _createElementVNode147, openBlock as _openBlock147, createElementBlock as _createElementBlock147 } from \"vue\";\nvar _hoisted_1147 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2147 = /* @__PURE__ */ _createElementVNode147(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M748.304 160a30 30 0 0 1 25.495 14.189L820.194 249H900c33.137 0 60 26.863 60 60v496c0 33.137-26.863 60-60 60H124c-33.137 0-60-26.863-60-60V309c0-33.137 26.863-60 60-60h311.806l46.395-74.811A30 30 0 0 1 507.696 160h240.608zM618 360c-108.8 0-197 88.2-197 197s88.2 197 197 197 197-88.2 197-197-88.2-197-197-197z m0 40c86.709 0 157 70.291 157 157s-70.291 157-157 157-157-70.291-157-157 70.291-157 157-157z m-357-41c-24.853 0-45 20.147-45 45s20.147 45 45 45 45-20.147 45-45-20.147-45-45-45z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3147 = [\n  _hoisted_2147\n];\nfunction _sfc_render147(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock147(), _createElementBlock147(\"svg\", _hoisted_1147, _hoisted_3147);\n}\nvar basics_xiangji_default = /* @__PURE__ */ export_helper_default(basics_xiangji_vue_vue_type_script_lang_default, [[\"render\", _sfc_render147], [\"__file\", \"basics-xiangji.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-xiangji2.vue?vue&type=script&lang.ts\nvar basics_xiangji2_vue_vue_type_script_lang_default = {\n  name: \"BasicsXiangji2\"\n};\n\n// src/components/basics-xiangji2.vue\nimport { createElementVNode as _createElementVNode148, openBlock as _openBlock148, createElementBlock as _createElementBlock148 } from \"vue\";\nvar _hoisted_1148 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2148 = /* @__PURE__ */ _createElementVNode148(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M236.02062222 220.72888889l26.50567111-85.76720555A84.95407445 84.95407445 0 0 1 343.69384334 75.09333333h336.61231332a84.95407445 84.95407445 0 0 1 81.16755001 59.86835001L787.97937778 220.72888889H863.95259221c73.728 0 133.49925888 59.77125888 133.49926002 133.49925888v485.45185223c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49925888V354.22814777c0-73.728 59.77125888-133.49925888 133.49926002-133.49925888h75.97321443z m26.85762333 72.81777778H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.6814811v485.45185223a60.6814811 60.6814811 0 0 0 60.68148224 60.6814811h703.90518442a60.6814811 60.6814811 0 0 0 60.68148224-60.6814811V354.22814777a60.6814811 60.6814811 0 0 0-60.68148224-60.6814811h-102.83083776a36.40888889 36.40888889 0 0 1-34.78262556-25.65613l-34.44280889-111.42333667a12.13629667 12.13629667 0 0 0-11.59016334-8.55608889H343.69384334a12.13629667 12.13629667 0 0 0-11.59016334 8.55608889l-34.44280889 111.4112A36.40888889 36.40888889 0 0 1 262.87824555 293.54666667zM512 754.72592555c-100.5370789 0-182.04444445-81.50736555-182.04444445-182.04444445 0-100.5370789 81.50736555-182.04444445 182.04444445-182.04444444 100.5370789 0 182.04444445 81.50736555 182.04444445 182.04444444 0 100.5370789-81.50736555 182.04444445-182.04444445 182.04444445z m0-72.81777778a109.22666667 109.22666667 0 1 0 0-218.45333334 109.22666667 109.22666667 0 0 0 0 218.45333334z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3148 = [\n  _hoisted_2148\n];\nfunction _sfc_render148(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock148(), _createElementBlock148(\"svg\", _hoisted_1148, _hoisted_3148);\n}\nvar basics_xiangji2_default = /* @__PURE__ */ export_helper_default(basics_xiangji2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render148], [\"__file\", \"basics-xiangji2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-xiangkan.vue?vue&type=script&lang.ts\nvar basics_xiangkan_vue_vue_type_script_lang_default = {\n  name: \"BasicsXiangkan\"\n};\n\n// src/components/basics-xiangkan.vue\nimport { createElementVNode as _createElementVNode149, openBlock as _openBlock149, createElementBlock as _createElementBlock149 } from \"vue\";\nvar _hoisted_1149 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2149 = /* @__PURE__ */ _createElementVNode149(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 140.50796999C575.47283001 86.67136 621.46939221 62.95703666 689.25060779 62.95703666c143.62092999 0 242.02202112 87.30851555 282.55724999 230.79594667a36.40888889 36.40888889 0 0 1-70.07497444 19.78216334C869.49888 199.46609778 797.72482333 135.77481443 689.25060779 135.77481443c-47.23446557 0-80.05100999 17.35490333-133.20798891 62.86601558-2.46366777 2.11171555-16.384 14.12664889-20.42538667 17.56121998a36.40888889 36.40888889 0 0 1-47.23446442 0c-4.04138667-3.43457223-17.9617189-15.44950557-20.42538667-17.56121998-53.15697778-45.51111111-85.97352334-62.86601443-133.20798891-62.86601558C191.27409778 135.77481443 99.36592555 250.72981333 99.36592555 416.53589333c0 126.25388999 128.87532999 283.1762011 390.91010446 465.12355556a37.00356779 37.00356779 0 0 0 42.3314011-0.18204444c53.98224555-38.15651555 89.88140999-64.20100779 107.27272334-77.79365888a36.40888889 36.40888889 0 1 1 44.84361444 57.38040888c-18.6170789 14.53928334-55.15946667 41.05708999-110.07620779 79.88110222a109.82134557 109.82134557 0 0 1-125.91407331 0.52185999C168.70058667 747.01937778 26.54814777 573.93152 26.54814777 416.53589333 26.54814777 213.64129223 147.0251611 62.95703666 334.74939221 62.95703666 402.53060779 62.95703666 448.52716999 86.67136 512 140.50796999zM863.95259221 560.54518557h97.09037113a36.40888889 36.40888889 0 0 1 0 72.81777777h-97.09037113v97.09036999a36.40888889 36.40888889 0 0 1-72.81777778 0v-97.09036999h-97.09036998a36.40888889 36.40888889 0 0 1 0-72.81777777h97.09036998v-97.09037114a36.40888889 36.40888889 0 0 1 72.81777778 0v97.09037114z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3149 = [\n  _hoisted_2149\n];\nfunction _sfc_render149(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock149(), _createElementBlock149(\"svg\", _hoisted_1149, _hoisted_3149);\n}\nvar basics_xiangkan_default = /* @__PURE__ */ export_helper_default(basics_xiangkan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render149], [\"__file\", \"basics-xiangkan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-xiaoxi.vue?vue&type=script&lang.ts\nvar basics_xiaoxi_vue_vue_type_script_lang_default = {\n  name: \"BasicsXiaoxi\"\n};\n\n// src/components/basics-xiaoxi.vue\nimport { createElementVNode as _createElementVNode150, openBlock as _openBlock150, createElementBlock as _createElementBlock150 } from \"vue\";\nvar _hoisted_1150 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2150 = /* @__PURE__ */ _createElementVNode150(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 49.06666667c11.7824 0 21.33333333 9.55093333 21.33333333 21.33333333v41.23306667C700.11946667 122.6112 832 261.37173333 832 430.93333333v289.06666667c0 6.0864-0.17066667 12.13226667-0.5056 18.13333333H912c14.72746667 0 26.66666667 11.9392 26.66666667 26.66666667s-11.9392 26.66666667-26.66666667 26.66666667H112c-14.72746667 0-26.66666667-11.9392-26.66666667-26.66666667s11.9392-26.66666667 26.66666667-26.66666667h80.5056a325.0944 325.0944 0 0 1-0.5056-18.13333333V430.93333333c0-169.56266667 131.88266667-308.32213333 298.66666667-319.30026666V70.4c0-11.7824 9.55093333-21.33333333 21.33333333-21.33333333z m107.7248 817.06666666l0.00853333 1.06666667c0 59.5008-48.23466667 107.73333333-107.73333333 107.73333333s-107.73333333-48.23253333-107.73333333-107.73333333c0-0.3552 0.00213333-0.71146667 0.00533333-1.06666667h215.4528z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3150 = [\n  _hoisted_2150\n];\nfunction _sfc_render150(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock150(), _createElementBlock150(\"svg\", _hoisted_1150, _hoisted_3150);\n}\nvar basics_xiaoxi_default = /* @__PURE__ */ export_helper_default(basics_xiaoxi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render150], [\"__file\", \"basics-xiaoxi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-xiaoxi1.vue?vue&type=script&lang.ts\nvar basics_xiaoxi1_vue_vue_type_script_lang_default = {\n  name: \"BasicsXiaoxi1\"\n};\n\n// src/components/basics-xiaoxi1.vue\nimport { createElementVNode as _createElementVNode151, openBlock as _openBlock151, createElementBlock as _createElementBlock151 } from \"vue\";\nvar _hoisted_1151 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2151 = /* @__PURE__ */ _createElementVNode151(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M863.95259221 839.68H552.48668445l-98.37681778 109.31162112a36.40888889 36.40888889 0 1 1-54.1278811-48.71509333l109.22666666-121.36296334A36.40888889 36.40888889 0 0 1 536.27259221 766.86222222h327.68a60.6814811 60.6814811 0 0 0 60.68148224-60.6814811V196.45629667a60.6814811 60.6814811 0 0 0-60.68148224-60.68148224H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.68148224v509.72444445a60.6814811 60.6814811 0 0 0 60.68148224 60.6814811h157.77185109a36.40888889 36.40888889 0 0 1 0 72.81777778H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49925888V196.45629667c0-73.728 59.77125888-133.49925888 133.49926002-133.49926001h703.90518442c73.728 0 133.49925888 59.77125888 133.49926002 133.49926001v509.72444445c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888zM730.45333333 317.81925888a36.40888889 36.40888889 0 0 1 0 72.81777778H293.54666667a36.40888889 36.40888889 0 0 1 0-72.81777778h436.90666666zM512 512a36.40888889 36.40888889 0 0 1 0 72.81777778H293.54666667a36.40888889 36.40888889 0 0 1 0-72.81777778h218.45333333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3151 = [\n  _hoisted_2151\n];\nfunction _sfc_render151(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock151(), _createElementBlock151(\"svg\", _hoisted_1151, _hoisted_3151);\n}\nvar basics_xiaoxi1_default = /* @__PURE__ */ export_helper_default(basics_xiaoxi1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render151], [\"__file\", \"basics-xiaoxi1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-xiaoxi2.vue?vue&type=script&lang.ts\nvar basics_xiaoxi2_vue_vue_type_script_lang_default = {\n  name: \"BasicsXiaoxi2\"\n};\n\n// src/components/basics-xiaoxi2.vue\nimport { createElementVNode as _createElementVNode152, openBlock as _openBlock152, createElementBlock as _createElementBlock152 } from \"vue\";\nvar _hoisted_1152 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2152 = /* @__PURE__ */ _createElementVNode152(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M407.85982025 895.26912588A124.13238338 124.13238338 0 0 0 512 951.74427706c43.59881662 0 81.97933029-22.47711065 104.14017975-56.47515118h75.56375272a192.08328498 192.08328498 0 0 1-359.40786494 0h75.56375272zM512 2.96173159a101.65527273 101.65527273 0 0 1 89.95362098 149.04921954C726.44744498 190.34628432 816.96581818 306.34624588 816.96581818 443.4679134v255.19991503l99.39626703 82.83775189a45.18012157 45.18012157 0 0 1-28.93786764 79.87845466H136.57578243a45.18012157 45.18012157 0 0 1-28.91527686-79.87845466l99.37367625-82.83775189V443.4679134c0-137.12166753 90.51837319-253.12162909 215.0573766-291.5021417A101.65527273 101.65527273 0 0 1 512 2.96173159z m0 203.31054546c-130.99976145 0-237.19563635 106.19587491-237.19563635 237.19563637v286.96153952L198.96953018 793.61385316h626.06093964L749.19563635 730.42945294V443.4679134c0-130.99976145-106.19587491-237.19563635-237.19563635-237.19563635z m0-135.54036363a33.88509091 33.88509091 0 1 0 0 67.77018181 33.88509091 33.88509091 0 0 0 0-67.77018181z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3152 = [\n  _hoisted_2152\n];\nfunction _sfc_render152(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock152(), _createElementBlock152(\"svg\", _hoisted_1152, _hoisted_3152);\n}\nvar basics_xiaoxi2_default = /* @__PURE__ */ export_helper_default(basics_xiaoxi2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render152], [\"__file\", \"basics-xiaoxi2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-xiaoxizhongxin.vue?vue&type=script&lang.ts\nvar basics_xiaoxizhongxin_vue_vue_type_script_lang_default = {\n  name: \"BasicsXiaoxizhongxin\"\n};\n\n// src/components/basics-xiaoxizhongxin.vue\nimport { createElementVNode as _createElementVNode153, openBlock as _openBlock153, createElementBlock as _createElementBlock153 } from \"vue\";\nvar _hoisted_1153 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2153 = /* @__PURE__ */ _createElementVNode153(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M147.94752 647.85370112V389.94526777C147.94752 189.24733667 310.93797888 26.54814777 512 26.54814777s364.05248 162.69918777 364.05248 363.39712v257.90843335l68.95843555 137.6862811c12.11202333 24.16336555-5.49774222 52.58657223-32.56168334 52.58657223H111.55076779c-27.06394112 0-44.66156999-28.42320555-32.56168334-52.58657223l68.95843555-137.6862811z m705.60426667 117.60071111l-46.4698789-92.76984889a36.28752555 36.28752555 0 0 1-3.84720555-16.25050112V389.94526777c0-160.5632-130.39236779-290.7128411-291.23470222-290.7128411S220.76529778 229.38206777 220.76529778 389.94526777V656.42192555c0 5.64337778-1.32285667 11.2018011-3.84720555 16.26263779l-46.4698789 92.75771221h683.10357334z m-504.38447446 173.30631111a36.28752555 36.28752555 0 0 1-4.72101888-51.17876224 36.44529778 36.44529778 0 0 1 51.26371556-4.7088822A181.31626667 181.31626667 0 0 0 512 924.75543666a181.31626667 181.31626667 0 0 0 116.2657189-41.87022223 36.44529778 36.44529778 0 0 1 51.26371555 4.70888335 36.28752555 36.28752555 0 0 1-4.73315555 51.1787611A254.18259001 254.18259001 0 0 1 512 997.45185223c-60.28098333 0-117.41866667-20.99579221-162.83268779-58.70326556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3153 = [\n  _hoisted_2153\n];\nfunction _sfc_render153(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock153(), _createElementBlock153(\"svg\", _hoisted_1153, _hoisted_3153);\n}\nvar basics_xiaoxizhongxin_default = /* @__PURE__ */ export_helper_default(basics_xiaoxizhongxin_vue_vue_type_script_lang_default, [[\"render\", _sfc_render153], [\"__file\", \"basics-xiaoxizhongxin.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-xiazai.vue?vue&type=script&lang.ts\nvar basics_xiazai_vue_vue_type_script_lang_default = {\n  name: \"BasicsXiazai\"\n};\n\n// src/components/basics-xiazai.vue\nimport { createElementVNode as _createElementVNode154, openBlock as _openBlock154, createElementBlock as _createElementBlock154 } from \"vue\";\nvar _hoisted_1154 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2154 = /* @__PURE__ */ _createElementVNode154(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M506.46584889 515.34961778c3.49525333-4.96374557 8.20413667-9.01726777 13.68974222-11.7357989a42.51344555 42.51344555 0 0 1 53.05988779 6.99050667l110.84079331 116.95748778a36.40888889 36.40888889 0 0 1-52.84143331 50.08649444L572.6814811 615.89883221V900.3614811a36.40888889 36.40888889 0 1 1-72.81777777 0V622.08834333l-59.86834888 56.90709333a36.40888889 36.40888889 0 0 1-50.17144888-52.79288889l116.64194332-110.85292999zM512 87.22963001c139.96790557 0 259.65605888 97.50300445 295.16686222 232.64066332C912.83759445 321.69073778 997.45185223 410.45560889 997.45185223 519.07546112 997.45185223 628.83612445 911.07783111 718.31703666 803.87792555 718.31703666a36.40888889 36.40888889 0 0 1 0-72.81777778C870.27560334 645.49925888 924.63407445 589.18684445 924.63407445 519.07546112c0-70.09924779-54.35847111-126.41166222-120.7561489-126.41166222-6.66282667 0-13.22856334 0.55827001-19.68507222 1.66267221a36.40888889 36.40888889 0 0 1-42.12508444-30.34074112C724.02109667 246.94328889 626.59091001 160.04740779 512 160.04740779c-84.00744334 0-160.34474667 46.72474112-201.81447111 121.3022811a36.40888889 36.40888889 0 0 1-34.27290112 18.62921444c-3.60448-0.24272555-7.23323221-0.36408889-10.88625778-0.3640889C173.83424 299.61481443 99.36592555 376.76524999 99.36592555 472.55703666S173.83424 645.49925888 265.02636999 645.49925888a36.40888889 36.40888889 0 1 1 0 72.81777778C133.01987555 718.31703666 26.54814777 607.99810333 26.54814777 472.55703666c0-133.05021667 102.73374777-241.83997667 231.48771556-245.65077333C314.12982557 140.73856 408.47739221 87.22963001 512 87.22963001z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3154 = [\n  _hoisted_2154\n];\nfunction _sfc_render154(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock154(), _createElementBlock154(\"svg\", _hoisted_1154, _hoisted_3154);\n}\nvar basics_xiazai_default = /* @__PURE__ */ export_helper_default(basics_xiazai_vue_vue_type_script_lang_default, [[\"render\", _sfc_render154], [\"__file\", \"basics-xiazai.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-yingyuan.vue?vue&type=script&lang.ts\nvar basics_yingyuan_vue_vue_type_script_lang_default = {\n  name: \"BasicsYingyuan\"\n};\n\n// src/components/basics-yingyuan.vue\nimport { createElementVNode as _createElementVNode155, openBlock as _openBlock155, createElementBlock as _createElementBlock155 } from \"vue\";\nvar _hoisted_1155 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2155 = /* @__PURE__ */ _createElementVNode155(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M912.49777778 900.3614811a36.40888889 36.40888889 0 0 1 0 72.81777778H111.50222222a36.40888889 36.40888889 0 0 1 0-72.81777778z m-48.54518557-849.54073998c73.728 0 133.49925888 59.77125888 133.49926002 133.49925888v614.75195221a48.54518557 48.54518557 0 0 1-89.12896 26.62703446L694.50562333 499.87584C644.52835555 524.30620445 583.57987555 536.27259221 512 536.27259221s-132.52835555-11.96638777-182.50562333-36.39675221L115.67710777 825.69898667A48.54518557 48.54518557 0 0 1 26.54814777 799.07195221V184.32c0-73.728 59.77125888-133.49925888 133.49926002-133.49925888h703.90518442z m0 72.81777778H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.6814811v533.51158557l188.01550222-286.48941114a36.40888889 36.40888889 0 0 1 50.6326289-10.31585109C379.99350557 449.01262222 437.77441223 463.45481443 512 463.45481443s132.00649443-14.44219221 173.98594333-42.42849109a36.40888889 36.40888889 0 0 1 50.6326289 10.31585109L924.63407445 717.8437211V184.32a60.6814811 60.6814811 0 0 0-60.68148224-60.6814811z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3155 = [\n  _hoisted_2155\n];\nfunction _sfc_render155(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock155(), _createElementBlock155(\"svg\", _hoisted_1155, _hoisted_3155);\n}\nvar basics_yingyuan_default = /* @__PURE__ */ export_helper_default(basics_yingyuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render155], [\"__file\", \"basics-yingyuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-yinhangka.vue?vue&type=script&lang.ts\nvar basics_yinhangka_vue_vue_type_script_lang_default = {\n  name: \"BasicsYinhangka\"\n};\n\n// src/components/basics-yinhangka.vue\nimport { createElementVNode as _createElementVNode156, openBlock as _openBlock156, createElementBlock as _createElementBlock156 } from \"vue\";\nvar _hoisted_1156 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2156 = /* @__PURE__ */ _createElementVNode156(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M924.63407445 378.50074112H99.36592555v424.77036999a60.6814811 60.6814811 0 0 0 60.68148224 60.6814811h703.90518442a60.6814811 60.6814811 0 0 0 60.68148224-60.6814811V378.50074112z m-825.2681489-72.81777778h825.2681489v-84.95407445a60.6814811 60.6814811 0 0 0-60.68148224-60.6814811H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.6814811v84.95407445z m691.76888888 388.36148111a36.40888889 36.40888889 0 0 1 0 72.81777777H669.77185223a36.40888889 36.40888889 0 0 1 0-72.81777777h121.3629622zM160.04740779 87.22963001h703.90518442c73.728 0 133.49925888 59.77125888 133.49926002 133.49925888v582.54222222c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49925888V220.72888889c0-73.728 59.77125888-133.49925888 133.49926002-133.49925888z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3156 = [\n  _hoisted_2156\n];\nfunction _sfc_render156(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock156(), _createElementBlock156(\"svg\", _hoisted_1156, _hoisted_3156);\n}\nvar basics_yinhangka_default = /* @__PURE__ */ export_helper_default(basics_yinhangka_vue_vue_type_script_lang_default, [[\"render\", _sfc_render156], [\"__file\", \"basics-yinhangka.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-yiwen.vue?vue&type=script&lang.ts\nvar basics_yiwen_vue_vue_type_script_lang_default = {\n  name: \"BasicsYiwen\"\n};\n\n// src/components/basics-yiwen.vue\nimport { createElementVNode as _createElementVNode157, openBlock as _openBlock157, createElementBlock as _createElementBlock157 } from \"vue\";\nvar _hoisted_1157 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2157 = /* @__PURE__ */ _createElementVNode157(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64c247.424 0 448 200.576 448 448S759.424 960 512 960 64 759.424 64 512 264.576 64 512 64z m3.4 592.6c-10.2 0-18.6 3-25.8 10.2-7.2 6.6-10.2 15-10.2 25.2s3 18.6 10.2 25.8c7.2 6.6 15.6 10.2 25.8 10.2 10.2 0 18.6-3.6 25.8-10.2 7.2-6.6 10.8-15 10.8-25.8 0-10.2-3.6-18.6-10.2-25.2-7.2-7.2-16.2-10.2-26.4-10.2z m9-365.4c-43.2 0-76.8 13.2-100.8 39.6-24 25.2-35.4 58.8-35.4 100.8h47.4c0-29.4 6.6-52.2 19.8-69 14.4-19.8 36.6-29.4 66.6-29.4 25.2 0 45 6.6 58.8 21 13.2 13.2 20.4 31.8 20.4 55.8 0 16.8-6 32.4-18 47.4-3.338 4.45-9.772 10.965-18.344 19.544l-1.535 1.535-0.521 0.521c-32.4 28.8-52.2 51.6-60.6 69.6-7.2 15-10.8 32.4-10.8 52.2v13.8h48v-13.8c0-16.2 3.6-30.6 11.4-43.8 6-10.8 15-21.6 28.2-33 26.4-23.4 42.6-39 48.6-46.2 15-19.8 22.8-43.2 22.8-70.2 0-36-11.4-64.2-33.6-84.6-23.4-21.6-54-31.8-92.4-31.8z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3157 = [\n  _hoisted_2157\n];\nfunction _sfc_render157(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock157(), _createElementBlock157(\"svg\", _hoisted_1157, _hoisted_3157);\n}\nvar basics_yiwen_default = /* @__PURE__ */ export_helper_default(basics_yiwen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render157], [\"__file\", \"basics-yiwen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-yixiangkan.vue?vue&type=script&lang.ts\nvar basics_yixiangkan_vue_vue_type_script_lang_default = {\n  name: \"BasicsYixiangkan\"\n};\n\n// src/components/basics-yixiangkan.vue\nimport { createElementVNode as _createElementVNode158, openBlock as _openBlock158, createElementBlock as _createElementBlock158 } from \"vue\";\nvar _hoisted_1158 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2158 = /* @__PURE__ */ _createElementVNode158(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M334.81007445 62.95703666c67.79335111 0 113.80204999 23.71432334 177.28701554 77.55093333C575.56992 86.67136 621.59075555 62.95703666 689.38410667 62.95703666c143.65733888 0 242.05843001 87.30851555 282.60579555 230.79594667a36.40888889 36.40888889 0 1 1-70.08711111 19.78216334C869.66878777 199.46609778 797.89473223 135.77481443 689.39624334 135.77481443c-47.25873778 0-80.08741888 17.35490333-133.25653333 62.86601558-2.46366777 2.11171555-16.384 14.12664889-20.41325113 17.56121998a36.42102557 36.42102557 0 0 1-47.25873778 0c-4.02924999-3.43457223-17.9617189-15.44950557-20.42538667-17.56121998C414.88535666 153.1297189 382.05667555 135.77481443 334.81007445 135.77481443 191.29836999 135.77481443 99.36592555 250.72981333 99.36592555 416.53589333c0 126.25388999 128.89960334 283.1762011 390.98292224 465.12355556a37.01570333 37.01570333 0 0 0 42.34353778-0.18204444c53.99438222-38.15651555 89.90568334-64.20100779 107.28485888-77.79365888a36.42102557 36.42102557 0 0 1 44.8557511 57.38040888c-18.60494222 14.53928334-55.15946667 41.05708999-110.10048 79.88110222a109.85775445 109.85775445 0 0 1-125.92620998 0.52185999C168.72485888 747.01937778 26.54814777 573.93152 26.54814777 416.53589333 26.54814777 213.64129223 147.04943445 62.95703666 334.81007445 62.95703666z m441.45777778 631.91267555a36.32393443 36.32393443 0 0 1-25.91099335-9.90321778l-106.02268445-99.9424a33.93308445 33.93308445 0 0 1 0-49.39472554l1.22576669-1.15294777a36.40888889 36.40888889 0 0 1 49.95299555 0l80.75491556 76.13098667 159.34956999-150.21094002a36.40888889 36.40888889 0 0 1 49.95299556 0l1.21363001 1.1529489a33.93308445 33.93308445 0 0 1 0 49.39472555L802.17884445 684.97863111a36.32393443 36.32393443 0 0 1-25.89885668 9.8910811z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3158 = [\n  _hoisted_2158\n];\nfunction _sfc_render158(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock158(), _createElementBlock158(\"svg\", _hoisted_1158, _hoisted_3158);\n}\nvar basics_yixiangkan_default = /* @__PURE__ */ export_helper_default(basics_yixiangkan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render158], [\"__file\", \"basics-yixiangkan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-youhuiquan.vue?vue&type=script&lang.ts\nvar basics_youhuiquan_vue_vue_type_script_lang_default = {\n  name: \"BasicsYouhuiquan\"\n};\n\n// src/components/basics-youhuiquan.vue\nimport { createElementVNode as _createElementVNode159, openBlock as _openBlock159, createElementBlock as _createElementBlock159 } from \"vue\";\nvar _hoisted_1159 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2159 = /* @__PURE__ */ _createElementVNode159(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M863.95259221 87.22963001c73.728 0 133.49925888 59.77125888 133.49926002 133.49925888v169.90814777a36.40888889 36.40888889 0 0 1-36.40888889 36.40888889 84.95407445 84.95407445 0 0 0 0 169.9081489 36.40888889 36.40888889 0 0 1 36.40888889 36.40888889v169.90814777c0 73.728-59.77125888 133.49925888-133.49926002 133.49925888H160.04740779c-73.728 0-133.49925888-59.77125888-133.49926002-133.49925888V633.36296334a36.40888889 36.40888889 0 0 1 36.40888889-36.40888889 84.95407445 84.95407445 0 0 0 0-169.9081489 36.40888889 36.40888889 0 0 1-36.40888889-36.40888889V220.72888889c0-73.728 59.77125888-133.49925888 133.49926002-133.49925888h703.90518442z m0 72.81777778H160.04740779a60.6814811 60.6814811 0 0 0-60.68148224 60.6814811v137.72268999C168.94331221 374.88412445 220.72888889 437.39818667 220.72888889 512c0 74.60181333-51.78557667 137.11587555-121.36296334 153.54842112V803.27111111a60.6814811 60.6814811 0 0 0 60.68148224 60.6814811h703.90518442a60.6814811 60.6814811 0 0 0 60.68148224-60.6814811V665.54842112C855.05668779 649.11587555 803.27111111 586.60181333 803.27111111 512c0-74.60181333 51.78557667-137.11587555 121.36296334-153.54842112V220.72888889a60.6814811 60.6814811 0 0 0-60.68148224-60.6814811zM367.33534777 301.98139221a36.40888889 36.40888889 0 0 1 51.27585223 4.66033778L512 418.72042667l93.3888-112.07869668a36.40888889 36.40888889 0 1 1 55.94832555 46.62765113L579.59916999 451.3185189H633.36296334a36.40888889 36.40888889 0 0 1 36.34820665 34.27289998L669.77185223 487.72740779a36.40888889 36.40888889 0 0 1-36.40888889 36.40888888h-78.88592668v48.54518443H633.36296334a36.40888889 36.40888889 0 0 1 36.34820665 34.27290112L669.77185223 609.09036999a36.40888889 36.40888889 0 0 1-36.40888889 36.40888889h-78.88592668v48.54518557a36.40888889 36.40888889 0 0 1-34.27289999 36.34820778L518.06814777 730.45333333a36.40888889 36.40888889 0 0 1-36.40888889-36.40888888v-48.54518557H390.63703666a36.40888889 36.40888889 0 0 1-36.34820665-34.27289998L354.22814777 609.09036999a36.40888889 36.40888889 0 0 1 36.40888889-36.40888889h91.02222222v-48.54518443H390.63703666a36.40888889 36.40888889 0 0 1-36.34820665-34.27290112L354.22814777 487.72740779a36.40888889 36.40888889 0 0 1 36.40888889-36.40888889h53.73952l-81.71368221-98.06127445a36.40888889 36.40888889 0 0 1 2.93698333-49.7466789z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3159 = [\n  _hoisted_2159\n];\nfunction _sfc_render159(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock159(), _createElementBlock159(\"svg\", _hoisted_1159, _hoisted_3159);\n}\nvar basics_youhuiquan_default = /* @__PURE__ */ export_helper_default(basics_youhuiquan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render159], [\"__file\", \"basics-youhuiquan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-youjian.vue?vue&type=script&lang.ts\nvar basics_youjian_vue_vue_type_script_lang_default = {\n  name: \"BasicsYoujian\"\n};\n\n// src/components/basics-youjian.vue\nimport { createElementVNode as _createElementVNode160, openBlock as _openBlock160, createElementBlock as _createElementBlock160 } from \"vue\";\nvar _hoisted_1160 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2160 = /* @__PURE__ */ _createElementVNode160(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M960 804c0 33.137-26.863 60-60 60H124c-33.137 0-60-26.863-60-60v-50l39.21-40 277.111-252.756 64.29 58.639c38.178 34.823 96.6 34.823 134.778 0l64.289-58.639L920.789 714 960 754v50z m0-584v475.624l-286.644-261.45 274.5-250.372C955.477 193.864 960 206.404 960 220zM472.257 377.399c22.916-20.271 57.499-20.064 80.177 0.62l61.565 56.155-61.565 56.156c-22.678 20.684-57.26 20.891-80.177 0.62l-0.69-0.62L410 434.174l61.566-56.154zM900 160c4.477 0 8.84 0.49 13.037 1.42L643.678 407.104l-64.289-58.638c-37.796-34.474-95.434-34.819-133.627-1.034l-1.151 1.034-64.29 58.639-269.359-245.684c4.198-0.93 8.56-1.421 13.038-1.421h776zM64 220c0-13.596 4.522-26.136 12.145-36.198l274.498 250.372L64 695.624V220z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3160 = [\n  _hoisted_2160\n];\nfunction _sfc_render160(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock160(), _createElementBlock160(\"svg\", _hoisted_1160, _hoisted_3160);\n}\nvar basics_youjian_default = /* @__PURE__ */ export_helper_default(basics_youjian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render160], [\"__file\", \"basics-youjian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-yunshangchuan.vue?vue&type=script&lang.ts\nvar basics_yunshangchuan_vue_vue_type_script_lang_default = {\n  name: \"BasicsYunshangchuan\"\n};\n\n// src/components/basics-yunshangchuan.vue\nimport { createElementVNode as _createElementVNode161, openBlock as _openBlock161, createElementBlock as _createElementBlock161 } from \"vue\";\nvar _hoisted_1161 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2161 = /* @__PURE__ */ _createElementVNode161(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M514.13333333 190.93333333c147.01866667 0 268.95786667 107.37706667 291.67146667 247.984C908.096 446.25813333 988.8 531.5712 988.8 635.73333333c0 104.02133333-80.48426667 189.24266667-182.57706667 196.78933334A8.68586667 8.68586667 0 0 1 803.2 833.06666667H263.46666667a8.512 8.512 0 0 1-3.1232-0.58986667C133.95413333 823.76 34.13333333 718.47146667 34.13333333 589.86666667c0-126.1376 96.0288-229.8464 218.96746667-242.00746667C302.74773333 254.49813333 401.0176 190.93333333 514.13333333 190.93333333z m5.4528 230.128c-4.27413333-4.05333333-11.02506667-3.87626667-15.07946666 0.39786667l-122.912 129.568A10.66666667 10.66666667 0 0 0 378.66666667 558.368c0 5.8912 4.77546667 10.66666667 10.66666666 10.66666667l80.77866667-0.00106667v152.53333333a8.53333333 8.53333333 0 0 0 8.53333333 8.53333334h68.26666667a8.53333333 8.53333333 0 0 0 8.53333333-8.53333334v-152.53333333h79.712a10.66666667 10.66666667 0 0 0 7.3408-2.92693333c4.27413333-4.0544 4.45226667-10.80533333 0.39786667-15.07946667l-122.912-129.568a10.66666667 10.66666667 0 0 0-0.39786667-0.39786667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3161 = [\n  _hoisted_2161\n];\nfunction _sfc_render161(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock161(), _createElementBlock161(\"svg\", _hoisted_1161, _hoisted_3161);\n}\nvar basics_yunshangchuan_default = /* @__PURE__ */ export_helper_default(basics_yunshangchuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render161], [\"__file\", \"basics-yunshangchuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-yunxiazai.vue?vue&type=script&lang.ts\nvar basics_yunxiazai_vue_vue_type_script_lang_default = {\n  name: \"BasicsYunxiazai\"\n};\n\n// src/components/basics-yunxiazai.vue\nimport { createElementVNode as _createElementVNode162, openBlock as _openBlock162, createElementBlock as _createElementBlock162 } from \"vue\";\nvar _hoisted_1162 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2162 = /* @__PURE__ */ _createElementVNode162(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M514.13333333 190.93333333c147.01866667 0 268.95786667 107.37706667 291.67146667 247.984C908.096 446.25813333 988.8 531.5712 988.8 635.73333333c0 104.02133333-80.48426667 189.24266667-182.57706667 196.78933334A8.68586667 8.68586667 0 0 1 803.2 833.06666667H263.46666667a8.512 8.512 0 0 1-3.1232-0.58986667C133.95413333 823.76 34.13333333 718.47146667 34.13333333 589.86666667c0-126.1376 96.0288-229.8464 218.96746667-242.00746667C302.74773333 254.49813333 401.0176 190.93333333 514.13333333 190.93333333z m32.77866667 227.2h-68.26666667a8.53333333 8.53333333 0 0 0-8.53333333 8.53333334v152.53333333H389.33333333c-5.8912 0-10.66666667 4.77546667-10.66666666 10.66666667a10.66666667 10.66666667 0 0 0 2.928 7.3408l122.912 129.568c4.0544 4.27413333 10.80533333 4.45226667 15.07946666 0.39786666a10.66666667 10.66666667 0 0 0 0.39786667-0.39786666l122.912-129.568c4.0544-4.27413333 3.87626667-11.02506667-0.39786667-15.07946667A10.66666667 10.66666667 0 0 0 635.15733333 579.2h-79.712V426.66666667a8.53333333 8.53333333 0 0 0-8.53333333-8.53333334z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3162 = [\n  _hoisted_2162\n];\nfunction _sfc_render162(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock162(), _createElementBlock162(\"svg\", _hoisted_1162, _hoisted_3162);\n}\nvar basics_yunxiazai_default = /* @__PURE__ */ export_helper_default(basics_yunxiazai_vue_vue_type_script_lang_default, [[\"render\", _sfc_render162], [\"__file\", \"basics-yunxiazai.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-yuyin.vue?vue&type=script&lang.ts\nvar basics_yuyin_vue_vue_type_script_lang_default = {\n  name: \"BasicsYuyin\"\n};\n\n// src/components/basics-yuyin.vue\nimport { createElementVNode as _createElementVNode163, openBlock as _openBlock163, createElementBlock as _createElementBlock163 } from \"vue\";\nvar _hoisted_1163 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2163 = /* @__PURE__ */ _createElementVNode163(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M548.40888889 898.78376334V961.04296334a36.40888889 36.40888889 0 0 1-72.81777778 0v-62.2592C264.74723555 880.33659221 99.36592555 703.34084779 99.36592555 487.72740779v-24.27259336a36.40888889 36.40888889 0 0 1 72.81777778 0v24.27259336c0 187.67568555 152.14060999 339.81629667 339.81629667 339.81629554s339.81629667-152.14060999 339.81629667-339.81629554v-24.27259336a36.40888889 36.40888889 0 0 1 72.81777778 0v24.27259336c0 215.62557667-165.38131001 392.60918557-376.22518556 411.05635555zM269.27407445 269.15271111C269.27407445 135.168 377.93033443 26.54814777 512 26.54814777c134.00898333 0 242.72592555 108.70480555 242.72592555 242.60456334v218.69605888C754.72592555 621.8334811 646.06966557 730.45333333 512 730.45333333c-134.00898333 0-242.72592555-108.70480555-242.72592555-242.60456334V269.15271111z m72.81777778 0v218.69605888C342.09185223 581.54097778 418.19856555 657.63555555 512 657.63555555c93.86211555 0 169.90814777-76.00962333 169.90814777-169.78678556V269.15271111C681.90814777 175.46050333 605.80143445 99.36592555 512 99.36592555c-93.86211555 0-169.90814777 76.00962333-169.90814777 169.78678556z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3163 = [\n  _hoisted_2163\n];\nfunction _sfc_render163(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock163(), _createElementBlock163(\"svg\", _hoisted_1163, _hoisted_3163);\n}\nvar basics_yuyin_default = /* @__PURE__ */ export_helper_default(basics_yuyin_vue_vue_type_script_lang_default, [[\"render\", _sfc_render163], [\"__file\", \"basics-yuyin.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-zengjia.vue?vue&type=script&lang.ts\nvar basics_zengjia_vue_vue_type_script_lang_default = {\n  name: \"BasicsZengjia\"\n};\n\n// src/components/basics-zengjia.vue\nimport { createElementVNode as _createElementVNode164, openBlock as _openBlock164, createElementBlock as _createElementBlock164 } from \"vue\";\nvar _hoisted_1164 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2164 = /* @__PURE__ */ _createElementVNode164(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 62c247.424 0 448 200.576 448 448S759.424 958 512 958 64 757.424 64 510 264.576 62 512 62z m0 226c-11.046 0-20 8.954-20 20l-0.001 184H308c-11.046 0-20 8.954-20 20s8.954 20 20 20h184v184c0 11.046 8.954 20 20 20s20-8.954 20-20V532h184c11.046 0 20-8.954 20-20s-8.954-20-20-20H531.999L532 308c0-11.046-8.954-20-20-20z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3164 = [\n  _hoisted_2164\n];\nfunction _sfc_render164(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock164(), _createElementBlock164(\"svg\", _hoisted_1164, _hoisted_3164);\n}\nvar basics_zengjia_default = /* @__PURE__ */ export_helper_default(basics_zengjia_vue_vue_type_script_lang_default, [[\"render\", _sfc_render164], [\"__file\", \"basics-zengjia.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-zhankai.vue?vue&type=script&lang.ts\nvar basics_zhankai_vue_vue_type_script_lang_default = {\n  name: \"BasicsZhankai\"\n};\n\n// src/components/basics-zhankai.vue\nimport { createElementVNode as _createElementVNode165, openBlock as _openBlock165, createElementBlock as _createElementBlock165 } from \"vue\";\nvar _hoisted_1165 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2165 = /* @__PURE__ */ _createElementVNode165(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M853.33333333 56.88888889c62.83719111 0 113.77777778 50.94058667 113.77777778 113.77777778v682.66666666c0 62.83719111-50.94058667 113.77777778-113.77777778 113.77777778H170.66666667c-62.83719111 0-113.77777778-50.94058667-113.77777778-113.77777778V170.66666667c0-62.83719111 50.94058667-113.77777778 113.77777778-113.77777778h682.66666666zM512 257.13777778c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555555l-0.00113778 209.35111112H279.89333333c-12.56789333 0-22.75555555 10.18766222-22.75555555 22.75555555s10.18766222 22.75555555 22.75555555 22.75555555h209.35111112v209.35111112c0 12.56789333 10.18766222 22.75555555 22.75555555 22.75555555s22.75555555-10.18766222 22.75555555-22.75555555V534.75555555h209.35111112c12.56789333 0 22.75555555-10.18766222 22.75555555-22.75555555s-10.18766222-22.75555555-22.75555555-22.75555555H534.75441778L534.75555555 279.89333333c0-12.56789333-10.18766222-22.75555555-22.75555555-22.75555555z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3165 = [\n  _hoisted_2165\n];\nfunction _sfc_render165(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock165(), _createElementBlock165(\"svg\", _hoisted_1165, _hoisted_3165);\n}\nvar basics_zhankai_default = /* @__PURE__ */ export_helper_default(basics_zhankai_vue_vue_type_script_lang_default, [[\"render\", _sfc_render165], [\"__file\", \"basics-zhankai.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basics-zhiwen.vue?vue&type=script&lang.ts\nvar basics_zhiwen_vue_vue_type_script_lang_default = {\n  name: \"BasicsZhiwen\"\n};\n\n// src/components/basics-zhiwen.vue\nimport { createElementVNode as _createElementVNode166, openBlock as _openBlock166, createElementBlock as _createElementBlock166 } from \"vue\";\nvar _hoisted_1166 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2166 = /* @__PURE__ */ _createElementVNode166(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M781.98404779 817.83466667a36.40888889 36.40888889 0 0 1-72.84205113 0V664.91733333c0-112.60055666-91.32563001-203.88977778-203.97473109-203.88977778-112.64910222 0-203.96259555 91.28922112-203.96259556 203.88977778v131.072a36.40888889 36.40888889 0 0 1-72.85418667 0V664.91733333c0-152.82024334 123.93585778-276.70755555 276.82891776-276.70755555 152.86878777 0 276.80464555 123.88731221 276.80464669 276.70755555v152.91733334z m170.58777998-569.92047446a36.40888889 36.40888889 0 0 1-4.59965554 51.28798891 36.4331611 36.4331611 0 0 1-51.30012444-4.58752C800.33412779 179.3441189 658.32732445 111.50222222 505.16726557 111.50222222 358.83994112 111.50222222 222.54933333 173.39733333 126.42986667 279.92974222a36.4331611 36.4331611 0 0 1-51.45789668 2.64571221 36.40888889 36.40888889 0 0 1-2.63357554-51.42148664C182.13546667 109.48759666 338.00192 38.68444445 505.16726557 38.68444445c174.98112 0 337.36476445 77.5994789 447.4045622 209.22974776zM934.94992555 643.072a36.40888889 36.40888889 0 0 1-72.85418667 0c0-148.15990557-91.16785778-279.28044999-226.87592221-332.38888334a36.40888889 36.40888889 0 1 1 26.55421554-67.80548665C825.18926222 306.8116389 934.94992555 464.69271666 934.94992555 643.072zM505.16726557 213.44711111a36.40888889 36.40888889 0 1 1 0 72.81777778c-197.12986112 0-356.94060999 159.75006777-356.94061114 356.80711111a36.40888889 36.40888889 0 0 1-72.84204998 0c0-237.26459221 192.42097778-429.62488889 429.78266112-429.62488889z m0 422.34311111a29.12711111 29.12711111 0 0 0-29.12711112 28.52029668l0.21845334 5.86183111a2222.20439666 2222.20439666 0 0 1 1.3714011 70.36624554c0.01213667 22.62205667-0.50972445 41.50613333-1.73548999 55.82696335-4.06565888 47.64709888-17.16072334 89.21391445-36.53025223 124.5790811a252.92041443 252.92041443 0 0 1-26.83335112 39.89200555c-5.88610333 7.08759666-10.77703111 12.13629667-14.1509211 15.17037112a36.4331611 36.4331611 0 0 1-51.43362446-2.77921222 36.40888889 36.40888889 0 0 1 2.76707556-51.40935112c-0.08495445 0.07281778 0.29127111-0.27913443 1.06799445-1.09226666 1.62626333-1.66267221 3.51952555-3.78652445 5.64337778-6.33514667a180.45459001 180.45459001 0 0 0 19.05398556-28.41107001c14.63637333-26.72412445 24.66095445-58.56976555 27.84066333-95.8039222 1.00731221-11.80861667 1.48062777-28.88438557 1.46849223-49.60104334a1869.89985223 1869.89985223 0 0 0-1.33499335-67.78121444l-0.24272555-6.34728334-0.02427221-1.52917334c0-56.31241443 45.65674667-101.94488889 101.98129778-101.94488888a101.9691611 101.9691611 0 0 1 101.98129777 101.94488888v194.61764779a36.40888889 36.40888889 0 0 1-72.84205113 0V664.91733333a29.12711111 29.12711111 0 0 0-29.12711111-29.12711111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3166 = [\n  _hoisted_2166\n];\nfunction _sfc_render166(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock166(), _createElementBlock166(\"svg\", _hoisted_1166, _hoisted_3166);\n}\nvar basics_zhiwen_default = /* @__PURE__ */ export_helper_default(basics_zhiwen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render166], [\"__file\", \"basics-zhiwen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\basketball.vue?vue&type=script&lang.ts\nvar basketball_vue_vue_type_script_lang_default = {\n  name: \"Basketball\"\n};\n\n// src/components/basketball.vue\nimport { createElementVNode as _createElementVNode167, openBlock as _openBlock167, createElementBlock as _createElementBlock167 } from \"vue\";\nvar _hoisted_1167 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2167 = /* @__PURE__ */ _createElementVNode167(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M778.752 788.224a382.464 382.464 0 0 0 116.032-245.632 256.512 256.512 0 0 0-241.728-13.952 762.88 762.88 0 0 1 125.696 259.584zm-55.04 44.224a699.648 699.648 0 0 0-125.056-269.632 256.128 256.128 0 0 0-56.064 331.968 382.72 382.72 0 0 0 181.12-62.336zm-254.08 61.248A320.128 320.128 0 0 1 557.76 513.6a715.84 715.84 0 0 0-48.192-48.128 320.128 320.128 0 0 1-379.264 88.384 382.4 382.4 0 0 0 110.144 229.696 382.4 382.4 0 0 0 229.184 110.08zM129.28 481.088a256.128 256.128 0 0 0 331.072-56.448 699.648 699.648 0 0 0-268.8-124.352 382.656 382.656 0 0 0-62.272 180.8zm106.56-235.84a762.88 762.88 0 0 1 258.688 125.056 256.512 256.512 0 0 0-13.44-241.088A382.464 382.464 0 0 0 235.84 245.248zm318.08-114.944c40.576 89.536 37.76 193.92-8.448 281.344a779.84 779.84 0 0 1 66.176 66.112 320.832 320.832 0 0 1 282.112-8.128 382.4 382.4 0 0 0-110.144-229.12 382.4 382.4 0 0 0-229.632-110.208zM828.8 828.8a448 448 0 1 1-633.6-633.6 448 448 0 0 1 633.6 633.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3167 = [\n  _hoisted_2167\n];\nfunction _sfc_render167(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock167(), _createElementBlock167(\"svg\", _hoisted_1167, _hoisted_3167);\n}\nvar basketball_default = /* @__PURE__ */ export_helper_default(basketball_vue_vue_type_script_lang_default, [[\"render\", _sfc_render167], [\"__file\", \"basketball.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\bell-filled.vue?vue&type=script&lang.ts\nvar bell_filled_vue_vue_type_script_lang_default = {\n  name: \"BellFilled\"\n};\n\n// src/components/bell-filled.vue\nimport { createElementVNode as _createElementVNode168, openBlock as _openBlock168, createElementBlock as _createElementBlock168 } from \"vue\";\nvar _hoisted_1168 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2168 = /* @__PURE__ */ _createElementVNode168(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M640 832a128 128 0 0 1-256 0h256zm192-64H134.4a38.4 38.4 0 0 1 0-76.8H192V448c0-154.88 110.08-284.16 256.32-313.6a64 64 0 1 1 127.36 0A320.128 320.128 0 0 1 832 448v243.2h57.6a38.4 38.4 0 0 1 0 76.8H832z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3168 = [\n  _hoisted_2168\n];\nfunction _sfc_render168(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock168(), _createElementBlock168(\"svg\", _hoisted_1168, _hoisted_3168);\n}\nvar bell_filled_default = /* @__PURE__ */ export_helper_default(bell_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render168], [\"__file\", \"bell-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\bell.vue?vue&type=script&lang.ts\nvar bell_vue_vue_type_script_lang_default = {\n  name: \"Bell\"\n};\n\n// src/components/bell.vue\nimport { createElementVNode as _createElementVNode169, openBlock as _openBlock169, createElementBlock as _createElementBlock169 } from \"vue\";\nvar _hoisted_1169 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2169 = /* @__PURE__ */ _createElementVNode169(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3169 = /* @__PURE__ */ _createElementVNode169(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_413 = /* @__PURE__ */ _createElementVNode169(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_53 = [\n  _hoisted_2169,\n  _hoisted_3169,\n  _hoisted_413\n];\nfunction _sfc_render169(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock169(), _createElementBlock169(\"svg\", _hoisted_1169, _hoisted_53);\n}\nvar bell_default = /* @__PURE__ */ export_helper_default(bell_vue_vue_type_script_lang_default, [[\"render\", _sfc_render169], [\"__file\", \"bell.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\bicycle.vue?vue&type=script&lang.ts\nvar bicycle_vue_vue_type_script_lang_default = {\n  name: \"Bicycle\"\n};\n\n// src/components/bicycle.vue\nimport { openBlock as _openBlock170, createElementBlock as _createElementBlock170, createStaticVNode as _createStaticVNode } from \"vue\";\nvar _hoisted_1170 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2170 = /* @__PURE__ */ _createStaticVNode('<path fill=\"currentColor\" d=\"M256 832a128 128 0 1 0 0-256 128 128 0 0 0 0 256zm0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384z\"></path><path fill=\"currentColor\" d=\"M288 672h320q32 0 32 32t-32 32H288q-32 0-32-32t32-32z\"></path><path fill=\"currentColor\" d=\"M768 832a128 128 0 1 0 0-256 128 128 0 0 0 0 256zm0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384z\"></path><path fill=\"currentColor\" d=\"M480 192a32 32 0 0 1 0-64h160a32 32 0 0 1 31.04 24.256l96 384a32 32 0 0 1-62.08 15.488L615.04 192H480zM96 384a32 32 0 0 1 0-64h128a32 32 0 0 1 30.336 21.888l64 192a32 32 0 1 1-60.672 20.224L200.96 384H96z\"></path><path fill=\"currentColor\" d=\"m373.376 599.808-42.752-47.616 320-288 42.752 47.616z\"></path>', 5), _hoisted_7 = [\n  _hoisted_2170\n];\nfunction _sfc_render170(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock170(), _createElementBlock170(\"svg\", _hoisted_1170, _hoisted_7);\n}\nvar bicycle_default = /* @__PURE__ */ export_helper_default(bicycle_vue_vue_type_script_lang_default, [[\"render\", _sfc_render170], [\"__file\", \"bicycle.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\bottom-left.vue?vue&type=script&lang.ts\nvar bottom_left_vue_vue_type_script_lang_default = {\n  name: \"BottomLeft\"\n};\n\n// src/components/bottom-left.vue\nimport { createElementVNode as _createElementVNode170, openBlock as _openBlock171, createElementBlock as _createElementBlock171 } from \"vue\";\nvar _hoisted_1171 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2171 = /* @__PURE__ */ _createElementVNode170(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 768h416a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V352a32 32 0 0 1 64 0v416z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3170 = /* @__PURE__ */ _createElementVNode170(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M246.656 822.656a32 32 0 0 1-45.312-45.312l544-544a32 32 0 0 1 45.312 45.312l-544 544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_414 = [\n  _hoisted_2171,\n  _hoisted_3170\n];\nfunction _sfc_render171(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock171(), _createElementBlock171(\"svg\", _hoisted_1171, _hoisted_414);\n}\nvar bottom_left_default = /* @__PURE__ */ export_helper_default(bottom_left_vue_vue_type_script_lang_default, [[\"render\", _sfc_render171], [\"__file\", \"bottom-left.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\bottom-right.vue?vue&type=script&lang.ts\nvar bottom_right_vue_vue_type_script_lang_default = {\n  name: \"BottomRight\"\n};\n\n// src/components/bottom-right.vue\nimport { createElementVNode as _createElementVNode171, openBlock as _openBlock172, createElementBlock as _createElementBlock172 } from \"vue\";\nvar _hoisted_1172 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2172 = /* @__PURE__ */ _createElementVNode171(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M352 768a32 32 0 1 0 0 64h448a32 32 0 0 0 32-32V352a32 32 0 0 0-64 0v416H352z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3171 = /* @__PURE__ */ _createElementVNode171(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M777.344 822.656a32 32 0 0 0 45.312-45.312l-544-544a32 32 0 0 0-45.312 45.312l544 544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_415 = [\n  _hoisted_2172,\n  _hoisted_3171\n];\nfunction _sfc_render172(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock172(), _createElementBlock172(\"svg\", _hoisted_1172, _hoisted_415);\n}\nvar bottom_right_default = /* @__PURE__ */ export_helper_default(bottom_right_vue_vue_type_script_lang_default, [[\"render\", _sfc_render172], [\"__file\", \"bottom-right.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\bottom.vue?vue&type=script&lang.ts\nvar bottom_vue_vue_type_script_lang_default = {\n  name: \"Bottom\"\n};\n\n// src/components/bottom.vue\nimport { createElementVNode as _createElementVNode172, openBlock as _openBlock173, createElementBlock as _createElementBlock173 } from \"vue\";\nvar _hoisted_1173 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2173 = /* @__PURE__ */ _createElementVNode172(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 805.888V168a32 32 0 1 0-64 0v637.888L246.656 557.952a30.72 30.72 0 0 0-45.312 0 35.52 35.52 0 0 0 0 48.064l288 306.048a30.72 30.72 0 0 0 45.312 0l288-306.048a35.52 35.52 0 0 0 0-48 30.72 30.72 0 0 0-45.312 0L544 805.824z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3172 = [\n  _hoisted_2173\n];\nfunction _sfc_render173(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock173(), _createElementBlock173(\"svg\", _hoisted_1173, _hoisted_3172);\n}\nvar bottom_default = /* @__PURE__ */ export_helper_default(bottom_vue_vue_type_script_lang_default, [[\"render\", _sfc_render173], [\"__file\", \"bottom.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\bowl.vue?vue&type=script&lang.ts\nvar bowl_vue_vue_type_script_lang_default = {\n  name: \"Bowl\"\n};\n\n// src/components/bowl.vue\nimport { createElementVNode as _createElementVNode173, openBlock as _openBlock174, createElementBlock as _createElementBlock174 } from \"vue\";\nvar _hoisted_1174 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2174 = /* @__PURE__ */ _createElementVNode173(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M714.432 704a351.744 351.744 0 0 0 148.16-256H161.408a351.744 351.744 0 0 0 148.16 256h404.864zM288 766.592A415.68 415.68 0 0 1 96 416a32 32 0 0 1 32-32h768a32 32 0 0 1 32 32 415.68 415.68 0 0 1-192 350.592V832a64 64 0 0 1-64 64H352a64 64 0 0 1-64-64v-65.408zM493.248 320h-90.496l254.4-254.4a32 32 0 1 1 45.248 45.248L493.248 320zm187.328 0h-128l269.696-155.712a32 32 0 0 1 32 55.424L680.576 320zM352 768v64h320v-64H352z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3173 = [\n  _hoisted_2174\n];\nfunction _sfc_render174(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock174(), _createElementBlock174(\"svg\", _hoisted_1174, _hoisted_3173);\n}\nvar bowl_default = /* @__PURE__ */ export_helper_default(bowl_vue_vue_type_script_lang_default, [[\"render\", _sfc_render174], [\"__file\", \"bowl.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\box.vue?vue&type=script&lang.ts\nvar box_vue_vue_type_script_lang_default = {\n  name: \"Box\"\n};\n\n// src/components/box.vue\nimport { createElementVNode as _createElementVNode174, openBlock as _openBlock175, createElementBlock as _createElementBlock175 } from \"vue\";\nvar _hoisted_1175 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2175 = /* @__PURE__ */ _createElementVNode174(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M317.056 128 128 344.064V896h768V344.064L706.944 128H317.056zm-14.528-64h418.944a32 32 0 0 1 24.064 10.88l206.528 236.096A32 32 0 0 1 960 332.032V928a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V332.032a32 32 0 0 1 7.936-21.12L278.4 75.008A32 32 0 0 1 302.528 64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3174 = /* @__PURE__ */ _createElementVNode174(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M64 320h896v64H64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_416 = /* @__PURE__ */ _createElementVNode174(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M448 327.872V640h128V327.872L526.08 128h-28.16L448 327.872zM448 64h128l64 256v352a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V320l64-256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_54 = [\n  _hoisted_2175,\n  _hoisted_3174,\n  _hoisted_416\n];\nfunction _sfc_render175(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock175(), _createElementBlock175(\"svg\", _hoisted_1175, _hoisted_54);\n}\nvar box_default = /* @__PURE__ */ export_helper_default(box_vue_vue_type_script_lang_default, [[\"render\", _sfc_render175], [\"__file\", \"box.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\briefcase.vue?vue&type=script&lang.ts\nvar briefcase_vue_vue_type_script_lang_default = {\n  name: \"Briefcase\"\n};\n\n// src/components/briefcase.vue\nimport { createElementVNode as _createElementVNode175, openBlock as _openBlock176, createElementBlock as _createElementBlock176 } from \"vue\";\nvar _hoisted_1176 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2176 = /* @__PURE__ */ _createElementVNode175(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M320 320V128h384v192h192v192H128V320h192zM128 576h768v320H128V576zm256-256h256.064V192H384v128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3175 = [\n  _hoisted_2176\n];\nfunction _sfc_render176(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock176(), _createElementBlock176(\"svg\", _hoisted_1176, _hoisted_3175);\n}\nvar briefcase_default = /* @__PURE__ */ export_helper_default(briefcase_vue_vue_type_script_lang_default, [[\"render\", _sfc_render176], [\"__file\", \"briefcase.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\brush-filled.vue?vue&type=script&lang.ts\nvar brush_filled_vue_vue_type_script_lang_default = {\n  name: \"BrushFilled\"\n};\n\n// src/components/brush-filled.vue\nimport { createElementVNode as _createElementVNode176, openBlock as _openBlock177, createElementBlock as _createElementBlock177 } from \"vue\";\nvar _hoisted_1177 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2177 = /* @__PURE__ */ _createElementVNode176(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M608 704v160a96 96 0 0 1-192 0V704h-96a128 128 0 0 1-128-128h640a128 128 0 0 1-128 128h-96zM192 512V128.064h640V512H192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3176 = [\n  _hoisted_2177\n];\nfunction _sfc_render177(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock177(), _createElementBlock177(\"svg\", _hoisted_1177, _hoisted_3176);\n}\nvar brush_filled_default = /* @__PURE__ */ export_helper_default(brush_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render177], [\"__file\", \"brush-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\brush.vue?vue&type=script&lang.ts\nvar brush_vue_vue_type_script_lang_default = {\n  name: \"Brush\"\n};\n\n// src/components/brush.vue\nimport { createElementVNode as _createElementVNode177, openBlock as _openBlock178, createElementBlock as _createElementBlock178 } from \"vue\";\nvar _hoisted_1178 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2178 = /* @__PURE__ */ _createElementVNode177(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M896 448H128v192a64 64 0 0 0 64 64h192v192h256V704h192a64 64 0 0 0 64-64V448zm-770.752-64c0-47.552 5.248-90.24 15.552-128 14.72-54.016 42.496-107.392 83.2-160h417.28l-15.36 70.336L736 96h211.2c-24.832 42.88-41.92 96.256-51.2 160a663.872 663.872 0 0 0-6.144 128H960v256a128 128 0 0 1-128 128H704v160a32 32 0 0 1-32 32H352a32 32 0 0 1-32-32V768H192A128 128 0 0 1 64 640V384h61.248zm64 0h636.544c-2.048-45.824.256-91.584 6.848-137.216 4.48-30.848 10.688-59.776 18.688-86.784h-96.64l-221.12 141.248L561.92 160H256.512c-25.856 37.888-43.776 75.456-53.952 112.832-8.768 32.064-13.248 69.12-13.312 111.168z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3177 = [\n  _hoisted_2178\n];\nfunction _sfc_render178(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock178(), _createElementBlock178(\"svg\", _hoisted_1178, _hoisted_3177);\n}\nvar brush_default = /* @__PURE__ */ export_helper_default(brush_vue_vue_type_script_lang_default, [[\"render\", _sfc_render178], [\"__file\", \"brush.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\burger.vue?vue&type=script&lang.ts\nvar burger_vue_vue_type_script_lang_default = {\n  name: \"Burger\"\n};\n\n// src/components/burger.vue\nimport { createElementVNode as _createElementVNode178, openBlock as _openBlock179, createElementBlock as _createElementBlock179 } from \"vue\";\nvar _hoisted_1179 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2179 = /* @__PURE__ */ _createElementVNode178(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 512a32 32 0 0 0-32 32v64a32 32 0 0 0 30.08 32H864a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32H160zm736-58.56A96 96 0 0 1 960 544v64a96 96 0 0 1-51.968 85.312L855.36 833.6a96 96 0 0 1-89.856 62.272H258.496A96 96 0 0 1 168.64 833.6l-52.608-140.224A96 96 0 0 1 64 608v-64a96 96 0 0 1 64-90.56V448a384 384 0 1 1 768 5.44zM832 448a320 320 0 0 0-640 0h640zM512 704H188.352l40.192 107.136a32 32 0 0 0 29.952 20.736h507.008a32 32 0 0 0 29.952-20.736L835.648 704H512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3178 = [\n  _hoisted_2179\n];\nfunction _sfc_render179(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock179(), _createElementBlock179(\"svg\", _hoisted_1179, _hoisted_3178);\n}\nvar burger_default = /* @__PURE__ */ export_helper_default(burger_vue_vue_type_script_lang_default, [[\"render\", _sfc_render179], [\"__file\", \"burger.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\calendar.vue?vue&type=script&lang.ts\nvar calendar_vue_vue_type_script_lang_default = {\n  name: \"Calendar\"\n};\n\n// src/components/calendar.vue\nimport { createElementVNode as _createElementVNode179, openBlock as _openBlock180, createElementBlock as _createElementBlock180 } from \"vue\";\nvar _hoisted_1180 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2180 = /* @__PURE__ */ _createElementVNode179(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64H128zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0v32zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3179 = [\n  _hoisted_2180\n];\nfunction _sfc_render180(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock180(), _createElementBlock180(\"svg\", _hoisted_1180, _hoisted_3179);\n}\nvar calendar_default = /* @__PURE__ */ export_helper_default(calendar_vue_vue_type_script_lang_default, [[\"render\", _sfc_render180], [\"__file\", \"calendar.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\camera-filled.vue?vue&type=script&lang.ts\nvar camera_filled_vue_vue_type_script_lang_default = {\n  name: \"CameraFilled\"\n};\n\n// src/components/camera-filled.vue\nimport { createElementVNode as _createElementVNode180, openBlock as _openBlock181, createElementBlock as _createElementBlock181 } from \"vue\";\nvar _hoisted_1181 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2181 = /* @__PURE__ */ _createElementVNode180(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 224a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h704a64 64 0 0 0 64-64V288a64 64 0 0 0-64-64H748.416l-46.464-92.672A64 64 0 0 0 644.736 96H379.328a64 64 0 0 0-57.216 35.392L275.776 224H160zm352 435.2a115.2 115.2 0 1 0 0-230.4 115.2 115.2 0 0 0 0 230.4zm0 140.8a256 256 0 1 1 0-512 256 256 0 0 1 0 512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3180 = [\n  _hoisted_2181\n];\nfunction _sfc_render181(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock181(), _createElementBlock181(\"svg\", _hoisted_1181, _hoisted_3180);\n}\nvar camera_filled_default = /* @__PURE__ */ export_helper_default(camera_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render181], [\"__file\", \"camera-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\camera.vue?vue&type=script&lang.ts\nvar camera_vue_vue_type_script_lang_default = {\n  name: \"Camera\"\n};\n\n// src/components/camera.vue\nimport { createElementVNode as _createElementVNode181, openBlock as _openBlock182, createElementBlock as _createElementBlock182 } from \"vue\";\nvar _hoisted_1182 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2182 = /* @__PURE__ */ _createElementVNode181(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M896 256H128v576h768V256zm-199.424-64-32.064-64h-304.96l-32 64h369.024zM96 192h160l46.336-92.608A64 64 0 0 1 359.552 64h304.96a64 64 0 0 1 57.216 35.328L768.192 192H928a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32zm416 512a160 160 0 1 0 0-320 160 160 0 0 0 0 320zm0 64a224 224 0 1 1 0-448 224 224 0 0 1 0 448z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3181 = [\n  _hoisted_2182\n];\nfunction _sfc_render182(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock182(), _createElementBlock182(\"svg\", _hoisted_1182, _hoisted_3181);\n}\nvar camera_default = /* @__PURE__ */ export_helper_default(camera_vue_vue_type_script_lang_default, [[\"render\", _sfc_render182], [\"__file\", \"camera.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\caret-bottom.vue?vue&type=script&lang.ts\nvar caret_bottom_vue_vue_type_script_lang_default = {\n  name: \"CaretBottom\"\n};\n\n// src/components/caret-bottom.vue\nimport { createElementVNode as _createElementVNode182, openBlock as _openBlock183, createElementBlock as _createElementBlock183 } from \"vue\";\nvar _hoisted_1183 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2183 = /* @__PURE__ */ _createElementVNode182(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m192 384 320 384 320-384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3182 = [\n  _hoisted_2183\n];\nfunction _sfc_render183(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock183(), _createElementBlock183(\"svg\", _hoisted_1183, _hoisted_3182);\n}\nvar caret_bottom_default = /* @__PURE__ */ export_helper_default(caret_bottom_vue_vue_type_script_lang_default, [[\"render\", _sfc_render183], [\"__file\", \"caret-bottom.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\caret-left.vue?vue&type=script&lang.ts\nvar caret_left_vue_vue_type_script_lang_default = {\n  name: \"CaretLeft\"\n};\n\n// src/components/caret-left.vue\nimport { createElementVNode as _createElementVNode183, openBlock as _openBlock184, createElementBlock as _createElementBlock184 } from \"vue\";\nvar _hoisted_1184 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2184 = /* @__PURE__ */ _createElementVNode183(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M672 192 288 511.936 672 832z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3183 = [\n  _hoisted_2184\n];\nfunction _sfc_render184(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock184(), _createElementBlock184(\"svg\", _hoisted_1184, _hoisted_3183);\n}\nvar caret_left_default = /* @__PURE__ */ export_helper_default(caret_left_vue_vue_type_script_lang_default, [[\"render\", _sfc_render184], [\"__file\", \"caret-left.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\caret-right.vue?vue&type=script&lang.ts\nvar caret_right_vue_vue_type_script_lang_default = {\n  name: \"CaretRight\"\n};\n\n// src/components/caret-right.vue\nimport { createElementVNode as _createElementVNode184, openBlock as _openBlock185, createElementBlock as _createElementBlock185 } from \"vue\";\nvar _hoisted_1185 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2185 = /* @__PURE__ */ _createElementVNode184(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 192v640l384-320.064z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3184 = [\n  _hoisted_2185\n];\nfunction _sfc_render185(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock185(), _createElementBlock185(\"svg\", _hoisted_1185, _hoisted_3184);\n}\nvar caret_right_default = /* @__PURE__ */ export_helper_default(caret_right_vue_vue_type_script_lang_default, [[\"render\", _sfc_render185], [\"__file\", \"caret-right.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\caret-top.vue?vue&type=script&lang.ts\nvar caret_top_vue_vue_type_script_lang_default = {\n  name: \"CaretTop\"\n};\n\n// src/components/caret-top.vue\nimport { createElementVNode as _createElementVNode185, openBlock as _openBlock186, createElementBlock as _createElementBlock186 } from \"vue\";\nvar _hoisted_1186 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2186 = /* @__PURE__ */ _createElementVNode185(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 320 192 704h639.936z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3185 = [\n  _hoisted_2186\n];\nfunction _sfc_render186(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock186(), _createElementBlock186(\"svg\", _hoisted_1186, _hoisted_3185);\n}\nvar caret_top_default = /* @__PURE__ */ export_helper_default(caret_top_vue_vue_type_script_lang_default, [[\"render\", _sfc_render186], [\"__file\", \"caret-top.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\cellphone.vue?vue&type=script&lang.ts\nvar cellphone_vue_vue_type_script_lang_default = {\n  name: \"Cellphone\"\n};\n\n// src/components/cellphone.vue\nimport { createElementVNode as _createElementVNode186, openBlock as _openBlock187, createElementBlock as _createElementBlock187 } from \"vue\";\nvar _hoisted_1187 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2187 = /* @__PURE__ */ _createElementVNode186(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 128a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64H256zm0-64h512a128 128 0 0 1 128 128v640a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V192A128 128 0 0 1 256 64zm128 128h256a32 32 0 1 1 0 64H384a32 32 0 0 1 0-64zm128 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3186 = [\n  _hoisted_2187\n];\nfunction _sfc_render187(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock187(), _createElementBlock187(\"svg\", _hoisted_1187, _hoisted_3186);\n}\nvar cellphone_default = /* @__PURE__ */ export_helper_default(cellphone_vue_vue_type_script_lang_default, [[\"render\", _sfc_render187], [\"__file\", \"cellphone.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\chat-dot-round.vue?vue&type=script&lang.ts\nvar chat_dot_round_vue_vue_type_script_lang_default = {\n  name: \"ChatDotRound\"\n};\n\n// src/components/chat-dot-round.vue\nimport { createElementVNode as _createElementVNode187, openBlock as _openBlock188, createElementBlock as _createElementBlock188 } from \"vue\";\nvar _hoisted_1188 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2188 = /* @__PURE__ */ _createElementVNode187(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 0 1-206.912-48.384l-175.616 58.56z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3187 = /* @__PURE__ */ _createElementVNode187(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 563.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_417 = [\n  _hoisted_2188,\n  _hoisted_3187\n];\nfunction _sfc_render188(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock188(), _createElementBlock188(\"svg\", _hoisted_1188, _hoisted_417);\n}\nvar chat_dot_round_default = /* @__PURE__ */ export_helper_default(chat_dot_round_vue_vue_type_script_lang_default, [[\"render\", _sfc_render188], [\"__file\", \"chat-dot-round.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\chat-dot-square.vue?vue&type=script&lang.ts\nvar chat_dot_square_vue_vue_type_script_lang_default = {\n  name: \"ChatDotSquare\"\n};\n\n// src/components/chat-dot-square.vue\nimport { createElementVNode as _createElementVNode188, openBlock as _openBlock189, createElementBlock as _createElementBlock189 } from \"vue\";\nvar _hoisted_1189 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2189 = /* @__PURE__ */ _createElementVNode188(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88L273.536 736zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128H296z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3188 = /* @__PURE__ */ _createElementVNode188(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 499.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_418 = [\n  _hoisted_2189,\n  _hoisted_3188\n];\nfunction _sfc_render189(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock189(), _createElementBlock189(\"svg\", _hoisted_1189, _hoisted_418);\n}\nvar chat_dot_square_default = /* @__PURE__ */ export_helper_default(chat_dot_square_vue_vue_type_script_lang_default, [[\"render\", _sfc_render189], [\"__file\", \"chat-dot-square.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\chat-line-round.vue?vue&type=script&lang.ts\nvar chat_line_round_vue_vue_type_script_lang_default = {\n  name: \"ChatLineRound\"\n};\n\n// src/components/chat-line-round.vue\nimport { createElementVNode as _createElementVNode189, openBlock as _openBlock190, createElementBlock as _createElementBlock190 } from \"vue\";\nvar _hoisted_1190 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2190 = /* @__PURE__ */ _createElementVNode189(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 0 1-206.912-48.384l-175.616 58.56z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3189 = /* @__PURE__ */ _createElementVNode189(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M352 576h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32zm32-192h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_419 = [\n  _hoisted_2190,\n  _hoisted_3189\n];\nfunction _sfc_render190(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock190(), _createElementBlock190(\"svg\", _hoisted_1190, _hoisted_419);\n}\nvar chat_line_round_default = /* @__PURE__ */ export_helper_default(chat_line_round_vue_vue_type_script_lang_default, [[\"render\", _sfc_render190], [\"__file\", \"chat-line-round.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\chat-line-square.vue?vue&type=script&lang.ts\nvar chat_line_square_vue_vue_type_script_lang_default = {\n  name: \"ChatLineSquare\"\n};\n\n// src/components/chat-line-square.vue\nimport { createElementVNode as _createElementVNode190, openBlock as _openBlock191, createElementBlock as _createElementBlock191 } from \"vue\";\nvar _hoisted_1191 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2191 = /* @__PURE__ */ _createElementVNode190(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 826.88 273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128H296z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3190 = /* @__PURE__ */ _createElementVNode190(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M352 512h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32zm0-192h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_420 = [\n  _hoisted_2191,\n  _hoisted_3190\n];\nfunction _sfc_render191(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock191(), _createElementBlock191(\"svg\", _hoisted_1191, _hoisted_420);\n}\nvar chat_line_square_default = /* @__PURE__ */ export_helper_default(chat_line_square_vue_vue_type_script_lang_default, [[\"render\", _sfc_render191], [\"__file\", \"chat-line-square.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\chat-round.vue?vue&type=script&lang.ts\nvar chat_round_vue_vue_type_script_lang_default = {\n  name: \"ChatRound\"\n};\n\n// src/components/chat-round.vue\nimport { createElementVNode as _createElementVNode191, openBlock as _openBlock192, createElementBlock as _createElementBlock192 } from \"vue\";\nvar _hoisted_1192 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2192 = /* @__PURE__ */ _createElementVNode191(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m174.72 855.68 130.048-43.392 23.424 11.392C382.4 849.984 444.352 864 512 864c223.744 0 384-159.872 384-352 0-192.832-159.104-352-384-352S128 319.168 128 512a341.12 341.12 0 0 0 69.248 204.288l21.632 28.8-44.16 110.528zm-45.248 82.56A32 32 0 0 1 89.6 896l56.512-141.248A405.12 405.12 0 0 1 64 512C64 299.904 235.648 96 512 96s448 203.904 448 416-173.44 416-448 416c-79.68 0-150.848-17.152-211.712-46.72l-170.88 56.96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3191 = [\n  _hoisted_2192\n];\nfunction _sfc_render192(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock192(), _createElementBlock192(\"svg\", _hoisted_1192, _hoisted_3191);\n}\nvar chat_round_default = /* @__PURE__ */ export_helper_default(chat_round_vue_vue_type_script_lang_default, [[\"render\", _sfc_render192], [\"__file\", \"chat-round.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\chat-square.vue?vue&type=script&lang.ts\nvar chat_square_vue_vue_type_script_lang_default = {\n  name: \"ChatSquare\"\n};\n\n// src/components/chat-square.vue\nimport { createElementVNode as _createElementVNode192, openBlock as _openBlock193, createElementBlock as _createElementBlock193 } from \"vue\";\nvar _hoisted_1193 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2193 = /* @__PURE__ */ _createElementVNode192(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88L273.536 736zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128H296z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3192 = [\n  _hoisted_2193\n];\nfunction _sfc_render193(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock193(), _createElementBlock193(\"svg\", _hoisted_1193, _hoisted_3192);\n}\nvar chat_square_default = /* @__PURE__ */ export_helper_default(chat_square_vue_vue_type_script_lang_default, [[\"render\", _sfc_render193], [\"__file\", \"chat-square.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\check.vue?vue&type=script&lang.ts\nvar check_vue_vue_type_script_lang_default = {\n  name: \"Check\"\n};\n\n// src/components/check.vue\nimport { createElementVNode as _createElementVNode193, openBlock as _openBlock194, createElementBlock as _createElementBlock194 } from \"vue\";\nvar _hoisted_1194 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2194 = /* @__PURE__ */ _createElementVNode193(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3193 = [\n  _hoisted_2194\n];\nfunction _sfc_render194(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock194(), _createElementBlock194(\"svg\", _hoisted_1194, _hoisted_3193);\n}\nvar check_default = /* @__PURE__ */ export_helper_default(check_vue_vue_type_script_lang_default, [[\"render\", _sfc_render194], [\"__file\", \"check.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\checked.vue?vue&type=script&lang.ts\nvar checked_vue_vue_type_script_lang_default = {\n  name: \"Checked\"\n};\n\n// src/components/checked.vue\nimport { createElementVNode as _createElementVNode194, openBlock as _openBlock195, createElementBlock as _createElementBlock195 } from \"vue\";\nvar _hoisted_1195 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2195 = /* @__PURE__ */ _createElementVNode194(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 192h160v736H160V192h160.064v64H704v-64zM311.616 537.28l-45.312 45.248L447.36 763.52l316.8-316.8-45.312-45.184L447.36 673.024 311.616 537.28zM384 192V96h256v96H384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3194 = [\n  _hoisted_2195\n];\nfunction _sfc_render195(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock195(), _createElementBlock195(\"svg\", _hoisted_1195, _hoisted_3194);\n}\nvar checked_default = /* @__PURE__ */ export_helper_default(checked_vue_vue_type_script_lang_default, [[\"render\", _sfc_render195], [\"__file\", \"checked.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\cherry.vue?vue&type=script&lang.ts\nvar cherry_vue_vue_type_script_lang_default = {\n  name: \"Cherry\"\n};\n\n// src/components/cherry.vue\nimport { createElementVNode as _createElementVNode195, openBlock as _openBlock196, createElementBlock as _createElementBlock196 } from \"vue\";\nvar _hoisted_1196 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2196 = /* @__PURE__ */ _createElementVNode195(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M261.056 449.6c13.824-69.696 34.88-128.96 63.36-177.728 23.744-40.832 61.12-88.64 112.256-143.872H320a32 32 0 0 1 0-64h384a32 32 0 1 1 0 64H554.752c14.912 39.168 41.344 86.592 79.552 141.76 47.36 68.48 84.8 106.752 106.304 114.304a224 224 0 1 1-84.992 14.784c-22.656-22.912-47.04-53.76-73.92-92.608-38.848-56.128-67.008-105.792-84.352-149.312-55.296 58.24-94.528 107.52-117.76 147.2-23.168 39.744-41.088 88.768-53.568 147.072a224.064 224.064 0 1 1-64.96-1.6zM288 832a160 160 0 1 0 0-320 160 160 0 0 0 0 320zm448-64a160 160 0 1 0 0-320 160 160 0 0 0 0 320z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3195 = [\n  _hoisted_2196\n];\nfunction _sfc_render196(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock196(), _createElementBlock196(\"svg\", _hoisted_1196, _hoisted_3195);\n}\nvar cherry_default = /* @__PURE__ */ export_helper_default(cherry_vue_vue_type_script_lang_default, [[\"render\", _sfc_render196], [\"__file\", \"cherry.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\chicken.vue?vue&type=script&lang.ts\nvar chicken_vue_vue_type_script_lang_default = {\n  name: \"Chicken\"\n};\n\n// src/components/chicken.vue\nimport { createElementVNode as _createElementVNode196, openBlock as _openBlock197, createElementBlock as _createElementBlock197 } from \"vue\";\nvar _hoisted_1197 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2197 = /* @__PURE__ */ _createElementVNode196(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M349.952 716.992 478.72 588.16a106.688 106.688 0 0 1-26.176-19.072 106.688 106.688 0 0 1-19.072-26.176L304.704 671.744c.768 3.072 1.472 6.144 2.048 9.216l2.048 31.936 31.872 1.984c3.136.64 6.208 1.28 9.28 2.112zm57.344 33.152a128 128 0 1 1-216.32 114.432l-1.92-32-32-1.92a128 128 0 1 1 114.432-216.32L416.64 469.248c-2.432-101.44 58.112-239.104 149.056-330.048 107.328-107.328 231.296-85.504 316.8 0 85.44 85.44 107.328 209.408 0 316.8-91.008 90.88-228.672 151.424-330.112 149.056L407.296 750.08zm90.496-226.304c49.536 49.536 233.344-7.04 339.392-113.088 78.208-78.208 63.232-163.072 0-226.304-63.168-63.232-148.032-78.208-226.24 0C504.896 290.496 448.32 474.368 497.792 523.84zM244.864 708.928a64 64 0 1 0-59.84 59.84l56.32-3.52 3.52-56.32zm8.064 127.68a64 64 0 1 0 59.84-59.84l-56.32 3.52-3.52 56.32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3196 = [\n  _hoisted_2197\n];\nfunction _sfc_render197(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock197(), _createElementBlock197(\"svg\", _hoisted_1197, _hoisted_3196);\n}\nvar chicken_default = /* @__PURE__ */ export_helper_default(chicken_vue_vue_type_script_lang_default, [[\"render\", _sfc_render197], [\"__file\", \"chicken.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\chrome-filled.vue?vue&type=script&lang.ts\nvar chrome_filled_vue_vue_type_script_lang_default = {\n  name: \"ChromeFilled\"\n};\n\n// src/components/chrome-filled.vue\nimport { createElementVNode as _createElementVNode197, openBlock as _openBlock198, createElementBlock as _createElementBlock198 } from \"vue\";\nvar _hoisted_1198 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2198 = /* @__PURE__ */ _createElementVNode197(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M938.67 512.01c0-44.59-6.82-87.6-19.54-128H682.67a212.372 212.372 0 0 1 42.67 128c.06 38.71-10.45 76.7-30.42 109.87l-182.91 316.8c235.65-.01 426.66-191.02 426.66-426.67z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3197 = /* @__PURE__ */ _createElementVNode197(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M576.79 401.63a127.92 127.92 0 0 0-63.56-17.6c-22.36-.22-44.39 5.43-63.89 16.38s-35.79 26.82-47.25 46.02a128.005 128.005 0 0 0-2.16 127.44l1.24 2.13a127.906 127.906 0 0 0 46.36 46.61 127.907 127.907 0 0 0 63.38 17.44c22.29.2 44.24-5.43 63.68-16.33a127.94 127.94 0 0 0 47.16-45.79v-.01l1.11-1.92a127.984 127.984 0 0 0 .29-127.46 127.957 127.957 0 0 0-46.36-46.91z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_421 = /* @__PURE__ */ _createElementVNode197(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M394.45 333.96A213.336 213.336 0 0 1 512 298.67h369.58A426.503 426.503 0 0 0 512 85.34a425.598 425.598 0 0 0-171.74 35.98 425.644 425.644 0 0 0-142.62 102.22l118.14 204.63a213.397 213.397 0 0 1 78.67-94.21zm117.56 604.72H512zm-97.25-236.73a213.284 213.284 0 0 1-89.54-86.81L142.48 298.6c-36.35 62.81-57.13 135.68-57.13 213.42 0 203.81 142.93 374.22 333.95 416.55h.04l118.19-204.71a213.315 213.315 0 0 1-122.77-21.91z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_55 = [\n  _hoisted_2198,\n  _hoisted_3197,\n  _hoisted_421\n];\nfunction _sfc_render198(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock198(), _createElementBlock198(\"svg\", _hoisted_1198, _hoisted_55);\n}\nvar chrome_filled_default = /* @__PURE__ */ export_helper_default(chrome_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render198], [\"__file\", \"chrome-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\circle-check-filled.vue?vue&type=script&lang.ts\nvar circle_check_filled_vue_vue_type_script_lang_default = {\n  name: \"CircleCheckFilled\"\n};\n\n// src/components/circle-check-filled.vue\nimport { createElementVNode as _createElementVNode198, openBlock as _openBlock199, createElementBlock as _createElementBlock199 } from \"vue\";\nvar _hoisted_1199 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2199 = /* @__PURE__ */ _createElementVNode198(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3198 = [\n  _hoisted_2199\n];\nfunction _sfc_render199(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock199(), _createElementBlock199(\"svg\", _hoisted_1199, _hoisted_3198);\n}\nvar circle_check_filled_default = /* @__PURE__ */ export_helper_default(circle_check_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render199], [\"__file\", \"circle-check-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\circle-check.vue?vue&type=script&lang.ts\nvar circle_check_vue_vue_type_script_lang_default = {\n  name: \"CircleCheck\"\n};\n\n// src/components/circle-check.vue\nimport { createElementVNode as _createElementVNode199, openBlock as _openBlock200, createElementBlock as _createElementBlock200 } from \"vue\";\nvar _hoisted_1200 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2200 = /* @__PURE__ */ _createElementVNode199(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3199 = /* @__PURE__ */ _createElementVNode199(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_422 = [\n  _hoisted_2200,\n  _hoisted_3199\n];\nfunction _sfc_render200(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock200(), _createElementBlock200(\"svg\", _hoisted_1200, _hoisted_422);\n}\nvar circle_check_default = /* @__PURE__ */ export_helper_default(circle_check_vue_vue_type_script_lang_default, [[\"render\", _sfc_render200], [\"__file\", \"circle-check.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\circle-close-filled.vue?vue&type=script&lang.ts\nvar circle_close_filled_vue_vue_type_script_lang_default = {\n  name: \"CircleCloseFilled\"\n};\n\n// src/components/circle-close-filled.vue\nimport { createElementVNode as _createElementVNode200, openBlock as _openBlock201, createElementBlock as _createElementBlock201 } from \"vue\";\nvar _hoisted_1201 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2201 = /* @__PURE__ */ _createElementVNode200(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336L512 457.664z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3200 = [\n  _hoisted_2201\n];\nfunction _sfc_render201(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock201(), _createElementBlock201(\"svg\", _hoisted_1201, _hoisted_3200);\n}\nvar circle_close_filled_default = /* @__PURE__ */ export_helper_default(circle_close_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render201], [\"__file\", \"circle-close-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\circle-close.vue?vue&type=script&lang.ts\nvar circle_close_vue_vue_type_script_lang_default = {\n  name: \"CircleClose\"\n};\n\n// src/components/circle-close.vue\nimport { createElementVNode as _createElementVNode201, openBlock as _openBlock202, createElementBlock as _createElementBlock202 } from \"vue\";\nvar _hoisted_1202 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2202 = /* @__PURE__ */ _createElementVNode201(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248L466.752 512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3201 = /* @__PURE__ */ _createElementVNode201(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_423 = [\n  _hoisted_2202,\n  _hoisted_3201\n];\nfunction _sfc_render202(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock202(), _createElementBlock202(\"svg\", _hoisted_1202, _hoisted_423);\n}\nvar circle_close_default = /* @__PURE__ */ export_helper_default(circle_close_vue_vue_type_script_lang_default, [[\"render\", _sfc_render202], [\"__file\", \"circle-close.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\circle-plus-filled.vue?vue&type=script&lang.ts\nvar circle_plus_filled_vue_vue_type_script_lang_default = {\n  name: \"CirclePlusFilled\"\n};\n\n// src/components/circle-plus-filled.vue\nimport { createElementVNode as _createElementVNode202, openBlock as _openBlock203, createElementBlock as _createElementBlock203 } from \"vue\";\nvar _hoisted_1203 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2203 = /* @__PURE__ */ _createElementVNode202(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-38.4 409.6H326.4a38.4 38.4 0 1 0 0 76.8h147.2v147.2a38.4 38.4 0 0 0 76.8 0V550.4h147.2a38.4 38.4 0 0 0 0-76.8H550.4V326.4a38.4 38.4 0 1 0-76.8 0v147.2z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3202 = [\n  _hoisted_2203\n];\nfunction _sfc_render203(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock203(), _createElementBlock203(\"svg\", _hoisted_1203, _hoisted_3202);\n}\nvar circle_plus_filled_default = /* @__PURE__ */ export_helper_default(circle_plus_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render203], [\"__file\", \"circle-plus-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\circle-plus.vue?vue&type=script&lang.ts\nvar circle_plus_vue_vue_type_script_lang_default = {\n  name: \"CirclePlus\"\n};\n\n// src/components/circle-plus.vue\nimport { createElementVNode as _createElementVNode203, openBlock as _openBlock204, createElementBlock as _createElementBlock204 } from \"vue\";\nvar _hoisted_1204 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2204 = /* @__PURE__ */ _createElementVNode203(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3203 = /* @__PURE__ */ _createElementVNode203(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 672V352a32 32 0 1 1 64 0v320a32 32 0 0 1-64 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_424 = /* @__PURE__ */ _createElementVNode203(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_56 = [\n  _hoisted_2204,\n  _hoisted_3203,\n  _hoisted_424\n];\nfunction _sfc_render204(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock204(), _createElementBlock204(\"svg\", _hoisted_1204, _hoisted_56);\n}\nvar circle_plus_default = /* @__PURE__ */ export_helper_default(circle_plus_vue_vue_type_script_lang_default, [[\"render\", _sfc_render204], [\"__file\", \"circle-plus.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\clock.vue?vue&type=script&lang.ts\nvar clock_vue_vue_type_script_lang_default = {\n  name: \"Clock\"\n};\n\n// src/components/clock.vue\nimport { createElementVNode as _createElementVNode204, openBlock as _openBlock205, createElementBlock as _createElementBlock205 } from \"vue\";\nvar _hoisted_1205 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2205 = /* @__PURE__ */ _createElementVNode204(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3204 = /* @__PURE__ */ _createElementVNode204(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_425 = /* @__PURE__ */ _createElementVNode204(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_57 = [\n  _hoisted_2205,\n  _hoisted_3204,\n  _hoisted_425\n];\nfunction _sfc_render205(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock205(), _createElementBlock205(\"svg\", _hoisted_1205, _hoisted_57);\n}\nvar clock_default = /* @__PURE__ */ export_helper_default(clock_vue_vue_type_script_lang_default, [[\"render\", _sfc_render205], [\"__file\", \"clock.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\close-bold.vue?vue&type=script&lang.ts\nvar close_bold_vue_vue_type_script_lang_default = {\n  name: \"CloseBold\"\n};\n\n// src/components/close-bold.vue\nimport { createElementVNode as _createElementVNode205, openBlock as _openBlock206, createElementBlock as _createElementBlock206 } from \"vue\";\nvar _hoisted_1206 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2206 = /* @__PURE__ */ _createElementVNode205(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3205 = [\n  _hoisted_2206\n];\nfunction _sfc_render206(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock206(), _createElementBlock206(\"svg\", _hoisted_1206, _hoisted_3205);\n}\nvar close_bold_default = /* @__PURE__ */ export_helper_default(close_bold_vue_vue_type_script_lang_default, [[\"render\", _sfc_render206], [\"__file\", \"close-bold.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\close.vue?vue&type=script&lang.ts\nvar close_vue_vue_type_script_lang_default = {\n  name: \"Close\"\n};\n\n// src/components/close.vue\nimport { createElementVNode as _createElementVNode206, openBlock as _openBlock207, createElementBlock as _createElementBlock207 } from \"vue\";\nvar _hoisted_1207 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2207 = /* @__PURE__ */ _createElementVNode206(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3206 = [\n  _hoisted_2207\n];\nfunction _sfc_render207(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock207(), _createElementBlock207(\"svg\", _hoisted_1207, _hoisted_3206);\n}\nvar close_default = /* @__PURE__ */ export_helper_default(close_vue_vue_type_script_lang_default, [[\"render\", _sfc_render207], [\"__file\", \"close.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\cloudy.vue?vue&type=script&lang.ts\nvar cloudy_vue_vue_type_script_lang_default = {\n  name: \"Cloudy\"\n};\n\n// src/components/cloudy.vue\nimport { createElementVNode as _createElementVNode207, openBlock as _openBlock208, createElementBlock as _createElementBlock208 } from \"vue\";\nvar _hoisted_1208 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2208 = /* @__PURE__ */ _createElementVNode207(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M598.4 831.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 831.872zm-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 381.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3207 = [\n  _hoisted_2208\n];\nfunction _sfc_render208(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock208(), _createElementBlock208(\"svg\", _hoisted_1208, _hoisted_3207);\n}\nvar cloudy_default = /* @__PURE__ */ export_helper_default(cloudy_vue_vue_type_script_lang_default, [[\"render\", _sfc_render208], [\"__file\", \"cloudy.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\coffee-cup.vue?vue&type=script&lang.ts\nvar coffee_cup_vue_vue_type_script_lang_default = {\n  name: \"CoffeeCup\"\n};\n\n// src/components/coffee-cup.vue\nimport { createElementVNode as _createElementVNode208, openBlock as _openBlock209, createElementBlock as _createElementBlock209 } from \"vue\";\nvar _hoisted_1209 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2209 = /* @__PURE__ */ _createElementVNode208(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M768 192a192 192 0 1 1-8 383.808A256.128 256.128 0 0 1 512 768H320A256 256 0 0 1 64 512V160a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v32zm0 64v256a128 128 0 1 0 0-256zM96 832h640a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64zm32-640v320a192 192 0 0 0 192 192h192a192 192 0 0 0 192-192V192H128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3208 = [\n  _hoisted_2209\n];\nfunction _sfc_render209(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock209(), _createElementBlock209(\"svg\", _hoisted_1209, _hoisted_3208);\n}\nvar coffee_cup_default = /* @__PURE__ */ export_helper_default(coffee_cup_vue_vue_type_script_lang_default, [[\"render\", _sfc_render209], [\"__file\", \"coffee-cup.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\coffee.vue?vue&type=script&lang.ts\nvar coffee_vue_vue_type_script_lang_default = {\n  name: \"Coffee\"\n};\n\n// src/components/coffee.vue\nimport { createElementVNode as _createElementVNode209, openBlock as _openBlock210, createElementBlock as _createElementBlock210 } from \"vue\";\nvar _hoisted_1210 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2210 = /* @__PURE__ */ _createElementVNode209(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M822.592 192h14.272a32 32 0 0 1 31.616 26.752l21.312 128A32 32 0 0 1 858.24 384h-49.344l-39.04 546.304A32 32 0 0 1 737.92 960H285.824a32 32 0 0 1-32-29.696L214.912 384H165.76a32 32 0 0 1-31.552-37.248l21.312-128A32 32 0 0 1 187.136 192h14.016l-6.72-93.696A32 32 0 0 1 226.368 64h571.008a32 32 0 0 1 31.936 34.304L822.592 192zm-64.128 0 4.544-64H260.736l4.544 64h493.184zm-548.16 128H820.48l-10.688-64H214.208l-10.688 64h6.784zm68.736 64 36.544 512H708.16l36.544-512H279.04z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3209 = [\n  _hoisted_2210\n];\nfunction _sfc_render210(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock210(), _createElementBlock210(\"svg\", _hoisted_1210, _hoisted_3209);\n}\nvar coffee_default = /* @__PURE__ */ export_helper_default(coffee_vue_vue_type_script_lang_default, [[\"render\", _sfc_render210], [\"__file\", \"coffee.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\coin.vue?vue&type=script&lang.ts\nvar coin_vue_vue_type_script_lang_default = {\n  name: \"Coin\"\n};\n\n// src/components/coin.vue\nimport { createElementVNode as _createElementVNode210, openBlock as _openBlock211, createElementBlock as _createElementBlock211 } from \"vue\";\nvar _hoisted_1211 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2211 = /* @__PURE__ */ _createElementVNode210(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3210 = /* @__PURE__ */ _createElementVNode210(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_426 = /* @__PURE__ */ _createElementVNode210(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_58 = [\n  _hoisted_2211,\n  _hoisted_3210,\n  _hoisted_426\n];\nfunction _sfc_render211(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock211(), _createElementBlock211(\"svg\", _hoisted_1211, _hoisted_58);\n}\nvar coin_default = /* @__PURE__ */ export_helper_default(coin_vue_vue_type_script_lang_default, [[\"render\", _sfc_render211], [\"__file\", \"coin.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\cold-drink.vue?vue&type=script&lang.ts\nvar cold_drink_vue_vue_type_script_lang_default = {\n  name: \"ColdDrink\"\n};\n\n// src/components/cold-drink.vue\nimport { createElementVNode as _createElementVNode211, openBlock as _openBlock212, createElementBlock as _createElementBlock212 } from \"vue\";\nvar _hoisted_1212 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2212 = /* @__PURE__ */ _createElementVNode211(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M768 64a192 192 0 1 1-69.952 370.88L480 725.376V896h96a32 32 0 1 1 0 64H320a32 32 0 1 1 0-64h96V725.376L76.8 273.536a64 64 0 0 1-12.8-38.4v-10.688a32 32 0 0 1 32-32h71.808l-65.536-83.84a32 32 0 0 1 50.432-39.424l96.256 123.264h337.728A192.064 192.064 0 0 1 768 64zM656.896 192.448H800a32 32 0 0 1 32 32v10.624a64 64 0 0 1-12.8 38.4l-80.448 107.2a128 128 0 1 0-81.92-188.16v-.064zm-357.888 64 129.472 165.76a32 32 0 0 1-50.432 39.36l-160.256-205.12H144l304 404.928 304-404.928H299.008z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3211 = [\n  _hoisted_2212\n];\nfunction _sfc_render212(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock212(), _createElementBlock212(\"svg\", _hoisted_1212, _hoisted_3211);\n}\nvar cold_drink_default = /* @__PURE__ */ export_helper_default(cold_drink_vue_vue_type_script_lang_default, [[\"render\", _sfc_render212], [\"__file\", \"cold-drink.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\collection-tag.vue?vue&type=script&lang.ts\nvar collection_tag_vue_vue_type_script_lang_default = {\n  name: \"CollectionTag\"\n};\n\n// src/components/collection-tag.vue\nimport { createElementVNode as _createElementVNode212, openBlock as _openBlock213, createElementBlock as _createElementBlock213 } from \"vue\";\nvar _hoisted_1213 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2213 = /* @__PURE__ */ _createElementVNode212(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 128v698.88l196.032-156.864a96 96 0 0 1 119.936 0L768 826.816V128H256zm-32-64h576a32 32 0 0 1 32 32v797.44a32 32 0 0 1-51.968 24.96L531.968 720a32 32 0 0 0-39.936 0L243.968 918.4A32 32 0 0 1 192 893.44V96a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3212 = [\n  _hoisted_2213\n];\nfunction _sfc_render213(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock213(), _createElementBlock213(\"svg\", _hoisted_1213, _hoisted_3212);\n}\nvar collection_tag_default = /* @__PURE__ */ export_helper_default(collection_tag_vue_vue_type_script_lang_default, [[\"render\", _sfc_render213], [\"__file\", \"collection-tag.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\collection.vue?vue&type=script&lang.ts\nvar collection_vue_vue_type_script_lang_default = {\n  name: \"Collection\"\n};\n\n// src/components/collection.vue\nimport { createElementVNode as _createElementVNode213, openBlock as _openBlock214, createElementBlock as _createElementBlock214 } from \"vue\";\nvar _hoisted_1214 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2214 = /* @__PURE__ */ _createElementVNode213(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 736h640V128H256a64 64 0 0 0-64 64v544zm64-672h608a32 32 0 0 1 32 32v672a32 32 0 0 1-32 32H160l-32 57.536V192A128 128 0 0 1 256 64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3213 = /* @__PURE__ */ _createElementVNode213(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M240 800a48 48 0 1 0 0 96h592v-96H240zm0-64h656v160a64 64 0 0 1-64 64H240a112 112 0 0 1 0-224zm144-608v250.88l96-76.8 96 76.8V128H384zm-64-64h320v381.44a32 32 0 0 1-51.968 24.96L480 384l-108.032 86.4A32 32 0 0 1 320 445.44V64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_427 = [\n  _hoisted_2214,\n  _hoisted_3213\n];\nfunction _sfc_render214(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock214(), _createElementBlock214(\"svg\", _hoisted_1214, _hoisted_427);\n}\nvar collection_default = /* @__PURE__ */ export_helper_default(collection_vue_vue_type_script_lang_default, [[\"render\", _sfc_render214], [\"__file\", \"collection.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\comment.vue?vue&type=script&lang.ts\nvar comment_vue_vue_type_script_lang_default = {\n  name: \"Comment\"\n};\n\n// src/components/comment.vue\nimport { createElementVNode as _createElementVNode214, openBlock as _openBlock215, createElementBlock as _createElementBlock215 } from \"vue\";\nvar _hoisted_1215 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2215 = /* @__PURE__ */ _createElementVNode214(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M736 504a56 56 0 1 1 0-112 56 56 0 0 1 0 112zm-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112zm-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112zM128 128v640h192v160l224-160h352V128H128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3214 = [\n  _hoisted_2215\n];\nfunction _sfc_render215(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock215(), _createElementBlock215(\"svg\", _hoisted_1215, _hoisted_3214);\n}\nvar comment_default = /* @__PURE__ */ export_helper_default(comment_vue_vue_type_script_lang_default, [[\"render\", _sfc_render215], [\"__file\", \"comment.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\compass.vue?vue&type=script&lang.ts\nvar compass_vue_vue_type_script_lang_default = {\n  name: \"Compass\"\n};\n\n// src/components/compass.vue\nimport { createElementVNode as _createElementVNode215, openBlock as _openBlock216, createElementBlock as _createElementBlock216 } from \"vue\";\nvar _hoisted_1216 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2216 = /* @__PURE__ */ _createElementVNode215(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3215 = /* @__PURE__ */ _createElementVNode215(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M725.888 315.008C676.48 428.672 624 513.28 568.576 568.64c-55.424 55.424-139.968 107.904-253.568 157.312a12.8 12.8 0 0 1-16.896-16.832c49.536-113.728 102.016-198.272 157.312-253.632 55.36-55.296 139.904-107.776 253.632-157.312a12.8 12.8 0 0 1 16.832 16.832z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_428 = [\n  _hoisted_2216,\n  _hoisted_3215\n];\nfunction _sfc_render216(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock216(), _createElementBlock216(\"svg\", _hoisted_1216, _hoisted_428);\n}\nvar compass_default = /* @__PURE__ */ export_helper_default(compass_vue_vue_type_script_lang_default, [[\"render\", _sfc_render216], [\"__file\", \"compass.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\connection.vue?vue&type=script&lang.ts\nvar connection_vue_vue_type_script_lang_default = {\n  name: \"Connection\"\n};\n\n// src/components/connection.vue\nimport { createElementVNode as _createElementVNode216, openBlock as _openBlock217, createElementBlock as _createElementBlock217 } from \"vue\";\nvar _hoisted_1217 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2217 = /* @__PURE__ */ _createElementVNode216(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M640 384v64H448a128 128 0 0 0-128 128v128a128 128 0 0 0 128 128h320a128 128 0 0 0 128-128V576a128 128 0 0 0-64-110.848V394.88c74.56 26.368 128 97.472 128 181.056v128a192 192 0 0 1-192 192H448a192 192 0 0 1-192-192V576a192 192 0 0 1 192-192h192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3216 = /* @__PURE__ */ _createElementVNode216(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 640v-64h192a128 128 0 0 0 128-128V320a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128v128a128 128 0 0 0 64 110.848v70.272A192.064 192.064 0 0 1 64 448V320a192 192 0 0 1 192-192h320a192 192 0 0 1 192 192v128a192 192 0 0 1-192 192H384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_429 = [\n  _hoisted_2217,\n  _hoisted_3216\n];\nfunction _sfc_render217(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock217(), _createElementBlock217(\"svg\", _hoisted_1217, _hoisted_429);\n}\nvar connection_default = /* @__PURE__ */ export_helper_default(connection_vue_vue_type_script_lang_default, [[\"render\", _sfc_render217], [\"__file\", \"connection.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\coordinate.vue?vue&type=script&lang.ts\nvar coordinate_vue_vue_type_script_lang_default = {\n  name: \"Coordinate\"\n};\n\n// src/components/coordinate.vue\nimport { createElementVNode as _createElementVNode217, openBlock as _openBlock218, createElementBlock as _createElementBlock218 } from \"vue\";\nvar _hoisted_1218 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2218 = /* @__PURE__ */ _createElementVNode217(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 512h64v320h-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3217 = /* @__PURE__ */ _createElementVNode217(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 896h640a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64zm64-128h512a128 128 0 0 1 128 128v64H128v-64a128 128 0 0 1 128-128zm256-256a192 192 0 1 0 0-384 192 192 0 0 0 0 384zm0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_430 = [\n  _hoisted_2218,\n  _hoisted_3217\n];\nfunction _sfc_render218(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock218(), _createElementBlock218(\"svg\", _hoisted_1218, _hoisted_430);\n}\nvar coordinate_default = /* @__PURE__ */ export_helper_default(coordinate_vue_vue_type_script_lang_default, [[\"render\", _sfc_render218], [\"__file\", \"coordinate.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\copy-document.vue?vue&type=script&lang.ts\nvar copy_document_vue_vue_type_script_lang_default = {\n  name: \"CopyDocument\"\n};\n\n// src/components/copy-document.vue\nimport { createElementVNode as _createElementVNode218, openBlock as _openBlock219, createElementBlock as _createElementBlock219 } from \"vue\";\nvar _hoisted_1219 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2219 = /* @__PURE__ */ _createElementVNode218(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64h64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3218 = /* @__PURE__ */ _createElementVNode218(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64H384zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_431 = [\n  _hoisted_2219,\n  _hoisted_3218\n];\nfunction _sfc_render219(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock219(), _createElementBlock219(\"svg\", _hoisted_1219, _hoisted_431);\n}\nvar copy_document_default = /* @__PURE__ */ export_helper_default(copy_document_vue_vue_type_script_lang_default, [[\"render\", _sfc_render219], [\"__file\", \"copy-document.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\cpu.vue?vue&type=script&lang.ts\nvar cpu_vue_vue_type_script_lang_default = {\n  name: \"Cpu\"\n};\n\n// src/components/cpu.vue\nimport { createElementVNode as _createElementVNode219, openBlock as _openBlock220, createElementBlock as _createElementBlock220 } from \"vue\";\nvar _hoisted_1220 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2220 = /* @__PURE__ */ _createElementVNode219(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M320 256a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64H320zm0-64h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128H320a128 128 0 0 1-128-128V320a128 128 0 0 1 128-128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3219 = /* @__PURE__ */ _createElementVNode219(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32zm160 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32zm-320 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32zm160 896a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32zm160 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32zm-320 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32zM64 512a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32zm0-160a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32zm0 320a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32zm896-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32zm0-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32zm0 320a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_432 = [\n  _hoisted_2220,\n  _hoisted_3219\n];\nfunction _sfc_render220(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock220(), _createElementBlock220(\"svg\", _hoisted_1220, _hoisted_432);\n}\nvar cpu_default = /* @__PURE__ */ export_helper_default(cpu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render220], [\"__file\", \"cpu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\credit-card.vue?vue&type=script&lang.ts\nvar credit_card_vue_vue_type_script_lang_default = {\n  name: \"CreditCard\"\n};\n\n// src/components/credit-card.vue\nimport { createElementVNode as _createElementVNode220, openBlock as _openBlock221, createElementBlock as _createElementBlock221 } from \"vue\";\nvar _hoisted_1221 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2221 = /* @__PURE__ */ _createElementVNode220(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M896 324.096c0-42.368-2.496-55.296-9.536-68.48a52.352 52.352 0 0 0-22.144-22.08c-13.12-7.04-26.048-9.536-68.416-9.536H228.096c-42.368 0-55.296 2.496-68.48 9.536a52.352 52.352 0 0 0-22.08 22.144c-7.04 13.12-9.536 26.048-9.536 68.416v375.808c0 42.368 2.496 55.296 9.536 68.48a52.352 52.352 0 0 0 22.144 22.08c13.12 7.04 26.048 9.536 68.416 9.536h567.808c42.368 0 55.296-2.496 68.48-9.536a52.352 52.352 0 0 0 22.08-22.144c7.04-13.12 9.536-26.048 9.536-68.416V324.096zm64 0v375.808c0 57.088-5.952 77.76-17.088 98.56-11.136 20.928-27.52 37.312-48.384 48.448-20.864 11.136-41.6 17.088-98.56 17.088H228.032c-57.088 0-77.76-5.952-98.56-17.088a116.288 116.288 0 0 1-48.448-48.384c-11.136-20.864-17.088-41.6-17.088-98.56V324.032c0-57.088 5.952-77.76 17.088-98.56 11.136-20.928 27.52-37.312 48.384-48.448 20.864-11.136 41.6-17.088 98.56-17.088H795.84c57.088 0 77.76 5.952 98.56 17.088 20.928 11.136 37.312 27.52 48.448 48.384 11.136 20.864 17.088 41.6 17.088 98.56z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3220 = /* @__PURE__ */ _createElementVNode220(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M64 320h896v64H64v-64zm0 128h896v64H64v-64zm128 192h256v64H192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_433 = [\n  _hoisted_2221,\n  _hoisted_3220\n];\nfunction _sfc_render221(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock221(), _createElementBlock221(\"svg\", _hoisted_1221, _hoisted_433);\n}\nvar credit_card_default = /* @__PURE__ */ export_helper_default(credit_card_vue_vue_type_script_lang_default, [[\"render\", _sfc_render221], [\"__file\", \"credit-card.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\crop.vue?vue&type=script&lang.ts\nvar crop_vue_vue_type_script_lang_default = {\n  name: \"Crop\"\n};\n\n// src/components/crop.vue\nimport { createElementVNode as _createElementVNode221, openBlock as _openBlock222, createElementBlock as _createElementBlock222 } from \"vue\";\nvar _hoisted_1222 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2222 = /* @__PURE__ */ _createElementVNode221(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 768h672a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V96a32 32 0 0 1 64 0v672z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3221 = /* @__PURE__ */ _createElementVNode221(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M832 224v704a32 32 0 1 1-64 0V256H96a32 32 0 0 1 0-64h704a32 32 0 0 1 32 32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_434 = [\n  _hoisted_2222,\n  _hoisted_3221\n];\nfunction _sfc_render222(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock222(), _createElementBlock222(\"svg\", _hoisted_1222, _hoisted_434);\n}\nvar crop_default = /* @__PURE__ */ export_helper_default(crop_vue_vue_type_script_lang_default, [[\"render\", _sfc_render222], [\"__file\", \"crop.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\d-arrow-left.vue?vue&type=script&lang.ts\nvar d_arrow_left_vue_vue_type_script_lang_default = {\n  name: \"DArrowLeft\"\n};\n\n// src/components/d-arrow-left.vue\nimport { createElementVNode as _createElementVNode222, openBlock as _openBlock223, createElementBlock as _createElementBlock223 } from \"vue\";\nvar _hoisted_1223 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2223 = /* @__PURE__ */ _createElementVNode222(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3222 = [\n  _hoisted_2223\n];\nfunction _sfc_render223(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock223(), _createElementBlock223(\"svg\", _hoisted_1223, _hoisted_3222);\n}\nvar d_arrow_left_default = /* @__PURE__ */ export_helper_default(d_arrow_left_vue_vue_type_script_lang_default, [[\"render\", _sfc_render223], [\"__file\", \"d-arrow-left.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\d-arrow-right.vue?vue&type=script&lang.ts\nvar d_arrow_right_vue_vue_type_script_lang_default = {\n  name: \"DArrowRight\"\n};\n\n// src/components/d-arrow-right.vue\nimport { createElementVNode as _createElementVNode223, openBlock as _openBlock224, createElementBlock as _createElementBlock224 } from \"vue\";\nvar _hoisted_1224 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2224 = /* @__PURE__ */ _createElementVNode223(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688zm-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3223 = [\n  _hoisted_2224\n];\nfunction _sfc_render224(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock224(), _createElementBlock224(\"svg\", _hoisted_1224, _hoisted_3223);\n}\nvar d_arrow_right_default = /* @__PURE__ */ export_helper_default(d_arrow_right_vue_vue_type_script_lang_default, [[\"render\", _sfc_render224], [\"__file\", \"d-arrow-right.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\d-caret.vue?vue&type=script&lang.ts\nvar d_caret_vue_vue_type_script_lang_default = {\n  name: \"DCaret\"\n};\n\n// src/components/d-caret.vue\nimport { createElementVNode as _createElementVNode224, openBlock as _openBlock225, createElementBlock as _createElementBlock225 } from \"vue\";\nvar _hoisted_1225 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2225 = /* @__PURE__ */ _createElementVNode224(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m512 128 288 320H224l288-320zM224 576h576L512 896 224 576z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3224 = [\n  _hoisted_2225\n];\nfunction _sfc_render225(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock225(), _createElementBlock225(\"svg\", _hoisted_1225, _hoisted_3224);\n}\nvar d_caret_default = /* @__PURE__ */ export_helper_default(d_caret_vue_vue_type_script_lang_default, [[\"render\", _sfc_render225], [\"__file\", \"d-caret.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\data-analysis.vue?vue&type=script&lang.ts\nvar data_analysis_vue_vue_type_script_lang_default = {\n  name: \"DataAnalysis\"\n};\n\n// src/components/data-analysis.vue\nimport { createElementVNode as _createElementVNode225, openBlock as _openBlock226, createElementBlock as _createElementBlock226 } from \"vue\";\nvar _hoisted_1226 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2226 = /* @__PURE__ */ _createElementVNode225(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m665.216 768 110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32l110.848-192H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32H665.216zM832 192H192v512h640V192zM352 448a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0v-64a32 32 0 0 1 32-32zm160-64a32 32 0 0 1 32 32v128a32 32 0 0 1-64 0V416a32 32 0 0 1 32-32zm160-64a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V352a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3225 = [\n  _hoisted_2226\n];\nfunction _sfc_render226(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock226(), _createElementBlock226(\"svg\", _hoisted_1226, _hoisted_3225);\n}\nvar data_analysis_default = /* @__PURE__ */ export_helper_default(data_analysis_vue_vue_type_script_lang_default, [[\"render\", _sfc_render226], [\"__file\", \"data-analysis.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\data-board.vue?vue&type=script&lang.ts\nvar data_board_vue_vue_type_script_lang_default = {\n  name: \"DataBoard\"\n};\n\n// src/components/data-board.vue\nimport { createElementVNode as _createElementVNode226, openBlock as _openBlock227, createElementBlock as _createElementBlock227 } from \"vue\";\nvar _hoisted_1227 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2227 = /* @__PURE__ */ _createElementVNode226(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M32 128h960v64H32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3226 = /* @__PURE__ */ _createElementVNode226(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 192v512h640V192H192zm-64-64h768v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_435 = /* @__PURE__ */ _createElementVNode226(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M322.176 960H248.32l144.64-250.56 55.424 32L322.176 960zm453.888 0h-73.856L576 741.44l55.424-32L776.064 960z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_59 = [\n  _hoisted_2227,\n  _hoisted_3226,\n  _hoisted_435\n];\nfunction _sfc_render227(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock227(), _createElementBlock227(\"svg\", _hoisted_1227, _hoisted_59);\n}\nvar data_board_default = /* @__PURE__ */ export_helper_default(data_board_vue_vue_type_script_lang_default, [[\"render\", _sfc_render227], [\"__file\", \"data-board.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\data-line.vue?vue&type=script&lang.ts\nvar data_line_vue_vue_type_script_lang_default = {\n  name: \"DataLine\"\n};\n\n// src/components/data-line.vue\nimport { createElementVNode as _createElementVNode227, openBlock as _openBlock228, createElementBlock as _createElementBlock228 } from \"vue\";\nvar _hoisted_1228 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2228 = /* @__PURE__ */ _createElementVNode227(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M359.168 768H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32H665.216l110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32l110.848-192zM832 192H192v512h640V192zM342.656 534.656a32 32 0 1 1-45.312-45.312L444.992 341.76l125.44 94.08L679.04 300.032a32 32 0 1 1 49.92 39.936L581.632 524.224 451.008 426.24 342.656 534.592z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3227 = [\n  _hoisted_2228\n];\nfunction _sfc_render228(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock228(), _createElementBlock228(\"svg\", _hoisted_1228, _hoisted_3227);\n}\nvar data_line_default = /* @__PURE__ */ export_helper_default(data_line_vue_vue_type_script_lang_default, [[\"render\", _sfc_render228], [\"__file\", \"data-line.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\delete-filled.vue?vue&type=script&lang.ts\nvar delete_filled_vue_vue_type_script_lang_default = {\n  name: \"DeleteFilled\"\n};\n\n// src/components/delete-filled.vue\nimport { createElementVNode as _createElementVNode228, openBlock as _openBlock229, createElementBlock as _createElementBlock229 } from \"vue\";\nvar _hoisted_1229 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2229 = /* @__PURE__ */ _createElementVNode228(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M352 192V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64H96a32 32 0 0 1 0-64h256zm64 0h192v-64H416v64zM192 960a32 32 0 0 1-32-32V256h704v672a32 32 0 0 1-32 32H192zm224-192a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32zm192 0a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3228 = [\n  _hoisted_2229\n];\nfunction _sfc_render229(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock229(), _createElementBlock229(\"svg\", _hoisted_1229, _hoisted_3228);\n}\nvar delete_filled_default = /* @__PURE__ */ export_helper_default(delete_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render229], [\"__file\", \"delete-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\delete-location.vue?vue&type=script&lang.ts\nvar delete_location_vue_vue_type_script_lang_default = {\n  name: \"DeleteLocation\"\n};\n\n// src/components/delete-location.vue\nimport { createElementVNode as _createElementVNode229, openBlock as _openBlock230, createElementBlock as _createElementBlock230 } from \"vue\";\nvar _hoisted_1230 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2230 = /* @__PURE__ */ _createElementVNode229(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3229 = /* @__PURE__ */ _createElementVNode229(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_436 = /* @__PURE__ */ _createElementVNode229(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 384h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_510 = [\n  _hoisted_2230,\n  _hoisted_3229,\n  _hoisted_436\n];\nfunction _sfc_render230(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock230(), _createElementBlock230(\"svg\", _hoisted_1230, _hoisted_510);\n}\nvar delete_location_default = /* @__PURE__ */ export_helper_default(delete_location_vue_vue_type_script_lang_default, [[\"render\", _sfc_render230], [\"__file\", \"delete-location.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\delete.vue?vue&type=script&lang.ts\nvar delete_vue_vue_type_script_lang_default = {\n  name: \"Delete\"\n};\n\n// src/components/delete.vue\nimport { createElementVNode as _createElementVNode230, openBlock as _openBlock231, createElementBlock as _createElementBlock231 } from \"vue\";\nvar _hoisted_1231 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2231 = /* @__PURE__ */ _createElementVNode230(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3230 = [\n  _hoisted_2231\n];\nfunction _sfc_render231(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock231(), _createElementBlock231(\"svg\", _hoisted_1231, _hoisted_3230);\n}\nvar delete_default = /* @__PURE__ */ export_helper_default(delete_vue_vue_type_script_lang_default, [[\"render\", _sfc_render231], [\"__file\", \"delete.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\dessert.vue?vue&type=script&lang.ts\nvar dessert_vue_vue_type_script_lang_default = {\n  name: \"Dessert\"\n};\n\n// src/components/dessert.vue\nimport { createElementVNode as _createElementVNode231, openBlock as _openBlock232, createElementBlock as _createElementBlock232 } from \"vue\";\nvar _hoisted_1232 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2232 = /* @__PURE__ */ _createElementVNode231(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 416v-48a144 144 0 0 1 168.64-141.888 224.128 224.128 0 0 1 430.72 0A144 144 0 0 1 896 368v48a384 384 0 0 1-352 382.72V896h-64v-97.28A384 384 0 0 1 128 416zm287.104-32.064h193.792a143.808 143.808 0 0 1 58.88-132.736 160.064 160.064 0 0 0-311.552 0 143.808 143.808 0 0 1 58.88 132.8zm-72.896 0a72 72 0 1 0-140.48 0h140.48zm339.584 0h140.416a72 72 0 1 0-140.48 0zM512 736a320 320 0 0 0 318.4-288.064H193.6A320 320 0 0 0 512 736zM384 896.064h256a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3231 = [\n  _hoisted_2232\n];\nfunction _sfc_render232(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock232(), _createElementBlock232(\"svg\", _hoisted_1232, _hoisted_3231);\n}\nvar dessert_default = /* @__PURE__ */ export_helper_default(dessert_vue_vue_type_script_lang_default, [[\"render\", _sfc_render232], [\"__file\", \"dessert.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\discount.vue?vue&type=script&lang.ts\nvar discount_vue_vue_type_script_lang_default = {\n  name: \"Discount\"\n};\n\n// src/components/discount.vue\nimport { createElementVNode as _createElementVNode232, openBlock as _openBlock233, createElementBlock as _createElementBlock233 } from \"vue\";\nvar _hoisted_1233 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2233 = /* @__PURE__ */ _createElementVNode232(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M224 704h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0L224 318.336V704zm0 64v128h576V768H224zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3232 = /* @__PURE__ */ _createElementVNode232(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_437 = [\n  _hoisted_2233,\n  _hoisted_3232\n];\nfunction _sfc_render233(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock233(), _createElementBlock233(\"svg\", _hoisted_1233, _hoisted_437);\n}\nvar discount_default = /* @__PURE__ */ export_helper_default(discount_vue_vue_type_script_lang_default, [[\"render\", _sfc_render233], [\"__file\", \"discount.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\dish-dot.vue?vue&type=script&lang.ts\nvar dish_dot_vue_vue_type_script_lang_default = {\n  name: \"DishDot\"\n};\n\n// src/components/dish-dot.vue\nimport { createElementVNode as _createElementVNode233, openBlock as _openBlock234, createElementBlock as _createElementBlock234 } from \"vue\";\nvar _hoisted_1234 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2234 = /* @__PURE__ */ _createElementVNode233(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m384.064 274.56.064-50.688A128 128 0 0 1 512.128 96c70.528 0 127.68 57.152 127.68 127.68v50.752A448.192 448.192 0 0 1 955.392 768H68.544A448.192 448.192 0 0 1 384 274.56zM96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64zm32-128h768a384 384 0 1 0-768 0zm447.808-448v-32.32a63.68 63.68 0 0 0-63.68-63.68 64 64 0 0 0-64 63.936V256h127.68z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3233 = [\n  _hoisted_2234\n];\nfunction _sfc_render234(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock234(), _createElementBlock234(\"svg\", _hoisted_1234, _hoisted_3233);\n}\nvar dish_dot_default = /* @__PURE__ */ export_helper_default(dish_dot_vue_vue_type_script_lang_default, [[\"render\", _sfc_render234], [\"__file\", \"dish-dot.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\dish.vue?vue&type=script&lang.ts\nvar dish_vue_vue_type_script_lang_default = {\n  name: \"Dish\"\n};\n\n// src/components/dish.vue\nimport { createElementVNode as _createElementVNode234, openBlock as _openBlock235, createElementBlock as _createElementBlock235 } from \"vue\";\nvar _hoisted_1235 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2235 = /* @__PURE__ */ _createElementVNode234(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 257.152V192h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64h-96v65.152A448 448 0 0 1 955.52 768H68.48A448 448 0 0 1 480 257.152zM128 704h768a384 384 0 1 0-768 0zM96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3234 = [\n  _hoisted_2235\n];\nfunction _sfc_render235(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock235(), _createElementBlock235(\"svg\", _hoisted_1235, _hoisted_3234);\n}\nvar dish_default = /* @__PURE__ */ export_helper_default(dish_vue_vue_type_script_lang_default, [[\"render\", _sfc_render235], [\"__file\", \"dish.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\document-add.vue?vue&type=script&lang.ts\nvar document_add_vue_vue_type_script_lang_default = {\n  name: \"DocumentAdd\"\n};\n\n// src/components/document-add.vue\nimport { createElementVNode as _createElementVNode235, openBlock as _openBlock236, createElementBlock as _createElementBlock236 } from \"vue\";\nvar _hoisted_1236 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2236 = /* @__PURE__ */ _createElementVNode235(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm320 512V448h64v128h128v64H544v128h-64V640H352v-64h128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3235 = [\n  _hoisted_2236\n];\nfunction _sfc_render236(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock236(), _createElementBlock236(\"svg\", _hoisted_1236, _hoisted_3235);\n}\nvar document_add_default = /* @__PURE__ */ export_helper_default(document_add_vue_vue_type_script_lang_default, [[\"render\", _sfc_render236], [\"__file\", \"document-add.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\document-checked.vue?vue&type=script&lang.ts\nvar document_checked_vue_vue_type_script_lang_default = {\n  name: \"DocumentChecked\"\n};\n\n// src/components/document-checked.vue\nimport { createElementVNode as _createElementVNode236, openBlock as _openBlock237, createElementBlock as _createElementBlock237 } from \"vue\";\nvar _hoisted_1237 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2237 = /* @__PURE__ */ _createElementVNode236(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M805.504 320 640 154.496V320h165.504zM832 384H576V128H192v768h640V384zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm318.4 582.144 180.992-180.992L704.64 510.4 478.4 736.64 320 578.304l45.248-45.312L478.4 646.144z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3236 = [\n  _hoisted_2237\n];\nfunction _sfc_render237(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock237(), _createElementBlock237(\"svg\", _hoisted_1237, _hoisted_3236);\n}\nvar document_checked_default = /* @__PURE__ */ export_helper_default(document_checked_vue_vue_type_script_lang_default, [[\"render\", _sfc_render237], [\"__file\", \"document-checked.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\document-copy.vue?vue&type=script&lang.ts\nvar document_copy_vue_vue_type_script_lang_default = {\n  name: \"DocumentCopy\"\n};\n\n// src/components/document-copy.vue\nimport { createElementVNode as _createElementVNode237, openBlock as _openBlock238, createElementBlock as _createElementBlock238 } from \"vue\";\nvar _hoisted_1238 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2238 = /* @__PURE__ */ _createElementVNode237(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 320v576h576V320H128zm-32-64h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32zM960 96v704a32 32 0 0 1-32 32h-96v-64h64V128H384v64h-64V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32zM256 672h320v64H256v-64zm0-192h320v64H256v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3237 = [\n  _hoisted_2238\n];\nfunction _sfc_render238(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock238(), _createElementBlock238(\"svg\", _hoisted_1238, _hoisted_3237);\n}\nvar document_copy_default = /* @__PURE__ */ export_helper_default(document_copy_vue_vue_type_script_lang_default, [[\"render\", _sfc_render238], [\"__file\", \"document-copy.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\document-delete.vue?vue&type=script&lang.ts\nvar document_delete_vue_vue_type_script_lang_default = {\n  name: \"DocumentDelete\"\n};\n\n// src/components/document-delete.vue\nimport { createElementVNode as _createElementVNode238, openBlock as _openBlock239, createElementBlock as _createElementBlock239 } from \"vue\";\nvar _hoisted_1239 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2239 = /* @__PURE__ */ _createElementVNode238(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M805.504 320 640 154.496V320h165.504zM832 384H576V128H192v768h640V384zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm308.992 546.304-90.496-90.624 45.248-45.248 90.56 90.496 90.496-90.432 45.248 45.248-90.496 90.56 90.496 90.496-45.248 45.248-90.496-90.496-90.56 90.496-45.248-45.248 90.496-90.496z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3238 = [\n  _hoisted_2239\n];\nfunction _sfc_render239(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock239(), _createElementBlock239(\"svg\", _hoisted_1239, _hoisted_3238);\n}\nvar document_delete_default = /* @__PURE__ */ export_helper_default(document_delete_vue_vue_type_script_lang_default, [[\"render\", _sfc_render239], [\"__file\", \"document-delete.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\document-remove.vue?vue&type=script&lang.ts\nvar document_remove_vue_vue_type_script_lang_default = {\n  name: \"DocumentRemove\"\n};\n\n// src/components/document-remove.vue\nimport { createElementVNode as _createElementVNode239, openBlock as _openBlock240, createElementBlock as _createElementBlock240 } from \"vue\";\nvar _hoisted_1240 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2240 = /* @__PURE__ */ _createElementVNode239(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M805.504 320 640 154.496V320h165.504zM832 384H576V128H192v768h640V384zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm192 512h320v64H352v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3239 = [\n  _hoisted_2240\n];\nfunction _sfc_render240(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock240(), _createElementBlock240(\"svg\", _hoisted_1240, _hoisted_3239);\n}\nvar document_remove_default = /* @__PURE__ */ export_helper_default(document_remove_vue_vue_type_script_lang_default, [[\"render\", _sfc_render240], [\"__file\", \"document-remove.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\document.vue?vue&type=script&lang.ts\nvar document_vue_vue_type_script_lang_default = {\n  name: \"Document\"\n};\n\n// src/components/document.vue\nimport { createElementVNode as _createElementVNode240, openBlock as _openBlock241, createElementBlock as _createElementBlock241 } from \"vue\";\nvar _hoisted_1241 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2241 = /* @__PURE__ */ _createElementVNode240(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3240 = [\n  _hoisted_2241\n];\nfunction _sfc_render241(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock241(), _createElementBlock241(\"svg\", _hoisted_1241, _hoisted_3240);\n}\nvar document_default = /* @__PURE__ */ export_helper_default(document_vue_vue_type_script_lang_default, [[\"render\", _sfc_render241], [\"__file\", \"document.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\download.vue?vue&type=script&lang.ts\nvar download_vue_vue_type_script_lang_default = {\n  name: \"Download\"\n};\n\n// src/components/download.vue\nimport { createElementVNode as _createElementVNode241, openBlock as _openBlock242, createElementBlock as _createElementBlock242 } from \"vue\";\nvar _hoisted_1242 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2242 = /* @__PURE__ */ _createElementVNode241(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64v450.304z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3241 = [\n  _hoisted_2242\n];\nfunction _sfc_render242(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock242(), _createElementBlock242(\"svg\", _hoisted_1242, _hoisted_3241);\n}\nvar download_default = /* @__PURE__ */ export_helper_default(download_vue_vue_type_script_lang_default, [[\"render\", _sfc_render242], [\"__file\", \"download.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\drizzling.vue?vue&type=script&lang.ts\nvar drizzling_vue_vue_type_script_lang_default = {\n  name: \"Drizzling\"\n};\n\n// src/components/drizzling.vue\nimport { createElementVNode as _createElementVNode242, openBlock as _openBlock243, createElementBlock as _createElementBlock243 } from \"vue\";\nvar _hoisted_1243 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2243 = /* @__PURE__ */ _createElementVNode242(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672zM959.552 480a256 256 0 0 1-256 256h-400A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480zM288 800h64v64h-64v-64zm192 0h64v64h-64v-64zm-96 96h64v64h-64v-64zm192 0h64v64h-64v-64zm96-96h64v64h-64v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3242 = [\n  _hoisted_2243\n];\nfunction _sfc_render243(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock243(), _createElementBlock243(\"svg\", _hoisted_1243, _hoisted_3242);\n}\nvar drizzling_default = /* @__PURE__ */ export_helper_default(drizzling_vue_vue_type_script_lang_default, [[\"render\", _sfc_render243], [\"__file\", \"drizzling.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\edit-pen.vue?vue&type=script&lang.ts\nvar edit_pen_vue_vue_type_script_lang_default = {\n  name: \"EditPen\"\n};\n\n// src/components/edit-pen.vue\nimport { createElementVNode as _createElementVNode243, openBlock as _openBlock244, createElementBlock as _createElementBlock244 } from \"vue\";\nvar _hoisted_1244 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2244 = /* @__PURE__ */ _createElementVNode243(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m199.04 672.64 193.984 112 224-387.968-193.92-112-224 388.032zm-23.872 60.16 32.896 148.288 144.896-45.696L175.168 732.8zM455.04 229.248l193.92 112 56.704-98.112-193.984-112-56.64 98.112zM104.32 708.8l384-665.024 304.768 175.936L409.152 884.8h.064l-248.448 78.336L104.32 708.8zm384 254.272v-64h448v64h-448z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3243 = [\n  _hoisted_2244\n];\nfunction _sfc_render244(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock244(), _createElementBlock244(\"svg\", _hoisted_1244, _hoisted_3243);\n}\nvar edit_pen_default = /* @__PURE__ */ export_helper_default(edit_pen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render244], [\"__file\", \"edit-pen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\edit.vue?vue&type=script&lang.ts\nvar edit_vue_vue_type_script_lang_default = {\n  name: \"Edit\"\n};\n\n// src/components/edit.vue\nimport { createElementVNode as _createElementVNode244, openBlock as _openBlock245, createElementBlock as _createElementBlock245 } from \"vue\";\nvar _hoisted_1245 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2245 = /* @__PURE__ */ _createElementVNode244(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640V512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3244 = /* @__PURE__ */ _createElementVNode244(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_438 = [\n  _hoisted_2245,\n  _hoisted_3244\n];\nfunction _sfc_render245(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock245(), _createElementBlock245(\"svg\", _hoisted_1245, _hoisted_438);\n}\nvar edit_default = /* @__PURE__ */ export_helper_default(edit_vue_vue_type_script_lang_default, [[\"render\", _sfc_render245], [\"__file\", \"edit.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\eleme-filled.vue?vue&type=script&lang.ts\nvar eleme_filled_vue_vue_type_script_lang_default = {\n  name: \"ElemeFilled\"\n};\n\n// src/components/eleme-filled.vue\nimport { createElementVNode as _createElementVNode245, openBlock as _openBlock246, createElementBlock as _createElementBlock246 } from \"vue\";\nvar _hoisted_1246 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2246 = /* @__PURE__ */ _createElementVNode245(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M176 64h672c61.824 0 112 50.176 112 112v672a112 112 0 0 1-112 112H176A112 112 0 0 1 64 848V176c0-61.824 50.176-112 112-112zm150.528 173.568c-152.896 99.968-196.544 304.064-97.408 456.96a330.688 330.688 0 0 0 456.96 96.64c9.216-5.888 17.6-11.776 25.152-18.56a18.24 18.24 0 0 0 4.224-24.32L700.352 724.8a47.552 47.552 0 0 0-65.536-14.272A234.56 234.56 0 0 1 310.592 641.6C240 533.248 271.104 387.968 379.456 316.48a234.304 234.304 0 0 1 276.352 15.168c1.664.832 2.56 2.56 3.392 4.224 5.888 8.384 3.328 19.328-5.12 25.216L456.832 489.6a47.552 47.552 0 0 0-14.336 65.472l16 24.384c5.888 8.384 16.768 10.88 25.216 5.056l308.224-199.936a19.584 19.584 0 0 0 6.72-23.488v-.896c-4.992-9.216-10.048-17.6-15.104-26.88-99.968-151.168-304.064-194.88-456.96-95.744zM786.88 504.704l-62.208 40.32c-8.32 5.888-10.88 16.768-4.992 25.216L760 632.32c5.888 8.448 16.768 11.008 25.152 5.12l31.104-20.16a55.36 55.36 0 0 0 16-76.48l-20.224-31.04a19.52 19.52 0 0 0-25.152-5.12z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3245 = [\n  _hoisted_2246\n];\nfunction _sfc_render246(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock246(), _createElementBlock246(\"svg\", _hoisted_1246, _hoisted_3245);\n}\nvar eleme_filled_default = /* @__PURE__ */ export_helper_default(eleme_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render246], [\"__file\", \"eleme-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\eleme.vue?vue&type=script&lang.ts\nvar eleme_vue_vue_type_script_lang_default = {\n  name: \"Eleme\"\n};\n\n// src/components/eleme.vue\nimport { createElementVNode as _createElementVNode246, openBlock as _openBlock247, createElementBlock as _createElementBlock247 } from \"vue\";\nvar _hoisted_1247 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2247 = /* @__PURE__ */ _createElementVNode246(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M300.032 188.8c174.72-113.28 408-63.36 522.24 109.44 5.76 10.56 11.52 20.16 17.28 30.72v.96a22.4 22.4 0 0 1-7.68 26.88l-352.32 228.48c-9.6 6.72-22.08 3.84-28.8-5.76l-18.24-27.84a54.336 54.336 0 0 1 16.32-74.88l225.6-146.88c9.6-6.72 12.48-19.2 5.76-28.8-.96-1.92-1.92-3.84-3.84-4.8a267.84 267.84 0 0 0-315.84-17.28c-123.84 81.6-159.36 247.68-78.72 371.52a268.096 268.096 0 0 0 370.56 78.72 54.336 54.336 0 0 1 74.88 16.32l17.28 26.88c5.76 9.6 3.84 21.12-4.8 27.84-8.64 7.68-18.24 14.4-28.8 21.12a377.92 377.92 0 0 1-522.24-110.4c-113.28-174.72-63.36-408 111.36-522.24zm526.08 305.28a22.336 22.336 0 0 1 28.8 5.76l23.04 35.52a63.232 63.232 0 0 1-18.24 87.36l-35.52 23.04c-9.6 6.72-22.08 3.84-28.8-5.76l-46.08-71.04c-6.72-9.6-3.84-22.08 5.76-28.8l71.04-46.08z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3246 = [\n  _hoisted_2247\n];\nfunction _sfc_render247(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock247(), _createElementBlock247(\"svg\", _hoisted_1247, _hoisted_3246);\n}\nvar eleme_default = /* @__PURE__ */ export_helper_default(eleme_vue_vue_type_script_lang_default, [[\"render\", _sfc_render247], [\"__file\", \"eleme.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\element-plus.vue?vue&type=script&lang.ts\nvar element_plus_vue_vue_type_script_lang_default = {\n  name: \"ElementPlus\"\n};\n\n// src/components/element-plus.vue\nimport { createElementVNode as _createElementVNode247, openBlock as _openBlock248, createElementBlock as _createElementBlock248 } from \"vue\";\nvar _hoisted_1248 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2248 = /* @__PURE__ */ _createElementVNode247(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M839.7 734.7c0 33.3-17.9 41-17.9 41S519.7 949.8 499.2 960c-10.2 5.1-20.5 5.1-30.7 0 0 0-314.9-184.3-325.1-192-5.1-5.1-10.2-12.8-12.8-20.5V368.6c0-17.9 20.5-28.2 20.5-28.2L466 158.6c12.8-5.1 25.6-5.1 38.4 0 0 0 279 161.3 309.8 179.2 17.9 7.7 28.2 25.6 25.6 46.1-.1-5-.1 317.5-.1 350.8zM714.2 371.2c-64-35.8-217.6-125.4-217.6-125.4-7.7-5.1-20.5-5.1-30.7 0L217.6 389.1s-17.9 10.2-17.9 23v297c0 5.1 5.1 12.8 7.7 17.9 7.7 5.1 256 148.5 256 148.5 7.7 5.1 17.9 5.1 25.6 0 15.4-7.7 250.9-145.9 250.9-145.9s12.8-5.1 12.8-30.7v-74.2l-276.5 169v-64c0-17.9 7.7-30.7 20.5-46.1L745 535c5.1-7.7 10.2-20.5 10.2-30.7v-66.6l-279 169v-69.1c0-15.4 5.1-30.7 17.9-38.4l220.1-128zM919 135.7c0-5.1-5.1-7.7-7.7-7.7h-58.9V66.6c0-5.1-5.1-5.1-10.2-5.1l-30.7 5.1c-5.1 0-5.1 2.6-5.1 5.1V128h-56.3c-5.1 0-5.1 5.1-7.7 5.1v38.4h69.1v64c0 5.1 5.1 5.1 10.2 5.1l30.7-5.1c5.1 0 5.1-2.6 5.1-5.1v-56.3h64l-2.5-38.4z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3247 = [\n  _hoisted_2248\n];\nfunction _sfc_render248(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock248(), _createElementBlock248(\"svg\", _hoisted_1248, _hoisted_3247);\n}\nvar element_plus_default = /* @__PURE__ */ export_helper_default(element_plus_vue_vue_type_script_lang_default, [[\"render\", _sfc_render248], [\"__file\", \"element-plus.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\expand.vue?vue&type=script&lang.ts\nvar expand_vue_vue_type_script_lang_default = {\n  name: \"Expand\"\n};\n\n// src/components/expand.vue\nimport { createElementVNode as _createElementVNode248, openBlock as _openBlock249, createElementBlock as _createElementBlock249 } from \"vue\";\nvar _hoisted_1249 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2249 = /* @__PURE__ */ _createElementVNode248(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3248 = [\n  _hoisted_2249\n];\nfunction _sfc_render249(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock249(), _createElementBlock249(\"svg\", _hoisted_1249, _hoisted_3248);\n}\nvar expand_default = /* @__PURE__ */ export_helper_default(expand_vue_vue_type_script_lang_default, [[\"render\", _sfc_render249], [\"__file\", \"expand.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\failed.vue?vue&type=script&lang.ts\nvar failed_vue_vue_type_script_lang_default = {\n  name: \"Failed\"\n};\n\n// src/components/failed.vue\nimport { createElementVNode as _createElementVNode249, openBlock as _openBlock250, createElementBlock as _createElementBlock250 } from \"vue\";\nvar _hoisted_1250 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2250 = /* @__PURE__ */ _createElementVNode249(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m557.248 608 135.744-135.744-45.248-45.248-135.68 135.744-135.808-135.68-45.248 45.184L466.752 608l-135.68 135.68 45.184 45.312L512 653.248l135.744 135.744 45.248-45.248L557.312 608zM704 192h160v736H160V192h160v64h384v-64zm-320 0V96h256v96H384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3249 = [\n  _hoisted_2250\n];\nfunction _sfc_render250(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock250(), _createElementBlock250(\"svg\", _hoisted_1250, _hoisted_3249);\n}\nvar failed_default = /* @__PURE__ */ export_helper_default(failed_vue_vue_type_script_lang_default, [[\"render\", _sfc_render250], [\"__file\", \"failed.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\female.vue?vue&type=script&lang.ts\nvar female_vue_vue_type_script_lang_default = {\n  name: \"Female\"\n};\n\n// src/components/female.vue\nimport { createElementVNode as _createElementVNode250, openBlock as _openBlock251, createElementBlock as _createElementBlock251 } from \"vue\";\nvar _hoisted_1251 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2251 = /* @__PURE__ */ _createElementVNode250(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 640a256 256 0 1 0 0-512 256 256 0 0 0 0 512zm0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3250 = /* @__PURE__ */ _createElementVNode250(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 640q32 0 32 32v256q0 32-32 32t-32-32V672q0-32 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_439 = /* @__PURE__ */ _createElementVNode250(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M352 800h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_511 = [\n  _hoisted_2251,\n  _hoisted_3250,\n  _hoisted_439\n];\nfunction _sfc_render251(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock251(), _createElementBlock251(\"svg\", _hoisted_1251, _hoisted_511);\n}\nvar female_default = /* @__PURE__ */ export_helper_default(female_vue_vue_type_script_lang_default, [[\"render\", _sfc_render251], [\"__file\", \"female.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-audio.vue?vue&type=script&lang.ts\nvar file_audio_vue_vue_type_script_lang_default = {\n  name: \"FileAudio\"\n};\n\n// src/components/file-audio.vue\nimport { createElementVNode as _createElementVNode251, openBlock as _openBlock252, createElementBlock as _createElementBlock252 } from \"vue\";\nvar _hoisted_1252 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2252 = /* @__PURE__ */ _createElementVNode251(\n  \"path\",\n  {\n    d: \"M788.14 928.23h-550c-77.32 0-140-62.68-140-140v-550c0-77.32 62.68-140 140-140h550c77.32 0 140 62.68 140 140v550c0 77.32-62.68 140-140 140z\",\n    fill: \"#FF7878\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3251 = /* @__PURE__ */ _createElementVNode251(\n  \"path\",\n  {\n    d: \"M682.2 326.8a27.8 27.8 0 0 0-10.04-21.39 27.807 27.807 0 0 0-22.87-5.93l-261.58 49.04c-13.15 2.46-22.67 13.94-22.67 27.32l0.18 250.12a64.668 64.668 0 0 0-22.39-3.98c-35.76 0-64.74 28.99-64.74 64.74 0 35.76 28.99 64.74 64.74 64.74s64.74-28.99 64.74-64.74V450.77l232.29-43.55v169.7a64.668 64.668 0 0 0-22.39-3.98c-35.76 0-64.74 28.99-64.74 64.74s28.99 64.74 64.74 64.74 64.74-28.99 64.74-64.74c-0.01-1.19-0.01-310.88-0.01-310.88z\",\n    fill: \"#EF5252\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_440 = /* @__PURE__ */ _createElementVNode251(\n  \"path\",\n  {\n    d: \"M682.2 314.8a27.8 27.8 0 0 0-10.04-21.39 27.807 27.807 0 0 0-22.87-5.93l-261.58 49.04c-13.15 2.46-22.67 13.94-22.67 27.32l0.18 250.12a64.668 64.668 0 0 0-22.39-3.98c-35.76 0-64.74 28.99-64.74 64.74 0 35.76 28.99 64.74 64.74 64.74s64.74-28.99 64.74-64.74V438.77l232.29-43.55v169.7a64.668 64.668 0 0 0-22.39-3.98c-35.76 0-64.74 28.99-64.74 64.74s28.99 64.74 64.74 64.74 64.74-28.99 64.74-64.74c-0.01-1.19-0.01-310.88-0.01-310.88z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_512 = [\n  _hoisted_2252,\n  _hoisted_3251,\n  _hoisted_440\n];\nfunction _sfc_render252(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock252(), _createElementBlock252(\"svg\", _hoisted_1252, _hoisted_512);\n}\nvar file_audio_default = /* @__PURE__ */ export_helper_default(file_audio_vue_vue_type_script_lang_default, [[\"render\", _sfc_render252], [\"__file\", \"file-audio.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-config.vue?vue&type=script&lang.ts\nvar file_config_vue_vue_type_script_lang_default = {\n  name: \"FileConfig\"\n};\n\n// src/components/file-config.vue\nimport { createElementVNode as _createElementVNode252, openBlock as _openBlock253, createElementBlock as _createElementBlock253 } from \"vue\";\nvar _hoisted_1253 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2253 = /* @__PURE__ */ _createElementVNode252(\n  \"path\",\n  {\n    d: \"M659.8 64.2H270.4c-78.1 0-141.3 63.3-141.3 141.3v612.9c0 78.1 63.3 141.3 141.3 141.3h485.5c78.1 0 141.3-63.3 141.3-141.3V301.7c0-31.8-12.6-62.3-35.1-84.9L744.6 99.3c-22.5-22.5-53-35.1-84.8-35.1z\",\n    fill: \"#8B72F7\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3252 = /* @__PURE__ */ _createElementVNode252(\n  \"path\",\n  {\n    d: \"M861.7 216.8L744.2 99.3c-17-17-38.5-28.3-61.7-32.9v131.9c0 41.9 33.9 75.8 75.8 75.8h135.4c-5.2-21.6-16.1-41.5-32-57.3zM585.6 350.4H440.8c-17.2 0-33.1 9.2-41.7 24.1l-72.4 125.4c-8.6 14.9-8.6 33.3 0 48.2l72.4 125.4c8.6 14.9 24.5 24.1 41.7 24.1h144.8c17.2 0 33.1-9.2 41.7-24.1l72.4-125.4c8.6-14.9 8.6-33.3 0-48.2l-72.4-125.4c-8.6-14.9-24.5-24.1-41.7-24.1z m-71 247.7c-42 0.8-76.2-33.4-75.5-75.5 0.7-39.6 33.1-71.9 72.7-72.7 42-0.8 76.2 33.4 75.5 75.5-0.8 39.6-33.1 71.9-72.7 72.7z\",\n    fill: \"#7463EA\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_441 = /* @__PURE__ */ _createElementVNode252(\n  \"path\",\n  {\n    d: \"M585.6 338.4H440.8c-17.2 0-33.1 9.2-41.7 24.1l-72.4 125.4c-8.6 14.9-8.6 33.3 0 48.2l72.4 125.4c8.6 14.9 24.5 24.1 41.7 24.1h144.8c17.2 0 33.1-9.2 41.7-24.1l72.4-125.4c8.6-14.9 8.6-33.3 0-48.2l-72.4-125.4c-8.6-14.9-24.5-24.1-41.7-24.1z m-71 247.7c-42 0.8-76.2-33.4-75.5-75.5 0.7-39.6 33.1-71.9 72.7-72.7 42-0.8 76.2 33.4 75.5 75.5-0.8 39.6-33.1 71.9-72.7 72.7z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_513 = [\n  _hoisted_2253,\n  _hoisted_3252,\n  _hoisted_441\n];\nfunction _sfc_render253(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock253(), _createElementBlock253(\"svg\", _hoisted_1253, _hoisted_513);\n}\nvar file_config_default = /* @__PURE__ */ export_helper_default(file_config_vue_vue_type_script_lang_default, [[\"render\", _sfc_render253], [\"__file\", \"file-config.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-course.vue?vue&type=script&lang.ts\nvar file_course_vue_vue_type_script_lang_default = {\n  name: \"FileCourse\"\n};\n\n// src/components/file-course.vue\nimport { createElementVNode as _createElementVNode253, openBlock as _openBlock254, createElementBlock as _createElementBlock254 } from \"vue\";\nvar _hoisted_1254 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2254 = /* @__PURE__ */ _createElementVNode253(\n  \"path\",\n  {\n    d: \"M659.72 64.19H270.4c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V301.69c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a120.017 120.017 0 0 0-84.85-35.15z\",\n    fill: \"#53B7F4\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3253 = /* @__PURE__ */ _createElementVNode253(\n  \"path\",\n  {\n    d: \"M862.07 216.84l-117.5-117.5a120.001 120.001 0 0 0-61.75-32.9v131.88c0 41.87 33.94 75.81 75.81 75.81H894a119.975 119.975 0 0 0-31.93-57.29zM410.97 407.96c-9.37-9.37-24.57-9.37-33.94 0L274.97 510.01c-9.37 9.37-9.37 24.57 0 33.94L377.02 646a23.919 23.919 0 0 0 16.97 7.03c6.14 0 12.29-2.34 16.97-7.03 9.37-9.37 9.37-24.57 0-33.94l-85.08-85.08 85.08-85.08c9.38-9.37 9.38-24.57 0.01-33.94zM649.25 407.96c-9.37-9.37-24.57-9.37-33.94 0-9.37 9.37-9.37 24.57 0 33.94l85.08 85.08-85.08 85.08c-9.37 9.37-9.37 24.57 0 33.94 4.69 4.69 10.83 7.03 16.97 7.03s12.28-2.34 16.97-7.03L751.3 543.95c9.37-9.37 9.37-24.57 0-33.94L649.25 407.96zM566.34 360.5c-12.64-3.99-26.12 3.02-30.11 15.66l-91.94 291.23c-3.99 12.64 3.02 26.12 15.66 30.11 2.4 0.76 4.84 1.12 7.23 1.12 10.19 0 19.65-6.55 22.88-16.78L582 390.61c3.99-12.64-3.02-26.12-15.66-30.11z\",\n    fill: \"#29A3D3\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_442 = /* @__PURE__ */ _createElementVNode253(\n  \"path\",\n  {\n    d: \"M410.97 395.96c-9.37-9.37-24.57-9.37-33.94 0L274.97 498.01c-9.37 9.37-9.37 24.57 0 33.94L377.02 634a23.919 23.919 0 0 0 16.97 7.03c6.14 0 12.29-2.34 16.97-7.03 9.37-9.37 9.37-24.57 0-33.94l-85.08-85.08 85.08-85.08c9.38-9.37 9.38-24.57 0.01-33.94zM751.31 498.01L649.25 395.96c-9.37-9.37-24.57-9.37-33.94 0-9.37 9.37-9.37 24.57 0 33.94l85.08 85.08-85.08 85.08c-9.37 9.37-9.37 24.57 0 33.94 4.69 4.69 10.83 7.03 16.97 7.03s12.28-2.34 16.97-7.03L751.3 531.95c9.38-9.37 9.38-24.56 0.01-33.94zM566.34 348.5c-12.64-3.99-26.12 3.02-30.11 15.66l-91.94 291.23c-3.99 12.64 3.02 26.12 15.66 30.11 2.4 0.76 4.84 1.12 7.23 1.12 10.19 0 19.65-6.55 22.88-16.78L582 378.61c3.99-12.64-3.02-26.12-15.66-30.11z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_514 = [\n  _hoisted_2254,\n  _hoisted_3253,\n  _hoisted_442\n];\nfunction _sfc_render254(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock254(), _createElementBlock254(\"svg\", _hoisted_1254, _hoisted_514);\n}\nvar file_course_default = /* @__PURE__ */ export_helper_default(file_course_vue_vue_type_script_lang_default, [[\"render\", _sfc_render254], [\"__file\", \"file-course.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-excel.vue?vue&type=script&lang.ts\nvar file_excel_vue_vue_type_script_lang_default = {\n  name: \"FileExcel\"\n};\n\n// src/components/file-excel.vue\nimport { createElementVNode as _createElementVNode254, openBlock as _openBlock255, createElementBlock as _createElementBlock255 } from \"vue\";\nvar _hoisted_1255 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2255 = /* @__PURE__ */ _createElementVNode254(\n  \"path\",\n  {\n    d: \"M658.68 63.95H269.36c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V301.44c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a120.008 120.008 0 0 0-84.85-35.14z\",\n    fill: \"#53D39C\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3254 = /* @__PURE__ */ _createElementVNode254(\n  \"path\",\n  {\n    d: \"M655.49 388.82c-9.37-9.37-24.57-9.37-33.94 0L510.8 499.57 400.05 388.82c-9.37-9.37-24.57-9.37-33.94 0-9.37 9.37-9.37 24.57 0 33.94l110.75 110.75L366.1 644.26c-9.37 9.37-9.37 24.57 0 33.94 4.69 4.69 10.83 7.03 16.97 7.03s12.28-2.34 16.97-7.03L510.8 567.45 621.54 678.2c4.69 4.69 10.83 7.03 16.97 7.03s12.28-2.34 16.97-7.03c9.37-9.37 9.37-24.57 0-33.94L544.74 533.51l110.75-110.75c9.37-9.37 9.37-24.57 0-33.94zM861.03 216.59l-117.5-117.5a120.001 120.001 0 0 0-61.75-32.9v131.88c0 41.87 33.94 75.81 75.81 75.81h135.37a120.058 120.058 0 0 0-31.93-57.29z\",\n    fill: \"#25BF79\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_443 = /* @__PURE__ */ _createElementVNode254(\n  \"path\",\n  {\n    d: \"M544.74 521.51l110.75-110.75c9.37-9.37 9.37-24.57 0-33.94-9.37-9.37-24.57-9.37-33.94 0L510.8 487.57 400.05 376.82c-9.37-9.37-24.57-9.37-33.94 0-9.37 9.37-9.37 24.57 0 33.94l110.75 110.75L366.1 632.26c-9.37 9.37-9.37 24.57 0 33.94 4.69 4.69 10.83 7.03 16.97 7.03s12.28-2.34 16.97-7.03L510.8 555.45 621.54 666.2c4.69 4.69 10.83 7.03 16.97 7.03s12.28-2.34 16.97-7.03c9.37-9.37 9.37-24.57 0-33.94L544.74 521.51z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_515 = [\n  _hoisted_2255,\n  _hoisted_3254,\n  _hoisted_443\n];\nfunction _sfc_render255(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock255(), _createElementBlock255(\"svg\", _hoisted_1255, _hoisted_515);\n}\nvar file_excel_default = /* @__PURE__ */ export_helper_default(file_excel_vue_vue_type_script_lang_default, [[\"render\", _sfc_render255], [\"__file\", \"file-excel.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-exe.vue?vue&type=script&lang.ts\nvar file_exe_vue_vue_type_script_lang_default = {\n  name: \"FileExe\"\n};\n\n// src/components/file-exe.vue\nimport { createElementVNode as _createElementVNode255, openBlock as _openBlock256, createElementBlock as _createElementBlock256 } from \"vue\";\nvar _hoisted_1256 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2256 = /* @__PURE__ */ _createElementVNode255(\n  \"path\",\n  {\n    d: \"M659.72 64.19H270.4c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V301.69c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a120.017 120.017 0 0 0-84.85-35.15z\",\n    fill: \"#8B72F7\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3255 = /* @__PURE__ */ _createElementVNode255(\n  \"path\",\n  {\n    d: \"M862.07 216.84l-117.5-117.5a120.001 120.001 0 0 0-61.75-32.9v131.88c0 41.87 33.94 75.81 75.81 75.81H894a119.975 119.975 0 0 0-31.93-57.29zM627.66 386.46c13.25 0 24-10.75 24-24s-10.75-24-24-24H398.62c-13.25 0-24 10.75-24 24v323.08c0 13.25 10.75 24 24 24h229.05c13.25 0 24-10.75 24-24s-10.75-24-24-24H422.62V548h178.85c13.25 0 24-10.75 24-24s-10.75-24-24-24H422.62V386.46h205.04z\",\n    fill: \"#7463EA\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_444 = /* @__PURE__ */ _createElementVNode255(\n  \"path\",\n  {\n    d: \"M627.66 649.54H422.62V536h178.85c13.25 0 24-10.75 24-24s-10.75-24-24-24H422.62V374.46h205.05c13.25 0 24-10.75 24-24s-10.75-24-24-24H398.62c-13.25 0-24 10.75-24 24v323.08c0 13.25 10.75 24 24 24h229.05c13.25 0 24-10.75 24-24s-10.75-24-24.01-24z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_516 = [\n  _hoisted_2256,\n  _hoisted_3255,\n  _hoisted_444\n];\nfunction _sfc_render256(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock256(), _createElementBlock256(\"svg\", _hoisted_1256, _hoisted_516);\n}\nvar file_exe_default = /* @__PURE__ */ export_helper_default(file_exe_vue_vue_type_script_lang_default, [[\"render\", _sfc_render256], [\"__file\", \"file-exe.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-gif.vue?vue&type=script&lang.ts\nvar file_gif_vue_vue_type_script_lang_default = {\n  name: \"FileGif\"\n};\n\n// src/components/file-gif.vue\nimport { createElementVNode as _createElementVNode256, openBlock as _openBlock257, createElementBlock as _createElementBlock257 } from \"vue\";\nvar _hoisted_1257 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2257 = /* @__PURE__ */ _createElementVNode256(\n  \"path\",\n  {\n    d: \"M788.14 927h-550c-77.32 0-140-62.68-140-140V237c0-77.32 62.68-140 140-140h550c77.32 0 140 62.68 140 140v550c0 77.32-62.68 140-140 140z\",\n    fill: \"#FF7878\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3256 = /* @__PURE__ */ _createElementVNode256(\n  \"path\",\n  {\n    d: \"M671.15 510.18h-135.9c-13.25 0-24 10.75-24 24s10.75 24 24 24h111.9v91.1c-1.21 0.66-2.37 1.42-3.49 2.31-29.1 23.19-64.2 35.44-101.5 35.44-89.89 0-163.03-73.13-163.03-163.03 0-89.89 73.13-163.03 163.03-163.03 37.61 0 72.94 12.44 102.17 35.98 10.32 8.31 25.43 6.69 33.75-3.64 8.31-10.32 6.68-25.43-3.64-33.75-37.31-30.05-84.29-46.6-132.28-46.6-116.36 0-211.03 94.67-211.03 211.03s94.67 211.03 211.03 211.03c36.98 0 73.4-9.85 105.23-28.12 1.64 11.66 11.65 20.63 23.76 20.63 13.25 0 24-10.75 24-24V534.18c0-13.26-10.75-24-24-24z\",\n    fill: \"#EF5252\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_445 = /* @__PURE__ */ _createElementVNode256(\n  \"path\",\n  {\n    d: \"M671.15 498.18h-135.9c-13.25 0-24 10.75-24 24s10.75 24 24 24h111.9v91.1c-1.21 0.66-2.37 1.42-3.49 2.31-29.1 23.19-64.2 35.44-101.5 35.44-89.89 0-163.03-73.13-163.03-163.03 0-89.89 73.13-163.03 163.03-163.03 37.61 0 72.94 12.44 102.17 35.98 10.32 8.31 25.43 6.69 33.75-3.64 8.31-10.32 6.68-25.43-3.64-33.75-37.31-30.05-84.29-46.6-132.28-46.6-116.36 0-211.03 94.67-211.03 211.03s94.67 211.03 211.03 211.03c36.98 0 73.4-9.85 105.23-28.12 1.64 11.66 11.65 20.63 23.76 20.63 13.25 0 24-10.75 24-24V522.18c0-13.26-10.75-24-24-24z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_517 = [\n  _hoisted_2257,\n  _hoisted_3256,\n  _hoisted_445\n];\nfunction _sfc_render257(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock257(), _createElementBlock257(\"svg\", _hoisted_1257, _hoisted_517);\n}\nvar file_gif_default = /* @__PURE__ */ export_helper_default(file_gif_vue_vue_type_script_lang_default, [[\"render\", _sfc_render257], [\"__file\", \"file-gif.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-img.vue?vue&type=script&lang.ts\nvar file_img_vue_vue_type_script_lang_default = {\n  name: \"FileImg\"\n};\n\n// src/components/file-img.vue\nimport { openBlock as _openBlock258, createElementBlock as _createElementBlock258, createStaticVNode as _createStaticVNode2 } from \"vue\";\nvar _hoisted_1258 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2258 = /* @__PURE__ */ _createStaticVNode2('<path d=\"M788.14 928.23h-550c-77.32 0-140-62.68-140-140v-550c0-77.32 62.68-140 140-140h550c77.32 0 140 62.68 140 140v550c0 77.32-62.68 140-140 140z\" fill=\"#FFC757\"></path><path d=\"M770.19 644.92l-67.56-117.01c-15.4-26.68-53.91-26.68-69.31 0l-64.01 110.88L450.3 432.65c-15.4-26.67-53.89-26.67-69.29 0L258.45 644.94c-15.4 26.67 3.85 60.01 34.65 60.01h442.44c30.8-0.01 50.05-33.35 34.65-60.03z\" fill=\"#EF9F2B\"></path><path d=\"M595.103921 388.209544a55.27 55.27 0 1 0 100.661393-45.676862 55.27 55.27 0 1 0-100.661393 45.676862Z\" fill=\"#EF9F2B\"></path><path d=\"M770.19 632.92l-67.56-117.01c-15.4-26.68-53.91-26.68-69.31 0l-64.01 110.88L450.3 420.65c-15.4-26.67-53.89-26.67-69.29 0L258.45 632.94c-15.4 26.67 3.85 60.01 34.65 60.01h442.44c30.8-0.01 50.05-33.35 34.65-60.03z\" fill=\"#FFFFFF\"></path><path d=\"M595.104335 376.209454a55.27 55.27 0 1 0 100.661392-45.676862 55.27 55.27 0 1 0-100.661392 45.676862Z\" fill=\"#FFFFFF\"></path>', 5), _hoisted_72 = [\n  _hoisted_2258\n];\nfunction _sfc_render258(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock258(), _createElementBlock258(\"svg\", _hoisted_1258, _hoisted_72);\n}\nvar file_img_default = /* @__PURE__ */ export_helper_default(file_img_vue_vue_type_script_lang_default, [[\"render\", _sfc_render258], [\"__file\", \"file-img.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-link.vue?vue&type=script&lang.ts\nvar file_link_vue_vue_type_script_lang_default = {\n  name: \"FileLink\"\n};\n\n// src/components/file-link.vue\nimport { openBlock as _openBlock259, createElementBlock as _createElementBlock259, createStaticVNode as _createStaticVNode3 } from \"vue\";\nvar _hoisted_1259 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2259 = /* @__PURE__ */ _createStaticVNode3('<path d=\"M659.72 64.19H270.4c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V301.69c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a120.017 120.017 0 0 0-84.85-35.15z\" fill=\"#53B7F4\"></path><path d=\"M862.07 216.84l-117.5-117.5a120.001 120.001 0 0 0-61.75-32.9v131.88c0 41.87 33.94 75.81 75.81 75.81H894a119.975 119.975 0 0 0-31.93-57.29zM529.42 366.1l-51.53 51.53c-7.81 7.81-7.81 20.47 0 28.28 7.81 7.81 20.47 7.81 28.28 0l51.53-51.53c26.21-26.21 68.85-26.21 95.06 0s26.21 68.85 0 95.06l-51.53 51.53c-26.21 26.21-68.85 26.21-95.06 0a67.079 67.079 0 0 1-7.88-9.48c-6.24-9.11-18.69-11.44-27.8-5.19-9.12 6.25-11.44 18.69-5.19 27.8 3.7 5.4 7.94 10.5 12.59 15.15 41.8 41.8 109.82 41.8 151.63 0l51.53-51.53c41.8-41.8 41.8-109.82 0-151.63-41.81-41.8-109.83-41.8-151.63 0.01z\" fill=\"#29A3D3\"></path><path d=\"M520.11 622.09l-51.53 51.53c-26.21 26.21-68.85 26.21-95.06 0-26.21-26.21-26.21-68.85 0-95.06l51.53-51.53c26.21-26.21 68.85-26.21 95.06 0 2.76 2.76 5.28 5.77 7.5 8.94 6.33 9.05 18.8 11.25 27.85 4.92s11.25-18.8 4.92-27.85c-3.55-5.08-7.59-9.88-11.99-14.28-41.8-41.8-109.82-41.8-151.63 0l-51.53 51.53c-41.8 41.8-41.8 109.82 0 151.62 41.8 41.8 109.82 41.8 151.63 0l51.53-51.53c7.81-7.81 7.81-20.47 0-28.28-7.81-7.82-20.47-7.82-28.28-0.01z\" fill=\"#29A3D3\"></path><path d=\"M681.04 354.1c-41.8-41.8-109.82-41.8-151.63 0l-51.53 51.53c-7.81 7.81-7.81 20.47 0 28.28 7.81 7.81 20.47 7.81 28.28 0l51.53-51.53c26.21-26.21 68.85-26.21 95.06 0s26.21 68.85 0 95.06l-51.53 51.53c-26.21 26.21-68.85 26.21-95.06 0a67.079 67.079 0 0 1-7.88-9.48c-6.24-9.11-18.69-11.44-27.8-5.19-9.12 6.25-11.44 18.69-5.19 27.8 3.7 5.4 7.94 10.5 12.59 15.15 41.8 41.8 109.82 41.8 151.63 0l51.53-51.53c41.81-41.8 41.81-109.82 0-151.62z\" fill=\"#FFFFFF\"></path><path d=\"M520.11 610.09l-51.53 51.53c-26.21 26.21-68.85 26.21-95.06 0-26.21-26.21-26.21-68.85 0-95.06l51.53-51.53c26.21-26.21 68.85-26.21 95.06 0 2.76 2.76 5.28 5.77 7.5 8.94 6.33 9.05 18.8 11.25 27.85 4.92s11.25-18.8 4.92-27.85c-3.55-5.08-7.59-9.88-11.99-14.28-41.8-41.8-109.82-41.8-151.63 0l-51.53 51.53c-41.8 41.8-41.8 109.82 0 151.62 41.8 41.8 109.82 41.8 151.63 0l51.53-51.53c7.81-7.81 7.81-20.47 0-28.28-7.81-7.82-20.47-7.82-28.28-0.01z\" fill=\"#FFFFFF\"></path>', 5), _hoisted_73 = [\n  _hoisted_2259\n];\nfunction _sfc_render259(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock259(), _createElementBlock259(\"svg\", _hoisted_1259, _hoisted_73);\n}\nvar file_link_default = /* @__PURE__ */ export_helper_default(file_link_vue_vue_type_script_lang_default, [[\"render\", _sfc_render259], [\"__file\", \"file-link.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-model.vue?vue&type=script&lang.ts\nvar file_model_vue_vue_type_script_lang_default = {\n  name: \"FileModel\"\n};\n\n// src/components/file-model.vue\nimport { createElementVNode as _createElementVNode257, openBlock as _openBlock260, createElementBlock as _createElementBlock260 } from \"vue\";\nvar _hoisted_1260 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2260 = /* @__PURE__ */ _createElementVNode257(\n  \"path\",\n  {\n    d: \"M659.72 64.19H270.4c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V301.69c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a119.958 119.958 0 0 0-84.85-35.15z\",\n    fill: \"#8B72F7\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3257 = /* @__PURE__ */ _createElementVNode257(\n  \"path\",\n  {\n    d: \"M862.07 216.83l-117.5-117.5a120.029 120.029 0 0 0-61.74-32.89v131.88c0 41.87 33.94 75.81 75.81 75.81H894a120.006 120.006 0 0 0-31.93-57.3zM470.34 532.68l-90.17-48.97c-14.7-6.9-26.82-0.52-26.95 14.18l-0.9 106.41c-0.12 14.7 11.8 32.38 26.5 39.28l90.17 48.97c14.7 6.9 26.82 0.52 26.95-14.18l0.9-106.41c0.12-14.7-11.8-32.37-26.5-39.28zM653.45 453.92c16.61-11.17 17.55-28.04 2.08-37.48L539.56 360.1c-16.34-8.45-30.61-9.12-50.33 1.13l-116.51 55.9c-16.61 11.17-17.55 28.04-2.08 37.48l111.97 60.34c15.47 9.45 38.27 9.2 58.33-1.13l112.51-59.9zM646.12 481.71l-97.17 51.97c-14.7 6.9-26.62 24.58-26.5 39.28l0.9 108.41c0.12 14.7 12.25 21.08 26.95 14.18l97.17-51.97c14.7-6.9 26.62-24.58 26.5-39.28l-0.9-108.41c-0.12-14.7-12.25-21.08-26.95-14.18z\",\n    fill: \"#7463EA\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_446 = /* @__PURE__ */ _createElementVNode257(\n  \"path\",\n  {\n    d: \"M470.34 521.68l-90.17-48.97c-14.7-6.9-26.82-0.52-26.95 14.18l-0.9 106.41c-0.12 14.7 11.8 32.38 26.5 39.28l90.17 48.97c14.7 6.9 26.82 0.52 26.95-14.18l0.9-106.41c0.12-14.7-11.8-32.37-26.5-39.28zM653.45 442.92c16.61-11.17 17.55-28.04 2.08-37.48L539.56 349.1c-16.34-8.45-30.61-9.12-50.33 1.13l-116.51 55.9c-16.61 11.17-17.55 28.04-2.08 37.48l111.97 60.34c15.47 9.45 38.27 9.2 58.33-1.13l112.51-59.9zM673.07 484.89c-0.12-14.7-12.25-21.08-26.95-14.18l-97.17 51.97c-14.7 6.9-26.62 24.58-26.5 39.28l0.9 108.41c0.12 14.7 12.25 21.08 26.95 14.18l97.17-51.97c14.7-6.9 26.62-24.58 26.5-39.28l-0.9-108.41z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_518 = [\n  _hoisted_2260,\n  _hoisted_3257,\n  _hoisted_446\n];\nfunction _sfc_render260(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock260(), _createElementBlock260(\"svg\", _hoisted_1260, _hoisted_518);\n}\nvar file_model_default = /* @__PURE__ */ export_helper_default(file_model_vue_vue_type_script_lang_default, [[\"render\", _sfc_render260], [\"__file\", \"file-model.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-pdf.vue?vue&type=script&lang.ts\nvar file_pdf_vue_vue_type_script_lang_default = {\n  name: \"FilePdf\"\n};\n\n// src/components/file-pdf.vue\nimport { createElementVNode as _createElementVNode258, openBlock as _openBlock261, createElementBlock as _createElementBlock261 } from \"vue\";\nvar _hoisted_1261 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2261 = /* @__PURE__ */ _createElementVNode258(\n  \"path\",\n  {\n    d: \"M658.68 63.95H269.36c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V301.44c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a120.008 120.008 0 0 0-84.85-35.14z\",\n    fill: \"#FF7878\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3258 = /* @__PURE__ */ _createElementVNode258(\n  \"path\",\n  {\n    d: \"M861.03 216.59l-117.5-117.5a120.001 120.001 0 0 0-61.75-32.9v131.88c0 41.87 33.94 75.81 75.81 75.81h135.37a120.058 120.058 0 0 0-31.93-57.29zM649.24 554.59c-22.79 0-45.38 3.31-68.16 7.6-26.87-24.76-49.66-54-66.99-86.56 18.5-60.63 19.47-101.76 5.45-121.26-6.43-8.58-17.14-14.04-28.04-14.04-14.02-0.97-27.07 5.46-33.5 17.35-19.47 32.56 8.76 96.5 21.81 122.43-15 46.59-33.5 91.04-57.25 134.32-102.82 44.45-104.97 71.54-104.97 81.29 0 11.89 6.43 23.78 18.31 29.24 4.28 3.12 10.71 4.29 16.16 4.29 27.07 0 58.42-30.41 91.92-90.06 42.26-17.35 84.32-31.39 128.73-41.13 22.79 19.49 50.83 30.41 80.04 32.56 18.5 0 54.14 0 53.75-37.04 1.17-14.04-6.43-37.82-57.26-38.99zM353.53 696.45l-3.26 1.17c9.6-14.06 22.26-25 38.38-31.64-8.44 14.26-20.15 25-35.12 30.47z m132.59-322.36c1.02-1.16 3.17-2.35 4.4-2.35l3.57 1.19c5.52 18.41 5.52 37.8-1.23 56.02-7.96-17.26-11.23-36.64-6.74-54.86zM542.26 584c-23.61 5.5-49.55 13.17-73.16 21.81l-2.45 0.96 0.32-1.94c11.81-23.97 22.64-49.13 32.32-74.28l1.16-2.45 1.17 1.47c12 18.47 27.2 37.51 43.46 53.82l-2.82 0.61z m111.17 13.58c-10.87-0.95-21.54-3.04-32.4-8.35 9.7-2.09 18.24-2.09 27.94-2.09 21.54 0 25.81 5.32 26 8.35-6.41 2.09-13.98 3.23-21.54 2.09z\",\n    fill: \"#F25555\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_447 = /* @__PURE__ */ _createElementVNode258(\n  \"path\",\n  {\n    d: \"M648.96 575.14c-9.7 0-18.24 0-27.94 2.09 10.87 5.32 21.54 7.4 32.4 8.35 7.57 1.14 15.14 0 21.54-2.09-0.19-3.03-4.46-8.35-26-8.35z m-147.34-57.57l-1.17-1.47-1.16 2.45c-9.68 25.15-20.52 50.31-32.32 74.28l-0.32 1.94 2.45-0.96c23.61-8.65 49.55-16.31 73.16-21.81l2.81-0.61c-16.25-16.32-31.45-35.35-43.45-53.82z m-7.52-156.65l-3.57-1.19c-1.23 0-3.38 1.19-4.4 2.35-4.5 18.22-1.23 37.6 6.75 54.85 6.74-18.21 6.74-37.59 1.22-56.01z m-143.83 324.7l3.26-1.17c14.97-5.47 26.68-16.21 35.12-30.47-16.12 6.64-28.78 17.58-38.38 31.64z m302.48-67c-29.21-2.14-57.25-13.06-80.04-32.56-44.4 9.75-86.47 23.78-128.73 41.13-33.5 59.65-64.85 90.06-91.92 90.06-5.45 0-11.88-1.17-16.16-4.29-11.88-5.46-18.31-17.35-18.31-29.24 0-9.75 2.14-36.84 104.97-81.29 23.76-43.28 42.26-87.73 57.25-134.32-13.05-25.93-41.29-89.87-21.81-122.43 6.43-11.89 19.47-18.32 33.5-17.35 10.91 0 21.62 5.46 28.04 14.04 14.02 19.49 13.05 60.63-5.45 121.26 17.33 32.56 40.12 61.8 66.99 86.56 22.79-4.29 45.38-7.6 68.16-7.6 50.83 1.17 58.42 24.95 57.25 38.99 0.4 37.04-35.24 37.04-53.74 37.04z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_519 = [\n  _hoisted_2261,\n  _hoisted_3258,\n  _hoisted_447\n];\nfunction _sfc_render261(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock261(), _createElementBlock261(\"svg\", _hoisted_1261, _hoisted_519);\n}\nvar file_pdf_default = /* @__PURE__ */ export_helper_default(file_pdf_vue_vue_type_script_lang_default, [[\"render\", _sfc_render261], [\"__file\", \"file-pdf.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-ppt.vue?vue&type=script&lang.ts\nvar file_ppt_vue_vue_type_script_lang_default = {\n  name: \"FilePpt\"\n};\n\n// src/components/file-ppt.vue\nimport { createElementVNode as _createElementVNode259, openBlock as _openBlock262, createElementBlock as _createElementBlock262 } from \"vue\";\nvar _hoisted_1262 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2262 = /* @__PURE__ */ _createElementVNode259(\n  \"path\",\n  {\n    d: \"M658.58 63.94H269.26c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V301.44c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a120.017 120.017 0 0 0-84.85-35.15z\",\n    fill: \"#F98950\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3259 = /* @__PURE__ */ _createElementVNode259(\n  \"path\",\n  {\n    d: \"M860.93 216.59l-117.5-117.5a120.001 120.001 0 0 0-61.75-32.9v131.88c0 41.87 33.94 75.81 75.81 75.81h135.37a119.93 119.93 0 0 0-31.93-57.29zM556.02 348.38H380.37c-13.25 0-24 10.75-24 24v302.74c0 13.25 10.75 24 24 24s24-10.75 24-24V595.6h151.65c68.16 0 123.61-55.45 123.61-123.61s-55.45-123.61-123.61-123.61z m0 199.22H404.37V396.38h151.65c41.69 0 75.61 33.92 75.61 75.61s-33.92 75.61-75.61 75.61z\",\n    fill: \"#F26C38\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_448 = /* @__PURE__ */ _createElementVNode259(\n  \"path\",\n  {\n    d: \"M556.02 336.38H380.37c-13.25 0-24 10.75-24 24v302.74c0 13.25 10.75 24 24 24s24-10.75 24-24V583.6h151.65c68.16 0 123.61-55.45 123.61-123.61s-55.45-123.61-123.61-123.61z m0 199.22H404.37V384.38h151.65c41.69 0 75.61 33.92 75.61 75.61s-33.92 75.61-75.61 75.61z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_520 = [\n  _hoisted_2262,\n  _hoisted_3259,\n  _hoisted_448\n];\nfunction _sfc_render262(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock262(), _createElementBlock262(\"svg\", _hoisted_1262, _hoisted_520);\n}\nvar file_ppt_default = /* @__PURE__ */ export_helper_default(file_ppt_vue_vue_type_script_lang_default, [[\"render\", _sfc_render262], [\"__file\", \"file-ppt.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-sql.vue?vue&type=script&lang.ts\nvar file_sql_vue_vue_type_script_lang_default = {\n  name: \"FileSql\"\n};\n\n// src/components/file-sql.vue\nimport { openBlock as _openBlock263, createElementBlock as _createElementBlock263, createStaticVNode as _createStaticVNode4 } from \"vue\";\nvar _hoisted_1263 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2263 = /* @__PURE__ */ _createStaticVNode4('<path d=\"M659.7 64.2H270.4c-78.1 0-141.3 63.3-141.3 141.3v612.9c0 78.1 63.3 141.3 141.3 141.3h485.5c78.1 0 141.3-63.3 141.3-141.3V301.7c0-31.8-12.6-62.3-35.1-84.9L744.6 99.3c-22.5-22.5-53.1-35.1-84.9-35.1z\" fill=\"#F98950\"></path><path d=\"M862.1 216.8L744.6 99.3c-17-17-38.5-28.3-61.7-32.9v131.9c0 41.9 33.9 75.8 75.8 75.8H894c-5.1-21.5-16-41.4-31.9-57.3z\" fill=\"#F26C38\"></path><path d=\"M369.4 399.3a143.7 42.6 0 1 0 287.4 0 143.7 42.6 0 1 0-287.4 0Z\" fill=\"#F26C38\"></path><path d=\"M513.1 532.1c79.3 0 143.7-19.1 143.7-42.6v-58.3c0-0.8-0.1-1.7-0.2-2.5-4.3 22.4-66.9 40.2-143.4 40.2S374 451 369.7 428.6c-0.2 0.8-0.2 1.6-0.2 2.5v58.3c0 23.6 64.3 42.7 143.6 42.7z\" fill=\"#F26C38\"></path><path d=\"M513.1 619.9c79.3 0 143.7-19.1 143.7-42.6V519c0-0.8-0.1-1.7-0.2-2.5-4.3 22.4-66.9 40.2-143.4 40.2S374 538.9 369.7 516.5c-0.2 0.8-0.2 1.6-0.2 2.5v58.3c0 23.5 64.3 42.6 143.6 42.6z\" fill=\"#F26C38\"></path><path d=\"M513.2 644.1c-76.5 0-139.1-17.8-143.4-40.2-0.2 0.8-0.2 1.6-0.2 2.5v58.3c0 23.5 64.3 42.6 143.7 42.6S657 688.2 657 664.7v-58.3c0-0.8-0.1-1.7-0.2-2.5-4.5 22.4-67.1 40.2-143.6 40.2z\" fill=\"#F26C38\"></path><path d=\"M369.4 387.3a143.7 42.6 0 1 0 287.4 0 143.7 42.6 0 1 0-287.4 0Z\" fill=\"#FFFFFF\"></path><path d=\"M513.1 520.1c79.3 0 143.7-19.1 143.7-42.6v-58.3c0-0.8-0.1-1.7-0.2-2.5-4.3 22.4-66.9 40.2-143.4 40.2S374 439 369.7 416.6c-0.2 0.8-0.2 1.6-0.2 2.5v58.3c0 23.6 64.3 42.7 143.6 42.7z\" fill=\"#FFFFFF\"></path><path d=\"M513.1 607.9c79.3 0 143.7-19.1 143.7-42.6V507c0-0.8-0.1-1.7-0.2-2.5-4.3 22.4-66.9 40.2-143.4 40.2S374 526.9 369.7 504.5c-0.2 0.8-0.2 1.6-0.2 2.5v58.3c0 23.5 64.3 42.6 143.6 42.6z\" fill=\"#FFFFFF\"></path><path d=\"M656.6 591.9c-4.3 22.4-66.9 40.2-143.4 40.2s-139.1-17.8-143.4-40.2c-0.2 0.8-0.2 1.6-0.2 2.5v58.3c0 23.5 64.3 42.6 143.7 42.6 79.3 0 143.7-19.1 143.7-42.6v-58.3c-0.2-0.8-0.3-1.7-0.4-2.5z\" fill=\"#FFFFFF\"></path>', 10), _hoisted_1264 = [\n  _hoisted_2263\n];\nfunction _sfc_render263(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock263(), _createElementBlock263(\"svg\", _hoisted_1263, _hoisted_1264);\n}\nvar file_sql_default = /* @__PURE__ */ export_helper_default(file_sql_vue_vue_type_script_lang_default, [[\"render\", _sfc_render263], [\"__file\", \"file-sql.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-sql2.vue?vue&type=script&lang.ts\nvar file_sql2_vue_vue_type_script_lang_default = {\n  name: \"FileSql2\"\n};\n\n// src/components/file-sql2.vue\nimport { createElementVNode as _createElementVNode260, openBlock as _openBlock264, createElementBlock as _createElementBlock264 } from \"vue\";\nvar _hoisted_1265 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2264 = /* @__PURE__ */ _createElementVNode260(\n  \"path\",\n  {\n    d: \"M659.7 64.2H270.4c-78.1 0-141.3 63.3-141.3 141.3v612.9c0 78.1 63.3 141.3 141.3 141.3h485.5c78.1 0 141.3-63.3 141.3-141.3V301.7c0-31.8-12.6-62.3-35.1-84.9L744.6 99.3c-22.5-22.5-53.1-35.1-84.9-35.1z\",\n    fill: \"#F98950\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3260 = /* @__PURE__ */ _createElementVNode260(\n  \"path\",\n  {\n    d: \"M862.1 216.8L744.6 99.3c-17-17-38.5-28.3-61.7-32.9v131.9c0 41.9 33.9 75.8 75.8 75.8H894c-5.1-21.5-16-41.4-31.9-57.3zM639.7 372.4H386.6c-13.8 0-25 11.3-25 25V433c0 13.8 11.3 25 25 25h253.1c13.8 0 25-11.3 25-25v-35.6c0-13.8-11.2-25-25-25z m-204.5 42.8c0 10-10.9 17.7-21.4 11.6-3.8-2.2-6.1-6.3-6.1-10.7v-1.2c0-5.2 3-10 7.7-12.1 10-4.5 19.8 2.9 19.8 12.4zM639.7 481.2H386.6c-13.8 0-25 11.3-25 25v35.6c0 13.8 11.3 25 25 25h253.1c13.8 0 25-11.3 25-25v-35.6c0-13.8-11.2-25-25-25zM435.2 524c0 10-10.9 17.7-21.4 11.6-3.8-2.2-6.1-6.3-6.1-10.7v-1.2c0-5.2 3-10 7.7-12.1 10-4.5 19.8 2.9 19.8 12.4zM639.7 589.9H386.6c-13.8 0-25 11.3-25 25v35.6c0 13.8 11.3 25 25 25h253.1c13.8 0 25-11.3 25-25V615c0-13.8-11.2-25.1-25-25.1z m-204.5 42.9c0 10-10.9 17.7-21.4 11.6-3.8-2.2-6.1-6.3-6.1-10.7v-1.2c0-5.2 3-10 7.7-12.1 10-4.5 19.8 2.8 19.8 12.4z\",\n    fill: \"#F26C38\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_449 = /* @__PURE__ */ _createElementVNode260(\n  \"path\",\n  {\n    d: \"M639.7 360.4H386.6c-13.8 0-25 11.3-25 25V421c0 13.8 11.3 25 25 25h253.1c13.8 0 25-11.3 25-25v-35.6c0-13.8-11.2-25-25-25z m-204.5 42.8c0 10-10.9 17.7-21.4 11.6-3.8-2.2-6.1-6.3-6.1-10.7v-1.2c0-5.2 3-10 7.7-12.1 10-4.5 19.8 2.9 19.8 12.4zM639.7 469.2H386.6c-13.8 0-25 11.3-25 25v35.6c0 13.8 11.3 25 25 25h253.1c13.8 0 25-11.3 25-25v-35.6c0-13.8-11.2-25-25-25zM435.2 512c0 10-10.9 17.7-21.4 11.6-3.8-2.2-6.1-6.3-6.1-10.7v-1.2c0-5.2 3-10 7.7-12.1 10-4.5 19.8 2.9 19.8 12.4zM639.7 577.9H386.6c-13.8 0-25 11.3-25 25v35.6c0 13.8 11.3 25 25 25h253.1c13.8 0 25-11.3 25-25V603c0-13.8-11.2-25.1-25-25.1z m-204.5 42.9c0 10-10.9 17.7-21.4 11.6-3.8-2.2-6.1-6.3-6.1-10.7v-1.2c0-5.2 3-10 7.7-12.1 10-4.5 19.8 2.8 19.8 12.4z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_521 = [\n  _hoisted_2264,\n  _hoisted_3260,\n  _hoisted_449\n];\nfunction _sfc_render264(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock264(), _createElementBlock264(\"svg\", _hoisted_1265, _hoisted_521);\n}\nvar file_sql2_default = /* @__PURE__ */ export_helper_default(file_sql2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render264], [\"__file\", \"file-sql2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-txt.vue?vue&type=script&lang.ts\nvar file_txt_vue_vue_type_script_lang_default = {\n  name: \"FileTxt\"\n};\n\n// src/components/file-txt.vue\nimport { createElementVNode as _createElementVNode261, openBlock as _openBlock265, createElementBlock as _createElementBlock265 } from \"vue\";\nvar _hoisted_1266 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2265 = /* @__PURE__ */ _createElementVNode261(\n  \"path\",\n  {\n    d: \"M659.72 64.19H270.4c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V301.69c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a120.017 120.017 0 0 0-84.85-35.15z\",\n    fill: \"#4FD397\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3261 = /* @__PURE__ */ _createElementVNode261(\n  \"path\",\n  {\n    d: \"M862.07 216.84l-117.5-117.5a120.001 120.001 0 0 0-61.75-32.9v131.88c0 41.87 33.94 75.81 75.81 75.81H894a119.975 119.975 0 0 0-31.93-57.29zM670.25 381.88H517.97a24.052 24.052 0 0 0-9.66 0H356.03c-13.25 0-24 10.75-24 24s10.75 24 24 24h133.11v258.73c0 13.25 10.75 24 24 24s24-10.75 24-24V429.88h133.11c13.25 0 24-10.75 24-24s-10.75-24-24-24z\",\n    fill: \"#19BC6E\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_450 = /* @__PURE__ */ _createElementVNode261(\n  \"path\",\n  {\n    d: \"M670.25 369.88H517.97a24.052 24.052 0 0 0-9.66 0H356.03c-13.25 0-24 10.75-24 24s10.75 24 24 24h133.11v258.73c0 13.25 10.75 24 24 24s24-10.75 24-24V417.88h133.11c13.25 0 24-10.75 24-24s-10.75-24-24-24z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_522 = [\n  _hoisted_2265,\n  _hoisted_3261,\n  _hoisted_450\n];\nfunction _sfc_render265(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock265(), _createElementBlock265(\"svg\", _hoisted_1266, _hoisted_522);\n}\nvar file_txt_default = /* @__PURE__ */ export_helper_default(file_txt_vue_vue_type_script_lang_default, [[\"render\", _sfc_render265], [\"__file\", \"file-txt.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-video.vue?vue&type=script&lang.ts\nvar file_video_vue_vue_type_script_lang_default = {\n  name: \"FileVideo\"\n};\n\n// src/components/file-video.vue\nimport { createElementVNode as _createElementVNode262, openBlock as _openBlock266, createElementBlock as _createElementBlock266 } from \"vue\";\nvar _hoisted_1267 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2266 = /* @__PURE__ */ _createElementVNode262(\n  \"path\",\n  {\n    d: \"M65.3 755.4V269.9c0-78.1 63.3-141.3 141.3-141.3h612.9c78.1 0 141.3 63.3 141.3 141.3v485.5c0 78.1-63.3 141.3-141.3 141.3H206.7c-78.1 0-141.4-63.3-141.4-141.3z\",\n    fill: \"#8B72F7\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3262 = /* @__PURE__ */ _createElementVNode262(\n  \"path\",\n  {\n    d: \"M557.3 406.6H308c-22.1 0-40 17.9-40 40v155.9c0 22.1 17.9 40 40 40h249.3c22.1 0 40-17.9 40-40V446.6c0-22-17.9-40-40-40zM738.8 412.7L655 491c-19.5 18.2-19.5 49 0 67.2l83.8 78.3c14.2 13.3 37.5 3.2 37.5-16.2V428.9c0-19.4-23.3-29.5-37.5-16.2z\",\n    fill: \"#7463EA\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_451 = /* @__PURE__ */ _createElementVNode262(\n  \"path\",\n  {\n    d: \"M557.3 394.6H308c-22.1 0-40 17.9-40 40v155.9c0 22.1 17.9 40 40 40h249.3c22.1 0 40-17.9 40-40V434.6c0-22-17.9-40-40-40zM738.8 400.7L655 479c-19.5 18.2-19.5 49 0 67.2l83.8 78.3c14.2 13.3 37.5 3.2 37.5-16.2V416.9c0-19.4-23.3-29.5-37.5-16.2z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_523 = [\n  _hoisted_2266,\n  _hoisted_3262,\n  _hoisted_451\n];\nfunction _sfc_render266(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock266(), _createElementBlock266(\"svg\", _hoisted_1267, _hoisted_523);\n}\nvar file_video_default = /* @__PURE__ */ export_helper_default(file_video_vue_vue_type_script_lang_default, [[\"render\", _sfc_render266], [\"__file\", \"file-video.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-word.vue?vue&type=script&lang.ts\nvar file_word_vue_vue_type_script_lang_default = {\n  name: \"FileWord\"\n};\n\n// src/components/file-word.vue\nimport { createElementVNode as _createElementVNode263, openBlock as _openBlock267, createElementBlock as _createElementBlock267 } from \"vue\";\nvar _hoisted_1268 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2267 = /* @__PURE__ */ _createElementVNode263(\n  \"path\",\n  {\n    d: \"M658.78 64.39H269.46c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V301.88c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a120.008 120.008 0 0 0-84.85-35.14z\",\n    fill: \"#53B7F4\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3263 = /* @__PURE__ */ _createElementVNode263(\n  \"path\",\n  {\n    d: \"M647.85 360.65c-13.25 0-24 10.75-24 24v226.26l-94.35-93.29c-9.33-9.22-24.34-9.25-33.69-0.05l-95.26 93.6V383.99c0-13.25-10.75-24-24-24s-24 10.75-24 24V668.4c0 9.67 5.8 18.39 14.72 22.13a24.002 24.002 0 0 0 26.1-5.01L512.58 568.4l118.4 117.07a23.993 23.993 0 0 0 16.88 6.93c3.11 0 6.25-0.61 9.24-1.85a24 24 0 0 0 14.75-22.15V384.65c0-13.25-10.74-24-24-24zM861.13 217.03l-117.5-117.5a120.001 120.001 0 0 0-61.75-32.9v131.88c0 41.87 33.94 75.81 75.81 75.81h135.37a119.975 119.975 0 0 0-31.93-57.29z\",\n    fill: \"#29A3D3\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_452 = /* @__PURE__ */ _createElementVNode263(\n  \"path\",\n  {\n    d: \"M647.86 680.4c-6.2 0-12.3-2.4-16.88-6.93L512.58 556.4 393.37 673.52a23.99 23.99 0 0 1-26.1 5.01 23.992 23.992 0 0 1-14.72-22.13V371.99c0-13.25 10.75-24 24-24s24 10.75 24 24v227.19l95.26-93.6c9.36-9.19 24.37-9.17 33.69 0.05l94.35 93.29V372.65c0-13.25 10.75-24 24-24s24 10.75 24 24V656.4c0 9.68-5.82 18.42-14.75 22.15a24.112 24.112 0 0 1-9.24 1.85z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_524 = [\n  _hoisted_2267,\n  _hoisted_3263,\n  _hoisted_452\n];\nfunction _sfc_render267(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock267(), _createElementBlock267(\"svg\", _hoisted_1268, _hoisted_524);\n}\nvar file_word_default = /* @__PURE__ */ export_helper_default(file_word_vue_vue_type_script_lang_default, [[\"render\", _sfc_render267], [\"__file\", \"file-word.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-wps.vue?vue&type=script&lang.ts\nvar file_wps_vue_vue_type_script_lang_default = {\n  name: \"FileWps\"\n};\n\n// src/components/file-wps.vue\nimport { createElementVNode as _createElementVNode264, openBlock as _openBlock268, createElementBlock as _createElementBlock268 } from \"vue\";\nvar _hoisted_1269 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2268 = /* @__PURE__ */ _createElementVNode264(\n  \"path\",\n  {\n    d: \"M659.7 64.2H270.4c-78.1 0-141.3 63.3-141.3 141.3v612.9c0 78.1 63.3 141.3 141.3 141.3h485.5c78.1 0 141.3-63.3 141.3-141.3V301.7c0-31.8-12.6-62.3-35.1-84.9L744.6 99.3c-22.5-22.5-53.1-35.1-84.9-35.1z\",\n    fill: \"#53B7F4\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3264 = /* @__PURE__ */ _createElementVNode264(\n  \"path\",\n  {\n    d: \"M758.6 274.1H894c-5.1-21.5-16-41.4-31.9-57.3L744.6 99.3c-17-17-38.5-28.3-61.7-32.9v131.9c-0.1 41.9 33.9 75.8 75.7 75.8zM741.4 401.2H591.2c-8.3 0-16.1 4.3-20.4 11.4L465 584.4l-1.2 2-26.2 42.5-109.9-179.7h96.8l54.7 81.4 27.6-45.1-49.5-73.8c-4.5-6.6-11.9-10.6-19.9-10.6H284.9c-8.7 0-16.7 4.7-20.9 12.3-4.2 7.6-4.1 16.9 0.5 24.3l152.7 249.6c4.3 7.1 12.1 11.5 20.4 11.5 8.3 0 16.1-4.3 20.4-11.4l146.5-238.2h96.4l-98.1 179.4-46.8-69.8-27.7 44.9 56.7 84.5c4.5 6.7 11.9 10.6 19.9 10.6h1.1c8.4-0.4 15.9-5.1 20-12.5l136.4-249.6c4.1-7.4 3.9-16.5-0.4-23.8-4.3-7.2-12.1-11.7-20.6-11.7z\",\n    fill: \"#29A3D3\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_453 = /* @__PURE__ */ _createElementVNode264(\n  \"path\",\n  {\n    d: \"M762.4 424.7L626 674.3c-4 7.4-11.6 12.1-20 12.5h-1.1c-8 0-15.4-4-19.9-10.6l-56.7-84.5 27.7-44.9 46.9 69.8L701 437.2h-96.4L458 675.4c-4.4 7.1-12.1 11.4-20.4 11.4-8.4 0-16.1-4.4-20.4-11.5L264.4 425.7c-4.5-7.4-4.7-16.7-0.5-24.3 4.2-7.6 12.2-12.3 20.9-12.3h152.4c8 0 15.5 4 19.9 10.6l49.5 73.8-27.6 45.1-54.7-81.4h-96.8l109.9 179.7 26.2-42.5 1.2-2 105.7-171.8c4.4-7.1 12.1-11.4 20.4-11.4h150.2c8.5 0 16.3 4.5 20.6 11.8 4.6 7.2 4.8 16.3 0.7 23.7z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_525 = [\n  _hoisted_2268,\n  _hoisted_3264,\n  _hoisted_453\n];\nfunction _sfc_render268(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock268(), _createElementBlock268(\"svg\", _hoisted_1269, _hoisted_525);\n}\nvar file_wps_default = /* @__PURE__ */ export_helper_default(file_wps_vue_vue_type_script_lang_default, [[\"render\", _sfc_render268], [\"__file\", \"file-wps.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\file-zip.vue?vue&type=script&lang.ts\nvar file_zip_vue_vue_type_script_lang_default = {\n  name: \"FileZip\"\n};\n\n// src/components/file-zip.vue\nimport { createElementVNode as _createElementVNode265, openBlock as _openBlock269, createElementBlock as _createElementBlock269 } from \"vue\";\nvar _hoisted_1270 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2269 = /* @__PURE__ */ _createElementVNode265(\n  \"path\",\n  {\n    d: \"M659.72 64.81H270.4c-78.06 0-141.33 63.28-141.33 141.33v612.95c0 78.06 63.28 141.33 141.33 141.33h485.49c78.06 0 141.33-63.28 141.33-141.33V302.3c0-31.83-12.64-62.35-35.15-84.85l-117.5-117.5a120.008 120.008 0 0 0-84.85-35.14z\",\n    fill: \"#FFC757\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3265 = /* @__PURE__ */ _createElementVNode265(\n  \"path\",\n  {\n    d: \"M304.85 196.81h71.52c7.86 0 14.24-6.38 14.24-14.24v-71.52c0-7.87-6.38-14.24-14.24-14.24h-71.52c-7.86 0-14.24 6.38-14.24 14.24v71.52c0 7.86 6.38 14.24 14.24 14.24zM476.37 196.81h-71.52c-7.86 0-14.24 6.38-14.24 14.24v71.52c0 7.87 6.38 14.24 14.24 14.24h71.52c7.86 0 14.24-6.38 14.24-14.24v-71.52c0-7.86-6.38-14.24-14.24-14.24zM304.85 396.81h71.52c7.86 0 14.24-6.38 14.24-14.24v-71.52c0-7.87-6.38-14.24-14.24-14.24h-71.52c-7.86 0-14.24 6.38-14.24 14.24v71.52c0 7.86 6.38 14.24 14.24 14.24zM476.37 396.81h-71.52c-7.86 0-14.24 6.38-14.24 14.24v71.52c0 7.87 6.38 14.24 14.24 14.24h71.52c7.86 0 14.24-6.38 14.24-14.24v-71.52c0-7.86-6.38-14.24-14.24-14.24zM455.65 552.02H321.52c-17.07 0-30.91 13.84-30.91 30.91v155.48c0 17.07 13.84 30.91 30.91 30.91h134.13c17.07 0 30.91-13.84 30.91-30.91V582.93c0-17.07-13.84-30.91-30.91-30.91z m-4.93 164.59c0 13.72-11.12 24.84-24.84 24.84h-74.6c-13.72 0-24.84-11.12-24.84-24.84v-27.36c0-13.72 11.12-24.84 24.84-24.84h74.6c13.72 0 24.84 11.12 24.84 24.84v27.36zM862.07 217.45l-117.5-117.5a120.001 120.001 0 0 0-61.75-32.9v131.88c0 41.87 33.94 75.81 75.81 75.81H894a120.021 120.021 0 0 0-31.93-57.29z\",\n    fill: \"#F79F2B\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_454 = /* @__PURE__ */ _createElementVNode265(\n  \"path\",\n  {\n    d: \"M304.85 184.81h71.52c7.86 0 14.24-6.38 14.24-14.24V99.05c0-7.87-6.38-14.24-14.24-14.24h-71.52c-7.86 0-14.24 6.38-14.24 14.24v71.52c0 7.86 6.38 14.24 14.24 14.24zM476.37 184.81h-71.52c-7.86 0-14.24 6.38-14.24 14.24v71.52c0 7.87 6.38 14.24 14.24 14.24h71.52c7.86 0 14.24-6.38 14.24-14.24v-71.52c0-7.86-6.38-14.24-14.24-14.24zM304.85 384.81h71.52c7.86 0 14.24-6.38 14.24-14.24v-71.52c0-7.87-6.38-14.24-14.24-14.24h-71.52c-7.86 0-14.24 6.38-14.24 14.24v71.52c0 7.86 6.38 14.24 14.24 14.24zM476.37 384.81h-71.52c-7.86 0-14.24 6.38-14.24 14.24v71.52c0 7.87 6.38 14.24 14.24 14.24h71.52c7.86 0 14.24-6.38 14.24-14.24v-71.52c0-7.86-6.38-14.24-14.24-14.24zM455.65 540.02H321.52c-17.07 0-30.91 13.84-30.91 30.91v155.48c0 17.07 13.84 30.91 30.91 30.91h134.13c17.07 0 30.91-13.84 30.91-30.91V570.93c0-17.07-13.84-30.91-30.91-30.91z m-4.93 164.59c0 13.72-11.12 24.84-24.84 24.84h-74.6c-13.72 0-24.84-11.12-24.84-24.84v-27.36c0-13.72 11.12-24.84 24.84-24.84h74.6c13.72 0 24.84 11.12 24.84 24.84v27.36z\",\n    fill: \"#FFFFFF\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_526 = [\n  _hoisted_2269,\n  _hoisted_3265,\n  _hoisted_454\n];\nfunction _sfc_render269(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock269(), _createElementBlock269(\"svg\", _hoisted_1270, _hoisted_526);\n}\nvar file_zip_default = /* @__PURE__ */ export_helper_default(file_zip_vue_vue_type_script_lang_default, [[\"render\", _sfc_render269], [\"__file\", \"file-zip.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\files.vue?vue&type=script&lang.ts\nvar files_vue_vue_type_script_lang_default = {\n  name: \"Files\"\n};\n\n// src/components/files.vue\nimport { createElementVNode as _createElementVNode266, openBlock as _openBlock270, createElementBlock as _createElementBlock270 } from \"vue\";\nvar _hoisted_1271 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2270 = /* @__PURE__ */ _createElementVNode266(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 384v448h768V384H128zm-32-64h832a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32zm64-128h704v64H160zm96-128h512v64H256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3266 = [\n  _hoisted_2270\n];\nfunction _sfc_render270(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock270(), _createElementBlock270(\"svg\", _hoisted_1271, _hoisted_3266);\n}\nvar files_default = /* @__PURE__ */ export_helper_default(files_vue_vue_type_script_lang_default, [[\"render\", _sfc_render270], [\"__file\", \"files.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\film.vue?vue&type=script&lang.ts\nvar film_vue_vue_type_script_lang_default = {\n  name: \"Film\"\n};\n\n// src/components/film.vue\nimport { createElementVNode as _createElementVNode267, openBlock as _openBlock271, createElementBlock as _createElementBlock271 } from \"vue\";\nvar _hoisted_1272 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2271 = /* @__PURE__ */ _createElementVNode267(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 160v704h704V160H160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3267 = /* @__PURE__ */ _createElementVNode267(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M320 288V128h64v352h256V128h64v160h160v64H704v128h160v64H704v128h160v64H704v160h-64V544H384v352h-64V736H128v-64h192V544H128v-64h192V352H128v-64h192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_455 = [\n  _hoisted_2271,\n  _hoisted_3267\n];\nfunction _sfc_render271(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock271(), _createElementBlock271(\"svg\", _hoisted_1272, _hoisted_455);\n}\nvar film_default = /* @__PURE__ */ export_helper_default(film_vue_vue_type_script_lang_default, [[\"render\", _sfc_render271], [\"__file\", \"film.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\filter.vue?vue&type=script&lang.ts\nvar filter_vue_vue_type_script_lang_default = {\n  name: \"Filter\"\n};\n\n// src/components/filter.vue\nimport { createElementVNode as _createElementVNode268, openBlock as _openBlock272, createElementBlock as _createElementBlock272 } from \"vue\";\nvar _hoisted_1273 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2272 = /* @__PURE__ */ _createElementVNode268(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 523.392V928a32 32 0 0 0 46.336 28.608l192-96A32 32 0 0 0 640 832V523.392l280.768-343.104a32 32 0 1 0-49.536-40.576l-288 352A32 32 0 0 0 576 512v300.224l-128 64V512a32 32 0 0 0-7.232-20.288L195.52 192H704a32 32 0 1 0 0-64H128a32 32 0 0 0-24.768 52.288L384 523.392z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3268 = [\n  _hoisted_2272\n];\nfunction _sfc_render272(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock272(), _createElementBlock272(\"svg\", _hoisted_1273, _hoisted_3268);\n}\nvar filter_default = /* @__PURE__ */ export_helper_default(filter_vue_vue_type_script_lang_default, [[\"render\", _sfc_render272], [\"__file\", \"filter.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\finished.vue?vue&type=script&lang.ts\nvar finished_vue_vue_type_script_lang_default = {\n  name: \"Finished\"\n};\n\n// src/components/finished.vue\nimport { createElementVNode as _createElementVNode269, openBlock as _openBlock273, createElementBlock as _createElementBlock273 } from \"vue\";\nvar _hoisted_1274 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2273 = /* @__PURE__ */ _createElementVNode269(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M280.768 753.728 691.456 167.04a32 32 0 1 1 52.416 36.672L314.24 817.472a32 32 0 0 1-45.44 7.296l-230.4-172.8a32 32 0 0 1 38.4-51.2l203.968 152.96zM736 448a32 32 0 1 1 0-64h192a32 32 0 1 1 0 64H736zM608 640a32 32 0 0 1 0-64h319.936a32 32 0 1 1 0 64H608zM480 832a32 32 0 1 1 0-64h447.936a32 32 0 1 1 0 64H480z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3269 = [\n  _hoisted_2273\n];\nfunction _sfc_render273(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock273(), _createElementBlock273(\"svg\", _hoisted_1274, _hoisted_3269);\n}\nvar finished_default = /* @__PURE__ */ export_helper_default(finished_vue_vue_type_script_lang_default, [[\"render\", _sfc_render273], [\"__file\", \"finished.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\first-aid-kit.vue?vue&type=script&lang.ts\nvar first_aid_kit_vue_vue_type_script_lang_default = {\n  name: \"FirstAidKit\"\n};\n\n// src/components/first-aid-kit.vue\nimport { createElementVNode as _createElementVNode270, openBlock as _openBlock274, createElementBlock as _createElementBlock274 } from \"vue\";\nvar _hoisted_1275 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2274 = /* @__PURE__ */ _createElementVNode270(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 256a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64H192zm0-64h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3270 = /* @__PURE__ */ _createElementVNode270(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 512h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0v96zM352 128v64h320v-64H352zm-32-64h384a32 32 0 0 1 32 32v128a32 32 0 0 1-32 32H320a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_456 = [\n  _hoisted_2274,\n  _hoisted_3270\n];\nfunction _sfc_render274(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock274(), _createElementBlock274(\"svg\", _hoisted_1275, _hoisted_456);\n}\nvar first_aid_kit_default = /* @__PURE__ */ export_helper_default(first_aid_kit_vue_vue_type_script_lang_default, [[\"render\", _sfc_render274], [\"__file\", \"first-aid-kit.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\flag.vue?vue&type=script&lang.ts\nvar flag_vue_vue_type_script_lang_default = {\n  name: \"Flag\"\n};\n\n// src/components/flag.vue\nimport { createElementVNode as _createElementVNode271, openBlock as _openBlock275, createElementBlock as _createElementBlock275 } from \"vue\";\nvar _hoisted_1276 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2275 = /* @__PURE__ */ _createElementVNode271(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M288 128h608L736 384l160 256H288v320h-96V64h96v64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3271 = [\n  _hoisted_2275\n];\nfunction _sfc_render275(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock275(), _createElementBlock275(\"svg\", _hoisted_1276, _hoisted_3271);\n}\nvar flag_default = /* @__PURE__ */ export_helper_default(flag_vue_vue_type_script_lang_default, [[\"render\", _sfc_render275], [\"__file\", \"flag.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\fold.vue?vue&type=script&lang.ts\nvar fold_vue_vue_type_script_lang_default = {\n  name: \"Fold\"\n};\n\n// src/components/fold.vue\nimport { createElementVNode as _createElementVNode272, openBlock as _openBlock276, createElementBlock as _createElementBlock276 } from \"vue\";\nvar _hoisted_1277 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2276 = /* @__PURE__ */ _createElementVNode272(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M896 192H128v128h768V192zm0 256H384v128h512V448zm0 256H128v128h768V704zM320 384 128 512l192 128V384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3272 = [\n  _hoisted_2276\n];\nfunction _sfc_render276(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock276(), _createElementBlock276(\"svg\", _hoisted_1277, _hoisted_3272);\n}\nvar fold_default = /* @__PURE__ */ export_helper_default(fold_vue_vue_type_script_lang_default, [[\"render\", _sfc_render276], [\"__file\", \"fold.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\folder-add.vue?vue&type=script&lang.ts\nvar folder_add_vue_vue_type_script_lang_default = {\n  name: \"FolderAdd\"\n};\n\n// src/components/folder-add.vue\nimport { createElementVNode as _createElementVNode273, openBlock as _openBlock277, createElementBlock as _createElementBlock277 } from \"vue\";\nvar _hoisted_1278 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2277 = /* @__PURE__ */ _createElementVNode273(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32zm384 416V416h64v128h128v64H544v128h-64V608H352v-64h128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3273 = [\n  _hoisted_2277\n];\nfunction _sfc_render277(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock277(), _createElementBlock277(\"svg\", _hoisted_1278, _hoisted_3273);\n}\nvar folder_add_default = /* @__PURE__ */ export_helper_default(folder_add_vue_vue_type_script_lang_default, [[\"render\", _sfc_render277], [\"__file\", \"folder-add.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\folder-checked.vue?vue&type=script&lang.ts\nvar folder_checked_vue_vue_type_script_lang_default = {\n  name: \"FolderChecked\"\n};\n\n// src/components/folder-checked.vue\nimport { createElementVNode as _createElementVNode274, openBlock as _openBlock278, createElementBlock as _createElementBlock278 } from \"vue\";\nvar _hoisted_1279 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2278 = /* @__PURE__ */ _createElementVNode274(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32zm414.08 502.144 180.992-180.992L736.32 494.4 510.08 720.64l-158.4-158.336 45.248-45.312L510.08 630.144z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3274 = [\n  _hoisted_2278\n];\nfunction _sfc_render278(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock278(), _createElementBlock278(\"svg\", _hoisted_1279, _hoisted_3274);\n}\nvar folder_checked_default = /* @__PURE__ */ export_helper_default(folder_checked_vue_vue_type_script_lang_default, [[\"render\", _sfc_render278], [\"__file\", \"folder-checked.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\folder-delete.vue?vue&type=script&lang.ts\nvar folder_delete_vue_vue_type_script_lang_default = {\n  name: \"FolderDelete\"\n};\n\n// src/components/folder-delete.vue\nimport { createElementVNode as _createElementVNode275, openBlock as _openBlock279, createElementBlock as _createElementBlock279 } from \"vue\";\nvar _hoisted_1280 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2279 = /* @__PURE__ */ _createElementVNode275(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32zm370.752 448-90.496-90.496 45.248-45.248L512 530.752l90.496-90.496 45.248 45.248L557.248 576l90.496 90.496-45.248 45.248L512 621.248l-90.496 90.496-45.248-45.248L466.752 576z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3275 = [\n  _hoisted_2279\n];\nfunction _sfc_render279(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock279(), _createElementBlock279(\"svg\", _hoisted_1280, _hoisted_3275);\n}\nvar folder_delete_default = /* @__PURE__ */ export_helper_default(folder_delete_vue_vue_type_script_lang_default, [[\"render\", _sfc_render279], [\"__file\", \"folder-delete.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\folder-opened.vue?vue&type=script&lang.ts\nvar folder_opened_vue_vue_type_script_lang_default = {\n  name: \"FolderOpened\"\n};\n\n// src/components/folder-opened.vue\nimport { createElementVNode as _createElementVNode276, openBlock as _openBlock280, createElementBlock as _createElementBlock280 } from \"vue\";\nvar _hoisted_1281 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2280 = /* @__PURE__ */ _createElementVNode276(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M878.08 448H241.92l-96 384h636.16l96-384zM832 384v-64H485.76L357.504 192H128v448l57.92-231.744A32 32 0 0 1 216.96 384H832zm-24.96 512H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h287.872l128.384 128H864a32 32 0 0 1 32 32v96h23.04a32 32 0 0 1 31.04 39.744l-112 448A32 32 0 0 1 807.04 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3276 = [\n  _hoisted_2280\n];\nfunction _sfc_render280(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock280(), _createElementBlock280(\"svg\", _hoisted_1281, _hoisted_3276);\n}\nvar folder_opened_default = /* @__PURE__ */ export_helper_default(folder_opened_vue_vue_type_script_lang_default, [[\"render\", _sfc_render280], [\"__file\", \"folder-opened.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\folder-remove.vue?vue&type=script&lang.ts\nvar folder_remove_vue_vue_type_script_lang_default = {\n  name: \"FolderRemove\"\n};\n\n// src/components/folder-remove.vue\nimport { createElementVNode as _createElementVNode277, openBlock as _openBlock281, createElementBlock as _createElementBlock281 } from \"vue\";\nvar _hoisted_1282 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2281 = /* @__PURE__ */ _createElementVNode277(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32zm256 416h320v64H352v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3277 = [\n  _hoisted_2281\n];\nfunction _sfc_render281(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock281(), _createElementBlock281(\"svg\", _hoisted_1282, _hoisted_3277);\n}\nvar folder_remove_default = /* @__PURE__ */ export_helper_default(folder_remove_vue_vue_type_script_lang_default, [[\"render\", _sfc_render281], [\"__file\", \"folder-remove.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\folder.vue?vue&type=script&lang.ts\nvar folder_vue_vue_type_script_lang_default = {\n  name: \"Folder\"\n};\n\n// src/components/folder.vue\nimport { createElementVNode as _createElementVNode278, openBlock as _openBlock282, createElementBlock as _createElementBlock282 } from \"vue\";\nvar _hoisted_1283 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2282 = /* @__PURE__ */ _createElementVNode278(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3278 = [\n  _hoisted_2282\n];\nfunction _sfc_render282(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock282(), _createElementBlock282(\"svg\", _hoisted_1283, _hoisted_3278);\n}\nvar folder_default = /* @__PURE__ */ export_helper_default(folder_vue_vue_type_script_lang_default, [[\"render\", _sfc_render282], [\"__file\", \"folder.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\food.vue?vue&type=script&lang.ts\nvar food_vue_vue_type_script_lang_default = {\n  name: \"Food\"\n};\n\n// src/components/food.vue\nimport { createElementVNode as _createElementVNode279, openBlock as _openBlock283, createElementBlock as _createElementBlock283 } from \"vue\";\nvar _hoisted_1284 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2283 = /* @__PURE__ */ _createElementVNode279(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 352.576V352a288 288 0 0 1 491.072-204.224 192 192 0 0 1 274.24 204.48 64 64 0 0 1 57.216 74.24C921.6 600.512 850.048 710.656 736 756.992V800a96 96 0 0 1-96 96H384a96 96 0 0 1-96-96v-43.008c-114.048-46.336-185.6-156.48-214.528-330.496A64 64 0 0 1 128 352.64zm64-.576h64a160 160 0 0 1 320 0h64a224 224 0 0 0-448 0zm128 0h192a96 96 0 0 0-192 0zm439.424 0h68.544A128.256 128.256 0 0 0 704 192c-15.36 0-29.952 2.688-43.52 7.616 11.328 18.176 20.672 37.76 27.84 58.304A64.128 64.128 0 0 1 759.424 352zM672 768H352v32a32 32 0 0 0 32 32h256a32 32 0 0 0 32-32v-32zm-342.528-64h365.056c101.504-32.64 165.76-124.928 192.896-288H136.576c27.136 163.072 91.392 255.36 192.896 288z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3279 = [\n  _hoisted_2283\n];\nfunction _sfc_render283(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock283(), _createElementBlock283(\"svg\", _hoisted_1284, _hoisted_3279);\n}\nvar food_default = /* @__PURE__ */ export_helper_default(food_vue_vue_type_script_lang_default, [[\"render\", _sfc_render283], [\"__file\", \"food.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\football.vue?vue&type=script&lang.ts\nvar football_vue_vue_type_script_lang_default = {\n  name: \"Football\"\n};\n\n// src/components/football.vue\nimport { createElementVNode as _createElementVNode280, openBlock as _openBlock284, createElementBlock as _createElementBlock284 } from \"vue\";\nvar _hoisted_1285 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2284 = /* @__PURE__ */ _createElementVNode280(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896zm0-64a384 384 0 1 0 0-768 384 384 0 0 0 0 768z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3280 = /* @__PURE__ */ _createElementVNode280(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M186.816 268.288c16-16.384 31.616-31.744 46.976-46.08 17.472 30.656 39.808 58.112 65.984 81.28l-32.512 56.448a385.984 385.984 0 0 1-80.448-91.648zm653.696-5.312a385.92 385.92 0 0 1-83.776 96.96l-32.512-56.384a322.923 322.923 0 0 0 68.48-85.76c15.552 14.08 31.488 29.12 47.808 45.184zM465.984 445.248l11.136-63.104a323.584 323.584 0 0 0 69.76 0l11.136 63.104a387.968 387.968 0 0 1-92.032 0zm-62.72-12.8A381.824 381.824 0 0 1 320 396.544l32-55.424a319.885 319.885 0 0 0 62.464 27.712l-11.2 63.488zm300.8-35.84a381.824 381.824 0 0 1-83.328 35.84l-11.2-63.552A319.885 319.885 0 0 0 672 341.184l32 55.424zm-520.768 364.8a385.92 385.92 0 0 1 83.968-97.28l32.512 56.32c-26.88 23.936-49.856 52.352-67.52 84.032-16-13.44-32.32-27.712-48.96-43.072zm657.536.128a1442.759 1442.759 0 0 1-49.024 43.072 321.408 321.408 0 0 0-67.584-84.16l32.512-56.32c33.216 27.456 61.696 60.352 84.096 97.408zM465.92 578.752a387.968 387.968 0 0 1 92.032 0l-11.136 63.104a323.584 323.584 0 0 0-69.76 0l-11.136-63.104zm-62.72 12.8 11.2 63.552a319.885 319.885 0 0 0-62.464 27.712L320 627.392a381.824 381.824 0 0 1 83.264-35.84zm300.8 35.84-32 55.424a318.272 318.272 0 0 0-62.528-27.712l11.2-63.488c29.44 8.64 57.28 20.736 83.264 35.776z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_457 = [\n  _hoisted_2284,\n  _hoisted_3280\n];\nfunction _sfc_render284(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock284(), _createElementBlock284(\"svg\", _hoisted_1285, _hoisted_457);\n}\nvar football_default = /* @__PURE__ */ export_helper_default(football_vue_vue_type_script_lang_default, [[\"render\", _sfc_render284], [\"__file\", \"football.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\fork-spoon.vue?vue&type=script&lang.ts\nvar fork_spoon_vue_vue_type_script_lang_default = {\n  name: \"ForkSpoon\"\n};\n\n// src/components/fork-spoon.vue\nimport { createElementVNode as _createElementVNode281, openBlock as _openBlock285, createElementBlock as _createElementBlock285 } from \"vue\";\nvar _hoisted_1286 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2285 = /* @__PURE__ */ _createElementVNode281(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 410.304V96a32 32 0 0 1 64 0v314.304a96 96 0 0 0 64-90.56V96a32 32 0 0 1 64 0v223.744a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.544a160 160 0 0 1-128-156.8V96a32 32 0 0 1 64 0v223.744a96 96 0 0 0 64 90.56zM672 572.48C581.184 552.128 512 446.848 512 320c0-141.44 85.952-256 192-256s192 114.56 192 256c0 126.848-69.184 232.128-160 252.48V928a32 32 0 1 1-64 0V572.48zM704 512c66.048 0 128-82.56 128-192s-61.952-192-128-192-128 82.56-128 192 61.952 192 128 192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3281 = [\n  _hoisted_2285\n];\nfunction _sfc_render285(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock285(), _createElementBlock285(\"svg\", _hoisted_1286, _hoisted_3281);\n}\nvar fork_spoon_default = /* @__PURE__ */ export_helper_default(fork_spoon_vue_vue_type_script_lang_default, [[\"render\", _sfc_render285], [\"__file\", \"fork-spoon.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\fries.vue?vue&type=script&lang.ts\nvar fries_vue_vue_type_script_lang_default = {\n  name: \"Fries\"\n};\n\n// src/components/fries.vue\nimport { createElementVNode as _createElementVNode282, openBlock as _openBlock286, createElementBlock as _createElementBlock286 } from \"vue\";\nvar _hoisted_1287 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2286 = /* @__PURE__ */ _createElementVNode282(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M608 224v-64a32 32 0 0 0-64 0v336h26.88A64 64 0 0 0 608 484.096V224zm101.12 160A64 64 0 0 0 672 395.904V384h64V224a32 32 0 1 0-64 0v160h37.12zm74.88 0a92.928 92.928 0 0 1 91.328 110.08l-60.672 323.584A96 96 0 0 1 720.32 896H303.68a96 96 0 0 1-94.336-78.336L148.672 494.08A92.928 92.928 0 0 1 240 384h-16V224a96 96 0 0 1 188.608-25.28A95.744 95.744 0 0 1 480 197.44V160a96 96 0 0 1 188.608-25.28A96 96 0 0 1 800 224v160h-16zM670.784 512a128 128 0 0 1-99.904 48H453.12a128 128 0 0 1-99.84-48H352v-1.536a128.128 128.128 0 0 1-9.984-14.976L314.88 448H240a28.928 28.928 0 0 0-28.48 34.304L241.088 640h541.824l29.568-157.696A28.928 28.928 0 0 0 784 448h-74.88l-27.136 47.488A132.405 132.405 0 0 1 672 510.464V512h-1.216zM480 288a32 32 0 0 0-64 0v196.096A64 64 0 0 0 453.12 496H480V288zm-128 96V224a32 32 0 0 0-64 0v160h64-37.12A64 64 0 0 1 352 395.904zm-98.88 320 19.072 101.888A32 32 0 0 0 303.68 832h416.64a32 32 0 0 0 31.488-26.112L770.88 704H253.12z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3282 = [\n  _hoisted_2286\n];\nfunction _sfc_render286(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock286(), _createElementBlock286(\"svg\", _hoisted_1287, _hoisted_3282);\n}\nvar fries_default = /* @__PURE__ */ export_helper_default(fries_vue_vue_type_script_lang_default, [[\"render\", _sfc_render286], [\"__file\", \"fries.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\full-screen.vue?vue&type=script&lang.ts\nvar full_screen_vue_vue_type_script_lang_default = {\n  name: \"FullScreen\"\n};\n\n// src/components/full-screen.vue\nimport { createElementVNode as _createElementVNode283, openBlock as _openBlock287, createElementBlock as _createElementBlock287 } from \"vue\";\nvar _hoisted_1288 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2287 = /* @__PURE__ */ _createElementVNode283(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64v.064zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64l-192 .192zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64v-.064z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3283 = [\n  _hoisted_2287\n];\nfunction _sfc_render287(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock287(), _createElementBlock287(\"svg\", _hoisted_1288, _hoisted_3283);\n}\nvar full_screen_default = /* @__PURE__ */ export_helper_default(full_screen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render287], [\"__file\", \"full-screen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\goblet-full.vue?vue&type=script&lang.ts\nvar goblet_full_vue_vue_type_script_lang_default = {\n  name: \"GobletFull\"\n};\n\n// src/components/goblet-full.vue\nimport { createElementVNode as _createElementVNode284, openBlock as _openBlock288, createElementBlock as _createElementBlock288 } from \"vue\";\nvar _hoisted_1289 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2288 = /* @__PURE__ */ _createElementVNode284(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 320h512c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320zm503.936 64H264.064a256.128 256.128 0 0 0 495.872 0zM544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3284 = [\n  _hoisted_2288\n];\nfunction _sfc_render288(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock288(), _createElementBlock288(\"svg\", _hoisted_1289, _hoisted_3284);\n}\nvar goblet_full_default = /* @__PURE__ */ export_helper_default(goblet_full_vue_vue_type_script_lang_default, [[\"render\", _sfc_render288], [\"__file\", \"goblet-full.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\goblet-square-full.vue?vue&type=script&lang.ts\nvar goblet_square_full_vue_vue_type_script_lang_default = {\n  name: \"GobletSquareFull\"\n};\n\n// src/components/goblet-square-full.vue\nimport { createElementVNode as _createElementVNode285, openBlock as _openBlock289, createElementBlock as _createElementBlock289 } from \"vue\";\nvar _hoisted_1290 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2289 = /* @__PURE__ */ _createElementVNode285(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 270.912c10.048 6.72 22.464 14.912 28.992 18.624a220.16 220.16 0 0 0 114.752 30.72c30.592 0 49.408-9.472 91.072-41.152l.64-.448c52.928-40.32 82.368-55.04 132.288-54.656 55.552.448 99.584 20.8 142.72 57.408l1.536 1.28V128H256v142.912zm.96 76.288C266.368 482.176 346.88 575.872 512 576c157.44.064 237.952-85.056 253.248-209.984a952.32 952.32 0 0 1-40.192-35.712c-32.704-27.776-63.36-41.92-101.888-42.24-31.552-.256-50.624 9.28-93.12 41.6l-.576.448c-52.096 39.616-81.024 54.208-129.792 54.208-54.784 0-100.48-13.376-142.784-37.056zM480 638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.848z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3285 = [\n  _hoisted_2289\n];\nfunction _sfc_render289(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock289(), _createElementBlock289(\"svg\", _hoisted_1290, _hoisted_3285);\n}\nvar goblet_square_full_default = /* @__PURE__ */ export_helper_default(goblet_square_full_vue_vue_type_script_lang_default, [[\"render\", _sfc_render289], [\"__file\", \"goblet-square-full.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\goblet-square.vue?vue&type=script&lang.ts\nvar goblet_square_vue_vue_type_script_lang_default = {\n  name: \"GobletSquare\"\n};\n\n// src/components/goblet-square.vue\nimport { createElementVNode as _createElementVNode286, openBlock as _openBlock290, createElementBlock as _createElementBlock290 } from \"vue\";\nvar _hoisted_1291 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2290 = /* @__PURE__ */ _createElementVNode286(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 638.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912zM256 319.68c0 149.568 80 256.192 256 256.256C688.128 576 768 469.568 768 320V128H256v191.68z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3286 = [\n  _hoisted_2290\n];\nfunction _sfc_render290(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock290(), _createElementBlock290(\"svg\", _hoisted_1291, _hoisted_3286);\n}\nvar goblet_square_default = /* @__PURE__ */ export_helper_default(goblet_square_vue_vue_type_script_lang_default, [[\"render\", _sfc_render290], [\"__file\", \"goblet-square.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\goblet.vue?vue&type=script&lang.ts\nvar goblet_vue_vue_type_script_lang_default = {\n  name: \"Goblet\"\n};\n\n// src/components/goblet.vue\nimport { createElementVNode as _createElementVNode287, openBlock as _openBlock291, createElementBlock as _createElementBlock291 } from \"vue\";\nvar _hoisted_1292 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2291 = /* @__PURE__ */ _createElementVNode287(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4zM256 320a256 256 0 1 0 512 0c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3287 = [\n  _hoisted_2291\n];\nfunction _sfc_render291(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock291(), _createElementBlock291(\"svg\", _hoisted_1292, _hoisted_3287);\n}\nvar goblet_default = /* @__PURE__ */ export_helper_default(goblet_vue_vue_type_script_lang_default, [[\"render\", _sfc_render291], [\"__file\", \"goblet.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\gold-medal.vue?vue&type=script&lang.ts\nvar gold_medal_vue_vue_type_script_lang_default = {\n  name: \"GoldMedal\"\n};\n\n// src/components/gold-medal.vue\nimport { createElementVNode as _createElementVNode288, openBlock as _openBlock292, createElementBlock as _createElementBlock292 } from \"vue\";\nvar _hoisted_1293 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2292 = /* @__PURE__ */ _createElementVNode288(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m772.13 452.84 53.86-351.81c1.32-10.01-1.17-18.68-7.49-26.02S804.35 64 795.01 64H228.99v-.01h-.06c-9.33 0-17.15 3.67-23.49 11.01s-8.83 16.01-7.49 26.02l53.87 351.89C213.54 505.73 193.59 568.09 192 640c2 90.67 33.17 166.17 93.5 226.5S421.33 957.99 512 960c90.67-2 166.17-33.17 226.5-93.5 60.33-60.34 91.49-135.83 93.5-226.5-1.59-71.94-21.56-134.32-59.87-187.16zM640.01 128h117.02l-39.01 254.02c-20.75-10.64-40.74-19.73-59.94-27.28-5.92-3-11.95-5.8-18.08-8.41V128h.01zM576 128v198.76c-13.18-2.58-26.74-4.43-40.67-5.55-8.07-.8-15.85-1.2-23.33-1.2-10.54 0-21.09.66-31.64 1.96a359.844 359.844 0 0 0-32.36 4.79V128h128zm-192 0h.04v218.3c-6.22 2.66-12.34 5.5-18.36 8.56-19.13 7.54-39.02 16.6-59.66 27.16L267.01 128H384zm308.99 692.99c-48 48-108.33 73-180.99 75.01-72.66-2.01-132.99-27.01-180.99-75.01S258.01 712.66 256 640c2.01-72.66 27.01-132.99 75.01-180.99 19.67-19.67 41.41-35.47 65.22-47.41 38.33-15.04 71.15-23.92 98.44-26.65 5.07-.41 10.2-.7 15.39-.88.63-.01 1.28-.03 1.91-.03.66 0 1.35.03 2.02.04 5.11.17 10.15.46 15.13.86 27.4 2.71 60.37 11.65 98.91 26.79 23.71 11.93 45.36 27.69 64.96 47.29 48 48 73 108.33 75.01 180.99-2.01 72.65-27.01 132.98-75.01 180.98z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3288 = /* @__PURE__ */ _createElementVNode288(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 480H416v64h64v192h-64v64h192v-64h-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_458 = [\n  _hoisted_2292,\n  _hoisted_3288\n];\nfunction _sfc_render292(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock292(), _createElementBlock292(\"svg\", _hoisted_1293, _hoisted_458);\n}\nvar gold_medal_default = /* @__PURE__ */ export_helper_default(gold_medal_vue_vue_type_script_lang_default, [[\"render\", _sfc_render292], [\"__file\", \"gold-medal.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\goods-filled.vue?vue&type=script&lang.ts\nvar goods_filled_vue_vue_type_script_lang_default = {\n  name: \"GoodsFilled\"\n};\n\n// src/components/goods-filled.vue\nimport { createElementVNode as _createElementVNode289, openBlock as _openBlock293, createElementBlock as _createElementBlock293 } from \"vue\";\nvar _hoisted_1294 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2293 = /* @__PURE__ */ _createElementVNode289(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 352h640l64 544H128l64-544zm128 224h64V448h-64v128zm320 0h64V448h-64v128zM384 288h-64a192 192 0 1 1 384 0h-64a128 128 0 1 0-256 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3289 = [\n  _hoisted_2293\n];\nfunction _sfc_render293(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock293(), _createElementBlock293(\"svg\", _hoisted_1294, _hoisted_3289);\n}\nvar goods_filled_default = /* @__PURE__ */ export_helper_default(goods_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render293], [\"__file\", \"goods-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\goods.vue?vue&type=script&lang.ts\nvar goods_vue_vue_type_script_lang_default = {\n  name: \"Goods\"\n};\n\n// src/components/goods.vue\nimport { createElementVNode as _createElementVNode290, openBlock as _openBlock294, createElementBlock as _createElementBlock294 } from \"vue\";\nvar _hoisted_1295 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2294 = /* @__PURE__ */ _createElementVNode290(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M320 288v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4h131.072a32 32 0 0 1 31.808 28.8l57.6 576a32 32 0 0 1-31.808 35.2H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320zm64 0h256v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4zm-64 64H217.92l-51.2 512h690.56l-51.264-512H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3290 = [\n  _hoisted_2294\n];\nfunction _sfc_render294(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock294(), _createElementBlock294(\"svg\", _hoisted_1295, _hoisted_3290);\n}\nvar goods_default = /* @__PURE__ */ export_helper_default(goods_vue_vue_type_script_lang_default, [[\"render\", _sfc_render294], [\"__file\", \"goods.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\grape.vue?vue&type=script&lang.ts\nvar grape_vue_vue_type_script_lang_default = {\n  name: \"Grape\"\n};\n\n// src/components/grape.vue\nimport { createElementVNode as _createElementVNode291, openBlock as _openBlock295, createElementBlock as _createElementBlock295 } from \"vue\";\nvar _hoisted_1296 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2295 = /* @__PURE__ */ _createElementVNode291(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 195.2a160 160 0 0 1 96 60.8 160 160 0 1 1 146.24 254.976 160 160 0 0 1-128 224 160 160 0 1 1-292.48 0 160 160 0 0 1-128-224A160 160 0 1 1 384 256a160 160 0 0 1 96-60.8V128h-64a32 32 0 0 1 0-64h192a32 32 0 0 1 0 64h-64v67.2zM512 448a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm-256 0a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3291 = [\n  _hoisted_2295\n];\nfunction _sfc_render295(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock295(), _createElementBlock295(\"svg\", _hoisted_1296, _hoisted_3291);\n}\nvar grape_default = /* @__PURE__ */ export_helper_default(grape_vue_vue_type_script_lang_default, [[\"render\", _sfc_render295], [\"__file\", \"grape.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\grid.vue?vue&type=script&lang.ts\nvar grid_vue_vue_type_script_lang_default = {\n  name: \"Grid\"\n};\n\n// src/components/grid.vue\nimport { createElementVNode as _createElementVNode292, openBlock as _openBlock296, createElementBlock as _createElementBlock296 } from \"vue\";\nvar _hoisted_1297 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2296 = /* @__PURE__ */ _createElementVNode292(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M640 384v256H384V384h256zm64 0h192v256H704V384zm-64 512H384V704h256v192zm64 0V704h192v192H704zm-64-768v192H384V128h256zm64 0h192v192H704V128zM320 384v256H128V384h192zm0 512H128V704h192v192zm0-768v192H128V128h192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3292 = [\n  _hoisted_2296\n];\nfunction _sfc_render296(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock296(), _createElementBlock296(\"svg\", _hoisted_1297, _hoisted_3292);\n}\nvar grid_default = /* @__PURE__ */ export_helper_default(grid_vue_vue_type_script_lang_default, [[\"render\", _sfc_render296], [\"__file\", \"grid.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\guide.vue?vue&type=script&lang.ts\nvar guide_vue_vue_type_script_lang_default = {\n  name: \"Guide\"\n};\n\n// src/components/guide.vue\nimport { createElementVNode as _createElementVNode293, openBlock as _openBlock297, createElementBlock as _createElementBlock297 } from \"vue\";\nvar _hoisted_1298 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2297 = /* @__PURE__ */ _createElementVNode293(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M640 608h-64V416h64v192zm0 160v160a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V768h64v128h128V768h64zM384 608V416h64v192h-64zm256-352h-64V128H448v128h-64V96a32 32 0 0 1 32-32h192a32 32 0 0 1 32 32v160z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3293 = /* @__PURE__ */ _createElementVNode293(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m220.8 256-71.232 80 71.168 80H768V256H220.8zm-14.4-64H800a32 32 0 0 1 32 32v224a32 32 0 0 1-32 32H206.4a32 32 0 0 1-23.936-10.752l-99.584-112a32 32 0 0 1 0-42.496l99.584-112A32 32 0 0 1 206.4 192zm678.784 496-71.104 80H266.816V608h547.2l71.168 80zm-56.768-144H234.88a32 32 0 0 0-32 32v224a32 32 0 0 0 32 32h593.6a32 32 0 0 0 23.936-10.752l99.584-112a32 32 0 0 0 0-42.496l-99.584-112A32 32 0 0 0 828.48 544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_459 = [\n  _hoisted_2297,\n  _hoisted_3293\n];\nfunction _sfc_render297(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock297(), _createElementBlock297(\"svg\", _hoisted_1298, _hoisted_459);\n}\nvar guide_default = /* @__PURE__ */ export_helper_default(guide_vue_vue_type_script_lang_default, [[\"render\", _sfc_render297], [\"__file\", \"guide.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\handbag.vue?vue&type=script&lang.ts\nvar handbag_vue_vue_type_script_lang_default = {\n  name: \"Handbag\"\n};\n\n// src/components/handbag.vue\nimport { createElementVNode as _createElementVNode294, openBlock as _openBlock298, createElementBlock as _createElementBlock298 } from \"vue\";\nvar _hoisted_1299 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2298 = /* @__PURE__ */ _createElementVNode294(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M887.01 264.99c-6-5.99-13.67-8.99-23.01-8.99H704c-1.34-54.68-20.01-100.01-56-136s-81.32-54.66-136-56c-54.68 1.34-100.01 20.01-136 56s-54.66 81.32-56 136H160c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.67-8.99 23.01v640c0 9.35 2.99 17.02 8.99 23.01S150.66 960 160 960h704c9.35 0 17.02-2.99 23.01-8.99S896 937.34 896 928V288c0-9.35-2.99-17.02-8.99-23.01zM421.5 165.5c24.32-24.34 54.49-36.84 90.5-37.5 35.99.68 66.16 13.18 90.5 37.5s36.84 54.49 37.5 90.5H384c.68-35.99 13.18-66.16 37.5-90.5zM832 896H192V320h128v128h64V320h256v128h64V320h128v576z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3294 = [\n  _hoisted_2298\n];\nfunction _sfc_render298(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock298(), _createElementBlock298(\"svg\", _hoisted_1299, _hoisted_3294);\n}\nvar handbag_default = /* @__PURE__ */ export_helper_default(handbag_vue_vue_type_script_lang_default, [[\"render\", _sfc_render298], [\"__file\", \"handbag.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\headset.vue?vue&type=script&lang.ts\nvar headset_vue_vue_type_script_lang_default = {\n  name: \"Headset\"\n};\n\n// src/components/headset.vue\nimport { createElementVNode as _createElementVNode295, openBlock as _openBlock299, createElementBlock as _createElementBlock299 } from \"vue\";\nvar _hoisted_1300 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2299 = /* @__PURE__ */ _createElementVNode295(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M896 529.152V512a384 384 0 1 0-768 0v17.152A128 128 0 0 1 320 640v128a128 128 0 1 1-256 0V512a448 448 0 1 1 896 0v256a128 128 0 1 1-256 0V640a128 128 0 0 1 192-110.848zM896 640a64 64 0 0 0-128 0v128a64 64 0 0 0 128 0V640zm-768 0v128a64 64 0 0 0 128 0V640a64 64 0 1 0-128 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3295 = [\n  _hoisted_2299\n];\nfunction _sfc_render299(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock299(), _createElementBlock299(\"svg\", _hoisted_1300, _hoisted_3295);\n}\nvar headset_default = /* @__PURE__ */ export_helper_default(headset_vue_vue_type_script_lang_default, [[\"render\", _sfc_render299], [\"__file\", \"headset.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\help-filled.vue?vue&type=script&lang.ts\nvar help_filled_vue_vue_type_script_lang_default = {\n  name: \"HelpFilled\"\n};\n\n// src/components/help-filled.vue\nimport { createElementVNode as _createElementVNode296, openBlock as _openBlock300, createElementBlock as _createElementBlock300 } from \"vue\";\nvar _hoisted_1301 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2300 = /* @__PURE__ */ _createElementVNode296(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M926.784 480H701.312A192.512 192.512 0 0 0 544 322.688V97.216A416.064 416.064 0 0 1 926.784 480zm0 64A416.064 416.064 0 0 1 544 926.784V701.312A192.512 192.512 0 0 0 701.312 544h225.472zM97.28 544h225.472A192.512 192.512 0 0 0 480 701.312v225.472A416.064 416.064 0 0 1 97.216 544zm0-64A416.064 416.064 0 0 1 480 97.216v225.472A192.512 192.512 0 0 0 322.688 480H97.216z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3296 = [\n  _hoisted_2300\n];\nfunction _sfc_render300(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock300(), _createElementBlock300(\"svg\", _hoisted_1301, _hoisted_3296);\n}\nvar help_filled_default = /* @__PURE__ */ export_helper_default(help_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render300], [\"__file\", \"help-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\help.vue?vue&type=script&lang.ts\nvar help_vue_vue_type_script_lang_default = {\n  name: \"Help\"\n};\n\n// src/components/help.vue\nimport { createElementVNode as _createElementVNode297, openBlock as _openBlock301, createElementBlock as _createElementBlock301 } from \"vue\";\nvar _hoisted_1302 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2301 = /* @__PURE__ */ _createElementVNode297(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m759.936 805.248-90.944-91.008A254.912 254.912 0 0 1 512 768a254.912 254.912 0 0 1-156.992-53.76l-90.944 91.008A382.464 382.464 0 0 0 512 896c94.528 0 181.12-34.176 247.936-90.752zm45.312-45.312A382.464 382.464 0 0 0 896 512c0-94.528-34.176-181.12-90.752-247.936l-91.008 90.944C747.904 398.4 768 452.864 768 512c0 59.136-20.096 113.6-53.76 156.992l91.008 90.944zm-45.312-541.184A382.464 382.464 0 0 0 512 128c-94.528 0-181.12 34.176-247.936 90.752l90.944 91.008A254.912 254.912 0 0 1 512 256c59.136 0 113.6 20.096 156.992 53.76l90.944-91.008zm-541.184 45.312A382.464 382.464 0 0 0 128 512c0 94.528 34.176 181.12 90.752 247.936l91.008-90.944A254.912 254.912 0 0 1 256 512c0-59.136 20.096-113.6 53.76-156.992l-91.008-90.944zm417.28 394.496a194.56 194.56 0 0 0 22.528-22.528C686.912 602.56 704 559.232 704 512a191.232 191.232 0 0 0-67.968-146.56A191.296 191.296 0 0 0 512 320a191.232 191.232 0 0 0-146.56 67.968C337.088 421.44 320 464.768 320 512a191.232 191.232 0 0 0 67.968 146.56C421.44 686.912 464.768 704 512 704c47.296 0 90.56-17.088 124.032-45.44zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3297 = [\n  _hoisted_2301\n];\nfunction _sfc_render301(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock301(), _createElementBlock301(\"svg\", _hoisted_1302, _hoisted_3297);\n}\nvar help_default = /* @__PURE__ */ export_helper_default(help_vue_vue_type_script_lang_default, [[\"render\", _sfc_render301], [\"__file\", \"help.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\hide.vue?vue&type=script&lang.ts\nvar hide_vue_vue_type_script_lang_default = {\n  name: \"Hide\"\n};\n\n// src/components/hide.vue\nimport { createElementVNode as _createElementVNode298, openBlock as _openBlock302, createElementBlock as _createElementBlock302 } from \"vue\";\nvar _hoisted_1303 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2302 = /* @__PURE__ */ _createElementVNode298(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2L371.2 588.8ZM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3298 = /* @__PURE__ */ _createElementVNode298(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_460 = [\n  _hoisted_2302,\n  _hoisted_3298\n];\nfunction _sfc_render302(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock302(), _createElementBlock302(\"svg\", _hoisted_1303, _hoisted_460);\n}\nvar hide_default = /* @__PURE__ */ export_helper_default(hide_vue_vue_type_script_lang_default, [[\"render\", _sfc_render302], [\"__file\", \"hide.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\histogram.vue?vue&type=script&lang.ts\nvar histogram_vue_vue_type_script_lang_default = {\n  name: \"Histogram\"\n};\n\n// src/components/histogram.vue\nimport { createElementVNode as _createElementVNode299, openBlock as _openBlock303, createElementBlock as _createElementBlock303 } from \"vue\";\nvar _hoisted_1304 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2303 = /* @__PURE__ */ _createElementVNode299(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M416 896V128h192v768H416zm-288 0V448h192v448H128zm576 0V320h192v576H704z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3299 = [\n  _hoisted_2303\n];\nfunction _sfc_render303(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock303(), _createElementBlock303(\"svg\", _hoisted_1304, _hoisted_3299);\n}\nvar histogram_default = /* @__PURE__ */ export_helper_default(histogram_vue_vue_type_script_lang_default, [[\"render\", _sfc_render303], [\"__file\", \"histogram.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\home-filled.vue?vue&type=script&lang.ts\nvar home_filled_vue_vue_type_script_lang_default = {\n  name: \"HomeFilled\"\n};\n\n// src/components/home-filled.vue\nimport { createElementVNode as _createElementVNode300, openBlock as _openBlock304, createElementBlock as _createElementBlock304 } from \"vue\";\nvar _hoisted_1305 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2304 = /* @__PURE__ */ _createElementVNode300(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 128 128 447.936V896h255.936V640H640v256h255.936V447.936z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3300 = [\n  _hoisted_2304\n];\nfunction _sfc_render304(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock304(), _createElementBlock304(\"svg\", _hoisted_1305, _hoisted_3300);\n}\nvar home_filled_default = /* @__PURE__ */ export_helper_default(home_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render304], [\"__file\", \"home-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\hot-water.vue?vue&type=script&lang.ts\nvar hot_water_vue_vue_type_script_lang_default = {\n  name: \"HotWater\"\n};\n\n// src/components/hot-water.vue\nimport { createElementVNode as _createElementVNode301, openBlock as _openBlock305, createElementBlock as _createElementBlock305 } from \"vue\";\nvar _hoisted_1306 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2305 = /* @__PURE__ */ _createElementVNode301(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M273.067 477.867h477.866V409.6H273.067v68.267zm0 68.266v51.2A187.733 187.733 0 0 0 460.8 785.067h102.4a187.733 187.733 0 0 0 187.733-187.734v-51.2H273.067zm-34.134-204.8h546.134a34.133 34.133 0 0 1 34.133 34.134v221.866a256 256 0 0 1-256 256H460.8a256 256 0 0 1-256-256V375.467a34.133 34.133 0 0 1 34.133-34.134zM512 34.133a34.133 34.133 0 0 1 34.133 34.134v170.666a34.133 34.133 0 0 1-68.266 0V68.267A34.133 34.133 0 0 1 512 34.133zM375.467 102.4a34.133 34.133 0 0 1 34.133 34.133v102.4a34.133 34.133 0 0 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.134-34.133zm273.066 0a34.133 34.133 0 0 1 34.134 34.133v102.4a34.133 34.133 0 1 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.133-34.133zM170.667 921.668h682.666a34.133 34.133 0 1 1 0 68.267H170.667a34.133 34.133 0 1 1 0-68.267z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3301 = [\n  _hoisted_2305\n];\nfunction _sfc_render305(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock305(), _createElementBlock305(\"svg\", _hoisted_1306, _hoisted_3301);\n}\nvar hot_water_default = /* @__PURE__ */ export_helper_default(hot_water_vue_vue_type_script_lang_default, [[\"render\", _sfc_render305], [\"__file\", \"hot-water.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\house.vue?vue&type=script&lang.ts\nvar house_vue_vue_type_script_lang_default = {\n  name: \"House\"\n};\n\n// src/components/house.vue\nimport { createElementVNode as _createElementVNode302, openBlock as _openBlock306, createElementBlock as _createElementBlock306 } from \"vue\";\nvar _hoisted_1307 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2306 = /* @__PURE__ */ _createElementVNode302(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 413.952V896h640V413.952L512 147.328 192 413.952zM139.52 374.4l352-293.312a32 32 0 0 1 40.96 0l352 293.312A32 32 0 0 1 896 398.976V928a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V398.976a32 32 0 0 1 11.52-24.576z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3302 = [\n  _hoisted_2306\n];\nfunction _sfc_render306(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock306(), _createElementBlock306(\"svg\", _hoisted_1307, _hoisted_3302);\n}\nvar house_default = /* @__PURE__ */ export_helper_default(house_vue_vue_type_script_lang_default, [[\"render\", _sfc_render306], [\"__file\", \"house.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\ice-cream-round.vue?vue&type=script&lang.ts\nvar ice_cream_round_vue_vue_type_script_lang_default = {\n  name: \"IceCreamRound\"\n};\n\n// src/components/ice-cream-round.vue\nimport { createElementVNode as _createElementVNode303, openBlock as _openBlock307, createElementBlock as _createElementBlock307 } from \"vue\";\nvar _hoisted_1308 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2307 = /* @__PURE__ */ _createElementVNode303(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m308.352 489.344 226.304 226.304a32 32 0 0 0 45.248 0L783.552 512A192 192 0 1 0 512 240.448L308.352 444.16a32 32 0 0 0 0 45.248zm135.744 226.304L308.352 851.392a96 96 0 0 1-135.744-135.744l135.744-135.744-45.248-45.248a96 96 0 0 1 0-135.808L466.752 195.2A256 256 0 0 1 828.8 557.248L625.152 760.96a96 96 0 0 1-135.808 0l-45.248-45.248zM398.848 670.4 353.6 625.152 217.856 760.896a32 32 0 0 0 45.248 45.248L398.848 670.4zm248.96-384.64a32 32 0 0 1 0 45.248L466.624 512a32 32 0 1 1-45.184-45.248l180.992-181.056a32 32 0 0 1 45.248 0zm90.496 90.496a32 32 0 0 1 0 45.248L557.248 602.496A32 32 0 1 1 512 557.248l180.992-180.992a32 32 0 0 1 45.312 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3303 = [\n  _hoisted_2307\n];\nfunction _sfc_render307(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock307(), _createElementBlock307(\"svg\", _hoisted_1308, _hoisted_3303);\n}\nvar ice_cream_round_default = /* @__PURE__ */ export_helper_default(ice_cream_round_vue_vue_type_script_lang_default, [[\"render\", _sfc_render307], [\"__file\", \"ice-cream-round.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\ice-cream-square.vue?vue&type=script&lang.ts\nvar ice_cream_square_vue_vue_type_script_lang_default = {\n  name: \"IceCreamSquare\"\n};\n\n// src/components/ice-cream-square.vue\nimport { createElementVNode as _createElementVNode304, openBlock as _openBlock308, createElementBlock as _createElementBlock308 } from \"vue\";\nvar _hoisted_1309 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2308 = /* @__PURE__ */ _createElementVNode304(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M416 640h256a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32H352a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h64zm192 64v160a96 96 0 0 1-192 0V704h-64a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h320a96 96 0 0 1 96 96v448a96 96 0 0 1-96 96h-64zm-64 0h-64v160a32 32 0 1 0 64 0V704z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3304 = [\n  _hoisted_2308\n];\nfunction _sfc_render308(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock308(), _createElementBlock308(\"svg\", _hoisted_1309, _hoisted_3304);\n}\nvar ice_cream_square_default = /* @__PURE__ */ export_helper_default(ice_cream_square_vue_vue_type_script_lang_default, [[\"render\", _sfc_render308], [\"__file\", \"ice-cream-square.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\ice-cream.vue?vue&type=script&lang.ts\nvar ice_cream_vue_vue_type_script_lang_default = {\n  name: \"IceCream\"\n};\n\n// src/components/ice-cream.vue\nimport { createElementVNode as _createElementVNode305, openBlock as _openBlock309, createElementBlock as _createElementBlock309 } from \"vue\";\nvar _hoisted_1310 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2309 = /* @__PURE__ */ _createElementVNode305(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128.64 448a208 208 0 0 1 193.536-191.552 224 224 0 0 1 445.248 15.488A208.128 208.128 0 0 1 894.784 448H896L548.8 983.68a32 32 0 0 1-53.248.704L128 448h.64zm64.256 0h286.208a144 144 0 0 0-286.208 0zm351.36 0h286.272a144 144 0 0 0-286.272 0zm-294.848 64 271.808 396.608L778.24 512H249.408zM511.68 352.64a207.872 207.872 0 0 1 189.184-96.192 160 160 0 0 0-314.752 5.632c52.608 12.992 97.28 46.08 125.568 90.56z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3305 = [\n  _hoisted_2309\n];\nfunction _sfc_render309(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock309(), _createElementBlock309(\"svg\", _hoisted_1310, _hoisted_3305);\n}\nvar ice_cream_default = /* @__PURE__ */ export_helper_default(ice_cream_vue_vue_type_script_lang_default, [[\"render\", _sfc_render309], [\"__file\", \"ice-cream.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\ice-drink.vue?vue&type=script&lang.ts\nvar ice_drink_vue_vue_type_script_lang_default = {\n  name: \"IceDrink\"\n};\n\n// src/components/ice-drink.vue\nimport { createElementVNode as _createElementVNode306, openBlock as _openBlock310, createElementBlock as _createElementBlock310 } from \"vue\";\nvar _hoisted_1311 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2310 = /* @__PURE__ */ _createElementVNode306(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 448v128h239.68l16.064-128H512zm-64 0H256.256l16.064 128H448V448zm64-255.36V384h247.744A256.128 256.128 0 0 0 512 192.64zm-64 8.064A256.448 256.448 0 0 0 264.256 384H448V200.704zm64-72.064A320.128 320.128 0 0 1 825.472 384H896a32 32 0 1 1 0 64h-64v1.92l-56.96 454.016A64 64 0 0 1 711.552 960H312.448a64 64 0 0 1-63.488-56.064L192 449.92V448h-64a32 32 0 0 1 0-64h70.528A320.384 320.384 0 0 1 448 135.04V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H544a32 32 0 0 0-32 32v32.64zM743.68 640H280.32l32.128 256h399.104l32.128-256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3306 = [\n  _hoisted_2310\n];\nfunction _sfc_render310(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock310(), _createElementBlock310(\"svg\", _hoisted_1311, _hoisted_3306);\n}\nvar ice_drink_default = /* @__PURE__ */ export_helper_default(ice_drink_vue_vue_type_script_lang_default, [[\"render\", _sfc_render310], [\"__file\", \"ice-drink.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\ice-tea.vue?vue&type=script&lang.ts\nvar ice_tea_vue_vue_type_script_lang_default = {\n  name: \"IceTea\"\n};\n\n// src/components/ice-tea.vue\nimport { createElementVNode as _createElementVNode307, openBlock as _openBlock311, createElementBlock as _createElementBlock311 } from \"vue\";\nvar _hoisted_1312 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2311 = /* @__PURE__ */ _createElementVNode307(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M197.696 259.648a320.128 320.128 0 0 1 628.608 0A96 96 0 0 1 896 352v64a96 96 0 0 1-71.616 92.864l-49.408 395.072A64 64 0 0 1 711.488 960H312.512a64 64 0 0 1-63.488-56.064l-49.408-395.072A96 96 0 0 1 128 416v-64a96 96 0 0 1 69.696-92.352zM264.064 256h495.872a256.128 256.128 0 0 0-495.872 0zm495.424 256H264.512l48 384h398.976l48-384zM224 448h576a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32zm160 192h64v64h-64v-64zm192 64h64v64h-64v-64zm-128 64h64v64h-64v-64zm64-192h64v64h-64v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3307 = [\n  _hoisted_2311\n];\nfunction _sfc_render311(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock311(), _createElementBlock311(\"svg\", _hoisted_1312, _hoisted_3307);\n}\nvar ice_tea_default = /* @__PURE__ */ export_helper_default(ice_tea_vue_vue_type_script_lang_default, [[\"render\", _sfc_render311], [\"__file\", \"ice-tea.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\info-filled.vue?vue&type=script&lang.ts\nvar info_filled_vue_vue_type_script_lang_default = {\n  name: \"InfoFilled\"\n};\n\n// src/components/info-filled.vue\nimport { createElementVNode as _createElementVNode308, openBlock as _openBlock312, createElementBlock as _createElementBlock312 } from \"vue\";\nvar _hoisted_1313 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2312 = /* @__PURE__ */ _createElementVNode308(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64zm67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344zM590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3308 = [\n  _hoisted_2312\n];\nfunction _sfc_render312(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock312(), _createElementBlock312(\"svg\", _hoisted_1313, _hoisted_3308);\n}\nvar info_filled_default = /* @__PURE__ */ export_helper_default(info_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render312], [\"__file\", \"info-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\iphone.vue?vue&type=script&lang.ts\nvar iphone_vue_vue_type_script_lang_default = {\n  name: \"Iphone\"\n};\n\n// src/components/iphone.vue\nimport { createElementVNode as _createElementVNode309, openBlock as _openBlock313, createElementBlock as _createElementBlock313 } from \"vue\";\nvar _hoisted_1314 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2313 = /* @__PURE__ */ _createElementVNode309(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M224 768v96.064a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V768H224zm0-64h576V160a64 64 0 0 0-64-64H288a64 64 0 0 0-64 64v544zm32 288a96 96 0 0 1-96-96V128a96 96 0 0 1 96-96h512a96 96 0 0 1 96 96v768a96 96 0 0 1-96 96H256zm304-144a48 48 0 1 1-96 0 48 48 0 0 1 96 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3309 = [\n  _hoisted_2313\n];\nfunction _sfc_render313(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock313(), _createElementBlock313(\"svg\", _hoisted_1314, _hoisted_3309);\n}\nvar iphone_default = /* @__PURE__ */ export_helper_default(iphone_vue_vue_type_script_lang_default, [[\"render\", _sfc_render313], [\"__file\", \"iphone.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\key.vue?vue&type=script&lang.ts\nvar key_vue_vue_type_script_lang_default = {\n  name: \"Key\"\n};\n\n// src/components/key.vue\nimport { createElementVNode as _createElementVNode310, openBlock as _openBlock314, createElementBlock as _createElementBlock314 } from \"vue\";\nvar _hoisted_1315 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2314 = /* @__PURE__ */ _createElementVNode310(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M448 456.064V96a32 32 0 0 1 32-32.064L672 64a32 32 0 0 1 0 64H512v128h160a32 32 0 0 1 0 64H512v128a256 256 0 1 1-64 8.064zM512 896a192 192 0 1 0 0-384 192 192 0 0 0 0 384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3310 = [\n  _hoisted_2314\n];\nfunction _sfc_render314(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock314(), _createElementBlock314(\"svg\", _hoisted_1315, _hoisted_3310);\n}\nvar key_default = /* @__PURE__ */ export_helper_default(key_vue_vue_type_script_lang_default, [[\"render\", _sfc_render314], [\"__file\", \"key.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\knife-fork.vue?vue&type=script&lang.ts\nvar knife_fork_vue_vue_type_script_lang_default = {\n  name: \"KnifeFork\"\n};\n\n// src/components/knife-fork.vue\nimport { createElementVNode as _createElementVNode311, openBlock as _openBlock315, createElementBlock as _createElementBlock315 } from \"vue\";\nvar _hoisted_1316 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2315 = /* @__PURE__ */ _createElementVNode311(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 410.56V96a32 32 0 0 1 64 0v314.56A96 96 0 0 0 384 320V96a32 32 0 0 1 64 0v224a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.8A160 160 0 0 1 128 320V96a32 32 0 0 1 64 0v224a96 96 0 0 0 64 90.56zm384-250.24V544h126.72c-3.328-78.72-12.928-147.968-28.608-207.744-14.336-54.528-46.848-113.344-98.112-175.872zM640 608v320a32 32 0 1 1-64 0V64h64c85.312 89.472 138.688 174.848 160 256 21.312 81.152 32 177.152 32 288H640z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3311 = [\n  _hoisted_2315\n];\nfunction _sfc_render315(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock315(), _createElementBlock315(\"svg\", _hoisted_1316, _hoisted_3311);\n}\nvar knife_fork_default = /* @__PURE__ */ export_helper_default(knife_fork_vue_vue_type_script_lang_default, [[\"render\", _sfc_render315], [\"__file\", \"knife-fork.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\lightning.vue?vue&type=script&lang.ts\nvar lightning_vue_vue_type_script_lang_default = {\n  name: \"Lightning\"\n};\n\n// src/components/lightning.vue\nimport { createElementVNode as _createElementVNode312, openBlock as _openBlock316, createElementBlock as _createElementBlock316 } from \"vue\";\nvar _hoisted_1317 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2316 = /* @__PURE__ */ _createElementVNode312(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M288 671.36v64.128A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 736 734.016v-64.768a192 192 0 0 0 3.328-377.92l-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 91.968 70.464 167.36 160.256 175.232z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3312 = /* @__PURE__ */ _createElementVNode312(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M416 736a32 32 0 0 1-27.776-47.872l128-224a32 32 0 1 1 55.552 31.744L471.168 672H608a32 32 0 0 1 27.776 47.872l-128 224a32 32 0 1 1-55.68-31.744L552.96 736H416z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_461 = [\n  _hoisted_2316,\n  _hoisted_3312\n];\nfunction _sfc_render316(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock316(), _createElementBlock316(\"svg\", _hoisted_1317, _hoisted_461);\n}\nvar lightning_default = /* @__PURE__ */ export_helper_default(lightning_vue_vue_type_script_lang_default, [[\"render\", _sfc_render316], [\"__file\", \"lightning.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\link.vue?vue&type=script&lang.ts\nvar link_vue_vue_type_script_lang_default = {\n  name: \"Link\"\n};\n\n// src/components/link.vue\nimport { createElementVNode as _createElementVNode313, openBlock as _openBlock317, createElementBlock as _createElementBlock317 } from \"vue\";\nvar _hoisted_1318 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2317 = /* @__PURE__ */ _createElementVNode313(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M715.648 625.152 670.4 579.904l90.496-90.56c75.008-74.944 85.12-186.368 22.656-248.896-62.528-62.464-173.952-52.352-248.96 22.656L444.16 353.6l-45.248-45.248 90.496-90.496c100.032-99.968 251.968-110.08 339.456-22.656 87.488 87.488 77.312 239.424-22.656 339.456l-90.496 90.496zm-90.496 90.496-90.496 90.496C434.624 906.112 282.688 916.224 195.2 828.8c-87.488-87.488-77.312-239.424 22.656-339.456l90.496-90.496 45.248 45.248-90.496 90.56c-75.008 74.944-85.12 186.368-22.656 248.896 62.528 62.464 173.952 52.352 248.96-22.656l90.496-90.496 45.248 45.248zm0-362.048 45.248 45.248L398.848 670.4 353.6 625.152 625.152 353.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3313 = [\n  _hoisted_2317\n];\nfunction _sfc_render317(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock317(), _createElementBlock317(\"svg\", _hoisted_1318, _hoisted_3313);\n}\nvar link_default = /* @__PURE__ */ export_helper_default(link_vue_vue_type_script_lang_default, [[\"render\", _sfc_render317], [\"__file\", \"link.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\list.vue?vue&type=script&lang.ts\nvar list_vue_vue_type_script_lang_default = {\n  name: \"List\"\n};\n\n// src/components/list.vue\nimport { createElementVNode as _createElementVNode314, openBlock as _openBlock318, createElementBlock as _createElementBlock318 } from \"vue\";\nvar _hoisted_1319 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2318 = /* @__PURE__ */ _createElementVNode314(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 192h160v736H160V192h160v64h384v-64zM288 512h448v-64H288v64zm0 256h448v-64H288v64zm96-576V96h256v96H384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3314 = [\n  _hoisted_2318\n];\nfunction _sfc_render318(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock318(), _createElementBlock318(\"svg\", _hoisted_1319, _hoisted_3314);\n}\nvar list_default = /* @__PURE__ */ export_helper_default(list_vue_vue_type_script_lang_default, [[\"render\", _sfc_render318], [\"__file\", \"list.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\loading.vue?vue&type=script&lang.ts\nvar loading_vue_vue_type_script_lang_default = {\n  name: \"Loading\"\n};\n\n// src/components/loading.vue\nimport { createElementVNode as _createElementVNode315, openBlock as _openBlock319, createElementBlock as _createElementBlock319 } from \"vue\";\nvar _hoisted_1320 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2319 = /* @__PURE__ */ _createElementVNode315(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3315 = [\n  _hoisted_2319\n];\nfunction _sfc_render319(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock319(), _createElementBlock319(\"svg\", _hoisted_1320, _hoisted_3315);\n}\nvar loading_default = /* @__PURE__ */ export_helper_default(loading_vue_vue_type_script_lang_default, [[\"render\", _sfc_render319], [\"__file\", \"loading.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\location-filled.vue?vue&type=script&lang.ts\nvar location_filled_vue_vue_type_script_lang_default = {\n  name: \"LocationFilled\"\n};\n\n// src/components/location-filled.vue\nimport { createElementVNode as _createElementVNode316, openBlock as _openBlock320, createElementBlock as _createElementBlock320 } from \"vue\";\nvar _hoisted_1321 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2320 = /* @__PURE__ */ _createElementVNode316(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 928c23.936 0 117.504-68.352 192.064-153.152C803.456 661.888 864 535.808 864 416c0-189.632-155.84-320-352-320S160 226.368 160 416c0 120.32 60.544 246.4 159.936 359.232C394.432 859.84 488 928 512 928zm0-435.2a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 140.8a204.8 204.8 0 1 1 0-409.6 204.8 204.8 0 0 1 0 409.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3316 = [\n  _hoisted_2320\n];\nfunction _sfc_render320(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock320(), _createElementBlock320(\"svg\", _hoisted_1321, _hoisted_3316);\n}\nvar location_filled_default = /* @__PURE__ */ export_helper_default(location_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render320], [\"__file\", \"location-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\location-information.vue?vue&type=script&lang.ts\nvar location_information_vue_vue_type_script_lang_default = {\n  name: \"LocationInformation\"\n};\n\n// src/components/location-information.vue\nimport { createElementVNode as _createElementVNode317, openBlock as _openBlock321, createElementBlock as _createElementBlock321 } from \"vue\";\nvar _hoisted_1322 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2321 = /* @__PURE__ */ _createElementVNode317(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3317 = /* @__PURE__ */ _createElementVNode317(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_462 = /* @__PURE__ */ _createElementVNode317(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_527 = [\n  _hoisted_2321,\n  _hoisted_3317,\n  _hoisted_462\n];\nfunction _sfc_render321(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock321(), _createElementBlock321(\"svg\", _hoisted_1322, _hoisted_527);\n}\nvar location_information_default = /* @__PURE__ */ export_helper_default(location_information_vue_vue_type_script_lang_default, [[\"render\", _sfc_render321], [\"__file\", \"location-information.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\location.vue?vue&type=script&lang.ts\nvar location_vue_vue_type_script_lang_default = {\n  name: \"Location\"\n};\n\n// src/components/location.vue\nimport { createElementVNode as _createElementVNode318, openBlock as _openBlock322, createElementBlock as _createElementBlock322 } from \"vue\";\nvar _hoisted_1323 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2322 = /* @__PURE__ */ _createElementVNode318(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3318 = /* @__PURE__ */ _createElementVNode318(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_463 = [\n  _hoisted_2322,\n  _hoisted_3318\n];\nfunction _sfc_render322(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock322(), _createElementBlock322(\"svg\", _hoisted_1323, _hoisted_463);\n}\nvar location_default = /* @__PURE__ */ export_helper_default(location_vue_vue_type_script_lang_default, [[\"render\", _sfc_render322], [\"__file\", \"location.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\lock.vue?vue&type=script&lang.ts\nvar lock_vue_vue_type_script_lang_default = {\n  name: \"Lock\"\n};\n\n// src/components/lock.vue\nimport { createElementVNode as _createElementVNode319, openBlock as _openBlock323, createElementBlock as _createElementBlock323 } from \"vue\";\nvar _hoisted_1324 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2323 = /* @__PURE__ */ _createElementVNode319(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32H224zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3319 = /* @__PURE__ */ _createElementVNode319(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32zm192-160v-64a192 192 0 1 0-384 0v64h384zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_464 = [\n  _hoisted_2323,\n  _hoisted_3319\n];\nfunction _sfc_render323(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock323(), _createElementBlock323(\"svg\", _hoisted_1324, _hoisted_464);\n}\nvar lock_default = /* @__PURE__ */ export_helper_default(lock_vue_vue_type_script_lang_default, [[\"render\", _sfc_render323], [\"__file\", \"lock.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-eye-hide.vue?vue&type=script&lang.ts\nvar login_eye_hide_vue_vue_type_script_lang_default = {\n  name: \"LoginEyeHide\"\n};\n\n// src/components/login-eye-hide.vue\nimport { createElementVNode as _createElementVNode320, openBlock as _openBlock324, createElementBlock as _createElementBlock324 } from \"vue\";\nvar _hoisted_1325 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2324 = /* @__PURE__ */ _createElementVNode320(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M275.2 333.86666666c-76.8 44.8-137.6 112-176 192 73.6 153.6 233.6 256 412.8 256 60.8 0 121.6-12.8 176-35.2l-64-64c-32 22.4-70.4 35.2-112 35.2-105.6 0-192-86.4-192-192 0-41.6 12.8-80 35.2-112L275.2 333.86666666zM230.4 285.86666666L182.4 241.06666666c-12.8-12.8-12.8-32 0-44.8 12.8-12.8 32-12.8 44.8 0l611.2 611.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0L736 794.66666666c-70.4 32-147.2 48-224 48-211.2 0-396.8-121.6-476.8-307.2-3.2-3.2-3.2-6.4-3.2-12.8 0-3.2 0-9.6 3.2-12.8 38.4-89.6 108.8-169.6 195.2-224z m172.8 172.8c-12.8 19.2-19.2 41.6-19.2 64 0 70.4 57.6 128 128 128 22.4 0 44.8-6.4 64-19.2L403.2 458.66666666zM992 522.66666666c0 6.4 0 12.8-3.2 19.2-28.8 60.8-67.2 118.4-118.4 163.2-12.8 12.8-32 9.6-44.8-3.2s-9.6-32 3.2-44.8c41.6-38.4 73.6-83.2 99.2-134.4-73.6-153.6-233.6-256-412.8-256-32 0-60.8 3.2-92.8 9.6-16 3.2-35.2-6.4-38.4-25.6s6.4-35.2 25.6-38.4c32-6.4 67.2-9.6 102.4-9.6 208 0 393.6 121.6 476.8 300.8 3.2 9.6 3.2 16 3.2 19.2z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3320 = [\n  _hoisted_2324\n];\nfunction _sfc_render324(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock324(), _createElementBlock324(\"svg\", _hoisted_1325, _hoisted_3320);\n}\nvar login_eye_hide_default = /* @__PURE__ */ export_helper_default(login_eye_hide_vue_vue_type_script_lang_default, [[\"render\", _sfc_render324], [\"__file\", \"login-eye-hide.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-eye-hide1.vue?vue&type=script&lang.ts\nvar login_eye_hide1_vue_vue_type_script_lang_default = {\n  name: \"LoginEyeHide1\"\n};\n\n// src/components/login-eye-hide1.vue\nimport { createElementVNode as _createElementVNode321, openBlock as _openBlock325, createElementBlock as _createElementBlock325 } from \"vue\";\nvar _hoisted_1326 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2325 = /* @__PURE__ */ _createElementVNode321(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M925.984 415.168C825.152 278.528 677.152 192 511.872 192 346.56 192 199.2 278.528 97.76 415.168c-44.768 60.256-44.768 149.76 0 210.048 101.44 136.64 249.408 223.168 414.08 223.168 165.312 0 312.704-86.528 414.144-223.168 44.768-60.256 44.768-149.76 0-210.048zM512 734.208a208.224 208.224 0 0 1-208-208c0-114.688 93.312-208 208-208s208 93.312 208 208c0 114.72-93.312 208-208 208z m0-352a144.064 144.064 0 0 0-144 144c0 79.52 64.512 144 144 144s144-64.48 144-144c0-79.456-64.512-144-144-144z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3321 = [\n  _hoisted_2325\n];\nfunction _sfc_render325(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock325(), _createElementBlock325(\"svg\", _hoisted_1326, _hoisted_3321);\n}\nvar login_eye_hide1_default = /* @__PURE__ */ export_helper_default(login_eye_hide1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render325], [\"__file\", \"login-eye-hide1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-eye-hide2.vue?vue&type=script&lang.ts\nvar login_eye_hide2_vue_vue_type_script_lang_default = {\n  name: \"LoginEyeHide2\"\n};\n\n// src/components/login-eye-hide2.vue\nimport { createElementVNode as _createElementVNode322, openBlock as _openBlock326, createElementBlock as _createElementBlock326 } from \"vue\";\nvar _hoisted_1327 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2326 = /* @__PURE__ */ _createElementVNode322(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M816.735 392.609c23.948-16.884 48.504-34.194 73.666-51.93 45.496 43.008 83.948 94.01 113.095 151.396l10.12 19.925-10.12 19.925C910.156 715.705 721.366 834 511.5 834c-85.629 0-167.748-19.693-241.308-55.493a126426.42 126426.42 0 0 1 84.456-59.764C403.996 736.477 456.897 746 511.5 746c168.708 0 321.167-90.915 402.8-234a464.333 464.333 0 0 0-97.565-119.391z m-139.41-84.022C625.44 288.718 569.427 278 511.5 278c-168.708 0-321.167 90.915-402.8 234a464.315 464.315 0 0 0 103.832 124.777 65416.053 65416.053 0 0 0-73.757 52.294c-48.197-44.187-88.815-97.18-119.27-157.146L9.384 512l10.12-19.925C112.844 308.295 301.632 190 511.5 190c88.831 0 173.886 21.194 249.525 59.577a862427.371 862427.371 0 0 0-83.7 59.01zM443.857 655.699A429587.844 429587.844 0 0 1 670.2 495.944c0.53 5.28 0.801 10.636 0.801 16.056 0 87.813-71.187 159-159 159-24.386 0-47.49-5.49-68.143-15.301z m-89.033-119.54A160.242 160.242 0 0 1 353 512c0-87.813 71.187-159 159-159 27.292 0 52.977 6.876 75.419 18.99-40.078 28.27-77.89 54.947-113.456 80.048a71.196 71.196 0 0 0-5.619 3.965 321235.405 321235.405 0 0 0-113.52 80.155zM115.39 851.515c-19.018 15.127-46.698 11.973-61.825-7.045-15.127-19.018-11.973-46.698 7.045-61.825 16.64-13.236 299.253-213.08 864.8-611.613 19.864-13.998 47.314-9.242 61.312 10.622 13.998 19.864 9.242 47.314-10.622 61.312-553.782 390.242-846.339 597.118-860.71 608.549z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3322 = [\n  _hoisted_2326\n];\nfunction _sfc_render326(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock326(), _createElementBlock326(\"svg\", _hoisted_1327, _hoisted_3322);\n}\nvar login_eye_hide2_default = /* @__PURE__ */ export_helper_default(login_eye_hide2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render326], [\"__file\", \"login-eye-hide2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-eye-show.vue?vue&type=script&lang.ts\nvar login_eye_show_vue_vue_type_script_lang_default = {\n  name: \"LoginEyeShow\"\n};\n\n// src/components/login-eye-show.vue\nimport { createElementVNode as _createElementVNode323, openBlock as _openBlock327, createElementBlock as _createElementBlock327 } from \"vue\";\nvar _hoisted_1328 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2327 = /* @__PURE__ */ _createElementVNode323(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M835.12888853 495.50222186l63.71555627 109.22666667c4.55111147 9.10222187 4.55111147 22.7555552-9.10222293 31.85777813-4.55111147 0-9.10222187 4.55111147-9.10222187 4.55111147-9.10222187 0-13.65333333-4.55111147-18.2044448-9.10222294l-59.16444373-104.6755552c-31.85777813 18.2044448-68.26666667 36.40888853-104.67555627 45.51111147l31.85777813 113.77777707c4.55111147 13.65333333-4.55111147 22.7555552-18.2044448 27.30666666h-4.5511104c-9.10222187 0-18.2044448-4.55111147-22.75555626-18.20444373L648.53333333 581.97333333c-36.40888853 9.10222187-72.81777813 13.65333333-113.77777813 13.65333333v113.77777813c0 13.65333333-9.10222187 22.7555552-22.7555552 22.7555552s-22.7555552-9.10222187-22.7555552-22.7555552V600.17777813c-40.96 0-77.36888853-4.55111147-113.77777813-13.65333334l-31.85777814 113.77777707c-4.55111147 9.10222187-13.65333333 18.2044448-22.7555552 18.2044448h-4.55111146c-13.65333333-4.55111147-18.2044448-13.65333333-18.20444374-27.30666667l31.85777707-122.88c-36.40888853-13.65333333-72.81777813-27.30666667-104.6755552-45.51111146L166.1155552 627.48444479c-4.55111147 9.10222187-13.65333333 9.10222187-18.20444373 9.10222187s-9.10222187 0-9.10222294-4.55111147c-9.10222187-4.55111147-13.65333333-18.2044448-9.10222186-31.85777706L193.42222187 490.95111146c-50.06222187-36.40888853-95.57333333-81.92-131.98222187-136.53333333-9.10222187-4.55111147-4.55111147-18.2044448 4.55111147-22.75555627 13.65333333-9.10222187 27.30666667-4.55111147 31.85777706 4.55111147C184.32 472.74666666 343.60888853 554.66666666 512 554.66666666s327.68-81.92 414.15111147-218.45333333c9.10222187-9.10222187 22.7555552-13.65333333 31.85777706-9.10222187 9.10222187 4.55111147 13.65333333 22.7555552 9.10222294 31.85777707-36.40888853 54.61333333-81.92 100.1244448-131.98222294 136.53333333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3323 = [\n  _hoisted_2327\n];\nfunction _sfc_render327(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock327(), _createElementBlock327(\"svg\", _hoisted_1328, _hoisted_3323);\n}\nvar login_eye_show_default = /* @__PURE__ */ export_helper_default(login_eye_show_vue_vue_type_script_lang_default, [[\"render\", _sfc_render327], [\"__file\", \"login-eye-show.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-eye-show1.vue?vue&type=script&lang.ts\nvar login_eye_show1_vue_vue_type_script_lang_default = {\n  name: \"LoginEyeShow1\"\n};\n\n// src/components/login-eye-show1.vue\nimport { createElementVNode as _createElementVNode324, openBlock as _openBlock328, createElementBlock as _createElementBlock328 } from \"vue\";\nvar _hoisted_1329 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2328 = /* @__PURE__ */ _createElementVNode324(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M913.5 591.2L849 554c49-53.3 78-97.3 78-97.3s-185.8-283-415-283-415 283-415 283 29 44 78 97.3l-64.5 37.2c-9 5.2-12.1 16.7-6.9 25.8 5.2 9 16.7 12.1 25.8 6.9L202 582c33.1 33 72.9 67.1 117.4 95.2l-50 86.7c-5.2 9-2.1 20.6 6.9 25.8 9 5.2 20.6 2.1 25.8-6.9l50-86.6c43.8 23.2 91.3 39.4 141.2 42.7v95c0 10.4 8.4 18.9 18.9 18.9 10.4 0 18.9-8.4 18.9-18.9v-95c49.9-3.3 97.4-19.6 141.2-42.7l50 86.6c5.2 9 16.7 12.1 25.8 6.9 9-5.2 12.1-16.7 6.9-25.8l-50-86.7c44.5-28.1 84.3-62.2 117.4-95.2l72.6 41.9c9 5.2 20.6 2.1 25.8-6.9 4.8-9 1.7-20.6-7.3-25.8zM512 664.1c-117 0-223.8-84.5-294.9-158.2 1.6-7.3 3.5-14.5 5.6-21.6 68 72.5 174.6 161 289.3 161 114.5 0 221.2-88.6 289.3-161.1 2.1 7.1 4 14.3 5.6 21.6-71.2 73.7-178.2 158.3-294.9 158.3z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3324 = [\n  _hoisted_2328\n];\nfunction _sfc_render328(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock328(), _createElementBlock328(\"svg\", _hoisted_1329, _hoisted_3324);\n}\nvar login_eye_show1_default = /* @__PURE__ */ export_helper_default(login_eye_show1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render328], [\"__file\", \"login-eye-show1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-eye-show2.vue?vue&type=script&lang.ts\nvar login_eye_show2_vue_vue_type_script_lang_default = {\n  name: \"LoginEyeShow2\"\n};\n\n// src/components/login-eye-show2.vue\nimport { createElementVNode as _createElementVNode325, openBlock as _openBlock329, createElementBlock as _createElementBlock329 } from \"vue\";\nvar _hoisted_1330 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2329 = /* @__PURE__ */ _createElementVNode325(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M511.5 746c168.708 0 321.167-90.915 402.8-234-81.633-143.085-234.092-234-402.8-234s-321.167 90.915-402.8 234c81.633 143.085 234.092 234 402.8 234zM19.504 492.075C112.844 308.295 301.634 190 511.5 190c209.867 0 398.655 118.296 491.996 302.075l10.12 19.925-10.12 19.925C910.156 715.705 721.366 834 511.5 834c-209.867 0-398.655-118.296-491.996-302.075L9.384 512l10.12-19.925zM512 671c-87.813 0-159-71.187-159-159s71.187-159 159-159 159 71.187 159 159-71.187 159-159 159z m0-88c39.212 0 71-31.788 71-71s-31.788-71-71-71-71 31.788-71 71 31.788 71 71 71z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3325 = [\n  _hoisted_2329\n];\nfunction _sfc_render329(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock329(), _createElementBlock329(\"svg\", _hoisted_1330, _hoisted_3325);\n}\nvar login_eye_show2_default = /* @__PURE__ */ export_helper_default(login_eye_show2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render329], [\"__file\", \"login-eye-show2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-mima12.vue?vue&type=script&lang.ts\nvar login_mima12_vue_vue_type_script_lang_default = {\n  name: \"LoginMima12\"\n};\n\n// src/components/login-mima12.vue\nimport { createElementVNode as _createElementVNode326, openBlock as _openBlock330, createElementBlock as _createElementBlock330 } from \"vue\";\nvar _hoisted_1331 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2330 = /* @__PURE__ */ _createElementVNode326(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M764 440H376V272a136 136 0 0 1 272 0v60a36 36 0 0 0 72 0v-60.08C720 157.08 626.85 64 512 64s-208 93.08-208 207.92V440h-44c-55 0-100 45-100 100v320c0 55 45 100 100 100h504c55 0 100-45 100-100V540c0-55-45-100-100-100z m28 398a50.15 50.15 0 0 1-50 50H282a50.15 50.15 0 0 1-50-50V562a50.15 50.15 0 0 1 50-50h460a50.15 50.15 0 0 1 50 50z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3326 = /* @__PURE__ */ _createElementVNode326(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M376 620m36 0l0 0q36 0 36 36l0 88q0 36-36 36l0 0q-36 0-36-36l0-88q0-36 36-36Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_465 = /* @__PURE__ */ _createElementVNode326(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M576 620m36 0l0 0q36 0 36 36l0 88q0 36-36 36l0 0q-36 0-36-36l0-88q0-36 36-36Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_528 = [\n  _hoisted_2330,\n  _hoisted_3326,\n  _hoisted_465\n];\nfunction _sfc_render330(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock330(), _createElementBlock330(\"svg\", _hoisted_1331, _hoisted_528);\n}\nvar login_mima12_default = /* @__PURE__ */ export_helper_default(login_mima12_vue_vue_type_script_lang_default, [[\"render\", _sfc_render330], [\"__file\", \"login-mima12.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-password.vue?vue&type=script&lang.ts\nvar login_password_vue_vue_type_script_lang_default = {\n  name: \"LoginPassword\"\n};\n\n// src/components/login-password.vue\nimport { createElementVNode as _createElementVNode327, openBlock as _openBlock331, createElementBlock as _createElementBlock331 } from \"vue\";\nvar _hoisted_1332 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2331 = /* @__PURE__ */ _createElementVNode327(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M811.1 370l-79.8 0c0-128.3-97.9-226.2-222.9-226.2-125 0-222.9 98-222.9 226.2l-79.8 0c0-153.9 135.8-306.1 302.7-306.1C675.3 64 811.1 216.1 811.1 370L811.1 370zM811.1 370\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3327 = /* @__PURE__ */ _createElementVNode327(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M858.3 501.2c0-44.1-35.8-79.8-79.8-79.8L245.6 421.4c-44.1 0-79.8 35.8-79.8 79.8l0 379c0 44.1 35.8 79.8 79.8 79.8l532.9 0c44.1 0 79.8-35.8 79.8-79.8L858.3 501.2 858.3 501.2zM576.1 797.5c0 33.1-26.8 59.9-59.9 59.9l-8.5 0c-33.1 0-59.9-26.8-59.9-59.9L447.8 635.1c0-33.1 26.8-59.9 59.9-59.9l8.5 0c33.1 0 59.9 26.8 59.9 59.9L576.1 797.5 576.1 797.5zM576.1 797.5\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_466 = [\n  _hoisted_2331,\n  _hoisted_3327\n];\nfunction _sfc_render331(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock331(), _createElementBlock331(\"svg\", _hoisted_1332, _hoisted_466);\n}\nvar login_password_default = /* @__PURE__ */ export_helper_default(login_password_vue_vue_type_script_lang_default, [[\"render\", _sfc_render331], [\"__file\", \"login-password.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-password2.vue?vue&type=script&lang.ts\nvar login_password2_vue_vue_type_script_lang_default = {\n  name: \"LoginPassword2\"\n};\n\n// src/components/login-password2.vue\nimport { createElementVNode as _createElementVNode328, openBlock as _openBlock332, createElementBlock as _createElementBlock332 } from \"vue\";\nvar _hoisted_1333 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2332 = /* @__PURE__ */ _createElementVNode328(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M829.99038103 374.93946595l-98.68265244 0 0-76.76353043C731.30772859 139.32055515 658.13265825 45.96622222 512 45.96622222S292.69227141 139.32055515 292.69227141 298.17593552l0 76.76353043L183.0345235 374.93946595c-30.29219555 0-54.82887395 35.50400663-54.82887395 65.78843497l0 427.65589618c0 30.16015265 23.4881024 62.4174573 52.18801587 71.66822779l65.60202146 21.16570074c28.69991348 9.25853772 76.84896995 16.83158661 106.99358814 16.8315866l317.99814827 0c30.15238542 0 78.31697635-7.57304889 107.02465706-16.8315866l65.59425423-21.16570074c28.69214625-9.24300325 52.16471419-41.50807515 52.16471419-71.66822779L895.77104877 440.72013369C895.78658323 410.44347259 860.28257659 374.93946595 829.99038103 374.93946595zM402.34225209 276.24127905c0-79.22574222 43.71396835-120.62507615 109.65774791-120.62507615 65.93601232 0 109.64998068 41.39933392 109.64998068 120.62507615l0 98.6981869L402.34225209 374.93946595 402.34225209 276.24127905z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3328 = [\n  _hoisted_2332\n];\nfunction _sfc_render332(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock332(), _createElementBlock332(\"svg\", _hoisted_1333, _hoisted_3328);\n}\nvar login_password2_default = /* @__PURE__ */ export_helper_default(login_password2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render332], [\"__file\", \"login-password2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-password3.vue?vue&type=script&lang.ts\nvar login_password3_vue_vue_type_script_lang_default = {\n  name: \"LoginPassword3\"\n};\n\n// src/components/login-password3.vue\nimport { createElementVNode as _createElementVNode329, openBlock as _openBlock333, createElementBlock as _createElementBlock333 } from \"vue\";\nvar _hoisted_1334 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2333 = /* @__PURE__ */ _createElementVNode329(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M780.99456 419.328H376.91904V269.63968c0-49.57696 60.31872-104.74496 134.66112-104.74496 74.368 0 134.7584 55.168 134.7584 104.74496v44.928h0.52736a52.29568 52.29568 0 0 0 51.77344 44.89728c26.4448 0 48.22016-19.5072 51.8656-44.89728h0.59392v-44.92288c0-115.712-107.27936-209.52576-239.5136-209.52576-132.21376 0-239.4624 93.81376-239.4624 209.52576V419.328h-29.95712c-49.55136 0-89.7536 40.20736-89.7536 89.78944v359.2192c0 49.58208 40.20224 89.77408 89.7536 89.77408h538.8288c49.61792 0 89.78432-40.192 89.78432-89.77408v-359.2192c0-49.58208-40.1664-89.78944-89.78432-89.78944z m-224.47616 331.52v40.93952c0 25.71264-20.1216 46.54592-44.93824 46.54592-24.7552 0-44.90752-20.83328-44.90752-46.54592v-40.9344c-35.36384-16.57344-59.88864-52.1728-59.88864-93.42976 0-57.11872 46.96064-103.43424 104.79616-103.43424 57.89696 0 104.79616 46.31552 104.79616 103.43424 0 41.25184-24.46336 76.85632-59.85792 93.42976z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3329 = [\n  _hoisted_2333\n];\nfunction _sfc_render333(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock333(), _createElementBlock333(\"svg\", _hoisted_1334, _hoisted_3329);\n}\nvar login_password3_default = /* @__PURE__ */ export_helper_default(login_password3_vue_vue_type_script_lang_default, [[\"render\", _sfc_render333], [\"__file\", \"login-password3.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-password4.vue?vue&type=script&lang.ts\nvar login_password4_vue_vue_type_script_lang_default = {\n  name: \"LoginPassword4\"\n};\n\n// src/components/login-password4.vue\nimport { createElementVNode as _createElementVNode330, openBlock as _openBlock334, createElementBlock as _createElementBlock334 } from \"vue\";\nvar _hoisted_1335 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2334 = /* @__PURE__ */ _createElementVNode330(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M309.4 244.9c22.6 0 41 18.3 41 41v170.8c0 22.6-18.3 41-41 41-22.6 0-41-18.3-41-41V285.9c0.1-22.6 18.4-41 41-41zM713.5 240.9c22.6 0 41 18.3 41 41v23.4c0 22.6-18.3 41-41 41-22.6 0-41-18.3-41-41v-23.4c0.1-22.6 18.4-41 41-41z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3330 = /* @__PURE__ */ _createElementVNode330(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M511.5 120.9c89 0 161.1 72.1 161.1 161.1h81.9c0-134.2-108.8-243-243-243s-243 108.8-243 243h81.9c0-89 72.1-161.1 161.1-161.1zM877.4 932.6V476.8c-3.4-33.4-31-59.7-64.9-61H212.7c-37.5 0-68 30.4-68.1 67.9V928c4 30.2 27.8 54.2 57.9 58.5H824c27-5.5 48.2-26.8 53.4-53.9z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_467 = /* @__PURE__ */ _createElementVNode330(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M436.9 701.1c0-22.6 18.3-41 41-41h66.2c22.6 0 41 18.3 41 41 0 22.6-18.3 41-41 41h-66.2c-22.6-0.1-41-18.4-41-41z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_529 = [\n  _hoisted_2334,\n  _hoisted_3330,\n  _hoisted_467\n];\nfunction _sfc_render334(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock334(), _createElementBlock334(\"svg\", _hoisted_1335, _hoisted_529);\n}\nvar login_password4_default = /* @__PURE__ */ export_helper_default(login_password4_vue_vue_type_script_lang_default, [[\"render\", _sfc_render334], [\"__file\", \"login-password4.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-password5.vue?vue&type=script&lang.ts\nvar login_password5_vue_vue_type_script_lang_default = {\n  name: \"LoginPassword5\"\n};\n\n// src/components/login-password5.vue\nimport { createElementVNode as _createElementVNode331, openBlock as _openBlock335, createElementBlock as _createElementBlock335 } from \"vue\";\nvar _hoisted_1336 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2335 = /* @__PURE__ */ _createElementVNode331(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M842.24 444.416c-8.192 0-54.272 0.512-62.976 0.512V299.52c0-161.28-103.936-268.288-266.24-268.8-162.304 0-268.288 112.64-268.288 268.8v143.872c-5.632 0-64.512 0.512-69.632 0.512-38.912 0-64 33.28-64 69.12v409.088c0 40.448 21.504 70.656 62.976 70.656h670.208c32.256 0 69.12-29.184 69.12-81.92V522.24c0-39.936-13.312-77.824-71.168-77.824z m-240.64 367.104c0 50.688-39.936 91.648-89.088 91.648-49.152 0-89.088-40.96-89.088-91.648v-1.536c0-33.792 17.92-63.488 44.544-79.36v-168.96c0-24.064 18.944-26.624 42.496-26.624 23.552 0 46.592 2.56 46.592 26.624v168.96c26.624 15.872 44.544 45.568 44.544 79.36v1.536zM691.2 443.392H334.336v-184.32c0-88.576 98.816-136.704 173.056-136.704h16.384c74.24 0 167.424 44.544 167.424 136.704v184.32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3331 = [\n  _hoisted_2335\n];\nfunction _sfc_render335(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock335(), _createElementBlock335(\"svg\", _hoisted_1336, _hoisted_3331);\n}\nvar login_password5_default = /* @__PURE__ */ export_helper_default(login_password5_vue_vue_type_script_lang_default, [[\"render\", _sfc_render335], [\"__file\", \"login-password5.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-password6.vue?vue&type=script&lang.ts\nvar login_password6_vue_vue_type_script_lang_default = {\n  name: \"LoginPassword6\"\n};\n\n// src/components/login-password6.vue\nimport { createElementVNode as _createElementVNode332, openBlock as _openBlock336, createElementBlock as _createElementBlock336 } from \"vue\";\nvar _hoisted_1337 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2336 = /* @__PURE__ */ _createElementVNode332(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 25.33451852c131.38633008 0 238.14447408 105.44499675 240.26589867 236.32524326L752.29866667 265.63318518v37.88223527c0 13.40575289-10.8668397 24.27259259-24.27259259 24.27259258-13.26497185 0-24.04564385-10.64110459-24.26895171-23.85389036l-0.00364089-0.41870222V265.63318518c0-105.90253511-85.85094637-191.75348148-191.75348148-191.75348148-104.84303645 0-190.03498192 84.14215585-191.72799525 188.58226727L320.24651852 265.63318518v160.19911112h504.86992593c40.21604503 0 72.81777778 32.60173275 72.81777777 72.81777778v427.19762962c0 40.21604503-32.60173275 72.81777778-72.81777777 72.81777778H198.88355555c-40.21604503 0-72.81777778-32.60173275-72.81777777-72.81777778V498.65007408c0-40.21604503 32.60173275-72.81777778 72.81777777-72.81777778h72.81777778V265.63318518c0-132.71282725 107.58583941-240.29866667 240.29866667-240.29866666z m0 564.33777778c-37.53513718 0-67.96325925 30.42812208-67.96325925 67.96325925 0 22.85628682 11.28311467 43.0777837 28.58340503 55.3985517l0.54249244 0.38229334L473.16385185 795.98933333c0 21.44847645 17.3876717 38.83614815 38.83614815 38.83614815 21.233664 0 38.48783645-17.04178725 38.83129363-38.19292445L550.83614815 795.98933333l0.00242726-82.57414636C568.44470045 701.13325511 579.96325925 680.73092741 579.96325925 657.63555555c0-37.53513718-30.42812208-67.96325925-67.96325925-67.96325925z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3332 = [\n  _hoisted_2336\n];\nfunction _sfc_render336(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock336(), _createElementBlock336(\"svg\", _hoisted_1337, _hoisted_3332);\n}\nvar login_password6_default = /* @__PURE__ */ export_helper_default(login_password6_vue_vue_type_script_lang_default, [[\"render\", _sfc_render336], [\"__file\", \"login-password6.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-username.vue?vue&type=script&lang.ts\nvar login_username_vue_vue_type_script_lang_default = {\n  name: \"LoginUsername\"\n};\n\n// src/components/login-username.vue\nimport { createElementVNode as _createElementVNode333, openBlock as _openBlock337, createElementBlock as _createElementBlock337 } from \"vue\";\nvar _hoisted_1338 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2337 = /* @__PURE__ */ _createElementVNode333(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M959.072649 895.066254c-2.558209-5.832717-63.852903-144.896972-269.225942-247.327671-2.251224-1.125612-4.502448-1.944239-6.753672-2.660538 20.772659-30.698511 35.610273-66.001799 43.898871-101.612071 49.117618-31.005496 77.769561-77.360248 73.574098-120.235835-2.558209-26.400719-17.088838-47.68502-40.522035-60.373738-5.423404-241.597282-137.120016-292.966124-248.043969-292.966124S269.379434 121.259119 264.058359 362.958729c-23.433197 12.688718-37.963825 33.973019-40.522034 60.373738-4.195463 42.875587 24.45648 89.12801 73.574098 120.235835 8.288598 35.610273 23.126212 70.811232 43.89887 101.612072-2.251224 0.716299-4.604777 1.534926-6.753672 2.660537C128.780254 750.169282 67.383232 889.233537 64.927351 895.066254c-6.139702 14.4283-4.707105 30.903168 3.990806 44.001199 8.595583 12.995703 23.22854 20.874988 38.884781 20.874987h808.598781c15.656241 0 30.186869-7.879285 38.88478-20.874987 8.493255-13.098031 9.925852-29.675227 3.78615-44.001199z m-301.664035-10.744479c0 3.78615-1.841911 7.367643-5.01409 9.516538-1.944239 1.432597-4.297792 2.046567-6.651344 2.046568-1.330269 0-2.762866-0.204657-3.990807-0.716299l-129.752373-62.522634-129.752373 62.522634c-3.581493 1.330269-7.572299 0.818627-10.642151-1.330269s-5.01409-5.730389-5.01409-9.516538V749.043669c0-3.888478 1.944239-7.469971 5.116419-9.618866 3.274508-2.148896 7.265314-2.558209 10.846807-1.125612l129.445388 66.51344 129.445388-66.51344c3.581493-1.432597 7.674628-1.023284 10.846807 1.125612 3.172179 2.148896 5.116419 5.730389 5.116419 9.618866v135.278106z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3333 = /* @__PURE__ */ _createElementVNode333(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M622.51464 913.383032h-221.02928\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_468 = [\n  _hoisted_2337,\n  _hoisted_3333\n];\nfunction _sfc_render337(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock337(), _createElementBlock337(\"svg\", _hoisted_1338, _hoisted_468);\n}\nvar login_username_default = /* @__PURE__ */ export_helper_default(login_username_vue_vue_type_script_lang_default, [[\"render\", _sfc_render337], [\"__file\", \"login-username.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-username2.vue?vue&type=script&lang.ts\nvar login_username2_vue_vue_type_script_lang_default = {\n  name: \"LoginUsername2\"\n};\n\n// src/components/login-username2.vue\nimport { createElementVNode as _createElementVNode334, openBlock as _openBlock338, createElementBlock as _createElementBlock338 } from \"vue\";\nvar _hoisted_1339 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2338 = /* @__PURE__ */ _createElementVNode334(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M785 740c-126-45-165-84-165-168 0-51 39-33 54-126 6-39 42 0 48-87 0-33-18-42-18-42s9-51 12-90C722 179 689 53 512 53c-174 0-207 126-204 174 3 39 12 90 12 90s-15 9-15 45c6 87 39 48 48 87 18 90 54 75 54 126 0 84-39 123-165 168-129 45-210 90-210 123v108h960v-108c0-33-81-78-207-126z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3334 = [\n  _hoisted_2338\n];\nfunction _sfc_render338(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock338(), _createElementBlock338(\"svg\", _hoisted_1339, _hoisted_3334);\n}\nvar login_username2_default = /* @__PURE__ */ export_helper_default(login_username2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render338], [\"__file\", \"login-username2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-username3.vue?vue&type=script&lang.ts\nvar login_username3_vue_vue_type_script_lang_default = {\n  name: \"LoginUsername3\"\n};\n\n// src/components/login-username3.vue\nimport { createElementVNode as _createElementVNode335, openBlock as _openBlock339, createElementBlock as _createElementBlock339 } from \"vue\";\nvar _hoisted_1340 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2339 = /* @__PURE__ */ _createElementVNode335(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M831.0784 353.6896c0-176.3328-141.1072-317.44-317.44-317.44s-317.44 141.1072-317.44 317.44c0 119.808 63.488 222.208 162.2016 275.0464-133.7344 53.0432-236.1344 169.3696-264.192 317.44-3.4816 17.6128 6.9632 38.7072 28.2624 42.3936h6.9632c17.6128 0 31.744-10.6496 35.2256-28.2624 31.744-165.6832 176.3328-285.696 345.4976-289.1776h6.9632c172.8512 0 313.9584-141.1072 313.9584-317.44z m-564.224 0c0-137.4208 109.3632-246.784 246.784-246.784s246.784 109.3632 246.784 246.784c0 133.9392-109.3632 243.3024-243.3024 246.784h-10.6496c-133.7344-3.4816-239.616-112.64-239.616-246.784z m479.6416 320.9216c-17.6128-10.6496-38.7072-6.9632-49.3568 10.6496-10.6496 17.6128-6.9632 38.7072 10.6496 49.3568 81.1008 56.32 137.4208 133.9392 155.2384 225.6896 3.4816 17.6128 17.6128 28.2624 35.2256 28.2624h6.9632c17.6128-3.4816 31.744-21.0944 28.2624-42.3936-21.2992-109.3632-88.2688-204.5952-186.9824-271.5648z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3335 = [\n  _hoisted_2339\n];\nfunction _sfc_render339(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock339(), _createElementBlock339(\"svg\", _hoisted_1340, _hoisted_3335);\n}\nvar login_username3_default = /* @__PURE__ */ export_helper_default(login_username3_vue_vue_type_script_lang_default, [[\"render\", _sfc_render339], [\"__file\", \"login-username3.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-username4.vue?vue&type=script&lang.ts\nvar login_username4_vue_vue_type_script_lang_default = {\n  name: \"LoginUsername4\"\n};\n\n// src/components/login-username4.vue\nimport { createElementVNode as _createElementVNode336, openBlock as _openBlock340, createElementBlock as _createElementBlock340 } from \"vue\";\nvar _hoisted_1341 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2340 = /* @__PURE__ */ _createElementVNode336(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M443.42857156 580.57142844h137.14285688a342.85714312 342.85714312 0 0 1 342.85714312 342.85714312 68.57142844 68.57142844 0 0 1-68.57142843 68.57142844H169.14285688a68.57142844 68.57142844 0 0 1-68.57142844-68.57142844 342.85714312 342.85714312 0 0 1 342.85714312-342.85714312z m68.57142844-68.57142844a240 240 0 1 1 0-480 240 240 0 0 1 0 480z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3336 = [\n  _hoisted_2340\n];\nfunction _sfc_render340(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock340(), _createElementBlock340(\"svg\", _hoisted_1341, _hoisted_3336);\n}\nvar login_username4_default = /* @__PURE__ */ export_helper_default(login_username4_vue_vue_type_script_lang_default, [[\"render\", _sfc_render340], [\"__file\", \"login-username4.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\login-username6.vue?vue&type=script&lang.ts\nvar login_username6_vue_vue_type_script_lang_default = {\n  name: \"LoginUsername6\"\n};\n\n// src/components/login-username6.vue\nimport { createElementVNode as _createElementVNode337, openBlock as _openBlock341, createElementBlock as _createElementBlock341 } from \"vue\";\nvar _hoisted_1342 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2341 = /* @__PURE__ */ _createElementVNode337(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 579.12888889c143.89816889 0 260.55111111-116.65294222 260.55111111-260.55111111S655.89816889 58.02666667 512 58.02666667 251.44888889 174.67960889 251.44888889 318.57777778s116.65294222 260.55111111 260.55111111 260.55111111zM111.9744 785.13379555C202.62912 705.44384 335.46808889 665.6 510.49016889 665.6c262.53312 0 365.50200889 88.11861333 402.47978666 119.53379555 36.97777778 31.41404445 120.90368 139.89774222-35.84 164.72746667-156.74254222 24.82972445-564.66318222 21.41525333-719.52270222 0C39.25333333 935.02008889 24.04238222 880.11093333 111.9744 785.13493333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3337 = [\n  _hoisted_2341\n];\nfunction _sfc_render341(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock341(), _createElementBlock341(\"svg\", _hoisted_1342, _hoisted_3337);\n}\nvar login_username6_default = /* @__PURE__ */ export_helper_default(login_username6_vue_vue_type_script_lang_default, [[\"render\", _sfc_render341], [\"__file\", \"login-username6.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\lollipop.vue?vue&type=script&lang.ts\nvar lollipop_vue_vue_type_script_lang_default = {\n  name: \"Lollipop\"\n};\n\n// src/components/lollipop.vue\nimport { createElementVNode as _createElementVNode338, openBlock as _openBlock342, createElementBlock as _createElementBlock342 } from \"vue\";\nvar _hoisted_1343 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2342 = /* @__PURE__ */ _createElementVNode338(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M513.28 448a64 64 0 1 1 76.544 49.728A96 96 0 0 0 768 448h64a160 160 0 0 1-320 0h1.28zm-126.976-29.696a256 256 0 1 0 43.52-180.48A256 256 0 0 1 832 448h-64a192 192 0 0 0-381.696-29.696zm105.664 249.472L285.696 874.048a96 96 0 0 1-135.68-135.744l206.208-206.272a320 320 0 1 1 135.744 135.744zm-54.464-36.032a321.92 321.92 0 0 1-45.248-45.248L195.2 783.552a32 32 0 1 0 45.248 45.248l197.056-197.12z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3338 = [\n  _hoisted_2342\n];\nfunction _sfc_render342(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock342(), _createElementBlock342(\"svg\", _hoisted_1343, _hoisted_3338);\n}\nvar lollipop_default = /* @__PURE__ */ export_helper_default(lollipop_vue_vue_type_script_lang_default, [[\"render\", _sfc_render342], [\"__file\", \"lollipop.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\magic-stick.vue?vue&type=script&lang.ts\nvar magic_stick_vue_vue_type_script_lang_default = {\n  name: \"MagicStick\"\n};\n\n// src/components/magic-stick.vue\nimport { createElementVNode as _createElementVNode339, openBlock as _openBlock343, createElementBlock as _createElementBlock343 } from \"vue\";\nvar _hoisted_1344 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2343 = /* @__PURE__ */ _createElementVNode339(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64h64v192h-64V64zm0 576h64v192h-64V640zM160 480v-64h192v64H160zm576 0v-64h192v64H736zM249.856 199.04l45.248-45.184L430.848 289.6 385.6 334.848 249.856 199.104zM657.152 606.4l45.248-45.248 135.744 135.744-45.248 45.248L657.152 606.4zM114.048 923.2 68.8 877.952l316.8-316.8 45.248 45.248-316.8 316.8zM702.4 334.848 657.152 289.6l135.744-135.744 45.248 45.248L702.4 334.848z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3339 = [\n  _hoisted_2343\n];\nfunction _sfc_render343(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock343(), _createElementBlock343(\"svg\", _hoisted_1344, _hoisted_3339);\n}\nvar magic_stick_default = /* @__PURE__ */ export_helper_default(magic_stick_vue_vue_type_script_lang_default, [[\"render\", _sfc_render343], [\"__file\", \"magic-stick.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\magnet.vue?vue&type=script&lang.ts\nvar magnet_vue_vue_type_script_lang_default = {\n  name: \"Magnet\"\n};\n\n// src/components/magnet.vue\nimport { createElementVNode as _createElementVNode340, openBlock as _openBlock344, createElementBlock as _createElementBlock344 } from \"vue\";\nvar _hoisted_1345 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2344 = /* @__PURE__ */ _createElementVNode340(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M832 320V192H704v320a192 192 0 1 1-384 0V192H192v128h128v64H192v128a320 320 0 0 0 640 0V384H704v-64h128zM640 512V128h256v384a384 384 0 1 1-768 0V128h256v384a128 128 0 1 0 256 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3340 = [\n  _hoisted_2344\n];\nfunction _sfc_render344(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock344(), _createElementBlock344(\"svg\", _hoisted_1345, _hoisted_3340);\n}\nvar magnet_default = /* @__PURE__ */ export_helper_default(magnet_vue_vue_type_script_lang_default, [[\"render\", _sfc_render344], [\"__file\", \"magnet.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\male.vue?vue&type=script&lang.ts\nvar male_vue_vue_type_script_lang_default = {\n  name: \"Male\"\n};\n\n// src/components/male.vue\nimport { createElementVNode as _createElementVNode341, openBlock as _openBlock345, createElementBlock as _createElementBlock345 } from \"vue\";\nvar _hoisted_1346 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2345 = /* @__PURE__ */ _createElementVNode341(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M399.5 849.5a225 225 0 1 0 0-450 225 225 0 0 0 0 450zm0 56.25a281.25 281.25 0 1 1 0-562.5 281.25 281.25 0 0 1 0 562.5zm253.125-787.5h225q28.125 0 28.125 28.125T877.625 174.5h-225q-28.125 0-28.125-28.125t28.125-28.125z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3341 = /* @__PURE__ */ _createElementVNode341(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M877.625 118.25q28.125 0 28.125 28.125v225q0 28.125-28.125 28.125T849.5 371.375v-225q0-28.125 28.125-28.125z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_469 = /* @__PURE__ */ _createElementVNode341(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M604.813 458.9 565.1 419.131l292.613-292.668 39.825 39.824z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_530 = [\n  _hoisted_2345,\n  _hoisted_3341,\n  _hoisted_469\n];\nfunction _sfc_render345(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock345(), _createElementBlock345(\"svg\", _hoisted_1346, _hoisted_530);\n}\nvar male_default = /* @__PURE__ */ export_helper_default(male_vue_vue_type_script_lang_default, [[\"render\", _sfc_render345], [\"__file\", \"male.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\management.vue?vue&type=script&lang.ts\nvar management_vue_vue_type_script_lang_default = {\n  name: \"Management\"\n};\n\n// src/components/management.vue\nimport { createElementVNode as _createElementVNode342, openBlock as _openBlock346, createElementBlock as _createElementBlock346 } from \"vue\";\nvar _hoisted_1347 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2346 = /* @__PURE__ */ _createElementVNode342(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M576 128v288l96-96 96 96V128h128v768H320V128h256zm-448 0h128v768H128V128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3342 = [\n  _hoisted_2346\n];\nfunction _sfc_render346(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock346(), _createElementBlock346(\"svg\", _hoisted_1347, _hoisted_3342);\n}\nvar management_default = /* @__PURE__ */ export_helper_default(management_vue_vue_type_script_lang_default, [[\"render\", _sfc_render346], [\"__file\", \"management.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\map-location.vue?vue&type=script&lang.ts\nvar map_location_vue_vue_type_script_lang_default = {\n  name: \"MapLocation\"\n};\n\n// src/components/map-location.vue\nimport { createElementVNode as _createElementVNode343, openBlock as _openBlock347, createElementBlock as _createElementBlock347 } from \"vue\";\nvar _hoisted_1348 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2347 = /* @__PURE__ */ _createElementVNode343(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3343 = /* @__PURE__ */ _createElementVNode343(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256zm345.6 192L960 960H672v-64H352v64H64l102.4-256h691.2zm-68.928 0H235.328l-76.8 192h706.944l-76.8-192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_470 = [\n  _hoisted_2347,\n  _hoisted_3343\n];\nfunction _sfc_render347(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock347(), _createElementBlock347(\"svg\", _hoisted_1348, _hoisted_470);\n}\nvar map_location_default = /* @__PURE__ */ export_helper_default(map_location_vue_vue_type_script_lang_default, [[\"render\", _sfc_render347], [\"__file\", \"map-location.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\medal.vue?vue&type=script&lang.ts\nvar medal_vue_vue_type_script_lang_default = {\n  name: \"Medal\"\n};\n\n// src/components/medal.vue\nimport { createElementVNode as _createElementVNode344, openBlock as _openBlock348, createElementBlock as _createElementBlock348 } from \"vue\";\nvar _hoisted_1349 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2348 = /* @__PURE__ */ _createElementVNode344(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a256 256 0 1 0 0-512 256 256 0 0 0 0 512zm0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3344 = /* @__PURE__ */ _createElementVNode344(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M576 128H448v200a286.72 286.72 0 0 1 64-8c19.52 0 40.832 2.688 64 8V128zm64 0v219.648c24.448 9.088 50.56 20.416 78.4 33.92L757.44 128H640zm-256 0H266.624l39.04 253.568c27.84-13.504 53.888-24.832 78.336-33.92V128zM229.312 64h565.376a32 32 0 0 1 31.616 36.864L768 480c-113.792-64-199.104-96-256-96-56.896 0-142.208 32-256 96l-58.304-379.136A32 32 0 0 1 229.312 64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_471 = [\n  _hoisted_2348,\n  _hoisted_3344\n];\nfunction _sfc_render348(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock348(), _createElementBlock348(\"svg\", _hoisted_1349, _hoisted_471);\n}\nvar medal_default = /* @__PURE__ */ export_helper_default(medal_vue_vue_type_script_lang_default, [[\"render\", _sfc_render348], [\"__file\", \"medal.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\memo.vue?vue&type=script&lang.ts\nvar memo_vue_vue_type_script_lang_default = {\n  name: \"Memo\"\n};\n\n// src/components/memo.vue\nimport { createElementVNode as _createElementVNode345, openBlock as _openBlock349, createElementBlock as _createElementBlock349 } from \"vue\";\nvar _hoisted_1350 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2349 = /* @__PURE__ */ _createElementVNode345(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 320h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3345 = /* @__PURE__ */ _createElementVNode345(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M887.01 72.99C881.01 67 873.34 64 864 64H160c-9.35 0-17.02 3-23.01 8.99C131 78.99 128 86.66 128 96v832c0 9.35 2.99 17.02 8.99 23.01S150.66 960 160 960h704c9.35 0 17.02-2.99 23.01-8.99S896 937.34 896 928V96c0-9.35-3-17.02-8.99-23.01zM192 896V128h96v768h-96zm640 0H352V128h480v768z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_472 = /* @__PURE__ */ _createElementVNode345(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 512h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32zm0 192h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_531 = [\n  _hoisted_2349,\n  _hoisted_3345,\n  _hoisted_472\n];\nfunction _sfc_render349(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock349(), _createElementBlock349(\"svg\", _hoisted_1350, _hoisted_531);\n}\nvar memo_default = /* @__PURE__ */ export_helper_default(memo_vue_vue_type_script_lang_default, [[\"render\", _sfc_render349], [\"__file\", \"memo.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-anquanfeiyong.vue?vue&type=script&lang.ts\nvar menu_anquanfeiyong_vue_vue_type_script_lang_default = {\n  name: \"MenuAnquanfeiyong\"\n};\n\n// src/components/menu-anquanfeiyong.vue\nimport { createElementVNode as _createElementVNode346, openBlock as _openBlock350, createElementBlock as _createElementBlock350 } from \"vue\";\nvar _hoisted_1351 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2350 = /* @__PURE__ */ _createElementVNode346(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 0C229.256533 0 0 229.239467 0 512c0 282.760533 229.256533 512 512 512 282.7776 0 512-229.239467 512-512C1024 229.239467 794.7776 0 512 0z m182.766933 581.256533a34.1504 34.1504 0 0 1 33.672534 39.867734c-2.730667 16.776533-18.500267 28.398933-35.498667 28.398933h-118.186667c-18.773333 0-33.979733 15.223467-33.979733 33.979733v65.877334c0 16.9984-11.6224 32.768-28.398933 35.498666a34.1504 34.1504 0 0 1-39.867734-33.672533v-67.720533c0-18.773333-15.223467-33.979733-33.979733-33.979734H320.341333c-16.9984 0-32.768-11.6224-35.498666-28.398933a34.1504 34.1504 0 0 1 33.672533-39.867733h120.354133a33.655467 33.655467 0 0 0 0-67.310934H320.341333c-16.9984 0-32.768-11.6224-35.498666-28.398933a34.1504 34.1504 0 0 1 33.672533-39.867733h65.6384c15.36 0 22.9888-18.653867 12.014933-29.405867l-66.116266-64.836267c-12.1344-11.895467-15.223467-31.197867-5.410134-45.073066a34.167467 34.167467 0 0 1 51.968-4.881067l108.270934 106.171733c13.448533 13.192533 35.037867 12.970667 48.213333-0.477866l101.819733-103.867734c11.912533-12.151467 31.249067-15.291733 45.175467-5.512533a34.133333 34.133333 0 0 1 4.9152 51.950933l-65.450667 66.7648c-10.6496 10.8544-2.952533 29.166933 12.253867 29.166934h61.184c16.9984 0 32.768 11.6224 35.498667 28.398933a34.1504 34.1504 0 0 1-33.672534 39.867733H574.464a33.655467 33.655467 0 0 0 0 67.310934h120.302933z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3346 = [\n  _hoisted_2350\n];\nfunction _sfc_render350(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock350(), _createElementBlock350(\"svg\", _hoisted_1351, _hoisted_3346);\n}\nvar menu_anquanfeiyong_default = /* @__PURE__ */ export_helper_default(menu_anquanfeiyong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render350], [\"__file\", \"menu-anquanfeiyong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-anquanguanli.vue?vue&type=script&lang.ts\nvar menu_anquanguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuAnquanguanli\"\n};\n\n// src/components/menu-anquanguanli.vue\nimport { createElementVNode as _createElementVNode347, openBlock as _openBlock351, createElementBlock as _createElementBlock351 } from \"vue\";\nvar _hoisted_1352 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2351 = /* @__PURE__ */ _createElementVNode347(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M291.179333 85.132421A1590.273621 1590.273621 0 0 0 442.289379 3.830959a24.688402 24.688402 0 0 1 22.985754 0 17.877808 17.877808 0 0 1 11.492877 17.026484v383.095894a20.006119 20.006119 0 0 1-21.283105 18.729132H26.843166a20.431781 20.431781 0 0 1-21.708767-17.026484A1887.38577 1887.38577 0 0 1 5.134399 127.698631a20.431781 20.431781 0 0 1 10.641552-13.195525 28.093699 28.093699 0 0 1 18.729133 0 343.93498 343.93498 0 0 0 255.397262-26.816713z m438.857629 0A2991.127606 2991.127606 0 0 1 578.926915 3.405297a24.688402 24.688402 0 0 0-22.560092 0 18.30347 18.30347 0 0 0-11.492876 16.17516v383.095893a19.580457 19.580457 0 0 0 21.283105 18.303471h428.641739a20.431781 20.431781 0 0 0 21.283105-17.026484 1771.180015 1771.180015 0 0 0 0-277.10603 17.877808 17.877808 0 0 0-10.215891-13.195525 23.837078 23.837078 0 0 0-18.729132 0A347.340277 347.340277 0 0 1 730.036962 85.132421zM73.240335 708.301741A796.413797 796.413797 0 0 0 444.843352 1021.58905a24.688402 24.688402 0 0 0 21.283105 0 19.580457 19.580457 0 0 0 10.641553-17.452146V501.429959a19.580457 19.580457 0 0 0-6.384932-14.472512 26.39105 26.39105 0 0 0-16.17516-6.384931H23.012207a25.539726 25.539726 0 0 0-17.877808 7.661917 19.580457 19.580457 0 0 0-4.682284 17.026485 634.662197 634.662197 0 0 0 72.78822 201.763837z m875.161286 0A796.413797 796.413797 0 0 1 576.798604 1021.58905a24.688402 24.688402 0 0 1-21.283105 0 19.580457 19.580457 0 0 1-10.641552-17.452146V501.429959a19.580457 19.580457 0 0 1 6.384931-14.472512 24.688402 24.688402 0 0 1 16.17516-6.384931h431.195712a25.539726 25.539726 0 0 1 17.877808 7.661917 19.580457 19.580457 0 0 1 4.682283 17.026485 634.662197 634.662197 0 0 1-72.78822 201.763837z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3347 = [\n  _hoisted_2351\n];\nfunction _sfc_render351(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock351(), _createElementBlock351(\"svg\", _hoisted_1352, _hoisted_3347);\n}\nvar menu_anquanguanli_default = /* @__PURE__ */ export_helper_default(menu_anquanguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render351], [\"__file\", \"menu-anquanguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-anquanjiaodi.vue?vue&type=script&lang.ts\nvar menu_anquanjiaodi_vue_vue_type_script_lang_default = {\n  name: \"MenuAnquanjiaodi\"\n};\n\n// src/components/menu-anquanjiaodi.vue\nimport { createElementVNode as _createElementVNode348, openBlock as _openBlock352, createElementBlock as _createElementBlock352 } from \"vue\";\nvar _hoisted_1353 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2352 = /* @__PURE__ */ _createElementVNode348(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M730.18588751 15.78595626A114.51093317 114.51093317 0 0 1 844.69682068 130.29688943v441.47781768l-102.83081799 178.25535264-39.69712348-22.90218663-9.16087467-4.73311858a106.87687096 106.87687096 0 0 0-97.7159963 189.8591272l132.2219575 76.34062212 9.16087466 4.65677795c9.92428088 4.58043732 20.23026486 7.40504035 30.53624883 8.77917153l-4.8857998 1.60315307a114.51093317 114.51093317 0 0 1-32.13940192 4.58043733H119.4609106A114.51093317 114.51093317 0 0 1 4.94997743 893.70311057V130.29688943A114.51093317 114.51093317 0 0 1 119.4609106 15.78595626h610.72497691zM447.72558569 649.41311981h-229.02186635a38.17031106 38.17031106 0 1 0 0 76.34062212h229.02186635a38.17031106 38.17031106 0 1 0 0-76.34062212z m175.58343087-221.38780413H218.70371934a38.17031106 38.17031106 0 0 0 0 76.34062211h404.60529722a38.17031106 38.17031106 0 0 0 0-76.34062211z m0-221.38780413H218.70371934a38.17031106 38.17031106 0 0 0 0 76.34062211h404.60529722a38.17031106 38.17031106 0 0 0 0-76.34062211z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3348 = /* @__PURE__ */ _createElementVNode348(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M605.75067346 794.84200494a49.62140436 49.62140436 0 0 1 61.14883831-21.37537419l6.64163412 3.20630611 89.31852788 51.52991993 165.96451248-287.5751235a49.62140436 49.62140436 0 0 1 61.14883832-21.37537418l6.64163412 3.20630611a49.62140436 49.62140436 0 0 1 21.37537419 61.14883831l-3.20630613 6.64163414-190.85155527 330.55489375a49.62140436 49.62140436 0 0 1-61.14883832 21.37537419l-6.64163412-3.20630613-132.22195751-76.34062211a49.62140436 49.62140436 0 0 1-18.16906807-67.79047243z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_473 = [\n  _hoisted_2352,\n  _hoisted_3348\n];\nfunction _sfc_render352(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock352(), _createElementBlock352(\"svg\", _hoisted_1353, _hoisted_473);\n}\nvar menu_anquanjiaodi_default = /* @__PURE__ */ export_helper_default(menu_anquanjiaodi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render352], [\"__file\", \"menu-anquanjiaodi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-anquantixi.vue?vue&type=script&lang.ts\nvar menu_anquantixi_vue_vue_type_script_lang_default = {\n  name: \"MenuAnquantixi\"\n};\n\n// src/components/menu-anquantixi.vue\nimport { createElementVNode as _createElementVNode349, openBlock as _openBlock353, createElementBlock as _createElementBlock353 } from \"vue\";\nvar _hoisted_1354 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2353 = /* @__PURE__ */ _createElementVNode349(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M511.99744668 1017.15011461c-11.61126783 0-22.90336942-3.77637496-31.79406422-10.63334247l-0.12128318-0.09447321L121.88438085 727.30120827c-14.49908397-11.5576479-24.62559045-32.47069665-24.62559044-50.8546721V175.52916497c0-22.43738672 15.36083282-43.90450805 36.5241079-51.04617185l352.75657236-120.2158795c9.24050098-3.15463913 19.00315796-3.8185049 25.56266253-3.81850489s16.32343822 0.66386578 25.58053584 3.82488821l353.05275862 120.31673603c21.22710833 7.41870009 36.30579819 28.89986474 36.00195194 51.19426499v500.66203821c0 18.59462517-10.21459637 39.57661383-24.8387935 51.02319187l-357.90025549 278.88618431c-8.83324487 6.96293071-20.19045637 10.79420226-32.00088393 10.79420226zM160.4511527 679.66883853l351.54629398 273.93527759 351.65608715-274.02081413c0.67535577-0.86302552 1.54987126-2.66056978 1.80265092-3.71126506V180.71625471l-347.5592693-118.44386854c-0.4225761-0.1238365-2.56481991-0.54258261-5.79605891-0.5425826s-5.37220616 0.41874611-5.86755217 0.56556258l-347.69587245 118.4923818v495.02811573c0.2770363 1.10303852 1.20517172 2.97207603 1.91372078 3.85297485z m0.14809315 0.17362642z m-2.11288054-4.26533762z m-4.92537341-493.09396832l-0.09957986 0.0331933 0.09957986-0.0331933z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3349 = /* @__PURE__ */ _createElementVNode349(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M408.93100761 456.20012689a15.39530278 15.39530278 0 0 0-12.42961008-6.3105549h-52.77732952c-6.21480503 0-9.84819353 7.07527722-6.21480505 12.14236045l120.85293533 166.36348789c6.11905517 8.41322209 18.74016497 8.41322209 24.85922013 0l203.26931862-279.85389636c3.63338847-5.06708323 0-12.14236046-6.21480505-12.14236045h-52.77732952c-4.87558349 0-9.56094391 2.38991681-12.42961008 6.31055491L470.79180836 541.38942648l-61.86080075-85.18929959z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_474 = [\n  _hoisted_2353,\n  _hoisted_3349\n];\nfunction _sfc_render353(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock353(), _createElementBlock353(\"svg\", _hoisted_1354, _hoisted_474);\n}\nvar menu_anquantixi_default = /* @__PURE__ */ export_helper_default(menu_anquantixi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render353], [\"__file\", \"menu-anquantixi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-banqianhui.vue?vue&type=script&lang.ts\nvar menu_banqianhui_vue_vue_type_script_lang_default = {\n  name: \"MenuBanqianhui\"\n};\n\n// src/components/menu-banqianhui.vue\nimport { createElementVNode as _createElementVNode350, openBlock as _openBlock354, createElementBlock as _createElementBlock354 } from \"vue\";\nvar _hoisted_1355 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2354 = /* @__PURE__ */ _createElementVNode350(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M989.19898086 0.09702017v1022.56924468H34.80101914V0.09702017h954.39796172z m-68.171283 68.17128299H102.97230214v886.22667871h818.05539572v-886.22667871zM665.38538671 579.55292549c69.05750967 0 131.57057615 51.12846223 187.47102818 153.38538671-55.90045204 102.25692447-118.41351854 153.38538671-187.47102818 153.38538669s-131.57057615-51.12846223-187.4710282-153.38538669C533.81481055 630.68138772 596.32787704 579.55292549 665.38538671 579.55292549z m0 54.53702638c-39.94837182 0-81.19199803 29.92719322-122.91282321 96.46236542l-1.49976824 2.38599491 1.49976824 2.3859949c38.8576313 62.10403879 77.44257746 92.30391715 114.93678309 96.12150899l7.97604012 0.34085643c37.28969179 0 75.6701241-26.0414301 114.52775539-83.64616423l9.81666476-15.20219609-1.36342567-2.38599491c-38.99397386-62.10403879-77.51074875-92.30391715-115.00495438-96.121509L665.38538671 634.08995187z m0 47.71989809a51.12846223 51.12846223 0 1 1 0 102.25692447 51.12846223 51.12846223 0 0 1 0-102.25692447zM409.74307553 647.72420846v68.17128299h-136.34256595v-68.17128299h136.34256595zM580.17128297 443.21035954v68.17128297H273.40050958V443.21035954H580.17128297z m170.42820745-204.51384894v68.17128297h-477.19898084V238.6965106h477.19898084z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3350 = [\n  _hoisted_2354\n];\nfunction _sfc_render354(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock354(), _createElementBlock354(\"svg\", _hoisted_1355, _hoisted_3350);\n}\nvar menu_banqianhui_default = /* @__PURE__ */ export_helper_default(menu_banqianhui_vue_vue_type_script_lang_default, [[\"render\", _sfc_render354], [\"__file\", \"menu-banqianhui.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-baobiaoguanli.vue?vue&type=script&lang.ts\nvar menu_baobiaoguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuBaobiaoguanli\"\n};\n\n// src/components/menu-baobiaoguanli.vue\nimport { createElementVNode as _createElementVNode351, openBlock as _openBlock355, createElementBlock as _createElementBlock355 } from \"vue\";\nvar _hoisted_1356 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2355 = /* @__PURE__ */ _createElementVNode351(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M147.899259 56.916385h55.295079c15.701072 0 28.432593 12.731521 28.432593 28.432593v28.432592c0 31.402143 25.463042 56.899318 56.865185 56.899319h447.002684c31.402143 0 56.865186-25.463042 56.865185-56.899319V85.348978c0-15.701072 12.731521-28.432593 28.466726-28.432593h55.260945c15.701072 0 28.432593 12.731521 28.432593 28.432593v910.218429c0 15.701072-12.731521 28.432593-28.432593 28.432593H147.899259A28.432593 28.432593 0 0 1 119.466667 995.567407V85.348978c0-15.701072 12.731521-28.432593 28.432592-28.432593zM260.093656 341.344711a28.432593 28.432593 0 1 0 0 56.899318h503.867869a28.432593 28.432593 0 0 0 0-56.899318H260.059523z m0 170.663822a28.432593 28.432593 0 1 0 0 56.899319h503.867869a28.432593 28.432593 0 0 0 0-56.899319H260.059523z m0 170.663822a28.432593 28.432593 0 1 0 0 56.899319h335.627473a28.432593 28.432593 0 0 0 0-56.899319H260.093656zM344.572248 0.017066h334.84242a56.899318 56.899318 0 1 1 0 113.764504h-334.84242a56.899318 56.899318 0 1 1 0-113.764504z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3351 = [\n  _hoisted_2355\n];\nfunction _sfc_render355(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock355(), _createElementBlock355(\"svg\", _hoisted_1356, _hoisted_3351);\n}\nvar menu_baobiaoguanli_default = /* @__PURE__ */ export_helper_default(menu_baobiaoguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render355], [\"__file\", \"menu-baobiaoguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-biaoduanguanli.vue?vue&type=script&lang.ts\nvar menu_biaoduanguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuBiaoduanguanli\"\n};\n\n// src/components/menu-biaoduanguanli.vue\nimport { createElementVNode as _createElementVNode352, openBlock as _openBlock356, createElementBlock as _createElementBlock356 } from \"vue\";\nvar _hoisted_1357 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2356 = /* @__PURE__ */ _createElementVNode352(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M169.08132168 971.0172392c0 21.10268791-18.46485191 39.56753981-39.56753981 39.5675398S89.94624206 994.7577631 89.94624206 971.0172392V45.13680774C89.94624206 24.03411983 108.41109397 5.56926793 129.51378187 5.56926793S169.08132168 24.03411983 169.08132168 45.13680774v925.88043147z m179.37284712-255.87009074c0 34.29186783-26.37835986 60.6702277-60.67022771 60.6702277h-7.91350795c-34.29186783 0-60.6702277-26.37835986-60.67022771-60.6702277s26.37835986-60.6702277 60.67022771-60.67022769h7.91350795c34.29186783 0 60.6702277 29.01619586 60.67022771 60.67022769z m92.32425954-205.75120699c0 34.29186783-26.37835986 60.6702277-60.67022769 60.67022771h-100.23776751c-34.29186783 0-60.6702277-26.37835986-60.67022771-60.67022771 0-34.29186783 26.37835986-60.6702277 60.67022771-60.67022771H380.10820065c31.65403184 0 60.6702277 26.37835986 60.67022769 60.67022771z m-160.9079952-145.08097929c-34.29186783 0-60.6702277-26.37835986-60.67022771-60.67022771C221.83804142 269.35286663 248.21640129 242.97450677 279.87043314 242.97450677h369.29703819c34.29186783 0 60.6702277 26.37835986 60.6702277 60.6702277s-26.37835986 60.6702277-60.6702277 60.67022771h-369.29703819z m0-208.38904297c-34.29186783 0-60.6702277-26.37835986-60.67022771-60.67022771 0-34.29186783 26.37835986-60.6702277 60.67022771-60.6702277h530.20503339c34.29186783 0 60.6702277 26.37835986 60.67022771 60.6702277 0 34.29186783-26.37835986 60.6702277-60.67022771 60.67022771H279.87043314z m709.57788052 503.82667352c15.82701592 0 29.01619586 15.82701592 29.01619587 34.29186784v58.03239171c0 15.82701592-13.18917994 34.29186783-29.01619587 34.29186783h-50.11888375c-5.27567197 10.55134395-10.55134395 31.65403184-21.10268791 47.48104777l36.92970384 34.29186784c10.55134395 10.55134395 10.55134395 29.01619586 0 42.20537578l-42.20537579 42.20537581c-10.55134395 10.55134395-29.01619586 10.55134395-39.56753981 0l-34.29186785-36.92970383c-15.82701592 7.91350796-36.92970382 15.82701592-47.48104777 21.1026879V981.56858315c0 15.82701592-15.82701592 29.01619586-34.29186781 29.01619585h-58.03239172c-15.82701592 0-34.29186783-13.18917994-34.29186785-29.01619585v-50.11888375c-10.55134395-5.27567197-31.65403184-10.55134395-47.48104774-21.1026879l-34.29186784 36.92970384c-10.55134395 10.55134395-29.01619586 10.55134395-42.2053758 0l-42.2053758-42.20537581c-10.55134395-10.55134395-10.55134395-29.01619586 0-39.5675398l36.92970384-34.29186783c-7.91350796-15.82701592-15.82701592-36.92970382-21.10268792-47.48104778h-50.11888374c-15.82701592 0-29.01619586-15.82701592-29.01619587-34.29186782V691.40662457c0-15.82701592 13.18917994-34.29186783 29.01619587-34.29186783h50.11888374c5.27567197-10.55134395 10.55134395-31.65403184 21.10268792-47.48104776l-36.92970384-34.29186784c-10.55134395-10.55134395-10.55134395-29.01619586 0-42.20537579l39.5675398-42.2053758c10.55134395-10.55134395 29.01619586-10.55134395 39.56753981 0l34.29186785 36.92970383c15.82701592-7.91350796 36.92970382-15.82701592 47.48104776-21.1026879v-50.11888377c0-15.82701592 15.82701592-29.01619586 34.29186783-29.01619584h58.03239171c15.82701592 0 34.29186783 13.18917994 34.29186784 29.01619584V506.75810548c10.55134395 5.27567197 31.65403184 10.55134395 47.48104777 21.1026879l34.29186785-36.92970383c10.55134395-10.55134395 29.01619586-10.55134395 42.20537577 0l42.2053758 39.56753982c10.55134395 10.55134395 10.55134395 29.01619586 0 39.56753981L918.226742 612.27154497c7.91350796 15.82701592 15.82701592 36.92970382 21.10268791 47.48104776h50.11888375z m-261.14576271 192.56202705c71.22157166 0 131.89179935-58.03239173 131.89179935-131.89179935 0-71.22157166-58.03239173-131.89179935-131.89179935-131.89179936-71.22157166 0-131.89179935 58.03239173-131.89179936 131.89179936s60.6702277 131.89179935 131.89179936 131.89179935z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3352 = [\n  _hoisted_2356\n];\nfunction _sfc_render356(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock356(), _createElementBlock356(\"svg\", _hoisted_1357, _hoisted_3352);\n}\nvar menu_biaoduanguanli_default = /* @__PURE__ */ export_helper_default(menu_biaoduanguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render356], [\"__file\", \"menu-biaoduanguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-bumenguanli.vue?vue&type=script&lang.ts\nvar menu_bumenguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuBumenguanli\"\n};\n\n// src/components/menu-bumenguanli.vue\nimport { createElementVNode as _createElementVNode353, openBlock as _openBlock357, createElementBlock as _createElementBlock357 } from \"vue\";\nvar _hoisted_1358 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2357 = /* @__PURE__ */ _createElementVNode353(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M943.99530949 80.00469051a78.54460203 78.54460203 0 1 1 0 157.08920409v392.72300788a78.54460203 78.54460203 0 1 1 0 157.08920293h-6.71556346l14.25584522 14.29511827a78.54460203 78.54460203 0 0 1 4.5948592 106.07448416l-4.5948592 4.98758181a78.54460203 78.54460203 0 0 1-106.03521224 4.5948592l-5.02685489-4.5948592L715.07706795 786.90610541H308.88366012l-125.35718424 125.35718424a78.54460203 78.54460203 0 0 1-111.06206713-111.06206597L86.68098204 786.90610541H80.00469051a78.54460203 78.54460203 0 1 1 0-157.08920293V237.09389459a78.54460203 78.54460203 0 1 1 0-157.08920408h863.99061898zM512 158.54929255a274.90610541 274.90610541 0 1 0 0 549.81221197 274.90610541 274.90610541 0 0 0 0-549.81221197z m17.35835658 117.81690248c9.62171409 0 17.43690157 7.81518748 17.43690158 17.43690158v23.3670186c12.52786358 3.8094128 24.19173693 9.62171409 34.67744238 17.08345086l17.0441778-14.1380283a17.47617349 17.47617349 0 0 1 23.0921129 0.70690141l1.76725353 1.92434351 22.11030573 28.00114974c5.89084512 7.42246487 4.75194803 18.18307489-2.55269992 24.23100998l-17.98671303 14.9234747c4.75194803 12.09586904 7.73664364 25.09500023 8.6006339 38.68321593l22.1103046 5.22321564a17.43690157 17.43690157 0 0 1 12.99913233 20.81431981l-7.97227745 35.38434266a17.47617349 17.47617349 0 0 1-18.85070439 13.50967187l-2.19924924-0.39272261-21.59976507-5.10539989c-6.36211273 11.54605643-14.49147901 21.99248885-23.95610312 30.82875653l10.01443672 21.08922555a17.43690157 17.43690157 0 0 1-7.97227745 23.13138481l-31.30002415 15.6303761a17.47617349 17.47617349 0 0 1-22.38521148-6.04793394l-1.17816902-2.04216041-9.89661981-20.81431868a119.85906174 119.85906174 0 0 1-38.72248784 0l-9.89661981 20.81431868a17.47617349 17.47617349 0 0 1-21.36413242 9.03262959l-2.19924808-0.94253524-31.30002415-15.6303761a17.43690157 17.43690157 0 0 1-7.97227745-23.13138481l10.05370978-21.08922555a124.76809974 124.76809974 0 0 1-23.99537618-30.78948346l-21.59976507 5.10539872a17.47617349 17.47617349 0 0 1-20.42159719-10.99624385l-0.62835643-2.15997731-7.97227746-35.34507074a17.43690157 17.43690157 0 0 1 12.99913233-20.85359173l22.1103046-5.22321564c0.86399023-13.5882157 3.84868586-26.58734804 8.63990694-38.68321593l-18.06525913-14.9234747a17.43690157 17.43690157 0 0 1-2.51342686-24.23100998l22.11030573-28.00114974c5.53739441-6.99046916 15.31619733-8.63990579 22.73866219-4.12359158l2.12070424 1.49234666 17.0441778 14.1380283c10.48570432-7.46173677 22.14957766-13.27403807 34.67744239-17.08345086v-23.3670186c0-9.62171409 7.81518748-17.43690157 17.43690157-17.43690158h34.71671316zM512 394.18309752a39.27230045 39.27230045 0 1 0 0 78.54460203 39.27230045 39.27230045 0 0 0 0-78.54460203z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3353 = [\n  _hoisted_2357\n];\nfunction _sfc_render357(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock357(), _createElementBlock357(\"svg\", _hoisted_1358, _hoisted_3353);\n}\nvar menu_bumenguanli_default = /* @__PURE__ */ export_helper_default(menu_bumenguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render357], [\"__file\", \"menu-bumenguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-bz-biaozhunguanli.vue?vue&type=script&lang.ts\nvar menu_bz_biaozhunguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuBzBiaozhunguanli\"\n};\n\n// src/components/menu-bz-biaozhunguanli.vue\nimport { createElementVNode as _createElementVNode354, openBlock as _openBlock358, createElementBlock as _createElementBlock358 } from \"vue\";\nvar _hoisted_1359 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2358 = /* @__PURE__ */ _createElementVNode354(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M478.62518518 445.61445925c-27.91348148-20.38897778-55.7056-40.77795555-78.52183703-58.6183111-15.17037037-12.74311111-30.34074075-22.9376-43.08385185-33.1320889-2.54862222-2.54862222-5.09724445-2.54862222-5.09724445-5.09724443-10.19448889-12.74311111-22.81623703-28.03484445-30.4621037-43.32657779 0-2.54862222-2.54862222-2.54862222-2.54862223-5.09724444-7.64586667 53.52106667-20.26761482 107.1634963-40.53522962 142.84420741-32.88936297 61.16693333-116.62980741 122.45522963-182.40853333 170.87905185-12.62174815 10.19448889-25.36485925 20.38897778-37.98660742 28.03484445v2.54862222c-10.19448889 10.19448889-17.71899259 22.9376-25.36485925 35.68071111-48.1810963 86.65315555-17.71899259 196.36527408 63.35146667 239.69185185 83.61908148 48.42382222 192.60302222 17.84035555 240.78411851-66.26417778 7.64586667-12.74311111 12.74311111-25.48622222 17.7189926-40.77795555 2.54862222-12.74311111 2.54862222-30.58346667 5.09724444-48.42382223 7.64586667-81.67727408 20.26761482-183.62216297 53.15697778-242.24047407 15.17037037-25.60758518 37.98660741-51.21517037 65.90008888-76.7013926z m-230.58962963 359.59845927c-20.26761482 35.68071111-63.35146667 45.8752-96.36219258 25.48622223-32.88936297-20.38897778-45.63247408-63.71555555-25.36485927-96.84764445 20.26761482-33.13208889 63.35146667-45.8752 96.24082963-25.48622222 33.01072592 20.26761482 45.75383703 63.71555555 25.48622222 96.84764444zM385.78251852 334.68871111c12.62174815 10.19448889 25.36485925 20.38897778 40.53522963 30.58346667 65.90008889 48.42382222 149.51917037 109.71211852 182.40853333 168.33042963 15.17037037 25.48622222 25.36485925 61.16693333 32.88936297 96.84764444 30.82619259-11.89357037 61.16693333-24.63668148 91.26494814-38.22933333 17.71899259-7.64586667 32.88936297-15.29173333 48.1810963-20.38897777 2.54862222-2.54862222 2.54862222-2.54862222 5.09724444-2.54862223 17.71899259-5.09724445 35.43798518-7.64586667 53.27834075-7.64586667h5.09724444c-43.08385185-33.13208889-81.07045925-71.36142222-101.33807407-107.04213333-33.01072592-58.61831111-43.08385185-163.23318518-53.15697778-244.7890963-2.54862222-17.84035555-2.54862222-33.13208889-5.09724445-48.42382222V158.83377778c-5.09724445-15.29173333-10.19448889-28.03484445-17.71899259-40.77795556C619.04213333 31.40266667 510.05819259 3.24645925 423.89048889 56.88888889c-86.1677037 48.42382222-114.08118518 158.13594075-65.90008889 242.24047408 7.76722963 12.86447408 17.11217778 24.75804445 27.79211852 35.55934814z m91.26494815-188.71940741c33.01072592-20.38897778 76.09457778-7.64586667 96.36219258 25.48622222 20.26761482 33.13208889 7.64586667 76.45866667-25.36485925 96.84764445-32.88936297 20.38897778-75.97321482 7.64586667-96.24082963-25.48622222-20.38897778-35.68071111-7.76722963-79.00728889 25.2434963-96.84764445z m362.38980741 452.31976297c-15.17037037 0-30.4621037 0-45.63247408 5.09724444-15.4130963 6.18951111-30.70482963 12.98583703-45.63247408 20.38897778-73.42459259 33.13208889-167.23816297 73.91004445-235.5655111 73.91004444-27.91348148 0-63.35146667-7.64586667-98.78945185-20.38897778-5.09724445 33.13208889-10.19448889 66.26417778-12.62174815 96.84764445 0 20.38897778-2.54862222 38.22933333-5.09724445 53.52106667 0 2.54862222-2.54862222 2.54862222-2.54862222 5.09724444-5.09724445 17.84035555-12.62174815 33.13208889-20.26761482 48.42382222 0 2.54862222-2.54862222 2.54862222-2.54862222 5.09724445 50.72971852-20.38897778 101.33807408-35.68071111 141.87330371-35.68071111 68.44871111 0 162.26228148 43.32657778 238.23549629 76.45866666 17.71899259 7.64586667 32.88936297 15.29173333 45.63247407 20.38897778h2.54862223c15.17037037 2.54862222 27.91348148 5.09724445 43.08385184 5.09724444 98.78945185 0 174.88402963-76.45866667 174.88402964-175.9762963-0.12136297-99.2749037-78.6432-178.28219259-177.55401481-178.28219258z m2.54862222 249.88634074c-40.53522963 0-70.99733333-33.13208889-70.99733333-71.36142223 0-40.77795555 33.01072592-71.36142222 70.99733333-71.36142221 40.53522963 0 70.99733333 30.58346667 70.99733333 71.36142221 0 40.77795555-33.01072592 71.36142222-70.99733333 71.36142223z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3354 = [\n  _hoisted_2358\n];\nfunction _sfc_render358(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock358(), _createElementBlock358(\"svg\", _hoisted_1359, _hoisted_3354);\n}\nvar menu_bz_biaozhunguanli_default = /* @__PURE__ */ export_helper_default(menu_bz_biaozhunguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render358], [\"__file\", \"menu-bz-biaozhunguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-bz-jianmobiaozhun.vue?vue&type=script&lang.ts\nvar menu_bz_jianmobiaozhun_vue_vue_type_script_lang_default = {\n  name: \"MenuBzJianmobiaozhun\"\n};\n\n// src/components/menu-bz-jianmobiaozhun.vue\nimport { createElementVNode as _createElementVNode355, openBlock as _openBlock359, createElementBlock as _createElementBlock359 } from \"vue\";\nvar _hoisted_1360 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2359 = /* @__PURE__ */ _createElementVNode355(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M507.52 288l286.08 496H220.8L507.52 288m0-224L26.88 896h960L507.52 64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3355 = /* @__PURE__ */ _createElementVNode355(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M479.168 480.704l64-0.96 1.472 96-64 0.96zM478.72 457.6V364.16h64v93.44z m0-116.48V247.68h64v92.8zM473.6 128.192l64-0.96 1.536 96-64 0.96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_475 = /* @__PURE__ */ _createElementVNode355(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M466.56 547.264l41.6-48.64 72.96 62.464-41.6 48.64zM714.24 759.04l-70.4-60.16 41.6-48.64 70.4 60.16zM626.56 684.8L556.8 624 598.4 576l70.4 60.16zM730.24 773.504l41.6-48.64 72.96 62.464-41.6 48.64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_532 = /* @__PURE__ */ _createElementVNode355(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M442.496 559.872l74.24-60.928 40.576 49.472-74.24 60.928zM300.16 759.04l-40.32-49.28 72.32-59.52 40.32 49.92z m91.52-74.88l-40.96-49.28L423.04 576l40.96 49.28zM166.912 786.368l74.112-60.992 40.64 49.408-74.112 60.992z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_6 = [\n  _hoisted_2359,\n  _hoisted_3355,\n  _hoisted_475,\n  _hoisted_532\n];\nfunction _sfc_render359(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock359(), _createElementBlock359(\"svg\", _hoisted_1360, _hoisted_6);\n}\nvar menu_bz_jianmobiaozhun_default = /* @__PURE__ */ export_helper_default(menu_bz_jianmobiaozhun_vue_vue_type_script_lang_default, [[\"render\", _sfc_render359], [\"__file\", \"menu-bz-jianmobiaozhun.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-bz-yanshoubiaozhun.vue?vue&type=script&lang.ts\nvar menu_bz_yanshoubiaozhun_vue_vue_type_script_lang_default = {\n  name: \"MenuBzYanshoubiaozhun\"\n};\n\n// src/components/menu-bz-yanshoubiaozhun.vue\nimport { createElementVNode as _createElementVNode356, openBlock as _openBlock360, createElementBlock as _createElementBlock360 } from \"vue\";\nvar _hoisted_1361 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2360 = /* @__PURE__ */ _createElementVNode356(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M757.76 63.146667v160.426666h136.533333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3356 = /* @__PURE__ */ _createElementVNode356(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M738.986667 295.253333c-29.013333 0-54.613333-23.893333-54.613334-54.613333V34.133333h-512C139.946667 34.133333 114.346667 66.56 114.346667 104.106667v814.08c0 39.253333 25.6 69.973333 59.733333 69.973333H853.333333c32.426667 0 59.733333-32.426667 59.733334-69.973333V295.253333H738.986667z m-220.16 162.133334c13.653333-13.653333 35.84-11.946667 47.786666 1.706666l37.546667 39.253334 110.933333-104.106667c13.653333-13.653333 35.84-11.946667 47.786667 1.706667 13.653333 13.653333 11.946667 35.84-1.706667 47.786666l-128 119.466667c-8.533333 8.533333-18.773333 11.946667-30.72 11.946667s-23.893333-5.12-32.426666-13.653334l-54.613334-56.32c-11.946667-13.653333-10.24-34.133333 3.413334-47.786666z m-244.053334-151.893334h126.293334c18.773333 0 34.133333 15.36 34.133333 34.133334s-15.36 34.133333-34.133333 34.133333h-126.293334c-18.773333 0-34.133333-15.36-34.133333-34.133333s13.653333-34.133333 34.133333-34.133334z m0 191.146667h126.293334c18.773333 0 34.133333 15.36 34.133333 34.133333s-15.36 34.133333-34.133333 34.133334h-126.293334c-18.773333 0-34.133333-15.36-34.133333-34.133334s13.653333-34.133333 34.133333-34.133333z m467.626667 259.413333H274.773333c-18.773333 0-34.133333-15.36-34.133333-34.133333s15.36-34.133333 34.133333-34.133333h469.333334c18.773333 0 34.133333 15.36 34.133333 34.133333s-17.066667 34.133333-35.84 34.133333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_476 = [\n  _hoisted_2360,\n  _hoisted_3356\n];\nfunction _sfc_render360(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock360(), _createElementBlock360(\"svg\", _hoisted_1361, _hoisted_476);\n}\nvar menu_bz_yanshoubiaozhun_default = /* @__PURE__ */ export_helper_default(menu_bz_yanshoubiaozhun_vue_vue_type_script_lang_default, [[\"render\", _sfc_render360], [\"__file\", \"menu-bz-yanshoubiaozhun.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-caozuorenyuan.vue?vue&type=script&lang.ts\nvar menu_caozuorenyuan_vue_vue_type_script_lang_default = {\n  name: \"MenuCaozuorenyuan\"\n};\n\n// src/components/menu-caozuorenyuan.vue\nimport { openBlock as _openBlock361, createElementBlock as _createElementBlock361, createStaticVNode as _createStaticVNode5 } from \"vue\";\nvar _hoisted_1362 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2361 = /* @__PURE__ */ _createStaticVNode5('<path fill=\"currentColor\" d=\"M512 539.21185224c-121.36296334 0-218.45333333-97.09036999-218.45333333-218.45333334 0-14.56355555 9.70903666-24.27259221 24.27259221-24.27259335s24.27259221 9.70903666 24.27259335 24.27259335c0 94.66311111 75.24503666 169.90814777 169.90814777 169.90814777s169.90814777-75.24503666 169.90814777-169.90814777c0-14.56355555 9.70903666-24.27259221 24.27259335-24.27259335s24.27259221 9.70903666 24.27259221 24.27259335c0 121.36296334-97.09036999 218.45333333-218.45333333 218.45333334z\"></path><path fill=\"currentColor\" d=\"M512 126.57777778c-106.79940779 0-194.18074112 87.38133333-194.18074112 194.18074112h388.36148224c0-106.79940779-87.38133333-194.18074112-194.18074112-194.18074112z\"></path><path fill=\"currentColor\" d=\"M706.18074112 345.03111112H317.81925888c-14.56355555 0-24.27259221-9.70903666-24.27259221-24.27259222 0-121.36296334 97.09036999-218.45333333 218.45333333-218.45333333s218.45333333 97.09036999 218.45333333 218.45333333c0 14.56355555-9.70903666 24.27259221-24.27259221 24.27259222z m-361.66163001-48.54518557H681.90814777c-12.13629667-82.52681443-82.52681443-145.63555555-167.48088889-145.63555555-84.95407445 0-157.77185223 63.10874112-169.90814777 145.63555555z\"></path><path fill=\"currentColor\" d=\"M803.27111111 345.03111112H220.72888889c-14.56355555 0-24.27259221-9.70903666-24.27259222-24.27259222s9.70903666-24.27259221 24.27259222-24.27259335h582.54222222c14.56355555 0 24.27259221 9.70903666 24.27259222 24.27259335s-9.70903666 24.27259221-24.27259222 24.27259222zM512 150.85037c-14.56355555 0-24.27259221-9.70903666-24.27259221-24.27259222V29.48740779c0-14.56355555 9.70903666-24.27259221 24.27259221-24.27259335s24.27259221 9.70903666 24.27259221 24.27259335v97.09036999c0 14.56355555-9.70903666 24.27259221-24.27259221 24.27259222z\"></path><path fill=\"currentColor\" d=\"M512 587.75703666c-228.16236999 0-412.63407445 174.76266667-412.63407445 388.36148224h825.2681489c0-213.59881443-184.47170333-388.3614811-412.63407445-388.36148224z\"></path><path fill=\"currentColor\" d=\"M924.63407445 1000.39111112H99.36592555c-14.56355555 0-24.27259221-9.70903666-24.27259222-24.27259222 0-228.16236999 196.608-412.63407445 436.90666667-412.63407445s436.90666667 184.47170333 436.90666667 412.63407445c0 14.56355555-9.70903666 24.27259221-24.27259222 24.27259222zM123.6385189 951.84592555h776.7229622c-14.56355555-189.32622222-182.04444445-339.81629667-388.3614811-339.81629554S138.20207445 762.51970333 123.6385189 951.84592555z\"></path><path fill=\"currentColor\" d=\"M366.36444445 879.02814777c-14.56355555 0-24.27259221-9.70903666-24.27259222-24.27259221v-97.09036999c0-14.56355555 9.70903666-24.27259221 24.27259222-24.27259335s24.27259221 9.70903666 24.27259221 24.27259335v97.09036999c0 14.56355555-9.70903666 24.27259221-24.27259221 24.27259221zM657.63555555 879.02814777c-14.56355555 0-24.27259221-9.70903666-24.27259221-24.27259221v-97.09036999c0-14.56355555 9.70903666-24.27259221 24.27259221-24.27259335s24.27259221 9.70903666 24.27259222 24.27259335v97.09036999c0 14.56355555-9.70903666 24.27259221-24.27259222 24.27259221z\"></path>', 7), _hoisted_9 = [\n  _hoisted_2361\n];\nfunction _sfc_render361(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock361(), _createElementBlock361(\"svg\", _hoisted_1362, _hoisted_9);\n}\nvar menu_caozuorenyuan_default = /* @__PURE__ */ export_helper_default(menu_caozuorenyuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render361], [\"__file\", \"menu-caozuorenyuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-cz-banbeng.vue?vue&type=script&lang.ts\nvar menu_cz_banbeng_vue_vue_type_script_lang_default = {\n  name: \"MenuCzBanbeng\"\n};\n\n// src/components/menu-cz-banbeng.vue\nimport { createElementVNode as _createElementVNode357, openBlock as _openBlock362, createElementBlock as _createElementBlock362 } from \"vue\";\nvar _hoisted_1363 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2362 = /* @__PURE__ */ _createElementVNode357(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M946.28977778 243.82577778l-9.67111111-9.67111111-119.58044445-119.69422222-111.84355555-111.84355556c-0.22755555-0.22755555-0.45511111-0.34133333-0.79644445-0.34133334H100.12444445c-12.51555555 0-22.75555555 10.24-22.75555556 22.75555556v973.93777778c0 12.51555555 10.24 22.75555555 22.75555556 22.75555556h823.7511111c12.51555555 0 22.75555555-10.24 22.75555556-22.75555556V244.62222222c0-0.22755555-0.11377778-0.56888889-0.34133333-0.79644444zM346.56711111 363.97511111h52.56533334c0.45511111 0 0.91022222 0.22755555 1.024 0.68266667l103.08266666 246.67022222c3.41333333 8.192 6.03022222 17.63555555 7.73688889 28.44444445h1.25155555c1.36533333-9.44355555 4.20977778-19.00088889 8.64711112-28.78577778L625.77777778 364.65777778c0.22755555-0.45511111 0.56888889-0.68266667 1.024-0.68266667h50.51733333c0.79644445 0 1.36533333 0.79644445 1.024 1.59288889l-139.94666666 314.14044445c-0.22755555 0.45511111-0.56888889 0.68266667-1.024 0.68266666h-53.47555556c-0.45511111 0-0.91022222-0.22755555-1.024-0.68266666L345.54311111 365.568c-0.34133333-0.68266667 0.22755555-1.59288889 1.024-1.59288889z m355.78311111 465.35111111c0 0.56888889-0.45511111 1.13777778-1.13777777 1.13777778H322.78755555c-0.56888889 0-1.13777778-0.45511111-1.13777777-1.13777778v-65.64977777c0-0.56888889 0.45511111-1.13777778 1.13777777-1.13777778h378.31111112c0.56888889 0 1.13777778 0.45511111 1.13777778 1.13777778v65.64977777zM859.59111111 256H694.15822222c-0.56888889 0-1.13777778-0.45511111-1.13777777-1.13777778V89.31555555c0-1.024 1.25155555-1.47911111 1.93422222-0.79644444l75.54844444 75.54844444 89.88444444 89.99822223c0.79644445 0.68266667 0.22755555 1.93422222-0.79644444 1.93422222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3357 = [\n  _hoisted_2362\n];\nfunction _sfc_render362(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock362(), _createElementBlock362(\"svg\", _hoisted_1363, _hoisted_3357);\n}\nvar menu_cz_banbeng_default = /* @__PURE__ */ export_helper_default(menu_cz_banbeng_vue_vue_type_script_lang_default, [[\"render\", _sfc_render362], [\"__file\", \"menu-cz-banbeng.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-daibanshiyi.vue?vue&type=script&lang.ts\nvar menu_daibanshiyi_vue_vue_type_script_lang_default = {\n  name: \"MenuDaibanshiyi\"\n};\n\n// src/components/menu-daibanshiyi.vue\nimport { createElementVNode as _createElementVNode358, openBlock as _openBlock363, createElementBlock as _createElementBlock363 } from \"vue\";\nvar _hoisted_1364 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2363 = /* @__PURE__ */ _createElementVNode358(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M966.79936 655.37023999a270.7968 270.7968 0 0 0-143.02208-40.95999999c-143.02208 0-257.43359999 102.4-257.4336 230.4a208.4352 208.4352 0 0 0 45.7728 128H57.21088c-34.33472 0-57.21087998-20.48-57.21088-51.2v-870.4c0-30.72 22.87616-51.2 57.21088-51.2h858.112c34.32448 0 57.20064 20.48 57.20064 51.2v604.16000001h-5.71391998z m-200.22272-399.35999999a25.76384001 25.76384001 0 1 0 0-51.2H194.5088a25.76384001 25.76384001 0 1 0 0 51.2h572.07808z m0 255.99999999a25.76384001 25.76384001 0 1 0 0-51.19999999H194.5088a25.76384001 25.76384001 0 1 0 0 51.19999999h572.07808z m-577.79200001 204.80000001a25.76384001 25.76384001 0 0 0 2e-8 51.2h303.20639999a25.76384001 25.76384001 0 0 0 0-51.2z m2e-8 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3358 = /* @__PURE__ */ _createElementVNode358(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M852.38783999 819.2v-76.80000001a28.78464 28.78464 0 0 0-57.21087999 0v102.40000002c0 5.12000001 5.72416 15.36000001 5.72416 20.47999998s11.43808 5.12000001 22.87616 5.12000001H938.18880001a25.76384001 25.76384001 0 1 0-3e-8-51.2h-85.80095999z m-28.61055999 204.8c-108.68736 0-200.22271999-81.92000001-200.22272-179.20000001S715.08992 665.6 823.77728 665.6 1024 747.52 1024 844.80000001 932.48512 1024 823.77728 1024z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_477 = [\n  _hoisted_2363,\n  _hoisted_3358\n];\nfunction _sfc_render363(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock363(), _createElementBlock363(\"svg\", _hoisted_1364, _hoisted_477);\n}\nvar menu_daibanshiyi_default = /* @__PURE__ */ export_helper_default(menu_daibanshiyi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render363], [\"__file\", \"menu-daibanshiyi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-dangjianguanli.vue?vue&type=script&lang.ts\nvar menu_dangjianguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuDangjianguanli\"\n};\n\n// src/components/menu-dangjianguanli.vue\nimport { createElementVNode as _createElementVNode359, openBlock as _openBlock364, createElementBlock as _createElementBlock364 } from \"vue\";\nvar _hoisted_1365 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2364 = /* @__PURE__ */ _createElementVNode359(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M605.602654 881.068969l-16.625622-15.361842-71.288484 66.752177 16.124203 15.108062c20.201047 15.403797 48.711324 13.353096 66.499421-4.780877a42.019938 42.019938 0 0 0 16.197881-29.699356 42.08236 42.08236 0 0 0-10.907399-32.018164z m304.307119-285.919367c15.731255 17.970244 14.61483 45.101107-2.518351 61.718544-17.722605 18.583203-46.584898 20.864148-67.006979 5.298669L689.235256 528.904985l-14.860423 14.35184-11.334117 10.580965L809.652572 689.625135a42.32079 42.32079 0 0 1 10.701715 32.435672 42.380142 42.380142 0 0 1-16.746372 29.782244 58.206564 58.206564 0 0 1-36.022353 15.615621c-11.309558 0.951673-22.521901-2.772131-30.98565-10.333325L585.450726 617.318463l-25.186586 25.194772 148.122253 142.069409a35.801319 35.801319 0 0 1 10.834745 28.977927 50.418196 50.418196 0 0 1-17.133182 33.502978 58.219866 58.219866 0 0 1-35.013375 17.887356 41.346604 41.346604 0 0 1-30.985649-10.333325l-16.124204-14.861446a70.781948 70.781948 0 0 0 22.159651-52.4822 70.804461 70.804461 0 0 0-23.670048-51.810913 83.12402 83.12402 0 0 0-56.427038-21.661302 98.65266 98.65266 0 0 0-15.371051 1.262757 70.526122 70.526122 0 0 0-23.177839-61.218148 82.342215 82.342215 0 0 0-56.422945-21.667442 93.581165 93.581165 0 0 0-14.861446 0 68.613567 68.613567 0 0 0 0-8.308206 71.551473 71.551473 0 0 0-23.678235-52.656162 82.667626 82.667626 0 0 0-56.428061-21.659256 94.215613 94.215613 0 0 0-18.138066 2.016933 83.723676 83.723676 0 0 0 0-10.335372 71.596498 71.596498 0 0 0-23.682328-52.654115c-32.204405-29.034209-81.151089-29.034209-113.359587 0l-71.793996 67.016189 5.289459-5.798042a570.990415 570.990415 0 0 1-92.957973-91.433249l-2.768037-4.034888C-17.119878 343.234632-5.784738 237.940728 87.681816 148.001503A257.489931 257.489931 0 0 1 285.174401 77.466171a280.99932 280.99932 0 0 1 154.925179 54.164512c9.067498 7.307415 24.186817 21.159883 45.84812 40.565823-99.503026 91.186633-222.68838 210.340169-229.742016 217.148212l-12.344118 11.835535 12.344118 11.834513c3.02284 3.280713 82.373938 78.850702 171.300092 78.850701h10.579942a242.761514 242.761514 0 0 0 141.06657-57.182236l88.929225-75.571011 125.945205 122.172283 115.883055 113.865099zM753.224511 66.132054a247.436991 247.436991 0 0 0-147.367054 46.602295c-72.044706 59.208378-259.470024 238.562897-310.60351 287.68252 23.928944 19.404917 77.334165 57.190423 131.74427 57.190422h9.324348a206.581573 206.581573 0 0 0 117.386289-47.856865l115.627229-100.765784 226.720199 220.419715c20.150905-19.905312 57.690818-57.682632 72.042659-73.806835a216.428828 216.428828 0 0 0 47.611272-123.189447c2.870368-70.493377-25.745309-138.608594-78.089363-185.915946a255.726778 255.726778 0 0 0-184.396339-80.360075zM591.24979 757.632906a38.036215 38.036215 0 0 1 12.802558 28.466275 38.042355 38.042355 0 0 1-12.802558 28.470368L478.390598 920.117232c-17.333749 15.575713-43.624479 15.575713-60.959251 0a38.279762 38.279762 0 0 1 0-56.927433L530.286445 757.633929c17.329656-15.583899 43.624479-15.583899 60.963345-0.001023z m-94.971835-81.359844c-17.338866-15.583899-43.628573-15.583899-60.963345 0L322.459512 781.812559a38.304321 38.304321 0 0 0-12.593805 28.474462 39.033937 39.033937 0 0 0 12.593805 28.461158c17.330679 15.583899 43.628573 15.583899 60.963344 0l112.855099-105.548707a38.058728 38.058728 0 0 0 12.811768-28.466275 38.025982 38.025982 0 0 0-12.811768-28.460135zM316.91525 540.9943a38.776064 38.776064 0 0 0-12.593805-28.468322c-17.334772-15.583899-43.628573-15.583899-60.963345 0L130.249223 618.328465a38.046448 38.046448 0 0 0 0 56.680817c17.337842 15.575713 43.628573 15.575713 60.967438 0l113.105808-105.048311a38.781181 38.781181 0 0 0 12.593804-28.212496v-0.754175h-0.001023z m97.493256 82.624647a38.540704 38.540704 0 0 0-12.597897-28.468321c-17.334772-15.575713-43.625503-15.575713-60.959252 0L227.738386 700.952089a38.060775 38.060775 0 0 0-12.597898 28.466275 38.5581 38.5581 0 0 0 12.597898 28.461158c17.337842 15.583899 43.628573 15.583899 60.967438 0l112.855099-105.548707a38.788344 38.788344 0 0 0 12.593804-28.459112l0.253779-0.252756z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3359 = [\n  _hoisted_2364\n];\nfunction _sfc_render364(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock364(), _createElementBlock364(\"svg\", _hoisted_1365, _hoisted_3359);\n}\nvar menu_dangjianguanli_default = /* @__PURE__ */ export_helper_default(menu_dangjianguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render364], [\"__file\", \"menu-dangjianguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-dangzuzhiguanli.vue?vue&type=script&lang.ts\nvar menu_dangzuzhiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuDangzuzhiguanli\"\n};\n\n// src/components/menu-dangzuzhiguanli.vue\nimport { createElementVNode as _createElementVNode360, openBlock as _openBlock365, createElementBlock as _createElementBlock365 } from \"vue\";\nvar _hoisted_1366 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2365 = /* @__PURE__ */ _createElementVNode360(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M517.53415111 1015.38702222c-124.48927289 0-242.04629333-23.47645155-331.05874489-66.060288-97.22629689-46.54512355-150.76192711-111.44032711-150.76192711-182.74349511 0-73.40032 56.27357867-139.57711645 158.45148444-186.35525689 17.53452089-8.03908267 38.273024-0.29127111 46.31210667 17.24324978s0.29127111 38.273024-17.24324977 46.31210666c-74.74016711 34.19522845-117.61527467 78.93447111-117.61527467 122.79990045 0 84.58513067 169.17026133 178.89871645 411.91560533 178.89871644s411.91560533-94.25533155 411.91560534-178.89871644c0-84.64338489-169.17026133-178.89871645-411.91560534-178.89871645-11.65084445 0-23.35994311 0.23301689-34.83602489 0.64079645-19.28214755 1.048576-35.53507555-14.27228445-36.29238044-33.554432a34.95253333 34.95253333 0 0 1 33.554432-36.29238045c12.34989511-0.46603378 24.99106133-0.69905067 37.51571911-0.69905066 124.48927289 0 242.04629333 23.47645155 331.05874489 66.060288 97.22629689 46.54512355 150.76192711 111.44032711 150.76192711 182.74349511s-53.53563022 136.19837155-150.76192711 182.74349511c-88.95419733 42.64209067-206.51121778 66.060288-331.00049067 66.060288z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3360 = /* @__PURE__ */ _createElementVNode360(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M428.17217422 862.236672c-14.155776 0-27.49599289-8.67987911-32.73887289-22.77740089l-111.96461511-300.417024c-2.33016889-3.78652445-3.96128711-8.03908267-4.66033777-12.582912L124.95894755 113.78642488l19.398656-15.84514844c4.95160889-4.01954133 122.85815467-98.10011022 302.92195556-64.72044089 9.90321778 1.80588089 19.74818133 3.670016 29.53489067 5.53415111 79.691776 15.08784355 154.95623111 29.30187378 213.909504 19.86468978 40.77795555-6.52447289 77.65287822-29.360128 91.63389155-38.85556622a40.76630471 40.76630471 0 0 1 42.05954845-2.38842311 40.74300302 40.74300302 0 0 1 21.72882489 36.05936355v364.49666845c0 12.23338667-5.41764267 23.70946845-14.85482667 31.51553422a40.64397085 40.64397085 0 0 1-33.67094045 8.56337067c-30.99124622-6.00018489-193.52052622-35.41856711-349.05929955-29.94267022-85.10941867 3.08747378-98.21661867 61.865984-100.08075378 85.34243555l112.43064889 301.64036267a34.93505707 34.93505707 0 0 1-20.56374044 44.97225955c-3.96128711 1.45635555-8.09733689 2.21366045-12.17513245 2.21366045zM208.84502755 138.719232l104.333312 279.91153778c25.39884089-32.21458489 67.108864-58.02120533 132.93613512-60.35137423 130.43120355-4.66033778 265.05671111 14.09752178 330.12667733 24.99106133v-279.62026666c-21.20453689 10.13623467-46.77814045 19.57341867-74.39064178 24.00073956-71.01189689 11.41782755-152.10177422-3.96128711-237.96849777-20.1559609-9.72845511-1.86413511-19.51516445-3.670016-29.30187378-5.47589688-108.93539555-20.21421511-189.90876445 15.78689422-225.73511112 36.70016z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_478 = [\n  _hoisted_2365,\n  _hoisted_3360\n];\nfunction _sfc_render365(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock365(), _createElementBlock365(\"svg\", _hoisted_1366, _hoisted_478);\n}\nvar menu_dangzuzhiguanli_default = /* @__PURE__ */ export_helper_default(menu_dangzuzhiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render365], [\"__file\", \"menu-dangzuzhiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-danweianquanguanli.vue?vue&type=script&lang.ts\nvar menu_danweianquanguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuDanweianquanguanli\"\n};\n\n// src/components/menu-danweianquanguanli.vue\nimport { createElementVNode as _createElementVNode361, openBlock as _openBlock366, createElementBlock as _createElementBlock366 } from \"vue\";\nvar _hoisted_1367 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2366 = /* @__PURE__ */ _createElementVNode361(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M199.365022 873.823373H398.222556V712.155004c-23.053482-5.509876-39.763107-19.824555-39.763107-37.098166 0-17.249613 16.709625-31.565291 39.763107-37.075168V476.313302H199.365022v397.511071z m477.329279-309.225054a256.231245 256.231245 0 0 1 39.762107-15.669648V416.658641h113.913441l-412.232741-292.743424L5.882368 416.659641h113.890442v457.164732h39.807106V436.550195h517.114385v128.048124zM962.662878 765.442807a177.971003 177.971003 0 0 0-27.749377-60.128649l31.091302-51.910834-27.502383-27.59238-53.715793 32.289274a173.974092 173.974092 0 0 0-56.53873-22.421496l-15.534651-62.003607h-38.905126l-15.534652 62.003607a170.339174 170.339174 0 0 0-56.08674 22.669491l-54.190783-32.537269-27.501382 27.59238 31.249298 52.135829a175.939048 175.939048 0 0 0-27.975371 59.948653l-55.364757 13.84069v38.995124l51.412845 12.869711a175.578056 175.578056 0 0 0 26.124414 70.606414l-25.446429 42.472046 27.501382 27.569381 40.52909-24.340454c21.586515 16.189636 46.672952 27.930373 74.332331 32.785264l10.950754 43.714018h38.905126l10.949754-43.759017a175.306062 175.306062 0 0 0 74.196333-32.785264l40.621088 24.408452 27.501382-27.569381-25.627424-42.811038c13.321701-20.93153 22.895486-44.527 26.349408-70.267422l51.368846-12.869711v-38.995124l-55.409755-13.909688zM793.293682 905.096671a97.429812 97.429812 0 0 1-97.339814-97.475811c0-53.828791 43.578021-97.452811 97.339814-97.452811s97.361813 43.64602 97.361813 97.452811a97.452811 97.452811 0 0 1-97.361813 97.475811zM636.887195 588.893773V476.313302H438.007662v161.668368c23.053482 5.509876 39.739107 19.824555 39.739107 37.075168s-16.685625 31.58929-39.739107 37.099166v161.667369h104.835645c-7.13484-23.933462-12.192726-48.770905-12.192726-75.031315 0-86.163065 42.133054-162.006361 106.236614-209.898285z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3361 = [\n  _hoisted_2366\n];\nfunction _sfc_render366(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock366(), _createElementBlock366(\"svg\", _hoisted_1367, _hoisted_3361);\n}\nvar menu_danweianquanguanli_default = /* @__PURE__ */ export_helper_default(menu_danweianquanguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render366], [\"__file\", \"menu-danweianquanguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-dianziqianming.vue?vue&type=script&lang.ts\nvar menu_dianziqianming_vue_vue_type_script_lang_default = {\n  name: \"MenuDianziqianming\"\n};\n\n// src/components/menu-dianziqianming.vue\nimport { createElementVNode as _createElementVNode362, openBlock as _openBlock367, createElementBlock as _createElementBlock367 } from \"vue\";\nvar _hoisted_1368 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2367 = /* @__PURE__ */ _createElementVNode362(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M992.26676747 906.03927713c18.57946616 0 33.64173913 15.05889755 33.64173915 33.63498826 0 18.30943215-14.63471909 33.20293384-32.84738904 33.62486202l-0.79435011 0.00900113H50.29807182C31.71860565 973.30812854 16.65633271 958.24923101 16.65633271 939.67426541c0-18.31055727 14.63471909-33.20293384 32.84738902-33.62486202l0.7943501-0.01012626h941.96869564zM657.42119923 60.72363554c38.68012401-36.59861172 99.47153422-35.76263138 137.13002948 1.88686276l96.00047185 95.97909414c38.40333913 38.39546314 38.40333913 100.64393195 0 139.03939508l-345.8325777 345.75606805a292.43334896 292.43334896 0 0 1-109.50892402 68.98244236L224.14710321 786.79337618c-20.21767259 7.1288983-42.38746615-3.47668809-49.51748961-23.68986011a38.80051418 38.80051418 0 0 1-1.29053761-21.31018525l43.21106993-194.81267298a292.34221248 292.34221248 0 0 1 84.48352062-149.0452809z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3362 = [\n  _hoisted_2367\n];\nfunction _sfc_render367(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock367(), _createElementBlock367(\"svg\", _hoisted_1368, _hoisted_3362);\n}\nvar menu_dianziqianming_default = /* @__PURE__ */ export_helper_default(menu_dianziqianming_vue_vue_type_script_lang_default, [[\"render\", _sfc_render367], [\"__file\", \"menu-dianziqianming.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-fangxunguanli.vue?vue&type=script&lang.ts\nvar menu_fangxunguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuFangxunguanli\"\n};\n\n// src/components/menu-fangxunguanli.vue\nimport { createElementVNode as _createElementVNode363, openBlock as _openBlock368, createElementBlock as _createElementBlock368 } from \"vue\";\nvar _hoisted_1369 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2368 = /* @__PURE__ */ _createElementVNode363(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1029.81530905 84.80237037v647.2691354c0 21.48933571-17.34681244 38.83614815-38.83614815 38.83614815H537.89076502v129.45382756h181.23535884c21.48933571 0 38.83614815 17.34681244 38.83614815 38.83614815s-17.34681244 38.83614815-38.83614815 38.83614815H278.98311111c-21.48933571 0-38.83614815-17.34681244-38.83614814-38.83614815s17.34681244-38.83614815 38.83614814-38.83614815h181.23535762V732.07150577c0-21.48933571 17.34681244-38.83614815 38.83614816-38.83614815h453.08839586v-569.5968391H71.85698725v462.92688593L290.37504831 368.04734461a38.83614815 38.83614815 0 0 1 54.88842191 0L499.05461689 521.83849127 716.01923201 304.87387614H680.28997571c-21.48933571 0-38.83614815-17.34681244-38.83614815-38.83614815s17.34681244-38.83614815 38.83614815-38.83614815h129.45382635c2.45962311 0 4.91924502 0.25890725 7.37886816 0.77672297 0.38836148 0 0.90617719 0.12945423 1.42399289 0.25890846a38.40895052 38.40895052 0 0 1 12.55702044 5.43706074c1.16508445 0.64726873 2.20071466 1.42399169 3.10689184 2.33016889 2.07126164 1.55344592 4.01306905 3.49525333 5.56651498 5.56651376 0.90617719 0.90617719 1.68290016 1.94180741 2.33016888 3.10689185a38.40895052 38.40895052 0 0 1 5.43706075 12.55702164c0.12945423 0.51781571 0.25890725 1.03563022 0.25890725 1.42399169 0.51781571 2.45962311 0.77672297 4.91924502 0.77672297 7.37886815V395.49155555c0 21.48933571-17.34681244 38.83614815-38.83614816 38.83614815s-38.83614815-17.34681244-38.83614814-38.83614815V359.76229925L526.49882905 604.17112534c-7.50832238 7.63777539-17.47626667 11.39193719-27.44421216 11.39193598s-19.93588978-3.75416059-27.44421097-11.39193598L317.81925925 450.37997868 60.46505127 707.73418667c-3.75416059 3.88361482-8.15559111 6.73159941-12.81592889 8.54395258a40.48021216 40.48021216 0 0 1-7.24941513 2.20071467c-2.45962311 0.38836148-4.91924502 0.64726873-7.37886815 0.64726994s-4.91924502-0.25890725-7.37886815-0.64726994c-0.25890725-0.12945423-0.38836148-0.12945423-0.5178145-0.12945302-2.33016889-0.51781571-4.53088355-1.16508445-6.73159942-2.07126165a35.93638283 35.93638283 0 0 1-15.40500502-11.5213902c-1.55344592-1.81235317-2.97743762-3.88361482-4.14252328-5.95487646-1.29453868-2.58907614-2.33016889-5.17815349-3.10689184-7.76722962-0.38836148-1.16508445-0.64726873-2.20071466-0.77672297-3.36579911-0.12945423-0.51781571-0.25890725-1.03563022-0.25890725-1.55344592-0.38836148-1.94180741-0.51781571-3.88361482-0.51781572-5.82542223v-595.48760534c0-21.48933571 17.34681244-38.83614815 38.83614815-38.83614815h957.9583218c21.48933571 0 38.83614815 17.34681244 38.83614815 38.83614815z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3363 = [\n  _hoisted_2368\n];\nfunction _sfc_render368(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock368(), _createElementBlock368(\"svg\", _hoisted_1369, _hoisted_3363);\n}\nvar menu_fangxunguanli_default = /* @__PURE__ */ export_helper_default(menu_fangxunguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render368], [\"__file\", \"menu-fangxunguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gangweiguanli.vue?vue&type=script&lang.ts\nvar menu_gangweiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuGangweiguanli\"\n};\n\n// src/components/menu-gangweiguanli.vue\nimport { createElementVNode as _createElementVNode364, openBlock as _openBlock369, createElementBlock as _createElementBlock369 } from \"vue\";\nvar _hoisted_1370 = {\n  class: \"icon\",\n  viewBox: \"0 0 1056 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2369 = /* @__PURE__ */ _createElementVNode364(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M99.84 1042.29546667a96.69973333 96.69973333 0 0 1-96.49493333-96.52906667V542.4128c84.30933333 57.82186667 248.08106667 95.6416 450.73066666 104.0384v123.46026667c0.03413333 6.72426667 5.46133333 12.11733333 12.1856 12.15146666h137.45493334a12.21973333 12.21973333 0 0 0 12.11733333-12.15146666v-123.32373334a1285.18826667 1285.18826667 0 0 0 355.1232-57.7536c33.72373333-11.19573333 65.87733333-26.7264 95.57333333-46.21653333v403.1488a96.6656 96.6656 0 0 1-96.3584 96.52906667H99.84z m359.18506667-468.61653334c-189.61066667-7.61173333-345.25866667-42.3936-416.63146667-92.9792-24.9856-17.74933333-39.04853333-36.11306667-39.04853333-54.54506666V260.02773333a96.768 96.768 0 0 1 96.52906666-96.59733333H249.856V46.42133333c0-32.83626667 23.89333333-60.75733333 56.32-65.80906666H763.904c32.42666667 5.08586667 56.35413333 32.9728 56.45653333 65.80906666v117.07733334h149.9136a96.4608 96.4608 0 0 1 96.39253334 96.32426666v166.22933334a63.0784 63.0784 0 0 1-27.06773334 45.60213333 293.75146667 293.75146667 0 0 1-92.63786666 48.36693333A1353.04533333 1353.04533333 0 0 1 534.528 575.14666667a1665.024 1665.024 0 0 1-75.43466667-1.46773334h-0.06826666zM711.33866667 163.49866667V99.328a17.3056 17.3056 0 0 0-17.27146667-17.27146667h-318.1568a17.37386667 17.37386667 0 0 0-17.2032 17.27146667V163.49866667h352.59733333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3364 = [\n  _hoisted_2369\n];\nfunction _sfc_render369(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock369(), _createElementBlock369(\"svg\", _hoisted_1370, _hoisted_3364);\n}\nvar menu_gangweiguanli_default = /* @__PURE__ */ export_helper_default(menu_gangweiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render369], [\"__file\", \"menu-gangweiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gerenanquanguanli.vue?vue&type=script&lang.ts\nvar menu_gerenanquanguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuGerenanquanguanli\"\n};\n\n// src/components/menu-gerenanquanguanli.vue\nimport { createElementVNode as _createElementVNode365, openBlock as _openBlock370, createElementBlock as _createElementBlock370 } from \"vue\";\nvar _hoisted_1371 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2370 = /* @__PURE__ */ _createElementVNode365(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M925.77792 774.10816a152.1152 152.1152 0 0 0-15.45728-37.46816l29.50656-44.416-0.1536-0.0768-41.91744-41.91232-0.0768-0.0768-44.416 29.50656a153.37472 153.37472 0 0 0-37.30944-15.45728l-10.61888-52.21888h-59.39712l-10.61888 52.14208a153.2928 153.2928 0 0 0-37.31456 15.45728l-44.416-29.42976-42.07104 42.07104 29.50144 44.416a149.43744 149.43744 0 0 0-15.52896 37.46816l-52.21888 10.61888v59.39712l52.21888 10.61888a154.8288 154.8288 0 0 0 15.45216 37.46816l-29.50144 44.416 42.07104 42.07104 44.4928-29.50144a153.73312 153.73312 0 0 0 37.31456 15.45216l10.61888 52.21888h59.39712l10.61888-52.21888a152.36608 152.36608 0 0 0 37.30944-15.45216l44.416 29.50144 0.0768-0.0768 41.91744-41.91232 0.0768-0.0768-29.50656-44.416a152.32 152.32 0 0 0 15.45728-37.46816L977.92 844.11904v-59.39712l-52.14208-10.61376z m-150.02624 110.52544c-38.84032-0.04096-70.29248-31.5648-70.25152-70.41024 0.04608-38.84032 31.5648-70.29248 70.40512-70.25152 38.84544 0.04608 70.2976 31.5648 70.25664 70.41024-0.04096 38.84032-31.5648 70.2976-70.41024 70.25152z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3365 = /* @__PURE__ */ _createElementVNode365(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M437.632 3.4816a230.912 230.912 0 0 1 54.74304 6.6048 269.79328 269.79328 0 0 1 51.22048 17.75104 231.84384 231.84384 0 0 1 42.61888 25.37472 154.0096 154.0096 0 0 1 28.93824 28.42624 223.90784 223.90784 0 0 1 36.36224 71.51616 522.86976 522.86976 0 0 1 16.03584 74.56768 635.32544 635.32544 0 0 1 5.07904 82.11456 38.7072 38.7072 0 0 1 10.56256 13.17376 77.66016 77.66016 0 0 1 5.8624 18.26304c1.68448 9.03168 1.95072 18.26304 0.78336 27.37664a111.90272 111.90272 0 0 1-8.21248 33.97632 70.68672 70.68672 0 0 1-14.07488 19.7888 46.03392 46.03392 0 0 1-17.98656 11.14624 1026.44736 1026.44736 0 0 1-9.37984 32.45568c-3.52256 8.79616-7.04512 17.39776-10.95168 25.8816a70.4256 70.4256 0 0 1-14.08 19.7888 970.0352 970.0352 0 0 0-29.71136 25.88672 63.01696 63.01696 0 0 0-15.25248 36.01408 136.06912 136.06912 0 0 0-1.95584 30.9248c0.91136 10.8288 3.6864 21.40672 8.21248 31.2832a98.24768 98.24768 0 0 0 21.89824 29.91104c0.9728 0.86016 3.71712 1.4848 2.95936 2.53952-91.57632 127.91296-45.07136 272.128 10.89024 341.0944 0 0-20.10112 1.96096-30.26944 2.84672a2471.8848 2471.8848 0 0 1-78.98624 5.59616c-25.02656 1.36704-46.91968 2.03264-65.30048 2.03264s-39.8848-0.6656-64.51712-2.03264c-24.63744-1.37216-49.664-3.21024-75.85792-5.59616a2881.6896 2881.6896 0 0 1-77.81376-8.13568c-25.80992-3.05152-49.26976-6.25664-70.37952-9.61536-21.11488-3.36384-38.71232-6.76352-53.57056-10.1632a70.56384 70.56384 0 0 1-27.37664-10.1632 89.30304 89.30304 0 0 1-14.85824-49.69984 402.64704 402.64704 0 0 1 4.3008-107.5712 85.4784 85.4784 0 0 1 28.15488-57.32352 183.36256 183.36256 0 0 1 54.35392-31.27808 706.6624 706.6624 0 0 1 64.51712-20.80256 199.86432 199.86432 0 0 0 59.04384-26.3936 139.49952 139.49952 0 0 0 30.49984-25.37984 83.16416 83.16416 0 0 0 15.24736-24.36096 62.94016 62.94016 0 0 0 5.08416-25.37984c0-8.78592-0.39424-18.60096-1.1776-29.44512a56.86272 56.86272 0 0 0-15.25248-37.03296 526.3616 526.3616 0 0 0-29.71136-27.91936 62.54592 62.54592 0 0 1-13.29664-19.7888 1870.37184 1870.37184 0 0 1-10.55744-25.8816 999.89504 999.89504 0 0 1-9.37984-32.45568 42.4704 42.4704 0 0 1-13.29152-7.1168 79.34464 79.34464 0 0 1-12.51328-14.19264 84.8896 84.8896 0 0 1-11.3408-26.3936 71.15776 71.15776 0 0 1-4.3008-31.27808c0.66048-8.30464 2.37056-16.49152 5.08416-24.36608a67.41504 67.41504 0 0 1 12.51328-21.30944 509.34784 509.34784 0 0 1 3.90656-77.1072 474.47552 474.47552 0 0 1 13.69088-69.99552 218.40896 218.40896 0 0 1 30.1056-66.97984 187.74016 187.74016 0 0 1 40.66816-46.1824 202.9568 202.9568 0 0 1 45.7472-27.91936 190.01856 190.01856 0 0 1 46.91968-13.68576 301.07136 301.07136 0 0 1 45.3632-3.5584V3.4816z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_479 = [\n  _hoisted_2370,\n  _hoisted_3365\n];\nfunction _sfc_render370(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock370(), _createElementBlock370(\"svg\", _hoisted_1371, _hoisted_479);\n}\nvar menu_gerenanquanguanli_default = /* @__PURE__ */ export_helper_default(menu_gerenanquanguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render370], [\"__file\", \"menu-gerenanquanguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gerenxinxi.vue?vue&type=script&lang.ts\nvar menu_gerenxinxi_vue_vue_type_script_lang_default = {\n  name: \"MenuGerenxinxi\"\n};\n\n// src/components/menu-gerenxinxi.vue\nimport { createElementVNode as _createElementVNode366, openBlock as _openBlock371, createElementBlock as _createElementBlock371 } from \"vue\";\nvar _hoisted_1372 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2371 = /* @__PURE__ */ _createElementVNode366(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M902.59844362 657.70089876c-5.05387742-2.23696213-75.80816118-33.14017975-167.39933299-59.27949653a1143.87472941 1143.87472941 0 0 0-93.99383481-22.74244836c46.72765345-39.60251481 77.09234315-97.97065639 77.09234315-163.96103932v-159.36283937A216.40537378 216.40537378 0 0 0 501.89224517 36.32252839c-119.30464711 0-216.44679902 96.72789965-216.446799 216.03254678v159.36283938c0 67.77166759 32.06312391 127.6725425 81.19344039 167.31648252-32.97447885 7.00086297-64.87190187 15.41018358-94.24238618 24.19233123a1422.25223933 1422.25223933 0 0 0-149.71076203 53.93564255C84.82308299 672.36542831 56.32252839 714.90913407 56.32252839 756.08580741v170.46479962l2.19553691 6.46233503c12.30329173 36.16422115 45.48489671 60.43940283 82.60189804 60.43940284h741.76007332a84.83886017 84.83886017 0 0 0 84.09320612-73.73689995l0.70422883-163.62963754c0-40.88669677-28.41770414-83.34755209-65.07902799-98.38490865\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3366 = [\n  _hoisted_2371\n];\nfunction _sfc_render371(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock371(), _createElementBlock371(\"svg\", _hoisted_1372, _hoisted_3366);\n}\nvar menu_gerenxinxi_default = /* @__PURE__ */ export_helper_default(menu_gerenxinxi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render371], [\"__file\", \"menu-gerenxinxi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gongchengdashiji.vue?vue&type=script&lang.ts\nvar menu_gongchengdashiji_vue_vue_type_script_lang_default = {\n  name: \"MenuGongchengdashiji\"\n};\n\n// src/components/menu-gongchengdashiji.vue\nimport { createElementVNode as _createElementVNode367, openBlock as _openBlock372, createElementBlock as _createElementBlock372 } from \"vue\";\nvar _hoisted_1373 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2372 = /* @__PURE__ */ _createElementVNode367(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M583.95561529 281.22007325a32.74664012 32.74664012 0 0 0 23.42596456-9.75564042l60.58439112-60.83294246a98.61274738 98.61274738 0 0 1 70.27789368-29.26692125H909.68215703c0-17.02576735-6.46233505-34.0515347-19.38700515-47.10048047a65.86610725 65.86610725 0 0 0-46.85192913-19.51128083H406.86277973a65.49328023 65.49328023 0 0 1-46.85192912-19.51128083l-60.58439111-60.83294246A65.49328023 65.49328023 0 0 0 252.57453037 14.8973037H81.19837582A66.17679645 66.17679645 0 0 0 14.8973037 81.44692717v798.90617078A66.48748563 66.48748563 0 0 0 81.19837582 946.96485925V381.07557737a99.42053925 99.42053925 0 0 1 29.14264557-70.58858288 98.42633387 98.42633387 0 0 1 70.27789369-29.26692124h403.33670021z m405.69793801-13.79459983a65.86610725 65.86610725 0 0 0-46.85192912-19.51128083h-171.37615455a65.49328023 65.49328023 0 0 0-46.85192913 19.51128083l-60.58439111 60.83294246a64.74762619 64.74762619 0 0 1-21.49969161 14.4159782 65.24472889 65.24472889 0 0 1-25.35223751 5.09530263H213.73838222a66.30107212 66.30107212 0 0 0-66.30107212 66.54962347V946.96485925h795.36431408A66.30107212 66.30107212 0 0 0 1009.1026963 880.41523579V314.46381605c0-17.02576735-6.46233505-34.0515347-19.449143-47.03834263z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3367 = [\n  _hoisted_2372\n];\nfunction _sfc_render372(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock372(), _createElementBlock372(\"svg\", _hoisted_1373, _hoisted_3367);\n}\nvar menu_gongchengdashiji_default = /* @__PURE__ */ export_helper_default(menu_gongchengdashiji_vue_vue_type_script_lang_default, [[\"render\", _sfc_render372], [\"__file\", \"menu-gongchengdashiji.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gongchenghuafen.vue?vue&type=script&lang.ts\nvar menu_gongchenghuafen_vue_vue_type_script_lang_default = {\n  name: \"MenuGongchenghuafen\"\n};\n\n// src/components/menu-gongchenghuafen.vue\nimport { createElementVNode as _createElementVNode368, openBlock as _openBlock373, createElementBlock as _createElementBlock373 } from \"vue\";\nvar _hoisted_1374 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2373 = /* @__PURE__ */ _createElementVNode368(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M864.425973 1023.936004 228.305731 1023.936004c-114.296856 0-130.871821-105.529404-133.111681-128.439973l-0.383976-0.575964 0.31998 0c-0.255984-2.367852-0.31998-4.031748-0.31998-4.031748l0-12.351228c-60.604212-36.093744-64.059996-115.320792-64.059996-115.320792L30.750078 126.328104C30.814074 3.967752 158.934067 0 158.934067 0l643.415787 0c64.63596 0 96.441972 38.269608 112.120992 72.63546 71.931504 28.47822 78.779076 117.496656 78.779076 117.496656l0 700.756203C993.249922 890.952315 974.56309 1023.936004 864.425973 1023.936004L864.425973 1023.936004 864.425973 1023.936004zM479.298044 256.687957l0 191.476033L222.994063 448.16399 222.994063 511.968002l256.303981 0 0 191.476033 256.303981-223.410037L479.298044 256.687957 479.298044 256.687957 479.298044 256.687957zM927.782014 129.015937l-64.059996 0 0 748.433223 0 17.470908-46.07712 0L158.934067 894.920067 158.934067 895.944003l0 62.844072 704.787951 0 64.059996 0L927.782014 129.015937 927.782014 129.015937zM927.782014 129.015937\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3368 = [\n  _hoisted_2373\n];\nfunction _sfc_render373(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock373(), _createElementBlock373(\"svg\", _hoisted_1374, _hoisted_3368);\n}\nvar menu_gongchenghuafen_default = /* @__PURE__ */ export_helper_default(menu_gongchenghuafen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render373], [\"__file\", \"menu-gongchenghuafen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gongchengxinxiguanli.vue?vue&type=script&lang.ts\nvar menu_gongchengxinxiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuGongchengxinxiguanli\"\n};\n\n// src/components/menu-gongchengxinxiguanli.vue\nimport { createElementVNode as _createElementVNode369, openBlock as _openBlock374, createElementBlock as _createElementBlock374 } from \"vue\";\nvar _hoisted_1375 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2374 = /* @__PURE__ */ _createElementVNode369(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M365.714286 0a146.285714 146.285714 0 0 1 146.285714 146.285714v210.578286L667.136 512H877.714286a146.285714 146.285714 0 0 1 146.285714 146.285714v219.428572a146.285714 146.285714 0 0 1-146.285714 146.285714H658.285714a146.285714 146.285714 0 0 1-146.285714-146.285714V667.136L356.864 512H146.285714a146.285714 146.285714 0 0 1-146.285714-146.285714V146.285714a146.285714 146.285714 0 0 1 146.285714-146.285714h219.428572zM292.571429 658.285714a73.142857 73.142857 0 0 1 73.142857 73.142857v219.428572a73.142857 73.142857 0 0 1-73.142857 73.142857H73.142857a73.142857 73.142857 0 0 1-73.142857-73.142857v-219.428572a73.142857 73.142857 0 0 1 73.142857-73.142857h219.428572z m658.285714-658.285714a73.142857 73.142857 0 0 1 73.142857 73.142857v219.428572a73.142857 73.142857 0 0 1-73.142857 73.142857h-219.428572a73.142857 73.142857 0 0 1-73.142857-73.142857V73.142857a73.142857 73.142857 0 0 1 73.142857-73.142857h219.428572z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3369 = [\n  _hoisted_2374\n];\nfunction _sfc_render374(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock374(), _createElementBlock374(\"svg\", _hoisted_1375, _hoisted_3369);\n}\nvar menu_gongchengxinxiguanli_default = /* @__PURE__ */ export_helper_default(menu_gongchengxinxiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render374], [\"__file\", \"menu-gongchengxinxiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gongquguanli.vue?vue&type=script&lang.ts\nvar menu_gongquguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuGongquguanli\"\n};\n\n// src/components/menu-gongquguanli.vue\nimport { createElementVNode as _createElementVNode370, openBlock as _openBlock375, createElementBlock as _createElementBlock375 } from \"vue\";\nvar _hoisted_1376 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2375 = /* @__PURE__ */ _createElementVNode370(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M509.025632 0h4.813481c27.802395 0.420044 55.604789 3.87122 82.487628 11.091441 42.310953 11.193614 82.283282 31.071929 116.840443 57.932062 56.104302 43.332683 97.597871 105.24949 116.000355 173.739424 13.827406 50.995654 15.098891 105.317605 3.814457 156.926297-8.684701 39.881508-25.02102 78.026075-47.692063 111.947494-9.468027 13.770643-19.299335 27.461818-31.423858 39.030067-76.595654 77.083814-153.463769 153.883814-230.252416 230.763282-6.300665 6.709357-18.027849 6.550421-24.169579-0.295167-75.812328-75.937206-151.692772-151.794945-227.391574-227.845676-4.858891-4.983769-10.047007-9.683725-14.338271-15.178359-30.515654-37.020665-52.857472-80.773392-64.720887-127.262085-12.431042-48.407273-13.566297-99.629978-3.496585-148.559467 12.169933-59.623592 41.550333-115.546253 83.486652-159.616852 32.263947-34.05765 71.861641-61.122129 115.364612-78.695876C426.583415 8.412239 467.781818 0.522217 509.025632 0m-16.858537 180.221729c-37.372594 5.040532-72.224922 25.917871-94.419157 56.388116-17.528337 23.681419-27.257472 52.993703-27.348293 82.464922-0.340576 28.54031 8.321419 57.091973 24.453393 80.637162 17.823503 26.292506 44.751752 46.307051 75.15388 55.582084 29.698271 9.240976 62.473082 8.241951 91.558315-2.781374 35.88541-13.361951 65.663149-42.049845 80.410111-77.37898 16.767716-39.154945 14.338271-85.88204-6.425544-123.072994-15.076186-27.450466-39.540931-49.656053-68.399113-61.871397-23.465721-10.092417-49.701463-13.407361-74.983592-9.967539z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3370 = /* @__PURE__ */ _createElementVNode370(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M198.408514 741.173925c47.794235-16.835831 97.541109-27.586696 147.617207-34.909091C385.441774 747.088603 424.925942 787.866962 464.296585 828.736142c9.229623 11.613659 22.591574 20.003193 37.315832 22.375876 17.755388 3.156009 36.770909-2.338625 50.076097-14.519912 41.550333-43.661907 83.793171-86.688071 125.468382-130.247804 42.65153 5.937384 84.951131 14.917251 126.115477 27.620753 34.523104 10.853038 68.558049 24.283104 99.232638 43.684612 17.176408 11.034678 33.512727 24.101463 45.353437 40.91459 9.025277 12.805676 14.849135 28.381375 13.804701 44.218182-0.930909 18.2549-10.410288 34.931796-22.489402 48.202927-21.467672 23.318137-49.644701 39.132239-78.185011 52.176319-56.047539 24.737206-116.170643 38.871131-176.532151 48.21428-43.355388 6.402838-87.108115 10.694102-130.928958 11.556895l4.189091 1.06714h-67.479556c-9.365854-0.806031-18.777118-0.53357-28.154324-1.06714-72.122749-3.019778-144.256851-11.84071-214.154501-30.209135-36.895787-9.922129-73.360177-22.307761-107.224834-40.165321-19.628559-10.501109-38.575965-22.864035-54.072195-38.984657-10.921153-11.420665-20.037251-25.145898-23.522483-40.744301-3.235477-14.258803-1.010377-29.459867 5.494634-42.492595 8.99122-18.30031 24.214989-32.672639 40.449135-44.604168 27.121242-19.605854 57.988825-33.308381 89.35592-44.558758z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_480 = [\n  _hoisted_2375,\n  _hoisted_3370\n];\nfunction _sfc_render375(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock375(), _createElementBlock375(\"svg\", _hoisted_1376, _hoisted_480);\n}\nvar menu_gongquguanli_default = /* @__PURE__ */ export_helper_default(menu_gongquguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render375], [\"__file\", \"menu-gongquguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gongtujihua.vue?vue&type=script&lang.ts\nvar menu_gongtujihua_vue_vue_type_script_lang_default = {\n  name: \"MenuGongtujihua\"\n};\n\n// src/components/menu-gongtujihua.vue\nimport { createElementVNode as _createElementVNode371, openBlock as _openBlock376, createElementBlock as _createElementBlock376 } from \"vue\";\nvar _hoisted_1377 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2376 = /* @__PURE__ */ _createElementVNode371(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M924.8 1004.8H96c-27.2 0-48-20.8-48-46.4v-800C48 132.8 70.4 112 96 112h80v46.4c0 51.2 43.2 92.8 96 92.8s96-41.6 96-92.8V112h48v46.4c0 51.2 43.2 92.8 96 92.8s96-41.6 96-92.8V112h48v46.4c0 51.2 43.2 92.8 96 92.8s96-41.6 96-92.8V112h80c27.2 0 48 20.8 48 46.4v800c-3.2 25.6-24 46.4-51.2 46.4z m-126.4-630.4H224c-25.6 0-48 20.8-48 46.4s22.4 46.4 48 46.4h572.8c27.2 0 48-20.8 48-46.4s-20.8-46.4-46.4-46.4z m0 200H224c-25.6 0-48 20.8-48 46.4 0 25.6 22.4 46.4 48 46.4h572.8c27.2 0 48-20.8 48-46.4 0-25.6-20.8-46.4-46.4-46.4z m8 200H216c-22.4 0-40 17.6-40 38.4s17.6 38.4 40 38.4h588.8c20.8 0 40-17.6 40-38.4s-17.6-38.4-38.4-38.4z m-56-569.6c-27.2 0-48-20.8-48-46.4V65.6c0-25.6 20.8-46.4 48-46.4s48 20.8 48 46.4v92.8c0 25.6-22.4 46.4-48 46.4z m-240 0c-25.6 0-48-20.8-48-46.4V65.6c0-25.6 22.4-46.4 48-46.4s48 20.8 48 46.4v92.8c0 25.6-20.8 46.4-48 46.4z m-238.4 0c-25.6 0-48-20.8-48-46.4V65.6c0-25.6 22.4-46.4 48-46.4s48 20.8 48 46.4v92.8c0 25.6-20.8 46.4-48 46.4z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3371 = [\n  _hoisted_2376\n];\nfunction _sfc_render376(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock376(), _createElementBlock376(\"svg\", _hoisted_1377, _hoisted_3371);\n}\nvar menu_gongtujihua_default = /* @__PURE__ */ export_helper_default(menu_gongtujihua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render376], [\"__file\", \"menu-gongtujihua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gongwenguanli.vue?vue&type=script&lang.ts\nvar menu_gongwenguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuGongwenguanli\"\n};\n\n// src/components/menu-gongwenguanli.vue\nimport { createElementVNode as _createElementVNode372, openBlock as _openBlock377, createElementBlock as _createElementBlock377 } from \"vue\";\nvar _hoisted_1378 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2377 = /* @__PURE__ */ _createElementVNode372(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M530.432 134.03022222c-124.01777778-0.68266667-225.28 99.55555555-226.07644445 223.34577778-0.68266667 123.79022222 99.44177778 225.28 223.34577778 226.07644445 123.79022222 0.68266667 225.28-99.44177778 226.07644445-223.34577778 0.79644445-123.904-99.44177778-225.28-223.34577778-226.07644445zM451.69777778 185.57155555c0-7.168 5.91644445-12.97066667 13.08444444-12.97066666l130.84444445 0.68266666c3.52711111 0 6.82666667 1.47911111 9.216 3.86844445 2.38933333 2.38933333 3.75466667 5.80266667 3.75466666 9.32977778l-1.024 172.82844444-13.08444444-0.34133333-10.80888889-0.34133334-2.16177778-6.48533333-19.91111111-57.68533333c-4.77866667-13.65333333-17.52177778-22.86933333-31.97155556-22.98311111-14.44977778 0-27.30666667 8.98844445-32.1991111 22.528L474.45333333 358.05866667l-10.80888888 0.11377778-12.97066667 0.11377777 1.024-172.71466667z m204.8 215.26755556l-69.632 51.54133334 24.68977777 82.60266666c0.91022222 3.18577778-0.22755555 6.59911111-2.95822222 8.64711111-1.36533333 1.024-3.072 1.47911111-4.66488888 1.47911111-1.59288889 0-3.18577778-0.56888889-4.55111112-1.47911111l-71.11111111-49.60711111-71.79377777 48.69688889c-0.68266667 0.45511111-1.47911111 0.79644445-2.16177778 1.024-0.22755555 0.11377778-0.45511111 0-0.79644445 0.11377778-0.45511111 0-1.024 0.11377778-1.47911111 0.11377777-0.45511111-0.11377778-1.13777778-0.11377778-1.59288889-0.22755555-0.22755555 0-0.45511111 0-0.68266667-0.11377778-0.68266667-0.22755555-1.47911111-0.56888889-2.16177777-1.13777777-2.61688889-2.048-3.75466667-5.46133333-2.84444445-8.64711112l25.6-82.14755555-68.94933333-52.33777778c-2.61688889-2.048-3.75466667-5.46133333-2.61688889-8.64711111 1.13777778-3.29955555 3.98222222-5.34755555 7.39555556-5.46133334l44.48711111-0.56888888 13.08444444-0.11377778 13.08444445-0.22755556 11.15022222-0.11377778h5.23377778l2.84444444-7.85066666 26.16888889-73.27288889c1.13777778-3.072 4.096-5.12 7.39555555-5.12s6.144 2.048 7.39555556 5.23377778l25.37244444 73.61422222 2.73066667 7.85066667 5.23377778 0.11377778 11.15022222 0.22755555 12.97066667 0.34133333 13.08444444 0.34133334 44.48711112 1.25155555c3.41333333 0.11377778 6.37155555 2.16177778 7.28177777 5.46133333 0.91022222 2.95822222-0.22755555 6.48533333-2.84444444 8.41955556z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3372 = /* @__PURE__ */ _createElementVNode372(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M948.11022222 35.49866667c0-18.31822222-15.01866667-33.33688889-33.67822222-33.33688889l-805.54666667 0.45511111c-8.98844445 0-17.52177778 3.52711111-23.77955555 9.67111111-6.37155555 6.37155555-9.89866667 14.67733333-9.89866667 23.552l0.56888889 952.43377778c0 18.31822222 15.01866667 33.33688889 33.67822222 33.33688889l805.54666667-0.56888889c8.98844445 0 17.52177778-3.52711111 23.77955556-9.67111111 6.37155555-6.37155555 9.78488889-14.67733333 9.78488888-23.552l-0.45511111-952.32zM732.61511111 883.712H326.99733333c-15.36 0-30.60622222-17.29422222-30.60622222-34.47466667 0-17.29422222 11.37777778-34.47466667 30.60622222-34.47466666h405.39022222c19.11466667 0 30.60622222 12.97066667 30.60622223 34.47466666 0.11377778 17.18044445-11.264 34.47466667-30.37866667 34.47466667z m0-138.35377778H326.99733333c-15.36 0-30.60622222-17.29422222-30.60622222-34.47466667 0-17.29422222 11.37777778-34.47466667 30.60622222-34.47466666h405.39022222c19.11466667 0 30.60622222 12.97066667 30.60622223 34.47466666 0.11377778 17.29422222-11.264 34.47466667-30.37866667 34.47466667zM775.96444445 462.27911111c-13.65333333 31.85777778-33.22311111 60.416-57.79911112 84.87822222-24.80355555 24.46222222-53.47555555 43.57688889-85.44711111 56.88888889-33.22311111 13.76711111-68.26666667 20.70755555-104.448 20.36622223-36.18133333-0.22755555-71.22488889-7.39555555-104.10666667-21.61777778-31.85777778-13.76711111-60.30222222-33.33688889-84.87822222-58.02666667-24.46222222-24.80355555-43.57688889-53.47555555-56.88888888-85.56088889-13.76711111-33.22311111-20.70755555-68.26666667-20.36622223-104.448 0.22755555-36.18133333 7.50933333-71.22488889 21.73155556-104.10666666 13.65333333-31.85777778 33.22311111-60.416 58.02666667-84.87822223 24.68977778-24.46222222 53.47555555-43.57688889 85.4471111-56.88888889 33.22311111-13.76711111 68.26666667-20.70755555 104.448-20.36622222 36.18133333 0.22755555 71.22488889 7.50933333 104.10666667 21.61777778 31.85777778 13.76711111 60.416 33.22311111 84.87822223 57.79911111 24.46222222 24.80355555 43.69066667 53.58933333 56.88888888 85.56088889 13.76711111 33.10933333 20.70755555 68.15288889 20.36622222 104.448-0.45511111 36.29511111-7.73688889 71.33866667-21.9591111 104.33422222z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_481 = [\n  _hoisted_2377,\n  _hoisted_3372\n];\nfunction _sfc_render377(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock377(), _createElementBlock377(\"svg\", _hoisted_1378, _hoisted_481);\n}\nvar menu_gongwenguanli_default = /* @__PURE__ */ export_helper_default(menu_gongwenguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render377], [\"__file\", \"menu-gongwenguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gongzuolianxidan.vue?vue&type=script&lang.ts\nvar menu_gongzuolianxidan_vue_vue_type_script_lang_default = {\n  name: \"MenuGongzuolianxidan\"\n};\n\n// src/components/menu-gongzuolianxidan.vue\nimport { createElementVNode as _createElementVNode373, openBlock as _openBlock378, createElementBlock as _createElementBlock378 } from \"vue\";\nvar _hoisted_1379 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2378 = /* @__PURE__ */ _createElementVNode373(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M860.23079466 12.30822756H163.76920534c-24.59622756 0-47.89791645 10.35630577-63.43237571 27.18530371-18.12353539 15.53445925-27.1853037 37.54160947-27.18530371 63.4323745v135.92651852c15.53445925 0 29.77437984 7.76722963 40.13068683 23.30168888 7.76722963 15.53445925 7.76722963 29.77437984 0 45.30884032-7.76722963 15.53445925-23.30168889 23.30168889-40.13068683 23.30168889v113.91936709c15.53445925 0 29.77437984 7.76722963 40.13068683 23.30168889 7.76722963 15.53445925 7.76722963 29.77437984 0 45.30884032-7.76722963 15.53445925-23.30168889 23.30168889-40.13068683 23.30168888v113.9193671c15.53445925 0 29.77437984 7.76722963 40.13068683 23.30168889 7.76722963 15.53445925 7.76722963 29.77437984 0 45.30884031-7.76722963 15.53445925-23.30168889 23.30168889-40.13068683 23.30168889v181.23535762c0 50.48699259 40.13068683 90.61767941 90.61767942 90.61767941h696.46158932c24.59622756 0 47.89791645-10.35630577 63.43237571-27.1853037 18.12353539-18.12353539 27.1853037-40.13068683 27.18530371-63.43237571V102.92590577c0-50.48699259-40.13068683-90.61767941-90.61767942-90.61767821z m-142.39920948 705.52335762c-2.58907614 12.94538311-5.17815349 22.00715022-9.06176829 24.59622757-2.58907614 2.58907614-7.76722963 3.88361482-15.53445927 5.17815227-7.76722963 2.58907614-16.82899794 3.88361482-28.47984117 5.1781535-12.94538311 2.58907614-25.89076502 3.88361482-37.54161068 5.17815349-14.23992059 1.29453868-27.1853037 2.58907614-41.42522429 3.88361482-7.76722963 0-15.53445925 1.29453868-23.30168889 1.29453746-5.17815349 1.29453868-10.35630577 1.29453868-16.82899793 1.29453868h-75.08321895c-5.17815349-1.29453868-10.35630577-1.29453868-16.82899793-1.29453868-7.76722963 0-15.53445925-1.29453868-23.30168889-1.29453746-14.23992059-1.29453868-27.1853037-2.58907614-41.42522428-3.88361482-12.94538311-2.58907614-25.89076502-3.88361482-37.54161069-5.17815349-10.35630577-2.58907614-20.71261275-3.88361482-28.47984117-5.1781535-9.06176831-2.58907614-12.94538311-3.88361482-15.53445926-5.17815227-3.88361482-2.58907614-7.76722963-10.35630577-9.06176831-24.59622757-2.58907614-12.94538311-1.29453868-31.06891852 3.88361482-55.66514608 2.58907614-9.06176831 5.17815349-15.53445925 9.06176831-20.71261154 3.88361482-5.17815349 9.06176831-10.35630577 15.53445925-14.23992179 6.47269095-3.88361482 14.23992059-6.47269095 20.71261154-9.06176709 7.76722963-1.29453868 15.53445925-3.88361482 23.30168889-6.47269217 7.76722963-1.29453868 15.53445925-3.88361482 23.3016889-6.47269096 7.76722963-2.58907614 14.23992059-5.17815349 20.71261274-9.0617683s11.65084445-7.76722963 15.53445926-11.65084444c1.29453868 0 2.58907614-1.29453868 2.58907613-2.58907614 1.29453868 0 2.58907614-1.29453868 2.58907736-2.58907614 1.29453868-1.29453868 1.29453868-2.58907614 2.58907614-3.88361482 1.29453868-2.58907614 2.58907614-3.88361482 2.58907614-6.47269216v-1.29453747c1.29453868-2.58907614 1.29453868-5.17815349 1.29453867-7.76722963v-15.53445926c0-6.47269095-2.58907614-12.94538311-7.76722963-18.1235366l-9.06176831-9.0617671c-1.29453868-1.29453868-3.88361482-3.88361482-6.47269094-5.17815349-3.88361482-2.58907614-6.47269095-6.47269095-7.76722963-10.35630577-2.58907614-3.88361482-5.17815349-9.06176831-6.47269096-12.94538312s-2.58907614-6.47269095-3.88361481-10.35630577c-1.29453868-2.58907614-2.58907614-3.88361482-2.58907736-6.47269217-3.88361482-10.35630577-6.47269095-19.41807408-7.76722963-28.47984116-1.29453868-10.35630577-3.88361482-20.71261275-3.88361481-33.65799587-1.29453868-24.59622756 2.58907614-49.19245392 9.0617683-72.49414281v-2.58907614c2.58907614-11.65084445 7.76722963-22.00715022 14.23992059-31.06891851 0-1.29453868 1.29453868-2.58907614 1.29453868-2.58907736 1.29453868 0 2.58907614-1.29453868 2.58907613-2.58907614 1.29453868-1.29453868 1.29453868-2.58907614 2.58907736-3.88361481 5.17815349-6.47269095 10.35630577-11.65084445 16.82899671-15.53445926 7.76722963-6.47269095 15.53445925-11.65084445 24.59622757-14.23992058 7.76722963-2.58907614 15.53445925-5.17815349 24.59622757-6.47269217 9.06176831-1.29453868 16.82899794-1.29453868 24.59622635-1.29453746h5.17815349c7.76722963 0 15.53445925 0 24.59622756 1.29453746s16.82899794 3.88361482 25.89076503 7.76722963 16.82899794 7.76722963 24.59622757 14.23992179c6.47269095 3.88361482 11.65084445 9.06176831 16.82899673 15.53445927 1.29453868 1.29453868 1.29453868 2.58907614 2.58907734 3.88361481 1.29453868 0 2.58907614 1.29453868 2.58907614 2.58907614s1.29453868 2.58907614 1.29453868 2.58907614c6.47269095 10.35630577 11.65084445 19.41807408 14.23992058 31.06891852v2.58907735c6.47269095 23.30168889 9.06176831 47.89791645 9.06176831 72.49414281-1.29453868 12.94538311-1.29453868 23.30168889-3.88361483 33.65799465-1.29453868 7.76722963-3.88361482 16.82899794-7.76722962 28.47984238-1.29453868 2.58907614-1.29453868 5.17815349-2.58907735 6.47269096-1.29453868 3.88361482-2.58907614 7.76722963-3.88361482 10.35630697-2.58907614 3.88361482-3.88361482 9.06176831-6.47269095 12.94538191s-5.17815349 7.76722963-7.76722962 10.35630699c-1.29453868 2.58907614-3.88361482 3.88361482-6.47269097 5.17815227l-9.0617683 9.0617683c-5.17815349 5.17815349-7.76722963 11.65084445-7.76722963 18.12353541v15.53445926c0 2.58907614 0 6.47269095 1.29453868 9.0617683 1.29453868 2.58907614 1.29453868 3.88361482 2.58907614 6.47269095 2.58907614 3.88361482 5.17815349 7.76722963 7.76722963 10.35630699 3.88361482 2.58907614 9.06176831 7.76722963 15.53445925 11.65084445 6.47269095 2.58907614 12.94538311 6.47269095 20.71261276 9.06176708 7.76722963 1.29453868 15.53445925 3.88361482 23.30168888 6.47269217 7.76722963 1.29453868 15.53445925 3.88361482 23.30168889 6.47269096 7.76722963 1.29453868 14.23992059 5.17815349 20.71261154 9.06176829 6.47269095 3.88361482 11.65084445 9.06176831 15.53445927 14.23992059 5.17815349 5.17815349 7.76722963 11.65084445 9.06176829 20.71261275 1.29453868 3.88361482 1.29453868 6.47269095 1.29453868 9.0617671 1.29453868 18.12353539 2.58907614 33.65799466-1.29453868 44.01430163z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3373 = [\n  _hoisted_2378\n];\nfunction _sfc_render378(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock378(), _createElementBlock378(\"svg\", _hoisted_1379, _hoisted_3373);\n}\nvar menu_gongzuolianxidan_default = /* @__PURE__ */ export_helper_default(menu_gongzuolianxidan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render378], [\"__file\", \"menu-gongzuolianxidan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-gongzuoliucheng.vue?vue&type=script&lang.ts\nvar menu_gongzuoliucheng_vue_vue_type_script_lang_default = {\n  name: \"MenuGongzuoliucheng\"\n};\n\n// src/components/menu-gongzuoliucheng.vue\nimport { createElementVNode as _createElementVNode374, openBlock as _openBlock379, createElementBlock as _createElementBlock379 } from \"vue\";\nvar _hoisted_1380 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2379 = /* @__PURE__ */ _createElementVNode374(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M604.81247057 713.51672143c71.27005902 0 129.04488489 57.74499028 129.0448849 128.97566634 0 71.23186946-57.77482589 128.97566635-129.0448849 128.97566634h-214.15985015c-71.27125245 0-129.04607834-57.7437969-129.04607835-128.97566634 0-71.23067606 57.77601931-128.97566635 129.0448849-128.97566634h214.1610436z m197.64883578-190.89405871c0.85449125-19.68313407 17.51349012-34.94702085 37.207365-34.09252961 93.52860105 4.05644656 168.08415501 82.12424591 180.63658356 176.62668054 13.44391593 101.20708796-47.04475505 187.93914207-165.58154592 214.0715368l1.73881809 49.76098699a8.23462228 8.23462228 0 0 1-13.32218671 6.75835737l-97.93710753-77.09635263a8.23462228 8.23462228 0 0 1-0.43917984-12.5703299l92.30414851-83.72104658a8.23462228 8.23462228 0 0 1 13.76256 5.81197253l1.34140804 38.18597227c73.2535289-20.54717271 105.47477043-70.77478825 97.36784449-131.81124062-8.23939597-62.03057415-56.22218189-112.27489767-112.96708329-114.73573695l-0.85329782-0.04773692c-19.27975692-1.29009081-34.10088356-17.74143402-33.25832658-37.13933987zM604.81127714 395.19486669c71.27005902 0 129.04488489 57.7437969 129.0448849 128.97566636 0 71.23067606-57.77482589 128.97447292-129.0448849 128.97447289h-214.15985015c-71.27125245 0-129.04607834-57.7437969-129.04607834-128.97447289 0-71.23186946 57.77601931-128.97566635 129.0448849-128.97566636h214.16104359z m-376.18738079-212.84708431c0.842557 19.39790585-13.97856965 35.85044246-33.2583266 37.13933986l-0.85329781 0.04773696c-56.74370797 2.46083929-104.72768733 52.70516277-112.9670833 114.73573693-6.94095118 52.25762896 15.67919817 96.5921192 68.30440159 121.15993573l1.21729199-34.74175199a8.23462228 8.23462228 0 0 1 13.76255999-5.81197254l92.30414852 83.72104656a8.23462228 8.23462228 0 0 1-0.43917986 12.57032991l-97.93591409 77.09635263a8.23462228 8.23462228 0 0 1-13.32338014-6.75835737l1.76626682-50.56893469c-99.19258905-33.07453936-148.71489133-113.51367123-136.42262912-206.05650446 12.55362199-94.50243462 87.10917595-172.56904061 180.63777699-176.62668056 19.69387488-0.85449125 36.35168033 14.40939554 37.20736502 34.09372303zM604.81247057 54.91879293c71.27005902 0 129.04488489 57.7437969 129.0448849 128.97566636 0 71.23067606-57.77482589 128.97566635-129.0448849 128.97566635h-214.15985015c-71.27125245 0-129.04607834-57.74499028-129.04607835-128.97566635C261.60654207 112.66258979 319.38256138 54.91879293 390.65142699 54.91879293h214.16104358z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3374 = [\n  _hoisted_2379\n];\nfunction _sfc_render379(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock379(), _createElementBlock379(\"svg\", _hoisted_1380, _hoisted_3374);\n}\nvar menu_gongzuoliucheng_default = /* @__PURE__ */ export_helper_default(menu_gongzuoliucheng_vue_vue_type_script_lang_default, [[\"render\", _sfc_render379], [\"__file\", \"menu-gongzuoliucheng.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-hangzhengquhua.vue?vue&type=script&lang.ts\nvar menu_hangzhengquhua_vue_vue_type_script_lang_default = {\n  name: \"MenuHangzhengquhua\"\n};\n\n// src/components/menu-hangzhengquhua.vue\nimport { createElementVNode as _createElementVNode375, openBlock as _openBlock380, createElementBlock as _createElementBlock380 } from \"vue\";\nvar _hoisted_1381 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2380 = /* @__PURE__ */ _createElementVNode375(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M838.948571 657.188571c7.606857 0 14.555429 4.388571 18.066286 11.410286l163.693714 322.633143 1.901715 5.12a22.454857 22.454857 0 0 1-2.340572 16.091429 20.260571 20.260571 0 0 1-17.554285 10.459428H20.48a20.333714 20.333714 0 0 1-17.554286-10.459428 22.528 22.528 0 0 1-0.512-21.211429L166.107429 668.525714a20.333714 20.333714 0 0 1 18.066285-11.264h119.076572a2044.050286 2044.050286 0 0 0 179.126857 223.670857l29.257143 31.232 29.184-31.232a2033.371429 2033.371429 0 0 0 179.126857-223.744zM511.561143 0a286.500571 286.500571 0 0 1 286.500571 286.500571c0 158.208-286.500571 450.121143-286.500571 450.121143S225.133714 444.708571 225.133714 286.500571A286.500571 286.500571 0 0 1 511.561143 0z m0 143.213714a143.213714 143.213714 0 1 0 0 286.500572 143.213714 143.213714 0 0 0 0-286.500572z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3375 = [\n  _hoisted_2380\n];\nfunction _sfc_render380(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock380(), _createElementBlock380(\"svg\", _hoisted_1381, _hoisted_3375);\n}\nvar menu_hangzhengquhua_default = /* @__PURE__ */ export_helper_default(menu_hangzhengquhua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render380], [\"__file\", \"menu-hangzhengquhua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-hetongfenleiguanli.vue?vue&type=script&lang.ts\nvar menu_hetongfenleiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuHetongfenleiguanli\"\n};\n\n// src/components/menu-hetongfenleiguanli.vue\nimport { createElementVNode as _createElementVNode376, openBlock as _openBlock381, createElementBlock as _createElementBlock381 } from \"vue\";\nvar _hoisted_1382 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2381 = /* @__PURE__ */ _createElementVNode376(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M154.08605867 251.29725218h-117.83174994a27.98504096 27.98504096 0 0 1-27.98504098-27.98503968v-117.83175123c0-15.46541765 12.51962332-27.98504096 27.98504098-27.98503968h117.83174994c15.46541765 0 27.98504096 12.51962332 27.98504096 27.98503968v117.83175123c-0.73644858 15.46541765-13.2560719 27.98504096-27.98504096 27.98503968zM987.74569127 251.29725218h-721.71947003a27.98504096 27.98504096 0 0 1-27.98504096-27.98503968v-117.83175123c0-15.46541765 12.51962332-27.98504096 27.98504096-27.98503968h721.71947003c15.46541765 0 27.98504096 12.51962332 27.98504098 27.98503968v117.83175123c0 15.46541765-12.51962332 27.98504096-27.98504098 27.98503968zM987.74569127 599.63736452h-721.71947003a27.98504096 27.98504096 0 0 1-27.98504096-27.98504097v-117.83174993c0-15.46541765 12.51962332-27.98504096 27.98504096-27.98504098h721.71947003c15.46541765 0 27.98504096 12.51962332 27.98504098 27.98504098v117.83174993c0 15.46541765-12.51962332 27.98504096-27.98504098 27.98504097zM987.74569127 948.71392416h-721.71947003a27.98504096 27.98504096 0 0 1-27.98504096-27.98504097v-117.83174995c0-15.46541765 12.51962332-27.98504096 27.98504096-27.98504096h721.71947003c15.46541765 0 27.98504096 12.51962332 27.98504098 27.98504096v117.83174995c0 15.46541765-12.51962332 27.98504096-27.98504098 27.98504097zM154.08605867 599.63736452h-117.83174994a27.98504096 27.98504096 0 0 1-27.98504098-27.98504097v-117.83174993c0-15.46541765 12.51962332-27.98504096 27.98504098-27.98504098h117.83174994c15.46541765 0 27.98504096 12.51962332 27.98504096 27.98504098v117.83174993c-0.73644858 15.46541765-13.2560719 27.98504096-27.98504096 27.98504097zM154.08605867 948.71392416h-117.83174994a27.98504096 27.98504096 0 0 1-27.98504098-27.98504097v-117.83174995c0-15.46541765 12.51962332-27.98504096 27.98504098-27.98504096h117.83174994c15.46541765 0 27.98504096 12.51962332 27.98504096 27.98504096v117.83174995c-0.73644858 15.46541765-13.2560719 27.98504096-27.98504096 27.98504097z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3376 = [\n  _hoisted_2381\n];\nfunction _sfc_render381(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock381(), _createElementBlock381(\"svg\", _hoisted_1382, _hoisted_3376);\n}\nvar menu_hetongfenleiguanli_default = /* @__PURE__ */ export_helper_default(menu_hetongfenleiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render381], [\"__file\", \"menu-hetongfenleiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-hetongguanli.vue?vue&type=script&lang.ts\nvar menu_hetongguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuHetongguanli\"\n};\n\n// src/components/menu-hetongguanli.vue\nimport { createElementVNode as _createElementVNode377, openBlock as _openBlock382, createElementBlock as _createElementBlock382 } from \"vue\";\nvar _hoisted_1383 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2382 = /* @__PURE__ */ _createElementVNode377(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M466.16594782 861.0931656c0-43.06448001 35.00431487-77.96227286 78.19307055-77.96227286h63.29774333c45.42571782-23.75440742 48.408334-87.60843234 46.91702591-120.27518095-49.15398804-37.86265537-78.93872459-96.52077354-78.9387246-158.88349036 0-110.62310359 90.10578159-193.78128322 201.80594103-193.78128322 5.95931447 0 12.66428297 0 18.61767956 0.74565404V74.83648307C796.0586836 35.48251962 764.04290281 3.56142505 724.57058156 3.56142505H86.38540574C46.9130845 3.56142505 14.8973037 35.48843751 14.8973037 74.83648307v869.40894427C14.8973037 983.5993908 46.9130845 1015.52048536 86.38540574 1015.52048536h379.78054208v-154.42731976zM177.23684138 173.58238295h382.76315826a33.31771643 33.31771643 0 0 1 33.50708889 33.41240267 33.31771643 33.31771643 0 0 1-33.50708889 33.40648477H177.2250056a33.31771643 33.31771643 0 0 1-33.50708888-33.40648477 33.31771643 33.31771643 0 0 1 33.51300677-33.41240267z m161.59388363 410.5772377H177.23684138c-18.61767955 0-33.51300678-14.853902-33.51300677-34.15805669 0-18.55850066 14.89532722-33.40648477 33.51300677-34.14622094h161.59388363c18.61767955 0 33.50708888 14.8479841 33.50708888 34.14622094 0 18.56441855-14.88940933 34.15805671-33.50708888 34.15805669zM425.95389043 411.9076185H177.23684138a33.31771643 33.31771643 0 0 1-33.51300677-33.40648477 33.31771643 33.31771643 0 0 1 33.51300677-33.41240266H425.95389043a33.31771643 33.31771643 0 0 1 33.51300677 33.41240266 33.31771643 33.31771643 0 0 1-33.51300677 33.40648477z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3377 = /* @__PURE__ */ _createElementVNode377(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M578.99050621 1015.52048536c-7.94772526 0-13.72950303-6.51559606-13.72950304-13.75909248V870.70973562c0-7.95956103 6.50967817-13.7531746 13.72950304-13.75317459h62.89532686l5.0597953-2.17186536c110.59943204-44.89310779 97.5859936-184.63814434 93.97608116-212.15632931l-2.17186534-14.48107497-12.29145596-7.23757855c-36.1405496-21.71865351-58.55159616-60.82406563-58.55159615-102.0954252 0-65.88977881 53.49771875-118.74836552 118.55307517-118.74836552h8.67562563c51.3199355 3.62174822 95.41412824 41.27135957 106.9836017 91.95808093 10.84157309 48.50893811-8.67562563 98.47367698-49.15398804 125.99186196l-11.56947346 7.23757854-1.44396498 13.7531746c-5.0597953 39.82739459-13.72950303 172.32893471 93.24818079 215.77807752l5.78177778 2.17186536h56.3856487c7.95364314 0 13.73542093 6.50967817 13.73542093 13.75317459v129.61361018c0 13.7531746-5.0597953 15.20305746-11.56355558 15.20305745H578.99050621z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_482 = [\n  _hoisted_2382,\n  _hoisted_3377\n];\nfunction _sfc_render382(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock382(), _createElementBlock382(\"svg\", _hoisted_1383, _hoisted_482);\n}\nvar menu_hetongguanli_default = /* @__PURE__ */ export_helper_default(menu_hetongguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render382], [\"__file\", \"menu-hetongguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-hetongjibenxinxiguanli.vue?vue&type=script&lang.ts\nvar menu_hetongjibenxinxiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuHetongjibenxinxiguanli\"\n};\n\n// src/components/menu-hetongjibenxinxiguanli.vue\nimport { createElementVNode as _createElementVNode378, openBlock as _openBlock383, createElementBlock as _createElementBlock383 } from \"vue\";\nvar _hoisted_1384 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2383 = /* @__PURE__ */ _createElementVNode378(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M141.47926376 90.99130833H169.99401293A142.48824437 142.48824437 0 0 0 312.48225729 233.4795527h399.03548542A142.48824437 142.48824437 0 0 0 854.00598707 90.99130833h28.51474917a114.01624594 114.01624594 0 0 1 113.9734952 113.97349521v684.01197414A114.01624594 114.01624594 0 0 1 882.52073624 1002.99302361H141.47926376a114.01624594 114.01624594 0 0 1-113.9734952-114.01624593v-684.01197414a114.01624594 114.01624594 0 0 1 113.9734952-113.97349521z m114.01624594 256.5044903A28.51474918 28.51474918 0 1 0 255.4955097 404.48254622h484.49423145a28.51474918 28.51474918 0 1 0 0-56.98674759H255.4955097z m0 199.47499196a28.51474918 28.51474918 0 0 0 0 57.02949835h484.49423145a28.51474918 28.51474918 0 0 0 0-57.02949835H255.4955097zM255.4955097 746.48853331a28.51474918 28.51474918 0 1 0 0 56.98674759h313.49123789a28.51474918 28.51474918 0 1 0 0-56.98674759H255.4955097z m56.98674759-740.99872174h399.03548542a85.50149678 85.50149678 0 1 1 0 171.00299354h-399.03548542a85.50149678 85.50149678 0 0 1 0-171.00299354z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3378 = [\n  _hoisted_2383\n];\nfunction _sfc_render383(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock383(), _createElementBlock383(\"svg\", _hoisted_1384, _hoisted_3378);\n}\nvar menu_hetongjibenxinxiguanli_default = /* @__PURE__ */ export_helper_default(menu_hetongjibenxinxiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render383], [\"__file\", \"menu-hetongjibenxinxiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-huiyiguanli.vue?vue&type=script&lang.ts\nvar menu_huiyiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuHuiyiguanli\"\n};\n\n// src/components/menu-huiyiguanli.vue\nimport { createElementVNode as _createElementVNode379, openBlock as _openBlock384, createElementBlock as _createElementBlock384 } from \"vue\";\nvar _hoisted_1385 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2384 = /* @__PURE__ */ _createElementVNode379(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M165.38737778 700.35531852c-74.27413333 0-126.09611852-97.81854815-126.09611853-176.09765927V152.03745185c-1.69908148-76.45866667 58.61831111-139.9314963 135.07697778-142.2373926h675.14216297c76.45866667 2.3058963 136.77605925 65.77872592 135.07697778 142.2373926v372.2202074c0 78.27911111-51.70062222 176.09765925-125.97475556 176.09765927H165.38737778zM528.99081482 490.27602963c8.8594963 0 17.3549037-3.64088889 23.66577777-9.95176296l236.90050371-236.29368889c12.50038518-12.50038518 13.22856297-32.40391111 1.9418074-45.75383703l-1.9418074-2.06317038c-13.22856297-13.22856297-34.58844445-13.22856297-47.81700741 0L528.99081482 408.96284445l-111.53256297-111.53256297c-13.22856297-13.22856297-34.58844445-13.22856297-47.8170074 0L234.32154075 432.50725925c-12.50038518 12.50038518-13.22856297 32.40391111-1.94180742 45.75383705l1.94180742 1.9418074c6.31087408 6.31087408 14.92764445 9.95176297 23.9085037 9.95176297 8.98085925 0 17.59762963-3.51952592 23.9085037-9.95176297l111.65392593-111.28983703 111.53256295 111.28983703c6.31087408 6.43223703 14.80628148 9.95176297 23.66577779 10.07312593z m404.9882074 263.1149037c28.27757037 0.48545185 50.97244445 23.78714075 50.60835556 52.06471112-3.51952592 37.37979259-27.91348148 69.66234075-62.98737778 83.13362963H795.62524445l26.94257777 41.99158517c16.384 22.45214815 12.62174815 53.88515555-8.61677037 71.84687408l-1.57771852 1.21362964c-8.73813333 6.79632592-19.41807408 10.43721482-30.34074074 10.43721481-16.01991111 0-31.19028148-7.76722963-40.53522962-20.87442963l-72.0896-104.61487407H354.47087408l-71.96823705 104.61487407c-7.88859259 11.04402963-19.90352592 18.32580741-33.25345185 20.26761482-13.34992592 1.94180741-26.94257778-1.57771852-37.62251851-9.95176297-21.84533333-17.23354075-26.69985185-48.42382222-11.16539259-71.48278518l1.09226667-1.57771852 26.94257777-41.99158519H102.4c-35.0738963-13.47128889-59.46785185-45.75383703-62.98737778-83.13362963-0.36408889-28.39893333 22.33078518-51.57925925 50.60835556-52.06471111h843.95804444z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3379 = [\n  _hoisted_2384\n];\nfunction _sfc_render384(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock384(), _createElementBlock384(\"svg\", _hoisted_1385, _hoisted_3379);\n}\nvar menu_huiyiguanli_default = /* @__PURE__ */ export_helper_default(menu_huiyiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render384], [\"__file\", \"menu-huiyiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-huiyijiyaoguanli.vue?vue&type=script&lang.ts\nvar menu_huiyijiyaoguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuHuiyijiyaoguanli\"\n};\n\n// src/components/menu-huiyijiyaoguanli.vue\nimport { createElementVNode as _createElementVNode380, openBlock as _openBlock385, createElementBlock as _createElementBlock385 } from \"vue\";\nvar _hoisted_1386 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2385 = /* @__PURE__ */ _createElementVNode380(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M893.83822222 2.84444445H130.16177778c-35.15733333 0-63.60177778 28.44444445-63.60177778 63.60177777v890.99377778c0 35.15733333 28.44444445 63.60177778 63.60177778 63.60177778h763.67644444c35.15733333 0 63.60177778-28.44444445 63.60177778-63.60177778V66.44622222c0.11377778-35.15733333-28.44444445-63.60177778-63.60177778-63.60177777zM218.33955555 766.63466667c-26.39644445 0-47.78666667-21.39022222-47.78666666-47.78666667s21.39022222-47.78666667 47.78666666-47.78666667 47.78666667 21.39022222 47.78666667 47.78666667-21.39022222 47.78666667-47.78666667 47.78666667z m0-206.848c-26.39644445 0-47.78666667-21.39022222-47.78666666-47.78666667s21.39022222-47.78666667 47.78666666-47.78666667 47.78666667 21.39022222 47.78666667 47.78666667-21.39022222 47.78666667-47.78666667 47.78666667z m0-206.848c-26.39644445 0-47.78666667-21.39022222-47.78666666-47.78666667s21.39022222-47.78666667 47.78666666-47.78666667 47.78666667 21.39022222 47.78666667 47.78666667-21.39022222 47.78666667-47.78666667 47.78666667zM853.33333333 742.74133333H360.10666667c-13.19822222 0-23.89333333-10.69511111-23.89333334-23.89333333s10.69511111-23.89333333 23.89333334-23.89333333H853.33333333c13.19822222 0 23.89333333 10.69511111 23.89333334 23.89333333s-10.69511111 23.89333333-23.89333334 23.89333333z m0-206.848H360.10666667c-13.19822222 0-23.89333333-10.69511111-23.89333334-23.89333333s10.69511111-23.89333333 23.89333334-23.89333333H853.33333333c13.19822222 0 23.89333333 10.69511111 23.89333334 23.89333333s-10.69511111 23.89333333-23.89333334 23.89333333z m0-206.848H360.10666667c-13.19822222 0-23.89333333-10.69511111-23.89333334-23.89333333s10.69511111-23.89333333 23.89333334-23.89333333H853.33333333c13.19822222 0 23.89333333 10.69511111 23.89333334 23.89333333s-10.69511111 23.89333333-23.89333334 23.89333333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3380 = [\n  _hoisted_2385\n];\nfunction _sfc_render385(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock385(), _createElementBlock385(\"svg\", _hoisted_1386, _hoisted_3380);\n}\nvar menu_huiyijiyaoguanli_default = /* @__PURE__ */ export_helper_default(menu_huiyijiyaoguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render385], [\"__file\", \"menu-huiyijiyaoguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-bumenguanli.vue?vue&type=script&lang.ts\nvar menu_jc_bumenguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuJcBumenguanli\"\n};\n\n// src/components/menu-jc-bumenguanli.vue\nimport { createElementVNode as _createElementVNode381, openBlock as _openBlock386, createElementBlock as _createElementBlock386 } from \"vue\";\nvar _hoisted_1387 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2386 = /* @__PURE__ */ _createElementVNode381(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1000.10666667 823.75111111s-60.30222222-0.56888889-47.104-0.68266666h14.44977778-14.44977778c-24.91733333 0.11377778-32.88177778 0.68266667-34.13333334 0.68266666 26.85155555-215.60888889-300.60088889-296.84622222-300.60088888-330.752 0-26.39644445 7.73688889-30.37866667 31.85777777-55.06844444 25.14488889-25.82755555 43.91822222-70.656 48.24177778-130.95822222 11.94666667-167.13955555-98.19022222-199.79377778-6.94044445-199.79377778s154.28266667 75.20711111 154.28266667 167.936c0 60.416-45.62488889 129.59288889-55.06844444 145.52177778-10.12622222 17.06666667-11.15022222 53.36177778-11.49155556 57.7991111-1.25155555 66.78755555 242.11911111 89.65688889 242.23288889 231.87911112h0.79644444v90.90844444c0 12.51555555-9.89866667 22.528-22.07288888 22.528zM525.53955555 522.80888889c-1.47911111 82.26133333 302.64888889 110.36444445 302.76266667 285.46844444h0.91022223v111.95733334c0 15.24622222-12.288 27.53422222-27.53422223 27.53422222H30.03733333c-15.24622222 0-27.53422222-12.288-27.53422222-27.53422222v-111.95733334h0.91022222c0.68266667-188.75733333 301.28355555-206.27911111 302.76266667-285.46844444 0.45511111-4.096 0.56888889-47.44533333-14.336-71.11111111-15.70133333-25.14488889-68.94933333-104.67555555-68.94933333-179.08622223 0-114.11911111 78.73422222-206.73422222 192.85333333-206.73422222S608.71111111 158.37866667 608.71111111 272.61155555c0 74.41066667-60.98488889 157.696-68.94933333 179.08622223-8.53333333 23.21066667-13.88088889 65.64977778-14.22222223 71.11111111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3381 = [\n  _hoisted_2386\n];\nfunction _sfc_render386(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock386(), _createElementBlock386(\"svg\", _hoisted_1387, _hoisted_3381);\n}\nvar menu_jc_bumenguanli_default = /* @__PURE__ */ export_helper_default(menu_jc_bumenguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render386], [\"__file\", \"menu-jc-bumenguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-gongsiguanli.vue?vue&type=script&lang.ts\nvar menu_jc_gongsiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuJcGongsiguanli\"\n};\n\n// src/components/menu-jc-gongsiguanli.vue\nimport { createElementVNode as _createElementVNode382, openBlock as _openBlock387, createElementBlock as _createElementBlock387 } from \"vue\";\nvar _hoisted_1388 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2387 = /* @__PURE__ */ _createElementVNode382(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M968.56746667 886.10133333H916.13866667V289.1776c0-17.47626667-10.37653333-32.768-26.2144-40.41386667l-261.59786667-136.53333333c-14.7456-6.5536-31.1296-6.5536-45.8752 0-16.384 6.5536-26.76053333 22.39146667-26.2144 108.68053333V954.368h-52.4288V148.2752c0-88.4736 0-101.5808-19.6608-108.68053333-16.93013333-7.09973333-35.49866667-7.09973333-52.4288 0L132.43733333 197.4272c-15.83786667 7.64586667-26.2144 24.02986667-26.2144 41.50613333v647.71413334h-52.4288c-13.1072 0-19.6608 7.09973333-19.6608 13.65333333V976.21333333c0 6.5536 6.5536 13.65333333 19.6608 13.65333334h914.77333334c6.00746667 0 18.56853333-7.09973333 19.6608-13.65333334v-75.3664c1.6384-8.192-12.56106667-14.7456-19.6608-14.7456zM354.16746667 789.98186667c0 7.64586667-6.00746667 13.65333333-13.65333334 13.65333333H266.78613333c-7.64586667 0-13.65333333-6.00746667-13.65333333-13.65333333v-63.8976c0-7.64586667 6.00746667-13.65333333 13.65333333-13.65333334h75.3664c7.64586667 0 13.65333333 6.00746667 13.65333334 13.65333334l-1.6384 63.8976z m0-192.78506667c0 7.64586667-6.00746667 13.65333333-13.65333334 13.65333333H266.78613333c-7.64586667 0-13.65333333-6.00746667-13.65333333-13.65333333v-64.98986667c0-7.64586667 6.00746667-13.65333333 13.65333333-13.65333333h75.3664c7.64586667 0 13.65333333 6.00746667 13.65333334 13.65333333l-1.6384 64.98986667z m0-192.23893333c0 7.64586667-6.00746667 13.65333333-13.65333334 13.65333333H266.78613333c-7.64586667 0-13.65333333-6.00746667-13.65333333-13.65333333v-65.536c0-7.64586667 6.00746667-13.65333333 13.65333333-13.65333334h75.3664c7.64586667 0 13.65333333 6.00746667 13.65333334 13.65333334l-1.6384 65.536z m430.8992 384.47786666c0 7.64586667-6.00746667 13.65333333-13.65333334 13.65333334h-75.3664c-7.64586667 0-13.65333333-6.00746667-13.65333333-13.65333334V724.992c0-7.64586667 6.00746667-13.65333333 13.65333333-13.65333333h75.3664c7.64586667 0 13.65333333 6.00746667 13.65333334 13.65333333v64.44373333z m0-192.78506666c0 7.64586667-6.00746667 13.65333333-13.65333334 13.65333333h-75.3664c-7.64586667 0-13.65333333-6.00746667-13.65333333-13.65333333v-64.44373334c0-7.64586667 6.00746667-13.65333333 13.65333333-13.65333333h75.3664c7.64586667 0 13.65333333 6.00746667 13.65333334 13.65333333v64.44373334z m0-192.23893334c0 7.64586667-6.00746667 13.65333333-13.65333334 13.65333334h-75.3664c-7.64586667 0-13.65333333-6.00746667-13.65333333-13.65333334V339.42186667c0-7.64586667 6.00746667-13.65333333 13.65333333-13.65333334h75.3664c7.64586667 0 13.65333333 6.00746667 13.65333334 13.65333334v64.98986666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3382 = [\n  _hoisted_2387\n];\nfunction _sfc_render387(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock387(), _createElementBlock387(\"svg\", _hoisted_1388, _hoisted_3382);\n}\nvar menu_jc_gongsiguanli_default = /* @__PURE__ */ export_helper_default(menu_jc_gongsiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render387], [\"__file\", \"menu-jc-gongsiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-huishouzhan.vue?vue&type=script&lang.ts\nvar menu_jc_huishouzhan_vue_vue_type_script_lang_default = {\n  name: \"MenuJcHuishouzhan\"\n};\n\n// src/components/menu-jc-huishouzhan.vue\nimport { createElementVNode as _createElementVNode383, openBlock as _openBlock388, createElementBlock as _createElementBlock388 } from \"vue\";\nvar _hoisted_1389 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2388 = /* @__PURE__ */ _createElementVNode383(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M200.33991111 892.98261333c0 61.74947555 55.34151111 112.43064889 122.91640889 112.43064889h377.48736c68.15744 0 122.91640889-50.09863111 122.91640889-112.43064889l57.67168-587.20256H142.08568889l58.25422222 587.20256z m527.20071111-764.87793778h-81.55591111v-80.39082666c0-15.72864-12.81592889-28.54456889-28.54456889-28.54456889H406.55985778c-15.72864 0-28.54456889 12.81592889-28.54456889 28.54456889v80.39082666H80.91875555v112.4306489h862.1624889v-112.4306489H727.54062222zM459.5712 89.65688889h104.8576v37.86524444h-104.8576V89.65688889z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3383 = [\n  _hoisted_2388\n];\nfunction _sfc_render388(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock388(), _createElementBlock388(\"svg\", _hoisted_1389, _hoisted_3383);\n}\nvar menu_jc_huishouzhan_default = /* @__PURE__ */ export_helper_default(menu_jc_huishouzhan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render388], [\"__file\", \"menu-jc-huishouzhan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-jichushuju.vue?vue&type=script&lang.ts\nvar menu_jc_jichushuju_vue_vue_type_script_lang_default = {\n  name: \"MenuJcJichushuju\"\n};\n\n// src/components/menu-jc-jichushuju.vue\nimport { createElementVNode as _createElementVNode384, openBlock as _openBlock389, createElementBlock as _createElementBlock389 } from \"vue\";\nvar _hoisted_1390 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2389 = /* @__PURE__ */ _createElementVNode384(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M-18.83022222 50.42844446z m369.43644444 72.81777776c17.06666667 0 31.63022222 5.91644445 43.80444445 17.74933333 12.17422222 11.83288889 18.20444445 26.28266667 18.20444445 43.34933334V430.56c0 17.06666667-6.03022222 31.63022222-18.20444445 43.80444446s-26.73777778 18.20444445-43.80444445 18.20444444H104.27733334c-17.06666667 0-31.51644445-6.03022222-43.34933334-18.20444444S43.29244445 447.62666667 43.29244445 430.56V184.34488889c0-17.06666667 5.91644445-31.51644445 17.74933333-43.34933334 11.83288889-11.83288889 26.28266667-17.74933333 43.34933334-17.74933333-0.11377778 0.11377778 246.21511111 0 246.2151111 0z m0 492.544c17.06666667 0 31.63022222 5.91644445 43.80444445 17.74933333 12.17422222 11.83288889 18.20444445 26.28266667 18.20444445 43.34933335v247.2391111c0 17.06666667-6.03022222 31.51644445-18.20444445 43.34933333-12.17422222 11.83288889-26.73777778 17.74933333-43.80444445 17.74933335H104.27733334c-17.06666667 0-31.51644445-5.91644445-43.34933334-17.74933335-11.83288889-11.83288889-17.74933333-26.28266667-17.74933333-43.34933333V676.77511111c0-17.06666667 5.91644445-31.51644445 17.74933333-43.34933332 11.83288889-11.83288889 26.28266667-17.74933333 43.34933334-17.74933333h246.32888888z m493.45422223 0c17.06666667 0 31.51644445 5.91644445 43.34933333 17.74933333 11.83288889 11.83288889 17.74933333 26.28266667 17.74933334 43.34933335v247.2391111c0 17.06666667-5.91644445 31.51644445-17.74933334 43.34933333-11.83288889 11.83288889-26.28266667 17.74933333-43.34933333 17.74933335H597.73155556c-17.06666667 0-31.63022222-5.91644445-43.80444444-17.74933335-12.17422222-11.83288889-18.20444445-26.28266667-18.20444445-43.34933333V676.77511111c0-17.06666667 6.03022222-31.51644445 18.20444445-43.34933332 12.17422222-11.83288889 26.73777778-17.74933333 43.80444444-17.74933333h246.32888889z m136.87466667-384.22755555c13.08444445 13.08444445 19.68355555 28.55822222 19.68355555 46.30755555s-6.59911111 32.768-19.68355555 45.28355557L797.63911112 506.44977778c-13.08444445 13.08444445-28.44444445 19.68355555-45.85244445 19.68355556-17.408 0-32.65422222-6.59911111-45.85244445-19.68355556l-183.06844444-183.18222223c-12.51555555-12.51555555-18.77333333-27.53422222-18.77333333-45.28355554s6.25777778-33.22311111 18.77333333-46.30755555l183.296-183.29600001c13.08444445-12.51555555 28.44444445-18.77333333 45.85244444-18.77333333 17.408 0 32.65422222 6.25777778 45.85244445 18.77333333l183.06844445 183.18222222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3384 = [\n  _hoisted_2389\n];\nfunction _sfc_render389(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock389(), _createElementBlock389(\"svg\", _hoisted_1390, _hoisted_3384);\n}\nvar menu_jc_jichushuju_default = /* @__PURE__ */ export_helper_default(menu_jc_jichushuju_vue_vue_type_script_lang_default, [[\"render\", _sfc_render389], [\"__file\", \"menu-jc-jichushuju.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-quanxianguangli.vue?vue&type=script&lang.ts\nvar menu_jc_quanxianguangli_vue_vue_type_script_lang_default = {\n  name: \"MenuJcQuanxianguangli\"\n};\n\n// src/components/menu-jc-quanxianguangli.vue\nimport { createElementVNode as _createElementVNode385, openBlock as _openBlock390, createElementBlock as _createElementBlock390 } from \"vue\";\nvar _hoisted_1391 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2390 = /* @__PURE__ */ _createElementVNode385(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M459.09333333 372.26666667c-39.78666667 39.78666667-39.68 104.10666667 0 143.78666666 39.68 39.78666667 104.10666667 39.78666667 143.68 0 39.78666667-39.68 39.78666667-104.10666667 0-143.78666666-39.46666667-39.78666667-103.89333333-39.78666667-143.68 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3385 = /* @__PURE__ */ _createElementVNode385(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M901.76 156.48L527.68 36.26666667c-4.26666667-1.49333333-9.92-2.13333333-15.68-2.13333334s-11.41333333 0.74666667-15.68 2.13333334L122.34666667 156.48c-8.64 2.88-15.68 12.90666667-15.68 21.97333333v522.56c0 9.17333333 5.97333333 21.22666667 13.12 26.88L498.88 985.6c3.62666667 2.77333333 8.32 4.26666667 13.12 4.26666667 4.8 0 9.6-1.49333333 13.12-4.26666667l379.2-257.70666667c7.14666667-5.65333333 13.12-17.70666667 13.12-26.88V178.56c0-9.17333333-7.04-19.09333333-15.68-22.08zM660.48 573.76c-61.54666667 61.65333333-156.16 70.18666667-226.77333333 25.6l-76.05333334 76.05333333c-16.21333333 16.21333333-42.77333333 16.21333333-59.09333333 0-15.36-15.36-15.36-40.74666667 0-56.10666666l77.54666667-77.65333334c-44.90666667-71.14666667-35.94666667-166.72 26.77333333-228.26666666 71.68-70.50666667 186.45333333-69.97333333 257.6 1.17333333 71.46666667 71.68 71.46666667 187.52 0 259.2z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_483 = [\n  _hoisted_2390,\n  _hoisted_3385\n];\nfunction _sfc_render390(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock390(), _createElementBlock390(\"svg\", _hoisted_1391, _hoisted_483);\n}\nvar menu_jc_quanxianguangli_default = /* @__PURE__ */ export_helper_default(menu_jc_quanxianguangli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render390], [\"__file\", \"menu-jc-quanxianguangli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-shujuzidian.vue?vue&type=script&lang.ts\nvar menu_jc_shujuzidian_vue_vue_type_script_lang_default = {\n  name: \"MenuJcShujuzidian\"\n};\n\n// src/components/menu-jc-shujuzidian.vue\nimport { openBlock as _openBlock391, createElementBlock as _createElementBlock391, createStaticVNode as _createStaticVNode6 } from \"vue\";\nvar _hoisted_1392 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2391 = /* @__PURE__ */ _createStaticVNode6('<path fill=\"currentColor\" d=\"M100.21546667 230.43792592h545.76924444v557.78417778H100.21546667z\"></path><path fill=\"currentColor\" d=\"M645.98471111 818.56284445H100.21546667c-16.74808889 0-30.34074075-13.59265185-30.34074075-30.34074075V230.43792592c0-16.74808889 13.59265185-30.34074075 30.34074075-30.34074074h545.76924444c16.74808889 0 30.34074075 13.59265185 30.34074074 30.34074074v557.78417778c0 16.74808889-13.59265185 30.34074075-30.34074074 30.34074075z m-515.4285037-60.68148148h485.08776296V260.77866667H130.55620741v497.1026963z\"></path><path fill=\"currentColor\" d=\"M99.24456297 666.73777778V162.71739259c0-69.17688889 56.55514075-125.73202963 125.73202962-125.73202962h576.35271111c69.17688889 0 125.73202963 56.55514075 125.73202963 125.73202962v503.89902223c0 69.17688889-56.55514075 125.73202963-125.73202963 125.73202963\"></path><path fill=\"currentColor\" d=\"M801.3293037 822.68918518c-16.74808889 0-30.34074075-13.59265185-30.34074073-30.34074073s13.59265185-30.34074075 30.34074073-30.34074075c52.55016297 0 95.39128889-42.84112592 95.39128889-95.39128888V162.71739259c0-52.55016297-42.84112592-95.39128889-95.39128889-95.39128889H224.97659259c-52.55016297 0-95.39128889 42.84112592-95.39128889 95.39128889v504.02038519c0 16.74808889-13.59265185 30.34074075-30.34074073 30.34074074s-30.34074075-13.59265185-30.34074075-30.34074074V162.71739259c0-86.04634075 70.02642963-156.07277037 156.07277037-156.07277037h576.35271111c86.04634075 0 156.07277037 70.02642963 156.07277038 156.07277037v503.89902223c0 86.04634075-70.02642963 156.07277037-156.07277038 156.07277036z\"></path><path fill=\"currentColor\" d=\"M99.24456297 920.6290963c-16.74808889 0-30.34074075-13.59265185-30.34074075-30.34074075V279.22583703c0-16.74808889 13.59265185-30.34074075 30.34074075-30.34074073s30.34074075 13.59265185 30.34074073 30.34074073v611.06251852c0 16.74808889-13.59265185 30.34074075-30.34074073 30.34074075z\"></path><path fill=\"currentColor\" d=\"M927.1826963 1018.9330963H198.27674075c-70.75460741 0-128.40201482-57.64740741-128.40201483-128.40201482s57.64740741-128.40201482 128.40201483-128.40201481H806.912c16.74808889 0 30.34074075 13.59265185 30.34074075 30.34074074s-13.59265185 30.34074075-30.34074075 30.34074074H198.27674075c-37.37979259 0-67.72053333 30.34074075-67.72053334 67.72053333s30.34074075 67.72053333 67.72053334 67.72053334h728.90595555c16.74808889 0 30.34074075 13.59265185 30.34074073 30.34074073s-13.59265185 30.34074075-30.34074073 30.34074075z\"></path><path fill=\"currentColor\" d=\"M383.71934815 620.01303703h-0.9709037c-9.95176297-0.36408889-19.05398518-5.46133333-24.39395556-13.71401481l-127.55247407-195.39437037c-9.10222222-14.0781037-5.21860741-32.88936297 8.85949629-41.99158518s32.88936297-5.21860741 41.99158519 8.8594963l103.88669629 159.10684444L592.46364445 260.77866667c5.33997037-7.03905185 13.34992592-11.40811852 22.20942222-12.01493334 8.8594963-0.60681482 17.47626667 2.66998518 23.66577778 8.8594963l154.49505185 155.58731852c11.77220741 11.89357037 11.77220741 31.06891852-0.12136297 42.96248888s-31.06891852 11.77220741-42.96248888-0.12136295l-129.85837037-130.82927408L407.99194075 607.87674075c-5.70405925 7.64586667-14.68491852 12.1362963-24.2725926 12.13629628z\"></path>', 7), _hoisted_92 = [\n  _hoisted_2391\n];\nfunction _sfc_render391(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock391(), _createElementBlock391(\"svg\", _hoisted_1392, _hoisted_92);\n}\nvar menu_jc_shujuzidian_default = /* @__PURE__ */ export_helper_default(menu_jc_shujuzidian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render391], [\"__file\", \"menu-jc-shujuzidian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-wodexiangmu.vue?vue&type=script&lang.ts\nvar menu_jc_wodexiangmu_vue_vue_type_script_lang_default = {\n  name: \"MenuJcWodexiangmu\"\n};\n\n// src/components/menu-jc-wodexiangmu.vue\nimport { createElementVNode as _createElementVNode386, openBlock as _openBlock392, createElementBlock as _createElementBlock392 } from \"vue\";\nvar _hoisted_1393 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2392 = /* @__PURE__ */ _createElementVNode386(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M45.96622222 667.34459259h310.68918519v310.68918519H45.96622222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3386 = /* @__PURE__ */ _createElementVNode386(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M356.65540741 1016.86992592H45.96622222a38.83614815 38.83614815 0 0 1-38.83614814-38.83614814v-310.68918519a38.83614815 38.83614815 0 0 1 38.83614814-38.83614814h310.68918519a38.83614815 38.83614815 0 0 1 38.83614814 38.83614814v310.68918519a38.83614815 38.83614815 0 0 1-38.83614814 38.83614814z m-271.85303704-77.67229629h233.01688888v-233.01688888H84.80237037zM512 706.18074075h349.52533333M861.52533333 745.01688889h-349.52533333a38.83614815 38.83614815 0 0 1 0-77.6722963h349.52533333a38.83614815 38.83614815 0 0 1 0 77.6722963zM512 939.19762963h466.03377778M978.03377778 978.03377778H512a38.83614815 38.83614815 0 0 1 0-77.6722963h466.03377778a38.83614815 38.83614815 0 0 1 0 77.6722963zM45.96622222 45.96622222h310.68918519v310.68918519H45.96622222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_484 = /* @__PURE__ */ _createElementVNode386(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M356.65540741 395.49155555H45.96622222a38.83614815 38.83614815 0 0 1-38.83614814-38.83614814V45.96622222a38.83614815 38.83614815 0 0 1 38.83614814-38.83614814h310.68918519a38.83614815 38.83614815 0 0 1 38.83614814 38.83614814v310.68918519a38.83614815 38.83614815 0 0 1-38.83614814 38.83614814z m-271.85303704-77.6722963h233.01688888V84.80237037H84.80237037zM512 84.80237037h349.52533333M861.52533333 123.63851852h-349.52533333a38.83614815 38.83614815 0 0 1 0-77.6722963h349.52533333a38.83614815 38.83614815 0 0 1 0 77.6722963zM512 317.81925925h466.03377778M978.03377778 356.65540741H512a38.83614815 38.83614815 0 0 1 0-77.6722963h466.03377778a38.83614815 38.83614815 0 0 1 0 77.6722963z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_533 = [\n  _hoisted_2392,\n  _hoisted_3386,\n  _hoisted_484\n];\nfunction _sfc_render392(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock392(), _createElementBlock392(\"svg\", _hoisted_1393, _hoisted_533);\n}\nvar menu_jc_wodexiangmu_default = /* @__PURE__ */ export_helper_default(menu_jc_wodexiangmu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render392], [\"__file\", \"menu-jc-wodexiangmu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-xiangmuguangli.vue?vue&type=script&lang.ts\nvar menu_jc_xiangmuguangli_vue_vue_type_script_lang_default = {\n  name: \"MenuJcXiangmuguangli\"\n};\n\n// src/components/menu-jc-xiangmuguangli.vue\nimport { createElementVNode as _createElementVNode387, openBlock as _openBlock393, createElementBlock as _createElementBlock393 } from \"vue\";\nvar _hoisted_1394 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2393 = /* @__PURE__ */ _createElementVNode387(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M666.77333333 170.45333333H312.42666667c-7.04 0-12.69333333-5.76-12.69333334-12.69333333v-112c0-7.04 5.76-12.69333333 12.69333334-12.69333333H666.66666667c7.04 0 12.69333333 5.76 12.69333333 12.69333333v111.89333333c0.10666667 7.04-5.65333333 12.8-12.58666667 12.8z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3387 = /* @__PURE__ */ _createElementVNode387(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M316.90666667 691.2c-34.13333333 0-61.86666667 27.73333333-61.86666667 61.86666667s27.73333333 61.86666667 61.86666667 61.86666666 61.86666667-27.73333333 61.86666666-61.86666666-27.62666667-61.86666667-61.86666666-61.86666667z m539.41333333-588.8h-154.66666667v84.26666667c0 6.93333333-5.76 12.58666667-12.8 12.58666666h-398.93333333c-7.04 0-12.8-5.65333333-12.8-12.58666666v-84.26666667h-154.66666667c-18.13333333 0-33.06666667 14.72-33.06666666 32.64V956.8c0 17.92 14.93333333 32.64 33.06666666 32.64h733.86666667c18.13333333 0 33.06666667-14.72 33.06666667-32.64V135.04c0-17.92-14.82666667-32.64-33.06666667-32.64zM316.90666667 863.36c-60.90666667 0-110.29333333-49.38666667-110.29333334-110.29333333S256 642.77333333 316.90666667 642.77333333 427.2 692.16 427.2 753.06666667s-49.38666667 110.29333333-110.29333333 110.29333333z m118.4-480.32L315.94666667 502.4c-5.01333333 5.01333333-11.62666667 7.46666667-18.24 7.46666667-6.61333333 0-13.22666667-2.45333333-18.24-7.46666667l-85.12-85.12c-9.92-9.92-9.92-26.24 0-36.16 9.92-9.92 26.24-9.92 36.16 0l67.09333333 67.09333333 101.44-101.44c9.92-9.92 26.24-9.92 36.16 0 10.13333333 10.02666667 10.13333333 26.24 0.10666667 36.26666667zM779.73333333 810.02666667c0 14.08-11.52 25.6-25.6 25.6H537.6c-14.08 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6h216.53333333c14.08 0 25.6 11.52 25.6 25.6z m0-107.73333334c0 14.08-11.52 25.6-25.6 25.6H537.6c-14.08 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6h216.53333333c14.08 0 25.6 11.52 25.6 25.6z m0-224c0 14.08-11.52 25.6-25.6 25.6H537.6c-14.08 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6h216.53333333c14.08 0 25.6 11.52 25.6 25.6z m0-110.93333333c0 14.08-11.52 25.6-25.6 25.6H537.6c-14.08 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6h216.53333333c14.08 0 25.6 11.52 25.6 25.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_485 = [\n  _hoisted_2393,\n  _hoisted_3387\n];\nfunction _sfc_render393(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock393(), _createElementBlock393(\"svg\", _hoisted_1394, _hoisted_485);\n}\nvar menu_jc_xiangmuguangli_default = /* @__PURE__ */ export_helper_default(menu_jc_xiangmuguangli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render393], [\"__file\", \"menu-jc-xiangmuguangli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-xiangmuguanli.vue?vue&type=script&lang.ts\nvar menu_jc_xiangmuguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuJcXiangmuguanli\"\n};\n\n// src/components/menu-jc-xiangmuguanli.vue\nimport { createElementVNode as _createElementVNode388, openBlock as _openBlock394, createElementBlock as _createElementBlock394 } from \"vue\";\nvar _hoisted_1395 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2394 = /* @__PURE__ */ _createElementVNode388(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M69.97333333 114.97244445h258.50311112c9.78488889 0 19.11466667 3.98222222 25.82755555 10.92266667l88.51911111 91.81866666c6.48533333 6.71288889 10.01244445 15.58755555 10.01244444 24.91733334v95.91466666c0 23.552-19.22844445 42.78044445-42.78044444 42.78044444H69.97333333c-23.552 0-42.78044445-19.22844445-42.78044444-42.78044444V157.75288889c0-23.552 19.22844445-42.78044445 42.78044444-42.78044444z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3388 = /* @__PURE__ */ _createElementVNode388(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M900.096 224.768H125.72444445c-54.15822222 0-98.53155555 44.37333333-98.53155556 98.53155556v502.44266666c0 54.15822222 44.37333333 98.53155555 98.53155556 98.53155556h774.37155555c54.15822222 0 98.53155555-44.37333333 98.53155555-98.53155556V323.18577778c0-54.15822222-44.37333333-98.41777778-98.53155555-98.41777778zM451.35644445 461.76711112c0-9.78488889 7.96444445-17.74933333 17.74933333-17.74933334h417.10933333c9.78488889 0 17.74933333 7.96444445 17.74933334 17.74933334v44.14577777c0 9.78488889-7.96444445 17.74933333-17.74933334 17.74933333H468.992c-9.78488889 0-17.74933333-7.96444445-17.74933333-17.74933333v-44.14577777z m452.72177777 196.608c0 9.78488889-7.96444445 17.74933333-17.74933333 17.74933333H469.21955555c-9.78488889 0-17.74933333-7.96444445-17.74933333-17.74933333v-44.14577778c0-9.78488889 7.96444445-17.74933333 17.74933333-17.74933334H886.32888889c9.78488889 0 17.74933333 7.96444445 17.74933333 17.74933334v44.14577778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_486 = [\n  _hoisted_2394,\n  _hoisted_3388\n];\nfunction _sfc_render394(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock394(), _createElementBlock394(\"svg\", _hoisted_1395, _hoisted_486);\n}\nvar menu_jc_xiangmuguanli_default = /* @__PURE__ */ export_helper_default(menu_jc_xiangmuguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render394], [\"__file\", \"menu-jc-xiangmuguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-xinxiliebiao.vue?vue&type=script&lang.ts\nvar menu_jc_xinxiliebiao_vue_vue_type_script_lang_default = {\n  name: \"MenuJcXinxiliebiao\"\n};\n\n// src/components/menu-jc-xinxiliebiao.vue\nimport { openBlock as _openBlock395, createElementBlock as _createElementBlock395, createStaticVNode as _createStaticVNode7 } from \"vue\";\nvar _hoisted_1396 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2395 = /* @__PURE__ */ _createStaticVNode7('<path fill=\"currentColor\" d=\"M210.3602597 231.76349469c0 15.63764736-12.67800861 28.31449088-28.31332693 28.31449088L43.60526507 260.0779867c-15.63648227 0-28.31332693-12.67684466-28.31332694-28.31332693L15.29193813 95.73541091c0-15.63764736 12.67800861-28.31332693 28.31332694-28.31332693l138.44050375 0c15.63764736 0 28.31332693 12.67800861 28.31332693 28.31332693L210.35909461 231.76349469 210.3602597 231.76349469z\"></path><path fill=\"currentColor\" d=\"M1005.40030066 211.18690873c0 28.14916153-22.81785458 50.96701611-50.96701611 50.9670161L361.55677923 262.15392483c-28.14916153 0-50.96701611-22.81785458-50.9670161-50.9670161l0-94.87607467c0-28.14916153 22.81785458-50.96701611 50.9670161-50.96701611l592.87650532 0c28.14916153 0 50.96701611 22.81901853 50.96701611 50.96701611L1005.40030066 211.18690873 1005.40030066 211.18690873 1005.40030066 211.18690873z\"></path><path fill=\"currentColor\" d=\"M210.3602597 577.20168675c0 15.63764736-12.67800861 28.31332693-28.31332693 28.31332694L43.60526507 605.51501483c-15.63648227 0.00116395-28.31332693-12.67684466-28.31332694-28.31332694L15.29193813 441.17593202c0-15.63997525 12.67800861-28.31449088 28.31332694-28.31449088l138.44050375 0c15.63764736 0 28.31332693 12.67800861 28.31332693 28.31449088L210.35909461 577.20168675 210.3602597 577.20168675z\"></path><path fill=\"currentColor\" d=\"M1005.40030066 556.62742983c0 28.14916153-22.81785458 50.96701611-50.96701611 50.96701611L361.55677923 607.5944448c-28.14916153 0-50.96701611-22.81785458-50.9670161-50.96701611l0-94.87607466c0-28.14916153 22.81785458-50.96701611 50.9670161-50.96701611l592.87650532 0c28.14916153 0 50.96701611 22.81785458 50.96701611 50.96701611L1005.40030066 556.62742983 1005.40030066 556.62742983 1005.40030066 556.62742983z\"></path><path fill=\"currentColor\" d=\"M210.3602597 924.90792619c0 15.63881131-12.67800861 28.31565597-28.31332693 28.31565596L43.60526507 953.22358215c-15.63648227 0-28.31332693-12.67684466-28.31332694-28.31565596L15.29193813 788.88217031c0-15.63764736 12.67800861-28.31565597 28.31332694-28.31565596l138.44050375 0c15.63764736 0 28.31332693 12.67917369 28.31332693 28.31565596L210.35909461 924.90792619 210.3602597 924.90792619z\"></path><path fill=\"currentColor\" d=\"M1005.40030066 904.33250418c0 28.14916153-22.81785458 50.96701611-50.96701611 50.96701611L361.55677923 955.29952029c-28.14916153 0-50.96701611-22.81785458-50.9670161-50.96701611l0-94.87607467c0-28.14916153 22.81785458-50.96701611 50.9670161-50.9670161l592.87650532 0c28.14916153 0 50.96701611 22.81785458 50.96701611 50.9670161L1005.40030066 904.33250418 1005.40030066 904.33250418 1005.40030066 904.33250418z\"></path>', 6), _hoisted_8 = [\n  _hoisted_2395\n];\nfunction _sfc_render395(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock395(), _createElementBlock395(\"svg\", _hoisted_1396, _hoisted_8);\n}\nvar menu_jc_xinxiliebiao_default = /* @__PURE__ */ export_helper_default(menu_jc_xinxiliebiao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render395], [\"__file\", \"menu-jc-xinxiliebiao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-xitongcaidan.vue?vue&type=script&lang.ts\nvar menu_jc_xitongcaidan_vue_vue_type_script_lang_default = {\n  name: \"MenuJcXitongcaidan\"\n};\n\n// src/components/menu-jc-xitongcaidan.vue\nimport { createElementVNode as _createElementVNode389, openBlock as _openBlock396, createElementBlock as _createElementBlock396 } from \"vue\";\nvar _hoisted_1397 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2396 = /* @__PURE__ */ _createElementVNode389(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M552.288 34.13333333h-80.576a34.13333333 34.13333333 0 0 0-33.472 27.43466667l-20.82133333 104.096a34.272 34.272 0 0 1-21.99466667 25.45066667Q381.19466667 196.26666667 367.56266667 202.66666667a34.69866667 34.69866667 0 0 1-14.69866667 3.27466666 33.99466667 33.99466667 0 0 1-18.89066667-5.70666666l-88.32-58.89066667a34.13333333 34.13333333 0 0 0-43.072 4.26666667l-56.97066666 56.97066666a34.13333333 34.13333333 0 0 0-4.26666667 43.072l58.89066667 88.33066667a34.29333333 34.29333333 0 0 1 2.432 33.57866667q-6.4 13.62133333-11.54133334 27.872a34.272 34.272 0 0 1-25.45066666 21.99466666l-104.10666667 20.82133334A34.13333333 34.13333333 0 0 0 34.13333333 471.712v80.56533333a34.13333333 34.13333333 0 0 0 27.43466667 33.472l104.096 20.82133334a34.272 34.272 0 0 1 25.45066667 21.99466666Q196.26666667 642.80533333 202.66666667 656.43733333a34.29333333 34.29333333 0 0 1-2.432 33.57866667l-58.89066667 88.33066667a34.13333333 34.13333333 0 0 0 4.26666667 43.072l56.97066666 56.97066666a34.13333333 34.13333333 0 0 0 43.072 4.26666667l88.33066667-58.89066667a33.99466667 33.99466667 0 0 1 18.89066667-5.70666666 34.688 34.688 0 0 1 14.688 3.27466666q13.62133333 6.4 27.872 11.552a34.272 34.272 0 0 1 21.99466666 25.45066667l20.82133334 104.096A34.13333333 34.13333333 0 0 0 471.712 989.86666667h80.56533333a34.13333333 34.13333333 0 0 0 33.472-27.43466667l20.82133334-104.096a34.272 34.272 0 0 1 21.99466666-25.45066667Q642.80533333 827.73333333 656.43733333 821.33333333a34.69866667 34.69866667 0 0 1 14.69866667-3.27466666 33.99466667 33.99466667 0 0 1 18.89066667 5.70666666l88.33066666 58.89066667a34.13333333 34.13333333 0 0 0 43.072-4.26666667l56.97066667-56.97066666a34.13333333 34.13333333 0 0 0 4.26666667-43.072l-58.89066667-88.33066667a34.29333333 34.29333333 0 0 1-2.44266667-33.57866667q6.4-13.62133333 11.54133334-27.86133333a34.272 34.272 0 0 1 25.45066666-21.99466667l104.096-20.82133333A34.13333333 34.13333333 0 0 0 989.86666667 552.288v-80.576a34.13333333 34.13333333 0 0 0-27.43466667-33.472l-104.096-20.82133333a34.272 34.272 0 0 1-25.45066667-21.99466667Q827.73333333 381.19466667 821.33333333 367.56266667a34.29333333 34.29333333 0 0 1 2.432-33.57866667l58.89066667-88.33066667a34.13333333 34.13333333 0 0 0-4.26666667-43.072l-56.97066666-56.97066666a34.13333333 34.13333333 0 0 0-43.072-4.26666667l-88.33066667 58.89066667a33.99466667 33.99466667 0 0 1-18.89066667 5.70666666 34.688 34.688 0 0 1-14.688-3.27466666q-13.62133333-6.4-27.872-11.552a34.272 34.272 0 0 1-21.99466666-25.45066667l-20.81066667-104.096A34.13333333 34.13333333 0 0 0 552.288 34.13333333zM512 716.8a204.8 204.8 0 1 1 144.81066667-59.98933333A203.456 203.456 0 0 1 512 716.8z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3389 = [\n  _hoisted_2396\n];\nfunction _sfc_render396(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock396(), _createElementBlock396(\"svg\", _hoisted_1397, _hoisted_3389);\n}\nvar menu_jc_xitongcaidan_default = /* @__PURE__ */ export_helper_default(menu_jc_xitongcaidan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render396], [\"__file\", \"menu-jc-xitongcaidan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-xitonghuancun.vue?vue&type=script&lang.ts\nvar menu_jc_xitonghuancun_vue_vue_type_script_lang_default = {\n  name: \"MenuJcXitonghuancun\"\n};\n\n// src/components/menu-jc-xitonghuancun.vue\nimport { createElementVNode as _createElementVNode390, openBlock as _openBlock397, createElementBlock as _createElementBlock397 } from \"vue\";\nvar _hoisted_1398 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2397 = /* @__PURE__ */ _createElementVNode390(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544.30896594 281.64965563c-68.82206906 0-124.83310312-55.9944825-124.83310407-124.81655251C419.47586188 88.02758656 475.48689687 32 544.30896594 32c68.82206906 0 124.8 55.9944825 124.8 124.83310312 0 68.82206906-55.97793094 124.81655156-124.8 124.8165525z m-265.73793188 99.12827531c-62.86344844 0-114.02482781-51.14482781-114.02482687-114.04137938s51.16137938-114.04137937 114.02482687-114.04137937a114.15724125 114.15724125 0 0 1 114.00827625 114.04137937c0 62.86344844-51.14482781 114.04137937-114.00827625 114.04137938zM165.63862062 638.73655156A100.6344825 100.6344825 0 0 1 65.10344844 538.15172375a100.6344825 100.6344825 0 0 1 100.53517218-100.53517219 100.6344825 100.6344825 0 0 1 100.51862063 100.53517219 100.6344825 100.6344825 0 0 1-100.51862063 100.56827625z m112.93241344 255.55862063a85.35724125 85.35724125 0 0 1-85.25793094-85.2744825 85.37379281 85.37379281 0 0 1 85.24137938-85.25793094 85.37379281 85.37379281 0 0 1 85.25793094 85.25793094c0 47.00689688-38.2344825 85.2744825-85.24137938 85.2744825zM544.30896594 992a74.54896594 74.54896594 0 0 1-74.48275875-74.48275875c0-41.08137937 33.41793094-74.48275875 74.48275875-74.48275875a74.54896594 74.54896594 0 0 1 74.46620625 74.48275875c0 41.08137937-33.40137937 74.48275875-74.48275875 74.48275875z m269.76-125.89241344a60.18206906 60.18206906 0 0 1-60.11586281-60.11586281 60.18206906 60.18206906 0 0 1 60.11586281-60.11586188 60.18206906 60.18206906 0 0 1 60.11586187 60.11586188 60.18206906 60.18206906 0 0 1-60.11586187 60.11586281z m110.48275781-278.15172469a49.39034437 49.39034437 0 0 1-49.32413719-49.32413812 49.39034437 49.39034437 0 0 1 49.32413719-49.34068969 49.40689688 49.40689688 0 0 1 49.34068969 49.32413813 49.42344844 49.42344844 0 0 1-49.34068969 49.34068968z m-148.75034437-317.52827531a38.26758656 38.26758656 0 1 0 76.55172375 0.01655156 38.26758656 38.26758656 0 0 0-76.55172375 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3390 = [\n  _hoisted_2397\n];\nfunction _sfc_render397(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock397(), _createElementBlock397(\"svg\", _hoisted_1398, _hoisted_3390);\n}\nvar menu_jc_xitonghuancun_default = /* @__PURE__ */ export_helper_default(menu_jc_xitonghuancun_vue_vue_type_script_lang_default, [[\"render\", _sfc_render397], [\"__file\", \"menu-jc-xitonghuancun.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-xitongrizhi.vue?vue&type=script&lang.ts\nvar menu_jc_xitongrizhi_vue_vue_type_script_lang_default = {\n  name: \"MenuJcXitongrizhi\"\n};\n\n// src/components/menu-jc-xitongrizhi.vue\nimport { createElementVNode as _createElementVNode391, openBlock as _openBlock398, createElementBlock as _createElementBlock398 } from \"vue\";\nvar _hoisted_1399 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2398 = /* @__PURE__ */ _createElementVNode391(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M955.73333333 240c25.92 0 46.93333333 21.01333333 46.93333334 46.93333333v675.2c0 25.92-21.01333333 46.93333333-46.93333334 46.93333334H68.26666667c-25.92 0-46.93333333-21.01333333-46.93333334-46.93333334V286.93333333c0-25.92 21.01333333-46.93333333 46.93333334-46.93333333h887.46666666zM784 678.4H240c-44.1824 0-80 35.8176-80 80 0 43.7408 35.104 79.2832 78.67733333 79.98933333l1.32266667 0.01066667h544c44.1824 0 80-35.8176 80-80s-35.8176-80-80-80z m0-266.66666667H464c-44.1824 0-80 35.8176-80 80 0 43.7408 35.104 79.2832 78.67733333 79.98933334l1.32266667 0.01066666h320c44.1824 0 80-35.8176 80-80s-35.8176-80-80-80zM955.73333333 16c25.92 0 46.93333333 21.01333333 46.93333334 46.93333333v66.13333334c0 25.92-21.01333333 46.93333333-46.93333334 46.93333333H68.26666667c-25.92 0-46.93333333-21.01333333-46.93333334-46.93333333V62.93333333c0-25.92 21.01333333-46.93333333 46.93333334-46.93333333h887.46666666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3391 = [\n  _hoisted_2398\n];\nfunction _sfc_render398(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock398(), _createElementBlock398(\"svg\", _hoisted_1399, _hoisted_3391);\n}\nvar menu_jc_xitongrizhi_default = /* @__PURE__ */ export_helper_default(menu_jc_xitongrizhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render398], [\"__file\", \"menu-jc-xitongrizhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-yonghuguangli.vue?vue&type=script&lang.ts\nvar menu_jc_yonghuguangli_vue_vue_type_script_lang_default = {\n  name: \"MenuJcYonghuguangli\"\n};\n\n// src/components/menu-jc-yonghuguangli.vue\nimport { createElementVNode as _createElementVNode392, openBlock as _openBlock399, createElementBlock as _createElementBlock399 } from \"vue\";\nvar _hoisted_1400 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2399 = /* @__PURE__ */ _createElementVNode392(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M531.29671111 953.76118518c6.06814815-0.84954075 11.89357037-2.91271111 16.86945186-6.31087407 7.88859259-4.61179259 15.29173333-9.8304 22.20942221-15.77718519 6.67496297-5.70405925 12.98583703-11.77220741 18.81125927-18.20444444 4.2477037-3.64088889 7.03905185-8.49540741 8.13131852-13.83537778 0.60681482-7.16041482 0.60681482-14.32082963 0-21.35988148 0-10.07312592-4.73315555-21.35988148-7.40314075-32.768-2.66998518-11.28675555-6.06814815-23.9085037-8.73813333-35.80207407s-5.33997037-21.35988148-7.40314074-28.27757037c5.33997037-4.97588148 10.07312592-10.43721482 14.0781037-16.384 4.61179259-5.5826963 7.28177778-12.37902222 7.40314074-19.53943703-0.24272592-5.94678518-2.3058963-11.65084445-6.06814814-16.384-3.64088889-5.46133333-8.25268148-10.31585185-13.4712889-14.4421926l-18.20444444-13.83537778h-53.15697778c-6.43223703 4.12634075-12.50038518 8.73813333-18.20444444 13.83537778-4.36906667 4.12634075-8.25268148 8.8594963-11.40811852 13.83537777-3.2768 4.73315555-5.21860741 10.07312592-5.33997037 15.77718519 0.84954075 5.94678518 3.76225185 11.40811852 8.13131852 15.77718519 5.70405925 7.03905185 12.25765925 13.34992592 19.53943703 18.93262222l-8.73813333 25.85031111c-3.39816297 11.28675555-6.67496297 23.30168889-10.07312592 35.80207407-3.39816297 12.62174815-6.06814815 23.9085037-8.73813333 35.19525927-1.94180741 8.00995555-3.15543703 16.26263703-3.39816297 24.51531851 1.09226667 5.33997037 3.88361482 10.07312592 8.13131852 13.83537777 5.94678518 6.67496297 12.37902222 12.74311111 19.53943703 18.20444445 7.03905185 5.70405925 14.44219259 10.92266667 22.20942223 15.77718519 4.49042963 2.79134815 9.8304 4.73315555 15.29173333 5.58269629z m484.60231111-99.39626666v18.93262223c1.45635555 14.92764445 0.36408889 30.09801482-3.39816297 44.66157036-1.57771852 11.28675555-5.46133333 22.20942222-11.4081185 32.03982222-8.73813333 7.5245037-19.41807408 12.74311111-30.94755557 15.04900742-141.99466667 35.80207408-288.47976297 53.15697778-435.4503111 51.57925925-150.85416297-0.24272592-301.4656-13.71401482-449.64977778-40.2925037-19.41807408-2.79134815-38.22933333-8.37404445-55.82696297-16.384-8.13131852-5.70405925-14.0781037-21.9666963-17.47626666-49.03063705-3.51952592-25.60758518-1.94180741-51.70062222 4.73315555-76.70139258 2.79134815-21.84533333 14.32082963-41.87022222 32.28254815-55.94832592 18.20444445-13.22856297 38.71478518-23.42305185 60.56011852-30.21937778 23.54441482-7.5245037 131.19336297-42.11294815 156.19413333-47.81700742 23.78714075-4.97588148 46.60337778-13.71401482 67.35644445-25.8503111 12.74311111-6.91768889 24.51531852-15.4130963 34.95253333-25.12213334 14.32082963-12.74311111 22.45214815-30.58346667 22.20942222-49.03063703v-28.27757038c-0.36408889-13.95674075-6.43223703-27.1853037-16.86945185-37.13706667-9.46631111-8.8594963-20.14625185-17.59762963-33.01072592-27.06394073-6.31087408-5.46133333-11.28675555-12.1362963-14.80628148-19.53943705-7.88859259-6.67496297-12.50038518-15.89854815-12.74311112-25.8503111l-13.47128888-30.8261926c-5.33997037-1.45635555-10.31585185-3.76225185-14.80628149-6.91768888-5.21860741-4.12634075-9.95176297-8.73813333-14.0781037-13.83537778-5.82542222-7.03905185-10.31585185-14.92764445-13.47128889-23.30168889-3.39816297-9.95176297-4.61179259-20.38897778-3.39816297-30.82619259 0.36408889-8.8594963 2.18453333-17.47626667 5.33997038-25.85031111 2.91271111-7.76722963 7.28177778-15.04900741 12.74311111-21.35988148-0.60681482-25.48622222 0.9709037-50.85108148 4.73315556-76.09457779 3.15543703-23.05896297 8.37404445-45.75383703 15.53445925-67.96325925 7.40314075-22.45214815 18.44717037-43.69066667 33.01072593-62.86601481 12.50038518-17.71899259 27.91348148-33.37481482 45.75383703-46.60337779 15.53445925-11.16539259 32.52527408-20.51034075 50.4869926-27.67075555 16.86945185-6.43223703 34.46708148-11.04402963 52.55016297-13.83537778 16.62672592-2.66998518 33.61754075-4.12634075 50.48699258-4.36906667 19.53943703 0 38.95751111 2.3058963 57.89013334 6.9176889 18.93262222 4.36906667 37.50115555 10.55857778 55.22014815 18.20444444 15.4130963 6.79632592 30.09801482 15.04900741 43.69066666 24.51531851 11.52948148 7.88859259 21.9666963 17.23354075 30.94755555 27.67075556 17.71899259 21.11715555 31.43300741 44.9042963 40.41386667 70.51188149 8.61677037 23.54441482 14.92764445 47.69564445 18.81125927 72.33232592 4.2477037 26.45712592 6.06814815 53.15697778 5.33997036 79.85682963 5.09724445 2.79134815 9.10222222 6.91768889 11.40811852 11.89357037 3.2768 5.70405925 5.46133333 11.89357037 6.67496297 18.20444445 1.57771852 8.98085925 1.57771852 18.08308148 0 27.06394073-1.45635555 11.52948148-4.85451852 22.81623703-10.07312593 33.37481482-3.88361482 7.28177778-9.10222222 13.95674075-15.53445926 19.53943703-5.82542222 4.97588148-12.74311111 8.61677037-20.14625185 10.67994075 0 10.67994075-6.06814815 21.35988148-9.46631111 30.82619259-3.39816297 9.46631111-8.13131852 16.99081482-12.1362963 25.12213333-3.88361482 7.28177778-9.10222222 13.95674075-15.53445926 19.53943705-5.70405925 4.73315555-11.77220741 9.22358518-18.20444444 13.22856295-5.33997037 3.2768-10.31585185 7.16041482-14.80628149 11.28675555-4.49042963 4.12634075-8.13131852 9.10222222-10.8013037 14.4421926-3.15543703 6.67496297-5.46133333 13.59265185-6.67496296 20.75306667-1.33499259 10.19448889-1.33499259 20.6317037 0 30.82619259 0.84954075 10.67994075 3.76225185 21.11715555 8.73813333 30.82619259 5.94678518 11.40811852 14.44219259 21.48124445 24.8794074 29.61256297 13.83537778 10.67994075 29.61256297 19.17534815 46.48201483 25.12213333 19.05398518 7.03905185 38.59342222 12.98583703 58.49694814 17.59762963 20.87442963 4.97588148 106.31395555 38.95751111 125.8533926 45.8752 18.6898963 6.5536 36.28752592 15.4130963 52.55016296 26.45712592 14.80628148 11.16539259 25.97167408 25.97167408 32.28254814 42.71976297 3.51952592 13.1072 5.33997037 26.2144 5.5826963 39.3216z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3392 = [\n  _hoisted_2399\n];\nfunction _sfc_render399(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock399(), _createElementBlock399(\"svg\", _hoisted_1400, _hoisted_3392);\n}\nvar menu_jc_yonghuguangli_default = /* @__PURE__ */ export_helper_default(menu_jc_yonghuguangli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render399], [\"__file\", \"menu-jc-yonghuguangli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jc-yonghuguanli.vue?vue&type=script&lang.ts\nvar menu_jc_yonghuguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuJcYonghuguanli\"\n};\n\n// src/components/menu-jc-yonghuguanli.vue\nimport { createElementVNode as _createElementVNode393, openBlock as _openBlock400, createElementBlock as _createElementBlock400 } from \"vue\";\nvar _hoisted_1401 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2400 = /* @__PURE__ */ _createElementVNode393(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M895.853333 926.08a53.333333 53.333333 0 0 1-53.333333 55.253333H53.446667a53.333333 53.333333 0 0 1-53.3-55.286666c1.093333-30.206667 8.733333-72.1 38.933333-100.173334 25.086667-23.333333 51.913333-41.58 82-55.833333 26.606667-12.593333 53.453333-21.04 79.413333-29.213333 27.6-8.666667 56.14-17.666667 86.073334-32C316.666667 694.5 334.126667 670 338.666667 635.886667a199.1 199.1 0 0 1-60.053334-57.553334 188.206667 188.206667 0 0 1-29.126666-71.206666c-11.033333-2.593333-25.486667-10.866667-36.466667-34.46-8.28-17.74-12.833333-40.853333-12.833333-65.08 0-15.206667-2.853333-29.54-5.38-42.193334-3.78-18.986667-7.046667-35.386667 3.26-47.96 3.073333-3.74 9.906667-9.913333 21.846666-10.433333-0.82-11.493333-1.233333-22.04-1.24-31.533333-0.04-45.42 3.72-81.413333 11.48-110 10.106667-37.26 27.78-64 52.526667-79.48a21.333333 21.333333 0 0 1 20.426667-1.333334 21.086667 21.086667 0 0 1 12 16.366667 48.826667 48.826667 0 0 0 3.013333 10 120.26 120.26 0 0 1 14.133333-11.2c12.493333-8.626667 29.66-17.92 51.026667-27.62C418.666667 56.106667 453.573333 44.28 455.046667 43.786667a21.333333 21.333333 0 0 1 22.733333 34.413333c-7.113333 8-10.766667 13.666667-12.666667 17.333333 10.133333-0.066667 20.966667-1.72 32.373334-3.46 38.566667-5.886667 86.566667-13.213333 144.373333 34.78 37.38 31.033333 41.28 85.926667 35.393333 176.366667q-0.133333 2-0.32 4.186667a50.666667 50.666667 0 0 1 6.76-0.48c13.193333 0 20.766667 6 24.8 11.033333 10.36 12.946667 6.733333 29.14 2.526667 47.893333-2.813333 12.54-6 26.746667-6 41.693334 0 24.566667-5.193333 48-14.626667 66-10.666667 20.366667-26.546667 32.666667-44 34.433333C636.973333 558.333333 607 603.12 562.666667 632.486667c3.68 35.913333 20.973333 61.6 51.513333 76.433333 29.393333 14.28 57.426667 23.253333 84.533333 31.933333 25.54 8.18 51.953333 16.666667 78.14 29.246667 29.633333 14.266667 56.04 32.553333 80.733334 55.9 29.693333 28.066667 37.2 69.913333 38.266666 100.08zM874.666667 298.666667h128a21.333333 21.333333 0 0 0 0-42.666667h-128a21.333333 21.333333 0 0 0 0 42.666667z m128 469.333333h-42.666667a21.333333 21.333333 0 0 0 0 42.666667h42.666667a21.333333 21.333333 0 0 0 0-42.666667z m0-256h-170.666667a21.333333 21.333333 0 0 0 0 42.666667h170.666667a21.333333 21.333333 0 0 0 0-42.666667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3393 = [\n  _hoisted_2400\n];\nfunction _sfc_render400(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock400(), _createElementBlock400(\"svg\", _hoisted_1401, _hoisted_3393);\n}\nvar menu_jc_yonghuguanli_default = /* @__PURE__ */ export_helper_default(menu_jc_yonghuguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render400], [\"__file\", \"menu-jc-yonghuguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jd-jindujihua.vue?vue&type=script&lang.ts\nvar menu_jd_jindujihua_vue_vue_type_script_lang_default = {\n  name: \"MenuJdJindujihua\"\n};\n\n// src/components/menu-jd-jindujihua.vue\nimport { createElementVNode as _createElementVNode394, openBlock as _openBlock401, createElementBlock as _createElementBlock401 } from \"vue\";\nvar _hoisted_1402 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2401 = /* @__PURE__ */ _createElementVNode394(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M276.19255 140.792258h377.273704c6.739958 0 6.739958 0 6.739958-6.393852V6.393852c0-6.393852 0-6.393852-6.739958-6.393852H276.19255c-6.739958 0-6.739958 0-6.739958 6.393852v128.004554c0 6.393852 0 6.393852 6.739958 6.393852z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3394 = /* @__PURE__ */ _createElementVNode394(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M478.30021 806.408653c0-147.204326 128.004554-268.796812 276.228982-268.796813 47.16149 0 87.583022 12.751272 128.004554 31.987477V121.592486c0-12.751272-13.479916-25.502544-26.959832-25.502544h-148.206212v70.314157c0 12.751272-13.479916 25.593624-26.941616 25.593624h-431.175152c-13.479916 0-26.941616-12.751272-26.941616-25.593624V95.998861H67.344932C53.883232 95.998861 40.403316 102.392714 40.403316 121.592486v864.007969c0 12.751272 13.479916 25.61184 26.941616 25.611841h512.018216c-67.363148-51.223681-101.062938-128.004554-101.062938-204.803643zM195.349486 358.401822c0-6.393852 6.739958-12.751272 13.479916-12.751272h505.278258c6.739958 0 13.4617 6.412068 13.4617 12.751272v70.405237c0 6.393852-6.721742 12.751272-13.4617 12.751272H208.829402c-6.739958 0-13.479916-6.393852-13.479916-12.751272zM471.578468 640.004554c0 6.393852-6.739958 12.751272-13.479916 12.751272H208.829402c-6.739958 0-13.479916-6.412068-13.479916-12.751272v-63.993169c0-6.412068 6.739958-12.751272 13.479916-12.751272H458.098552c6.739958 0 13.479916 6.393852 13.479916 12.751272z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_487 = /* @__PURE__ */ _createElementVNode394(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M761.26915 588.799089c-121.264596 0-222.236454 95.998861-222.236454 217.609564s94.32298 217.591347 222.327535 217.591347 222.236454-95.998861 222.236453-217.591347-101.062938-217.609563-222.327534-217.609564zM902.134273 803.330131a14.427153 14.427153 0 0 1-14.390722 14.372505h-131.155939a14.408937 14.408937 0 0 1-12.751272-7.723627 14.663963 14.663963 0 0 1-2.440958-8.069734v-149.171665a14.736827 14.736827 0 0 1 14.700395-14.682179h1.566585a14.736827 14.736827 0 0 1 14.700395 14.682179v133.961219h115.362578a14.445369 14.445369 0 0 1 14.390721 14.390722z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_534 = [\n  _hoisted_2401,\n  _hoisted_3394,\n  _hoisted_487\n];\nfunction _sfc_render401(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock401(), _createElementBlock401(\"svg\", _hoisted_1402, _hoisted_534);\n}\nvar menu_jd_jindujihua_default = /* @__PURE__ */ export_helper_default(menu_jd_jindujihua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render401], [\"__file\", \"menu-jd-jindujihua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jd-jingduguanli.vue?vue&type=script&lang.ts\nvar menu_jd_jingduguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuJdJingduguanli\"\n};\n\n// src/components/menu-jd-jingduguanli.vue\nimport { createElementVNode as _createElementVNode395, openBlock as _openBlock402, createElementBlock as _createElementBlock402 } from \"vue\";\nvar _hoisted_1403 = {\n  class: \"icon\",\n  viewBox: \"0 0 1057 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2402 = /* @__PURE__ */ _createElementVNode395(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M0 0L0.264258 264.258065h1057.032258V0H0.264258zM925.167484 198.193548h-231.225807V66.064516h231.225807v132.129032zM0.264258 363.354839v264.258064h1057.032258v-264.258064H0.264258z m924.903226 198.193548h-231.225807v-132.129032h231.225807v132.129032zM0.264258 759.741935l-0.264258 264.258065H1057.296516v-264.258065H0.264258z m924.903226 198.193549h-231.225807v-132.129032h231.225807v132.129032z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3395 = [\n  _hoisted_2402\n];\nfunction _sfc_render402(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock402(), _createElementBlock402(\"svg\", _hoisted_1403, _hoisted_3395);\n}\nvar menu_jd_jingduguanli_default = /* @__PURE__ */ export_helper_default(menu_jd_jingduguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render402], [\"__file\", \"menu-jd-jingduguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jd-jingdujihua.vue?vue&type=script&lang.ts\nvar menu_jd_jingdujihua_vue_vue_type_script_lang_default = {\n  name: \"MenuJdJingdujihua\"\n};\n\n// src/components/menu-jd-jingdujihua.vue\nimport { createElementVNode as _createElementVNode396, openBlock as _openBlock403, createElementBlock as _createElementBlock403 } from \"vue\";\nvar _hoisted_1404 = {\n  class: \"icon\",\n  viewBox: \"0 0 1025 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2403 = /* @__PURE__ */ _createElementVNode396(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M769.383672 213.701944a42.298056 42.298056 0 0 0 42.850972-42.850972V42.850972a42.850972 42.850972 0 0 0-85.425486 0v128a42.298056 42.298056 0 0 0 42.574514 42.850972zM256.554298 213.701944a42.298056 42.298056 0 0 0 42.850972-42.850972V42.850972a42.850972 42.850972 0 0 0-85.425486 0v128a42.298056 42.298056 0 0 0 42.574514 42.850972z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3396 = /* @__PURE__ */ _createElementVNode396(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M923.094255 85.425486h-34.00432a34.280778 34.280778 0 0 0-34.280777 34.280777v49.485962A87.084233 87.084233 0 0 1 774.083456 257.382289a85.701944 85.701944 0 0 1-91.50756-85.425486V118.87689a34.280778 34.280778 0 0 0-32.898488-34.280778h-273.693304a34.280778 34.280778 0 0 0-34.00432 34.280778v49.485961a87.084233 87.084233 0 0 1-79.61987 88.190065 85.701944 85.701944 0 0 1-91.50756-85.701944V118.047516A34.280778 34.280778 0 0 0 136.848035 82.937365H102.567257A102.842333 102.842333 0 0 0 0.001382 186.332613v735.101512A102.842333 102.842333 0 0 0 102.567257 1022.894168h820.526998a102.842333 102.842333 0 0 0 102.565875-102.565874V186.332613a102.565875 102.565875 0 0 0-102.565875-100.907127zM246.601814 572.544276L432.105054 387.041037l126.617711 126.61771 143.758099-143.758099h-33.727862A32.069114 32.069114 0 0 1 635.854514 337.831533a32.069114 32.069114 0 0 1 32.069115-32.069114h108.924406a32.069114 32.069114 0 0 1 32.069114 32.069114v115.559396a32.069114 32.069114 0 0 1-32.069114 32.069114 32.069114 32.069114 0 0 1-32.069115-32.069114v-35.386609l-185.779698 185.779697-126.61771-126.61771-140.440605 140.440604a32.069114 32.069114 0 1 1-45.339093-45.339092z m644.699784 362.436286a31.516199 31.516199 0 0 1-33.451404 27.645788H152.053218a27.645788 27.645788 0 1 1 0-57.50324h114.730022a24.328294 24.328294 0 0 1 0-3.87041v-113.347732a31.516199 31.516199 0 0 1 33.451404-27.645789 31.516199 31.516199 0 0 1 33.451404 27.645789v113.347732a24.604752 24.604752 0 0 1 0 3.87041h82.937365a24.328294 24.328294 0 0 1 0-3.87041v-264.017279a31.516199 31.516199 0 0 1 33.451403-27.645788 31.516199 31.516199 0 0 1 33.451404 27.645788v264.846652a24.051836 24.051836 0 0 1 0 3.870411h79.343413a24.051836 24.051836 0 0 1 0-3.870411v-201.814254a31.516199 31.516199 0 0 1 33.451404-27.645789 31.516199 31.516199 0 0 1 33.451404 27.645789v202.090712a24.328294 24.328294 0 0 1 0 3.870411H718.791879a24.328294 24.328294 0 0 1 0-3.870411v-331.74946a31.516199 31.516199 0 0 1 33.451404-27.645788 31.516199 31.516199 0 0 1 33.451404 27.645788v331.74946a24.051836 24.051836 0 0 1 0 3.870411H857.020821a31.516199 31.516199 0 0 1 33.451404 27.645788z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_488 = [\n  _hoisted_2403,\n  _hoisted_3396\n];\nfunction _sfc_render403(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock403(), _createElementBlock403(\"svg\", _hoisted_1404, _hoisted_488);\n}\nvar menu_jd_jingdujihua_default = /* @__PURE__ */ export_helper_default(menu_jd_jingdujihua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render403], [\"__file\", \"menu-jd-jingdujihua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jd-jingdutongji.vue?vue&type=script&lang.ts\nvar menu_jd_jingdutongji_vue_vue_type_script_lang_default = {\n  name: \"MenuJdJingdutongji\"\n};\n\n// src/components/menu-jd-jingdutongji.vue\nimport { createElementVNode as _createElementVNode397, openBlock as _openBlock404, createElementBlock as _createElementBlock404 } from \"vue\";\nvar _hoisted_1405 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2404 = /* @__PURE__ */ _createElementVNode397(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M102.4 56.88888853l45.51111147 0 0 910.22222187-45.51111147 0 0-910.22222187ZM11.37777813 830.57777813l1001.2444448 0 0 45.51111147-1001.2444448 0 0-45.51111147ZM147.91111147 147.91111147l409.6 0 0 136.53333333-409.6 0 0-136.53333333ZM147.91111147 375.46666667l728.17777813 0 0 136.53333333-728.17777813 0 0-136.53333333ZM147.91111147 603.02222187l546.13333333 0 0 136.53333333-546.13333333 0 0-136.53333333Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3397 = [\n  _hoisted_2404\n];\nfunction _sfc_render404(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock404(), _createElementBlock404(\"svg\", _hoisted_1405, _hoisted_3397);\n}\nvar menu_jd_jingdutongji_default = /* @__PURE__ */ export_helper_default(menu_jd_jingdutongji_vue_vue_type_script_lang_default, [[\"render\", _sfc_render404], [\"__file\", \"menu-jd-jingdutongji.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jd-niandufenyue.vue?vue&type=script&lang.ts\nvar menu_jd_niandufenyue_vue_vue_type_script_lang_default = {\n  name: \"MenuJdNiandufenyue\"\n};\n\n// src/components/menu-jd-niandufenyue.vue\nimport { createElementVNode as _createElementVNode398, openBlock as _openBlock405, createElementBlock as _createElementBlock405 } from \"vue\";\nvar _hoisted_1406 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2405 = /* @__PURE__ */ _createElementVNode398(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M693.62346667-1.01262222H150.14115555c-74.72924445 0-135.86204445 61.1328-135.86204444 135.86204444v747.29244445c0 74.72924445 61.1328 135.86204445 135.86204444 135.86204444H549.77422222c-62.61191111-59.41475555-101.86524445-143.22346667-101.86524444-236.35057778 0-180.08746667 145.98826667-326.08711111 326.08711111-326.08711111 18.95537778 0 37.42151111 1.95697778 55.48942222 5.06311111V134.84942222c0-74.72924445-61.1328-135.86204445-135.86204444-135.86204444zM423.92462222 477.22951111H187.40337778c-25.41795555 0-46.01173333-20.59377778-46.01173333-46.01173333 0-25.41795555 20.59377778-46.01173333 46.01173333-46.01173333h236.52124444c25.41795555 0 46.01173333 20.59377778 46.01173333 46.01173333 0 25.41795555-20.59377778 46.01173333-46.01173333 46.01173333z m55.21635556-195.31093333H187.40337778c-25.41795555 0-46.01173333-20.59377778-46.01173333-46.01173333s20.59377778-46.01173333 46.01173333-46.01173334h291.7376c25.41795555 0 46.01173333 20.59377778 46.01173333 46.01173334s-20.59377778 46.01173333-46.01173333 46.01173333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3398 = /* @__PURE__ */ _createElementVNode398(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M772.9152 548.36337778c-130.78755555 0-236.80568889 106.01813333-236.80568889 236.80568889 0 130.78755555 106.01813333 236.80568889 236.80568889 236.80568888 130.78755555 0 236.80568889-106.01813333 236.80568889-236.80568888 0-130.78755555-106.01813333-236.80568889-236.80568889-236.80568889z m149.17404445 326.33742222h-111.38844445v66.95822222h-46.33031111v-66.95822222H613.94488889v-40.30008889h44.43022222v-77.60782222a393.56529778 393.56529778 0 0 1-17.77208889 17.62417778c-8.04408889-12.06044445-17.56728889-25.6-28.55822222-40.63004445 32.1536-26.44195555 56.90026667-61.78133333 74.26275555-105.99537777l49.18613334 7.30453333c-3.70915555 9.20462222-7.68 18.19306667-11.90115556 26.96533333h188.97351112v40.30008889h-101.86524445v41.90435555h89.81617778v40.3000889h-89.81617778v49.82328888h111.38844445v40.31146667zM702.80533333 834.40071111h61.56515556v-49.82328889H702.80533333v49.82328889z m-33.16622222-90.12337778h94.73137778v-41.90435555h-63.46524444a391.13955555 391.13955555 0 0 1-31.26613334 41.90435555z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_489 = [\n  _hoisted_2405,\n  _hoisted_3398\n];\nfunction _sfc_render405(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock405(), _createElementBlock405(\"svg\", _hoisted_1406, _hoisted_489);\n}\nvar menu_jd_niandufenyue_default = /* @__PURE__ */ export_helper_default(menu_jd_niandufenyue_vue_vue_type_script_lang_default, [[\"render\", _sfc_render405], [\"__file\", \"menu-jd-niandufenyue.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jd-niandujihua.vue?vue&type=script&lang.ts\nvar menu_jd_niandujihua_vue_vue_type_script_lang_default = {\n  name: \"MenuJdNiandujihua\"\n};\n\n// src/components/menu-jd-niandujihua.vue\nimport { openBlock as _openBlock406, createElementBlock as _createElementBlock406, createStaticVNode as _createStaticVNode8 } from \"vue\";\nvar _hoisted_1407 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2406 = /* @__PURE__ */ _createStaticVNode8('<path fill=\"currentColor\" d=\"M927.718805 153.170084L1003.903925 219.557118 1005.503613 0 784.146846 19.596173 857.732474 83.983597 659.171256 258.949424 334.834603 181.564538 12.097637 492.503808 338.633861 271.946885 671.168912 364.928725Z\"></path><path fill=\"currentColor\" d=\"M431.6157 883.427456c-17.996485-42.591681-27.194689-87.782855-27.194689-134.173794s9.198203-91.582113 27.194689-134.173794c17.396602-40.991994 42.191759-77.984769 73.785589-109.578598 15.996876-15.996876 33.193517-30.194103 51.789885-42.591681L372.827182 413.919156l0 609.880883 167.767233 0c-12.397579-9.398164-24.195274-19.596173-35.193126-30.793986C473.807459 961.412224 448.812341 924.61941 431.6157 883.427456z\"></path><path fill=\"currentColor\" d=\"M44.891232 1023.800039L318.237844 1023.800039 318.237844 423.917204 44.891232 609.880883 44.891232 1023.800039Z\"></path><path fill=\"currentColor\" d=\"M974.309705 488.304628L974.309705 262.748682 797.144308 407.920328c29.59422 4.19918 58.588557 11.997657 86.183167 23.795352C916.720953 445.712947 947.115017 464.709236 974.309705 488.304628z\"></path><path fill=\"currentColor\" d=\"M657.571568 759.851591l83.383714 0 0 64.587385-83.383714 0 0-64.587385Z\"></path><path fill=\"currentColor\" d=\"M749.153681 474.507323c-151.770357 0-274.746339 122.975981-274.746339 274.746339 0 151.770357 122.975981 274.746339 274.746339 274.746339 151.770357 0 274.746339-122.975981 274.746339-274.746339C1023.90002 597.483304 900.924038 474.507323 749.153681 474.507323zM901.32396 824.438977c13.797305 0.999805 21.995704 9.598125 23.995313 25.595001-2.19957 15.996876-10.198008 23.995313-23.995313 23.995313l-110.778364 0 0 58.188635c-0.999805 13.797305-9.598125 21.995704-25.595001 23.995313-15.996876-2.19957-23.995313-10.198008-23.995313-23.995313l0-58.188635-147.571178 0c-15.996876 0-24.595196-7.998438-25.595001-23.995313 0.999805-15.996876 9.598125-24.595196 25.595001-25.595001l15.996876 0 0-85.383324c0.999805-15.996876 8.598321-24.595196 22.395626-25.595001l108.978715 0 0-62.187854L639.975005 651.272798c-11.797696 20.396016-22.795548 32.993556-40.991994 50.190197-10.797891 9.598125-21.395821 8.998243-31.993751-1.599688-8.598321-10.59793-8.598321-21.995704 0-33.593439 30.993946-35.193126 48.990432-61.38801 61.787932-90.182386 6.39875-11.797696 17.596563-15.396993 33.593439-11.197813 12.7975 6.39875 17.596563 14.397188 14.397188 23.995313-0.999805 2.19957-2.19957 4.19918-3.199375 6.39875-0.999805 2.19957-2.19957 3.799258-3.199375 4.799063l230.954892 0c13.797305 0.999805 21.395821 10.198008 22.395626 27.194689-2.19957 15.996876-10.198008 23.995313-23.995313 23.995313l-108.978715 0 0 62.187854 112.578012 0c13.797305 0.999805 21.395821 8.998243 22.395626 23.995313-0.999805 14.997071-8.598321 22.395626-22.395626 22.395626l-112.578012 0 0 64.587385L901.32396 824.438977z\"></path>', 6), _hoisted_82 = [\n  _hoisted_2406\n];\nfunction _sfc_render406(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock406(), _createElementBlock406(\"svg\", _hoisted_1407, _hoisted_82);\n}\nvar menu_jd_niandujihua_default = /* @__PURE__ */ export_helper_default(menu_jd_niandujihua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render406], [\"__file\", \"menu-jd-niandujihua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jd-tianbao.vue?vue&type=script&lang.ts\nvar menu_jd_tianbao_vue_vue_type_script_lang_default = {\n  name: \"MenuJdTianbao\"\n};\n\n// src/components/menu-jd-tianbao.vue\nimport { createElementVNode as _createElementVNode399, openBlock as _openBlock407, createElementBlock as _createElementBlock407 } from \"vue\";\nvar _hoisted_1408 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2407 = /* @__PURE__ */ _createElementVNode399(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M217.93754075 769.8720237v-18.64135111c0-9.32067555 9.32067555-18.64135111 18.64135111-18.64135111h264.0858074l9.32067556-9.32067556 142.91702519-139.81013333H236.57889186c-9.32067555 0-18.64135111-9.32067555-18.64135111-18.64135111v-18.64135111c0-9.32067555 9.32067555-18.64135111 18.64135111-18.64135112h475.35445333l183.30661926-180.1997274V42.85933037c0-18.64135111-15.53445925-34.17581037-34.17581037-34.17581037H329.78564741l-242.33756443 3.10689185c-24.85513482-3.10689185-40.38959408 18.64135111-40.38959408 37.28270223v916.53309629c0 18.64135111 18.64135111 40.38959408 37.28270221 37.28270222h285.83405037l59.0309452-177.09283556V822.68918518c0-6.2137837 6.2137837-31.06891852 6.2137837-37.28270221h-201.94797037c-6.2137837 3.10689185-15.53445925-6.2137837-15.53445926-15.53445927z m0-453.60621037c0-9.32067555 9.32067555-18.64135111 18.64135111-18.64135111h490.88891259c9.32067555 0 18.64135111 9.32067555 18.64135111 18.64135111v18.64135112c0 9.32067555-9.32067555 18.64135111-18.64135111 18.6413511H236.57889186c-9.32067555 0-18.64135111-9.32067555-18.64135111-18.6413511v-18.64135112z m801.57809778 220.58932149L932.52266668 452.96905482c-12.42756741-12.42756741-34.17581037-9.32067555-49.71026963 3.10689185l-46.60337779 46.60337778 130.48945779 127.38256592 46.60337777-46.60337778c15.53445925-12.42756741 15.53445925-34.17581037 6.21378371-46.60337777z m-456.71310222 233.01688888L503.77159111 822.68918518c-3.10689185 0-6.2137837 6.2137837-6.2137837 12.42756741v3.10689186l-52.81716148 158.45148444c-3.10689185 6.2137837 0 9.32067555 3.10689185 12.42756741 3.10689185 3.10689185 9.32067555 3.10689185 12.42756741 3.10689185l161.55837629-49.71026963h3.10689186c6.2137837 0 9.32067555-6.2137837 12.42756741-6.2137837l310.68918518-301.36850964-130.48945778-127.38256593-254.76513184 242.33756445z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3399 = [\n  _hoisted_2407\n];\nfunction _sfc_render407(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock407(), _createElementBlock407(\"svg\", _hoisted_1408, _hoisted_3399);\n}\nvar menu_jd_tianbao_default = /* @__PURE__ */ export_helper_default(menu_jd_tianbao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render407], [\"__file\", \"menu-jd-tianbao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jd-yuedujihua.vue?vue&type=script&lang.ts\nvar menu_jd_yuedujihua_vue_vue_type_script_lang_default = {\n  name: \"MenuJdYuedujihua\"\n};\n\n// src/components/menu-jd-yuedujihua.vue\nimport { createElementVNode as _createElementVNode400, openBlock as _openBlock408, createElementBlock as _createElementBlock408 } from \"vue\";\nvar _hoisted_1409 = {\n  class: \"icon\",\n  viewBox: \"0 0 1075 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2408 = /* @__PURE__ */ _createElementVNode400(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M588.92678079 724.28982897a242.7172576 242.7172576 0 1 1 242.7172576 242.71725653 243.00332693 243.00332693 0 0 1-242.7172576-242.71725653z m168.6771808-100.77460373v83.03827306a285.62773333 285.62773333 0 0 1-5.90344107 67.0183616 101.4247616 101.4247616 0 0 1-29.6732448 44.78293334c11.96292053 9.6223488 22.62552427 18.67255893 32.61196267 27.56673066a147.87210133 147.87210133 0 0 0 24.6020064-33.21010773 115.49419733 115.49419733 0 0 0 11.85889493-43.87271147h112.9715808v18.2044448a17.13818453 17.13818453 0 0 1-19.5567744 18.38648854c-5.79941547 0-12.06694613-0.31207573-18.69856533-0.67616534-7.80190507-0.39009493-15.94189227-0.83220267-24.91408213-0.83220266a282.22090133 282.22090133 0 0 1 9.8043936 38.54140906h55.445536a33.80825387 33.80825387 0 0 0 25.79829866-12.43103466 52.01269867 52.01269867 0 0 0 9.20624747-33.52218454v-172.86420266a14.8496256 14.8496256 0 0 0-14.8236192-14.8236192H772.45358719a15.10968853 15.10968853 0 0 0-14.875632 14.6675808z m-80.46364373 342.97173333H34.13333332V138.1327239h220.24777174V63.39047644h63.6115296v74.74224746h107.69229226V63.39047644h63.61153067v74.74224746h107.7182976V63.39047644h63.63753707v74.74224746H866.33650772V435.28127004a288.98255253 288.98255253 0 0 0-189.17018346 531.10166293zM149.70554879 781.47779057h203.5777024v-50.53033707H149.70554879z m0-122.22984107h303.3120512v-50.53033706H149.70554879zM255.23931412 391.07047644l-105.53376533 109.4347168 39.6856896 36.4088896 65.84807573-69.35893334 18.43850134 18.41249494 29.07509866 27.9308192 167.4288768-168.31309227 127.4311104 127.7952 36.82499094-35.52467307-164.1520768-164.15207573-168.05302827 164.15207573z m648.52033067 344.24604373h-110.86506667v-29.64723733h110.89107307v29.62123093z m-0.2860704-62.85734507h-110.57899627v-29.6732448h110.89107307l-0.2860704 29.6472384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3400 = [\n  _hoisted_2408\n];\nfunction _sfc_render408(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock408(), _createElementBlock408(\"svg\", _hoisted_1409, _hoisted_3400);\n}\nvar menu_jd_yuedujihua_default = /* @__PURE__ */ export_helper_default(menu_jd_yuedujihua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render408], [\"__file\", \"menu-jd-yuedujihua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jihuatongji.vue?vue&type=script&lang.ts\nvar menu_jihuatongji_vue_vue_type_script_lang_default = {\n  name: \"MenuJihuatongji\"\n};\n\n// src/components/menu-jihuatongji.vue\nimport { createElementVNode as _createElementVNode401, openBlock as _openBlock409, createElementBlock as _createElementBlock409 } from \"vue\";\nvar _hoisted_1410 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2409 = /* @__PURE__ */ _createElementVNode401(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M876.08888889 2.27555555H147.91111111c-80.09955555 0-145.63555555 65.536-145.63555556 145.63555556v728.17777778c0 80.09955555 65.536 145.63555555 145.63555556 145.63555556h728.17777778c80.09955555 0 145.63555555-65.536 145.63555556-145.63555556V147.91111111c0-80.09955555-65.536-145.63555555-145.63555556-145.63555556zM293.54666667 839.68c0 20.02488889-16.384 36.40888889-36.40888889 36.40888889h-72.81777778c-20.02488889 0-36.40888889-16.384-36.40888889-36.40888889V475.59111111c0-20.02488889 16.384-36.40888889 36.40888889-36.40888889h72.81777778c20.02488889 0 36.40888889 16.384 36.40888889 36.40888889v364.08888889z m291.95377778 0c0 20.02488889-16.384 36.40888889-36.4088889 36.40888889h-72.81777777c-20.02488889 0-36.40888889-16.384-36.40888889-36.40888889V329.95555555c0-20.02488889 16.384-36.40888889 36.40888889-36.40888888h72.81777777c20.02488889 0 36.40888889 16.384 36.4088889 36.40888888v509.72444445z m290.58844444 0c0 20.02488889-16.384 36.40888889-36.40888889 36.40888889h-72.81777778c-20.02488889 0-36.40888889-16.384-36.40888889-36.40888889V402.77333333c0-20.02488889 16.384-36.40888889 36.40888889-36.40888888h72.81777778c20.02488889 0 36.40888889 16.384 36.40888889 36.40888888v436.90666667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3401 = [\n  _hoisted_2409\n];\nfunction _sfc_render409(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock409(), _createElementBlock409(\"svg\", _hoisted_1410, _hoisted_3401);\n}\nvar menu_jihuatongji_default = /* @__PURE__ */ export_helper_default(menu_jihuatongji_vue_vue_type_script_lang_default, [[\"render\", _sfc_render409], [\"__file\", \"menu-jihuatongji.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-juese.vue?vue&type=script&lang.ts\nvar menu_juese_vue_vue_type_script_lang_default = {\n  name: \"MenuJuese\"\n};\n\n// src/components/menu-juese.vue\nimport { createElementVNode as _createElementVNode402, openBlock as _openBlock410, createElementBlock as _createElementBlock410 } from \"vue\";\nvar _hoisted_1411 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2410 = /* @__PURE__ */ _createElementVNode402(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M405.33333333 723.2c0-57.6 12.8-108.8 38.4-160C206.93333333 576 21.33333333 768 21.33333333 1004.8h531.2c-89.6-64-147.2-166.4-147.2-281.6zM469.33333333 499.2h12.8C533.33333333 441.6 603.73333333 396.8 680.53333333 384c25.6-38.4 38.4-83.2 38.4-134.4 0-140.8-115.2-249.6-256-249.6s-256 115.2-256 249.6C213.33333333 384 328.53333333 499.2 469.33333333 499.2zM1000.53333333 774.4s-6.4 0 0 0c-19.2-6.4-25.6-12.8-32-25.6-6.4-6.4-12.8-19.2-12.8-32s6.4-25.6 12.8-32c6.4-12.8 19.2-19.2 25.6-19.2l6.4-6.4c0-6.4 6.4-6.4 0-12.8 0-12.8-6.4-19.2-6.4-32-6.4-12.8-6.4-19.2-12.8-19.2 0 0-6.4-6.4-12.8-6.4h-12.8c-12.8 6.4-19.2 6.4-32 6.4s-25.6-6.4-32-12.8c-6.4-6.4-12.8-19.2-12.8-32s0-19.2 6.4-32V512v-6.4c0-6.4-6.4-6.4-12.8-12.8s-12.8-6.4-12.8-6.4c-6.4 0-12.8-6.4-19.2-6.4h-19.2c-6.4 0-6.4 0-6.4 6.4l-6.4 6.4c-6.4 12.8-12.8 19.2-19.2 25.6s-19.2 12.8-32 12.8-19.2-6.4-32-12.8c0-6.4-6.4-19.2-12.8-25.6 0 0 0-6.4-6.4-6.4 0 0-6.4-6.4-12.8-6.4h-12.8c-6.4 0-12.8 0-19.2 6.4-6.4 0-6.4 6.4-12.8 6.4-6.4 6.4-12.8 6.4-12.8 12.8v44.8c0 6.4 0 12.8-6.4 19.2 0 6.4-6.4 12.8-6.4 12.8-6.4 6.4-19.2 12.8-25.6 12.8-12.8 0-19.2 0-32-6.4h-12.8c-12.8 6.4-12.8 6.4-19.2 12.8 0 6.4-6.4 6.4-6.4 12.8s-6.4 12.8-6.4 19.2v25.6c0 6.4 6.4 6.4 6.4 6.4 12.8 6.4 19.2 12.8 25.6 19.2s12.8 19.2 12.8 32-6.4 25.6-12.8 32c-6.4 12.8-19.2 19.2-25.6 19.2-6.4 0-6.4 6.4-12.8 12.8v19.2c0 6.4 6.4 12.8 6.4 19.2s6.4 12.8 6.4 19.2l12.8 12.8h12.8c6.4 0 12.8-6.4 25.6-6.4H597.33333333c6.4 0 12.8 6.4 19.2 12.8 6.4 6.4 12.8 19.2 12.8 25.6 0 12.8 0 19.2-6.4 25.6 0 6.4-6.4 12.8-6.4 12.8v6.4c0 6.4 6.4 6.4 12.8 12.8s12.8 6.4 19.2 6.4 12.8 6.4 19.2 6.4h32c6.4 0 6.4-6.4 6.4-6.4 6.4-12.8 12.8-19.2 19.2-25.6 12.8-6.4 19.2-12.8 32-12.8s25.6 6.4 32 12.8c6.4 6.4 12.8 19.2 19.2 25.6 0 0 0 6.4 6.4 6.4l6.4 6.4h12.8c6.4 0 12.8-6.4 19.2-6.4s12.8-6.4 12.8-6.4c6.4 0 6.4-6.4 12.8-6.4 6.4-6.4 6.4-12.8 0-19.2-6.4-12.8-6.4-19.2-6.4-32s6.4-19.2 12.8-32c6.4-6.4 6.4-6.4 12.8-6.4s12.8 0 19.2-6.4H974.93333333c6.4 0 6.4-6.4 12.8-12.8s6.4-12.8 6.4-19.2 6.4-12.8 6.4-19.2v-19.2c6.4 6.4 6.4 6.4 0 0z m-128-6.4c-6.4 12.8-12.8 25.6-25.6 38.4-12.8 12.8-25.6 19.2-38.4 25.6-12.8 6.4-32 6.4-44.8 6.4s-32 0-44.8-6.4-25.6-12.8-38.4-25.6c-12.8-12.8-19.2-25.6-25.6-38.4-6.4-12.8-6.4-25.6-6.4-44.8s0-32 6.4-44.8 12.8-25.6 25.6-38.4c12.8-12.8 19.2-19.2 38.4-25.6 12.8-6.4 25.6-6.4 44.8-6.4 12.8 0 32 0 44.8 6.4s25.6 12.8 38.4 25.6c12.8 12.8 19.2 25.6 25.6 38.4 6.4 12.8 6.4 25.6 6.4 44.8 0 12.8-6.4 25.6-6.4 44.8z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3402 = [\n  _hoisted_2410\n];\nfunction _sfc_render410(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock410(), _createElementBlock410(\"svg\", _hoisted_1411, _hoisted_3402);\n}\nvar menu_juese_default = /* @__PURE__ */ export_helper_default(menu_juese_vue_vue_type_script_lang_default, [[\"render\", _sfc_render410], [\"__file\", \"menu-juese.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-jueseguanli.vue?vue&type=script&lang.ts\nvar menu_jueseguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuJueseguanli\"\n};\n\n// src/components/menu-jueseguanli.vue\nimport { createElementVNode as _createElementVNode403, openBlock as _openBlock411, createElementBlock as _createElementBlock411 } from \"vue\";\nvar _hoisted_1412 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2411 = /* @__PURE__ */ _createElementVNode403(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M365.728131 585.156963a292.562025 292.562025 0 0 0 146.281012-39.495874 300.60748 300.60748 0 0 0 59.975215-45.347113 37.301658 37.301658 0 0 0 21.210747-21.942152 26.330582 26.330582 0 0 1 0-6.582646A266.962848 266.962848 0 0 0 648.78189 365.735444 267.694253 267.694253 0 0 0 658.290156 292.594938a285.247974 285.247974 0 0 0-40.958684-146.281012A292.562025 292.562025 0 1 0 365.728131 585.156963zM627.571143 731.437975a273.545493 273.545493 0 0 0-62.900835-40.958683 286.710784 286.710784 0 0 0-26.330582-11.702481A212.838873 212.838873 0 0 0 512.009143 667.805735 209.913253 209.913253 0 0 0 449.108308 658.297469H281.616549a213.570278 213.570278 0 0 0-62.16943 9.508266 292.562025 292.562025 0 0 0-134.578532 73.140506A292.562025 292.562025 0 0 0 0.0256 950.859494a73.140506 73.140506 0 0 0 73.140506 73.140506h585.12405a73.140506 73.140506 0 0 0 73.140506-73.140506 219.421519 219.421519 0 0 0 0-38.033063A292.562025 292.562025 0 0 0 627.571143 731.437975zM940.61251 597.590849a35.838848 35.838848 0 0 1 33.644633-24.136367H1023.992687v-73.140506h-49.735544a35.838848 35.838848 0 0 1-33.644633-24.136367 136.041342 136.041342 0 0 0-7.314051-18.285127 35.838848 35.838848 0 0 1 6.582646-40.958683l35.107443-35.107443-51.92976-51.92976-34.376038 35.838848a35.838848 35.838848 0 0 1-41.690088 6.582646L828.707535 365.735444a36.570253 36.570253 0 0 1-24.136367-35.838848v-49.004139h-62.900835V292.594938a375.210797 375.210797 0 0 1-32.181823 152.132253 60.70662 60.70662 0 0 1 11.702481-5.851241 25.599177 25.599177 0 0 1 10.239671-5.119835 104.590924 104.590924 0 0 1 36.570253-6.582646 98.739683 98.739683 0 0 1 36.570253 6.582646l10.971076 4.38843a106.785139 106.785139 0 0 1 51.92976 51.198355 64.363645 64.363645 0 0 1 3.657025 10.971076 98.739683 98.739683 0 0 1 6.582645 36.570253 104.590924 104.590924 0 0 1-6.582645 36.570253 42.421494 42.421494 0 0 1-3.657025 10.239671 111.904974 111.904974 0 0 1-51.92976 51.929759 34.376038 34.376038 0 0 1-10.971076 4.38843 98.739683 98.739683 0 0 1-36.570253 6.582646 104.590924 104.590924 0 0 1-36.570253-6.582646 25.599177 25.599177 0 0 1-10.239671-4.38843A111.904974 111.904974 0 0 1 669.261232 585.156963l-4.388431-10.239671A104.590924 104.590924 0 0 1 658.290156 536.884229a38.764468 38.764468 0 0 1 0-9.508266 231.124 231.124 0 0 1-27.793393 32.181823 323.281037 323.281037 0 0 1-38.764468 32.181822 14.628101 14.628101 0 0 1 0 5.851241l7.314051 18.285126a36.570253 36.570253 0 0 1 0 21.210747 386.181873 386.181873 0 0 1 177.000025 155.789278H804.571168v-49.735544a35.107443 35.107443 0 0 1 24.136367-33.644633l18.285127-8.045455a35.838848 35.838848 0 0 1 40.958683 7.31405l35.107443 35.107443 51.92976-51.929759-35.107443-33.644633a35.838848 35.838848 0 0 1-6.582646-40.958683 190.165316 190.165316 0 0 0 7.314051-19.747937z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3403 = [\n  _hoisted_2411\n];\nfunction _sfc_render411(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock411(), _createElementBlock411(\"svg\", _hoisted_1412, _hoisted_3403);\n}\nvar menu_jueseguanli_default = /* @__PURE__ */ export_helper_default(menu_jueseguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render411], [\"__file\", \"menu-jueseguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-kaigongcehua.vue?vue&type=script&lang.ts\nvar menu_kaigongcehua_vue_vue_type_script_lang_default = {\n  name: \"MenuKaigongcehua\"\n};\n\n// src/components/menu-kaigongcehua.vue\nimport { createElementVNode as _createElementVNode404, openBlock as _openBlock412, createElementBlock as _createElementBlock412 } from \"vue\";\nvar _hoisted_1413 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2412 = /* @__PURE__ */ _createElementVNode404(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M511.689697 0C306.269091 0 139.636364 168.556606 139.636364 376.397576c0 142.36703 77.420606 269.684364 202.876121 334.630788v61.160727c0 38.074182 30.595879 68.670061 68.049454 68.670061h202.876122a68.328727 68.328727 0 0 0 68.049454-68.670061v-61.160727C806.94303 646.050909 884.363636 518.764606 884.363636 376.397576 883.74303 169.115152 717.079273 0 511.689697 0z m-61.005576 248.552727H657.997576a12.412121 12.412121 0 0 1 10.922666 18.307879l-36.243394 67.025455a6.206061 6.206061 0 0 0 0 5.833697l36.491637 68.794181a12.412121 12.412121 0 0 1-10.984727 18.214788H450.684121v111.58497a15.825455 15.825455 0 0 1-31.588848 0V248.552727h31.588848z m137.15394 689.058909H435.541333a35.064242 35.064242 0 0 0-34.971151 35.591758v8.098909c0 19.362909 15.608242 35.591758 34.971151 35.591758h152.917334a35.064242 35.064242 0 0 0 34.971151-35.591758v-8.098909c0-19.983515-16.228848-35.591758-35.591757-35.591758z m58.057697-88.001939h-268.412122a35.064242 35.064242 0 0 0-34.971151 35.560727v8.12994c0 19.362909 15.608242 35.591758 34.971151 35.591757h268.412122a35.064242 35.064242 0 0 0 34.971151-35.591757v-8.750546c0-19.331879-15.608242-34.940121-34.971151-34.940121z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3404 = [\n  _hoisted_2412\n];\nfunction _sfc_render412(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock412(), _createElementBlock412(\"svg\", _hoisted_1413, _hoisted_3404);\n}\nvar menu_kaigongcehua_default = /* @__PURE__ */ export_helper_default(menu_kaigongcehua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render412], [\"__file\", \"menu-kaigongcehua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-kaoshiguanli.vue?vue&type=script&lang.ts\nvar menu_kaoshiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuKaoshiguanli\"\n};\n\n// src/components/menu-kaoshiguanli.vue\nimport { createElementVNode as _createElementVNode405, openBlock as _openBlock413, createElementBlock as _createElementBlock413 } from \"vue\";\nvar _hoisted_1414 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2413 = /* @__PURE__ */ _createElementVNode405(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M946.37957999 83.03840943c-43.62321264 0-79.97588948 36.35267685-79.97588949 79.97588948v32.71740947H1026.35547054v-32.71740947c0-45.44084685-36.35267685-79.97588948-79.97589055-79.97588948zM866.4036905 213.90804734H1026.35547054v659.80109113h-159.95178004zM946.37957999 979.13190163l74.52298897-92.69932685h-150.86361108zM657.37579628 44.86809837H157.52648516C75.73296147 44.86809837 8.48050829 112.12055047 8.48050829 193.91407417V820.99775582c0 81.7935237 67.25245317 149.04597687 149.04597687 149.04597687h499.84931112c81.7935237 0 149.04597687-67.25245317 149.04597686-149.04597687V193.91407417c0-81.7935237-67.25245317-149.04597687-149.04597686-149.0459758zM255.6787136 751.92766951h-63.61718474v-59.98191738h63.61718474v59.98191738z m0-210.84552739h-63.61718474v-59.98191739h63.61718474v59.98191739z m0-210.84552845h-63.61718474v-59.98191739h63.61718474V330.23661367z m367.16204005 421.69105584H304.75482781v-59.98191738h316.26829162v59.98191738z m0-210.84552739H304.75482781v-59.98191739h316.26829162v59.98191739z m0-210.84552845H304.75482781v-59.98191739h316.26829162V330.23661367z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3405 = [\n  _hoisted_2413\n];\nfunction _sfc_render413(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock413(), _createElementBlock413(\"svg\", _hoisted_1414, _hoisted_3405);\n}\nvar menu_kaoshiguanli_default = /* @__PURE__ */ export_helper_default(menu_kaoshiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render413], [\"__file\", \"menu-kaoshiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-liuchengceshi.vue?vue&type=script&lang.ts\nvar menu_liuchengceshi_vue_vue_type_script_lang_default = {\n  name: \"MenuLiuchengceshi\"\n};\n\n// src/components/menu-liuchengceshi.vue\nimport { createElementVNode as _createElementVNode406, openBlock as _openBlock414, createElementBlock as _createElementBlock414 } from \"vue\";\nvar _hoisted_1415 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2414 = /* @__PURE__ */ _createElementVNode406(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M102.29997575 11.25552606h819.4000485a91.04444969 91.04444969 0 0 1 91.04444969 91.04444969v819.4000485a91.04444969 91.04444969 0 0 1-91.04444969 91.04444969H102.29997575a91.04444969 91.04444969 0 0 1-91.04444969-91.04444969V102.29997575a91.04444969 91.04444969 0 0 1 91.04444969-91.04444969z m112.62198415 342.55474265l-47.20654673 44.930436 132.01445248 144.53306334L512 341.15509034l-43.97446928-48.20803638-165.10910931 157.27928629-87.99446151-96.37054985z m0 250.37223696l-47.20654673 44.930436 132.01445248 144.53306454L512 591.52732731l-43.97446928-48.20803638-165.10910931 157.27928751-87.99446151-96.3705511z m359.67109902-248.64239277v62.54753725h250.37223698v-62.54753725h-250.37223698z m0 250.37223698v62.59305893h250.37223698v-62.59305893h-250.37223698z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3406 = [\n  _hoisted_2414\n];\nfunction _sfc_render414(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock414(), _createElementBlock414(\"svg\", _hoisted_1415, _hoisted_3406);\n}\nvar menu_liuchengceshi_default = /* @__PURE__ */ export_helper_default(menu_liuchengceshi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render414], [\"__file\", \"menu-liuchengceshi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-liuchengweituo.vue?vue&type=script&lang.ts\nvar menu_liuchengweituo_vue_vue_type_script_lang_default = {\n  name: \"MenuLiuchengweituo\"\n};\n\n// src/components/menu-liuchengweituo.vue\nimport { createElementVNode as _createElementVNode407, openBlock as _openBlock415, createElementBlock as _createElementBlock415 } from \"vue\";\nvar _hoisted_1416 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2415 = /* @__PURE__ */ _createElementVNode407(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M801.26862187 1018.99377813c-10.74062187 0-16.74808853-4.7331552-45.6931552-26.94257813-15.47377813-12.01493333-46.96746667-36.2268448-57.89013334-40.96l-29.6732448 0.54613333c-355.16871147 7.64586667-360.08391147 2.91271147-370.64248853-7.64586666-3.64088853-3.2768-32.768-26.0323552-63.7155552-50.24426667-209.7152-163.84-221.3660448-176.58311147-225.91715627-188.2339552-8.73813333-18.93262187-7.28177813-40.96 3.82293334-58.61831147 13.1072-19.4787552 38.22933333-29.6732448 74.63822293-29.6732448 50.42631147 0 114.32391147 50.42631147 165.4784 91.02222294 18.75057813 14.7456 43.87271147 34.77048853 52.79288853 38.22933333h206.4384c6.3715552-3.0947552 12.37902187-6.5536 18.2044448-10.55857813l-27.48871146-4.00497814c-26.2144-3.64088853-50.9724448-7.09973333-64.62577814-9.8304-37.5011552-7.09973333-69.17688853-42.23431147-69.17688853-76.45866666s21.66328853-74.82026667 82.64817813-74.82026667h199.33866667c77.73297813 0 152.91733333 27.6707552 212.08177707 77.91502293 158.7427552 134.89493333 159.1068448 144.3612448 159.65297813 157.65048854 0.36408853 7.09973333-2.36657813 13.83537813-7.28177813 18.93262186-4.9152 4.9152-52.6108448 51.70062187-99.39626667 97.0296896-99.7603552 96.6656-101.3987552 96.6656-113.59573333 96.6656zM516.00497813 343.4268448H302.2848c-20.02488853 0-36.40888853-16.384-36.40888853-36.4088896s16.384-36.40888853 36.40888853-36.40888853h213.72017813c20.02488853 0 36.40888853 16.384 36.40888854 36.40888853s-16.384 36.40888853-36.40888854 36.4088896zM516.00497813 496.34417813H302.2848c-20.02488853 0-36.40888853-16.384-36.40888853-36.4088896s16.384-36.40888853 36.40888853-36.40888853h213.72017813c20.02488853 0 36.40888853 16.384 36.40888854 36.40888853s-16.384 36.40888853-36.40888854 36.4088896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3407 = /* @__PURE__ */ _createElementVNode407(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M721.7152 156.83128853l-137.6256-140.9024c-6.91768853-7.09973333-16.2019552-10.92266667-26.0323552-10.92266666H195.42471147c-60.25671147 0-109.22666667 48.9699552-109.22666667 109.22666666V626.688c0 20.02488853 16.384 36.40888853 36.40888853 36.40888853s36.40888853-16.384 36.40888854-36.40888853V114.23288853c0-20.02488853 16.384-36.40888853 36.4088896-36.40888853h308.20124373v113.77777813c0 20.02488853 16.384 36.40888853 36.4088896 36.40888854h119.4211552v354.80462186c0 20.02488853 16.384 36.40888853 36.40888853 36.4088896s36.40888853-16.384 36.4088896-36.4088896v-400.49777706c-0.1820448-9.46631147-3.82293333-18.56853333-10.55857813-25.48622294z m-145.45351147-44.60088853l42.05226667 43.14453333h-42.05226667V112.2304z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_490 = [\n  _hoisted_2415,\n  _hoisted_3407\n];\nfunction _sfc_render415(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock415(), _createElementBlock415(\"svg\", _hoisted_1416, _hoisted_490);\n}\nvar menu_liuchengweituo_default = /* @__PURE__ */ export_helper_default(menu_liuchengweituo_vue_vue_type_script_lang_default, [[\"render\", _sfc_render415], [\"__file\", \"menu-liuchengweituo.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-moxingliulan.vue?vue&type=script&lang.ts\nvar menu_moxingliulan_vue_vue_type_script_lang_default = {\n  name: \"MenuMoxingliulan\"\n};\n\n// src/components/menu-moxingliulan.vue\nimport { createElementVNode as _createElementVNode408, openBlock as _openBlock416, createElementBlock as _createElementBlock416 } from \"vue\";\nvar _hoisted_1417 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2416 = /* @__PURE__ */ _createElementVNode408(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512.24272592 467.94524445c-9.95176297-0.36408889-19.53943703-2.91271111-28.39893333-7.40314075L124.3666963 291.36213333c-30.21937778-13.47128889-43.81202963-48.90927408-30.34074075-79.12865185 6.06814815-13.59265185 16.86945185-24.39395555 30.34074075-30.34074073l341.63674073-161.65546667a108.53489778 108.53489778 0 0 1 92.23585186 0L899.99739259 181.89274075c30.21937778 13.47128889 43.81202963 48.90927408 30.34074074 79.12865184-6.06814815 13.59265185-16.86945185 24.39395555-30.34074074 30.34074074L540.5202963 460.42074075c-8.73813333 4.61179259-18.44717037 7.16041482-28.27757038 7.5245037z m-92.84266667 549.1674074c-9.22358518 0-18.32580741-2.3058963-26.45712592-6.67496296L68.17564445 858.12717037c-20.6317037-10.8013037-33.37481482-32.16118518-33.1320889-55.34151112v-388.36148147c0.12136297-21.84533333 11.77220741-41.87022222 30.4621037-53.03561481 17.3549037-9.8304 38.59342222-9.8304 55.94832593 0l324.16047407 152.18915555c19.53943703 10.55857778 32.03982222 30.82619259 32.88936297 53.03561481v388.84693334c-0.24272592 21.72397037-11.65084445 41.74885925-30.21937777 53.03561481-8.73813333 5.21860741-18.6898963 8.25268148-28.8843852 8.61677037z m185.56397038 0c-10.07312592 0-20.02488889-2.66998518-28.88438518-7.64586667-18.56853333-11.28675555-29.97665185-31.31164445-30.21937778-53.03561481V566.49197037c0.48545185-22.08805925 12.62174815-42.23431111 31.7970963-53.03561482L904.00237037 360.2962963c17.23354075-9.10222222 38.10797037-8.61677037 54.85605926 1.33499259 18.81125925 11.04402963 30.34074075 31.19028148 30.4621037 53.03561481v388.11875555c0.48545185 22.9376-11.77220741 44.29748148-31.7970963 55.34151112L631.54251852 1010.55905185c-8.25268148 4.36906667-17.3549037 6.67496297-26.57848889 6.5536z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3408 = [\n  _hoisted_2416\n];\nfunction _sfc_render416(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock416(), _createElementBlock416(\"svg\", _hoisted_1417, _hoisted_3408);\n}\nvar menu_moxingliulan_default = /* @__PURE__ */ export_helper_default(menu_moxingliulan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render416], [\"__file\", \"menu-moxingliulan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-mx-moxingguangli.vue?vue&type=script&lang.ts\nvar menu_mx_moxingguangli_vue_vue_type_script_lang_default = {\n  name: \"MenuMxMoxingguangli\"\n};\n\n// src/components/menu-mx-moxingguangli.vue\nimport { createElementVNode as _createElementVNode409, openBlock as _openBlock417, createElementBlock as _createElementBlock417 } from \"vue\";\nvar _hoisted_1418 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2417 = /* @__PURE__ */ _createElementVNode409(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1023.50506667 588.1984c1.74506667-39.3216-35.3024-53.6064-35.3024-53.6064l-204.70186667-87.61173333s0.4992-152.2176 0-193.18186667c-0.62293333-41.216-37.04746667-55.5008-37.04746667-55.5008s-161.91573333-65.36533333-210.06506666-89.38666667c-25.07093333-12.51413333-51.14453333 0-51.14453334 0S332.93653333 177.18613333 285.7856 196.5312c-43.03786667 17.5744-42.41066667 55.5008-42.41066667 55.5008v193.81333333s-134.22506667 58.7904-190.60906666 81.2928c-53.888 21.4912-52.3904 66.62826667-52.3904 66.62826667s0.4992 154.61973333 0 194.94826667c-0.4992 43.49013333 38.2976 57.27146667 38.2976 57.27146666s130.2272 66.37226667 192.4736 95.07413334c46.0288 21.23946667 75.84426667 0.63146667 75.84426666 0.63146666l204.45013334-101.9008s161.664 77.12 199.70986666 101.39306667c44.16 28.0704 74.0992 4.80426667 74.0992 4.80426667s180.12586667-92.544 208.31573334-105.56586667c30.06293333-13.90933333 30.06293333-48.2944 30.06293333-48.2944s-1.87306667-164.608-0.128-203.92533333ZM271.68853333 665.06666667l-187.1104-83.19146667 187.1104-83.1872 190.6048 82.304-190.6048 84.07466667Zm209.94133334 123.392l-180.00213334 91.15306666v-162.7136l180.00213334-78.63466666v150.1952Zm29.56373333-447.17226667L308.736 253.6704l202.45333333-90.64533333 210.56 90.64533333-210.56 87.616Zm32.3072 53.73013333l178.2528-78.63466666v132.3648l-178.2528 80.4096v-134.13973334Zm212.68053333 270.05013334l-186.24-83.19146667 178.26133334-83.1872 194.09066666 83.1872-186.112 83.19146667Zm205.57653334 128.82773333l-176.512 85.84533333v-162.8416l176.512-78.63466666v155.63093333Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3409 = [\n  _hoisted_2417\n];\nfunction _sfc_render417(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock417(), _createElementBlock417(\"svg\", _hoisted_1418, _hoisted_3409);\n}\nvar menu_mx_moxingguangli_default = /* @__PURE__ */ export_helper_default(menu_mx_moxingguangli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render417], [\"__file\", \"menu-mx-moxingguangli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-mx-moxingguangli2.vue?vue&type=script&lang.ts\nvar menu_mx_moxingguangli2_vue_vue_type_script_lang_default = {\n  name: \"MenuMxMoxingguangli2\"\n};\n\n// src/components/menu-mx-moxingguangli2.vue\nimport { createElementVNode as _createElementVNode410, openBlock as _openBlock418, createElementBlock as _createElementBlock418 } from \"vue\";\nvar _hoisted_1419 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2418 = /* @__PURE__ */ _createElementVNode410(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M878.528 64c44.992 0.128 81.344 36.48 81.472 81.472v733.056A81.664 81.664 0 0 1 878.528 960H145.472A81.6 81.6 0 0 1 64 878.528V145.472A81.664 81.664 0 0 1 145.472 64h733.056zM435.2 614.4a76.8 76.8 0 0 0-72.448 51.264H256v51.2h106.752a76.8 76.8 0 0 0 144.896 0H768v-51.2H507.648A76.8 76.8 0 0 0 435.2 614.4z m153.6-179.2a76.8 76.8 0 0 0-72.448 51.264H256v51.2h260.352a76.8 76.8 0 0 0 144.896 0H768v-51.2h-106.752A76.8 76.8 0 0 0 588.8 435.2zM435.2 256a76.8 76.8 0 0 0-72.448 51.264H256v51.2h106.752a76.8 76.8 0 0 0 144.896 0H768v-51.2H507.648A76.8 76.8 0 0 0 435.2 256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3410 = [\n  _hoisted_2418\n];\nfunction _sfc_render418(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock418(), _createElementBlock418(\"svg\", _hoisted_1419, _hoisted_3410);\n}\nvar menu_mx_moxingguangli2_default = /* @__PURE__ */ export_helper_default(menu_mx_moxingguangli2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render418], [\"__file\", \"menu-mx-moxingguangli2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-peixunguanli.vue?vue&type=script&lang.ts\nvar menu_peixunguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuPeixunguanli\"\n};\n\n// src/components/menu-peixunguanli.vue\nimport { createElementVNode as _createElementVNode411, openBlock as _openBlock419, createElementBlock as _createElementBlock419 } from \"vue\";\nvar _hoisted_1420 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2419 = /* @__PURE__ */ _createElementVNode411(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M511.66636308 3.00067673c-280.90705757 0-508.62520444 227.71931015-508.62520445 508.62520445 0 280.90473214 227.71814687 508.62520444 508.62520445 508.62520445s508.62520444-227.71931015 508.62520445-508.62520445C1020.29156753 230.71998689 792.57342066 3.00067673 511.66636308 3.00067673zM324.25432885 230.07015098c35.20739973 0 63.74322551 28.54396309 63.7432255 63.71183838 0 35.24459876-28.53582577 63.78856298-63.7432255 63.78856298-35.21088619 0-63.74671309-28.54396309-63.7467131-63.78856298C260.50645361 258.61411407 289.04344266 230.07015098 324.25432885 230.07015098zM347.49846694 793.18045036l-11.98651146-190.1706401-24.8007211 0-9.71731713 190.1706401L242.66676692 793.18045036l12.85605954-223.14488237-40.3223884-30.39000999 30.77828383-165.74424365 66.70991865 0-4.93945185 8.43391881 6.57043628 13.40127132-14.3556813 102.6903785 22.44433942 22.83145115 0 1.79489639 0.85559776-0.89279789 0.89279789 0.89279789 0-1.79489639 22.4513146-22.83145115-14.40799396-102.6903785 6.62274778-13.40127132-4.99060232-8.43391881 67.49692912 0 149.74944058 7.09821013-28.70555074 50.45820437-133.34427485 2.23664505 4.59419 136.34003194 8.56411933 223.14488238L347.49846694 793.17928822zM575.02015145 515.88527324l36.07694782-103.28906507 5.4986128-15.73324102 11.39015033 12.10973681 32.93122908 35.03651262 48.14250932-82.74657162 17.4816378 10.10791529-54.91986955 94.51685847-6.88082225 11.73773759-9.28254252-9.83821592-30.78177142-32.80102972-34.72496222 99.5539604-4.21172802 11.98767474-10.75891449-6.79712249-50.1640919-31.54320662-53.04011125 18.48952258-6.66459766-19.08704586 57.68661276-20.12631893 4.55698984-1.58680913 4.12919154 2.58306902L575.02015145 515.88527324zM670.75298311 793.18045036L475.69287839 793.18045036 475.69287839 758.70658746l195.06010472 0L670.75298311 793.18045036zM808.13345026 268.08149404l0 359.34541435 0 20.19723163-20.29255631 0L598.49678876 647.62413889l0 100.4560589-55.66851773 0 0-100.4560589-105.23276092 0 0-40.4886258 330.00397689 0L767.599487 288.36474975 420.92878346 288.36474975 420.92878346 247.82381245l366.91211049 0 20.29255631 0L808.13345026 268.08149404z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3411 = [\n  _hoisted_2419\n];\nfunction _sfc_render419(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock419(), _createElementBlock419(\"svg\", _hoisted_1420, _hoisted_3411);\n}\nvar menu_peixunguanli_default = /* @__PURE__ */ export_helper_default(menu_peixunguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render419], [\"__file\", \"menu-peixunguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-peixunjilu.vue?vue&type=script&lang.ts\nvar menu_peixunjilu_vue_vue_type_script_lang_default = {\n  name: \"MenuPeixunjilu\"\n};\n\n// src/components/menu-peixunjilu.vue\nimport { createElementVNode as _createElementVNode412, openBlock as _openBlock420, createElementBlock as _createElementBlock420 } from \"vue\";\nvar _hoisted_1421 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2420 = /* @__PURE__ */ _createElementVNode412(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M924.71671117 596.57073755a235.29965954 235.29965954 0 0 0-269.87302234 380.36974248H109.63869056a62.74657636 62.74657636 0 0 1-62.74657636-62.74657637V99.14725728a62.74657636 62.74657636 0 0 1 62.74657636-62.74657635h752.33144425a62.74657636 62.74657636 0 0 1 62.74657636 62.74657635v497.42348027z m-689.71036201-340.71390701a31.37328743 31.37328743 0 1 0 0 62.71520211h376.22846847a31.37328743 31.37328743 0 1 0 0-62.71520211H235.00634916z m0 188.11423351a31.37328743 31.37328743 0 1 0 0 62.71520358h250.79806427a31.37328743 31.37328743 0 1 0 0-62.71520358h-250.79806427zM831.22431361 789.35959146v-78.43321938a15.68664444 15.68664444 0 1 0-31.37328891 0v94.11986381a15.6238974 15.6238974 0 0 0 15.68664444 15.686643h94.11986382a15.68664444 15.68664444 0 1 0 0-31.37328743H831.22431361z m-15.68664447 188.23972761a172.55308316 172.55308316 0 1 1 0-345.10616781 172.55308316 172.55308316 0 0 1 0 345.10616781z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3412 = [\n  _hoisted_2420\n];\nfunction _sfc_render420(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock420(), _createElementBlock420(\"svg\", _hoisted_1421, _hoisted_3412);\n}\nvar menu_peixunjilu_default = /* @__PURE__ */ export_helper_default(menu_peixunjilu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render420], [\"__file\", \"menu-peixunjilu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-qianqiguanli.vue?vue&type=script&lang.ts\nvar menu_qianqiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuQianqiguanli\"\n};\n\n// src/components/menu-qianqiguanli.vue\nimport { createElementVNode as _createElementVNode413, openBlock as _openBlock421, createElementBlock as _createElementBlock421 } from \"vue\";\nvar _hoisted_1422 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2421 = /* @__PURE__ */ _createElementVNode413(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M969.27288889 3.072H249.51466667c-14.67733333 0-26.624 11.94666667-26.624 26.624v25.48622222c0 12.17422222 9.89866667 21.95911111 21.95911111 21.95911111h637.83822222c35.72622222 0 64.62577778 28.89955555 64.62577778 64.62577778v705.30844444c0 15.81511111 12.85688889 28.672 28.672 28.672h18.20444444c15.47377778 0 28.21688889-12.74311111 28.21688889-28.21688888V56.32c0.11377778-29.24088889-23.89333333-53.248-53.13422222-53.248z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3413 = /* @__PURE__ */ _createElementVNode413(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M439.40977778 586.752m-91.93244445 0a91.93244445 91.93244445 0 1 0 183.86488889 0 91.93244445 91.93244445 0 1 0-183.86488889 0Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_491 = /* @__PURE__ */ _createElementVNode413(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M842.752 147.68355555H36.75022222c-18.77333333 0-34.13333333 15.36-34.13333333 34.13333334v806.00177778c0 18.77333333 15.36 34.13333333 34.13333333 34.13333333h806.00177778c18.77333333 0 34.13333333-15.36 34.13333333-34.13333333V181.81688889c0-18.77333333-15.36-34.13333333-34.13333333-34.13333334zM675.72622222 614.96888889c0 10.46755555-8.53333333 19.11466667-19.11466667 19.11466666h-49.49333333c-3.75466667 13.42577778-9.10222222 26.16888889-15.81511111 38.11555556l35.04355556 35.04355556c7.39555555 7.39555555 7.39555555 19.56977778 0 26.96533333l-39.82222222 39.82222222c-7.39555555 7.39555555-19.56977778 7.39555555-26.96533334 0L524.51555555 738.98666667c-11.94666667 6.71288889-24.68977778 12.06044445-38.11555555 15.81511111v49.49333333c0 10.46755555-8.53333333 19.11466667-19.11466667 19.11466667h-56.20622222c-10.46755555 0-19.11466667-8.53333333-19.11466666-19.11466667v-49.49333333c-13.42577778-3.75466667-26.16888889-9.10222222-38.11555556-15.81511111l-35.04355556 35.04355555c-7.39555555 7.39555555-19.56977778 7.39555555-26.96533333 0l-39.82222222-39.82222222c-7.39555555-7.39555555-7.39555555-19.56977778 0-26.96533333l35.04355555-35.04355556c-6.71288889-11.94666667-12.06044445-24.68977778-15.81511111-38.11555556h-49.49333333c-10.46755555 0-19.11466667-8.53333333-19.11466667-19.11466666V558.64888889c0-10.46755555 8.53333333-19.11466667 19.11466667-19.11466667h49.49333333c3.75466667-13.42577778 9.10222222-26.16888889 15.81511111-38.11555555L252.35911111 466.48888889c-7.39555555-7.39555555-7.39555555-19.56977778 0-26.96533334l39.82222222-39.82222222c7.39555555-7.39555555 19.56977778-7.39555555 26.96533334 0l35.04355555 35.04355556c11.94666667-6.71288889 24.68977778-12.06044445 38.11555556-15.81511111v-49.49333333c0-10.46755555 8.53333333-19.11466667 19.11466667-19.11466667H467.62666667c10.46755555 0 19.11466667 8.53333333 19.11466666 19.11466667v49.49333333c13.42577778 3.75466667 26.16888889 9.10222222 38.11555556 15.81511111l35.04355556-35.04355556c7.39555555-7.39555555 19.56977778-7.39555555 26.96533333 0l39.82222222 39.82222222c7.39555555 7.39555555 7.39555555 19.56977778 0 26.96533334L591.64444445 501.53244445c6.71288889 11.94666667 12.06044445 24.68977778 15.8151111 38.11555555h49.49333334c10.46755555 0 19.11466667 8.53333333 19.11466666 19.11466667v56.20622222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_535 = [\n  _hoisted_2421,\n  _hoisted_3413,\n  _hoisted_491\n];\nfunction _sfc_render421(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock421(), _createElementBlock421(\"svg\", _hoisted_1422, _hoisted_535);\n}\nvar menu_qianqiguanli_default = /* @__PURE__ */ export_helper_default(menu_qianqiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render421], [\"__file\", \"menu-qianqiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-qianqijihuaguanli.vue?vue&type=script&lang.ts\nvar menu_qianqijihuaguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuQianqijihuaguanli\"\n};\n\n// src/components/menu-qianqijihuaguanli.vue\nimport { createElementVNode as _createElementVNode414, openBlock as _openBlock422, createElementBlock as _createElementBlock422 } from \"vue\";\nvar _hoisted_1423 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2422 = /* @__PURE__ */ _createElementVNode414(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M754.119111 725.151289C754.119111 762.857244 723.5584 793.417956 685.852444 793.417956L338.1248 793.417956C300.4416 793.417956 269.858133 762.857244 269.858133 725.151289L269.858133 298.871467C269.858133 261.165511 300.4416 230.6048 338.1248 230.6048L685.852444 230.6048C723.5584 230.6048 754.119111 261.165511 754.119111 298.871467L754.119111 725.151289ZM512 0C229.216711 0 0 229.239467 0 512 0 794.783289 229.216711 1024 512 1024 794.760533 1024 1024 794.783289 1024 512 1024 229.239467 794.760533 0 512 0L512 0ZM631.462116 477.873493 506.30656 477.873493C487.46496 477.873493 472.173227 493.165227 472.173227 512.006827 472.173227 530.848427 487.46496 546.14016 506.30656 546.14016L631.462116 546.14016C650.303716 546.14016 665.595449 530.848427 665.595449 512.006827 665.595449 493.165227 650.303716 477.873493 631.462116 477.873493M403.902009 466.495716C378.75712 466.495716 358.390898 486.884693 358.390898 512.006827 358.390898 537.12896 378.75712 557.517938 403.902009 557.517938 429.024142 557.517938 449.41312 537.12896 449.41312 512.006827 449.41312 486.884693 429.024142 466.495716 403.902009 466.495716M631.462116 364.095716 392.528782 364.095716C373.687182 364.095716 358.395449 379.387449 358.395449 398.229049 358.395449 417.070649 373.687182 432.362382 392.528782 432.362382L631.462116 432.362382C650.303716 432.362382 665.595449 417.070649 665.595449 398.229049 665.595449 379.387449 650.303716 364.095716 631.462116 364.095716M631.462116 591.651271 506.30656 591.651271C487.46496 591.651271 472.173227 606.943004 472.173227 625.784604 472.173227 644.626204 487.46496 659.917938 506.30656 659.917938L631.462116 659.917938C650.303716 659.917938 665.595449 644.626204 665.595449 625.784604 665.595449 606.943004 650.303716 591.651271 631.462116 591.651271M403.902009 580.273493C378.75712 580.273493 358.390898 600.662471 358.390898 625.784604 358.390898 650.906738 378.75712 671.295716 403.902009 671.295716 429.024142 671.295716 449.41312 650.906738 449.41312 625.784604 449.41312 600.662471 429.024142 580.273493 403.902009 580.273493\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3414 = [\n  _hoisted_2422\n];\nfunction _sfc_render422(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock422(), _createElementBlock422(\"svg\", _hoisted_1423, _hoisted_3414);\n}\nvar menu_qianqijihuaguanli_default = /* @__PURE__ */ export_helper_default(menu_qianqijihuaguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render422], [\"__file\", \"menu-qianqijihuaguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-qianqijinzhanguanli.vue?vue&type=script&lang.ts\nvar menu_qianqijinzhanguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuQianqijinzhanguanli\"\n};\n\n// src/components/menu-qianqijinzhanguanli.vue\nimport { createElementVNode as _createElementVNode415, openBlock as _openBlock423, createElementBlock as _createElementBlock423 } from \"vue\";\nvar _hoisted_1424 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2423 = /* @__PURE__ */ _createElementVNode415(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M709.2224 782.7456C628.508444 782.7456 563.086222 717.323378 563.086222 636.609422 563.086222 555.872711 628.508444 490.450489 709.2224 490.450489 789.936356 490.450489 855.358578 555.872711 855.358578 636.609422 855.358578 717.323378 789.936356 782.7456 709.2224 782.7456L709.2224 782.7456ZM236.885333 526.7456C218.043733 526.7456 202.752 511.453867 202.752 492.612267 202.752 473.770667 218.043733 458.478933 236.885333 458.478933L541.309156 458.478933C560.150756 458.478933 575.442489 473.770667 575.442489 492.612267 575.442489 511.453867 560.150756 526.7456 541.309156 526.7456L236.885333 526.7456ZM475.409067 680.573156 236.885333 680.573156C218.043733 680.573156 202.752 665.281422 202.752 646.439822 202.752 627.598222 218.043733 612.306489 236.885333 612.306489L475.409067 612.306489C494.250667 612.306489 509.5424 627.598222 509.5424 646.439822 509.5424 665.281422 494.250667 680.573156 475.409067 680.573156L475.409067 680.573156ZM236.885333 310.795378 761.059556 310.795378C779.901156 310.795378 795.192889 326.087111 795.192889 344.928711 795.192889 363.770311 779.901156 379.062044 761.059556 379.062044L236.885333 379.062044C218.043733 379.062044 202.752 363.770311 202.752 344.928711 202.752 326.087111 218.043733 310.795378 236.885333 310.795378L236.885333 310.795378ZM512 0C229.216711 0 0 229.239467 0 512 0 794.760533 229.216711 1024 512 1024 794.760533 1024 1024 794.760533 1024 512 1024 229.239467 794.760533 0 512 0L512 0ZM792.177778 632.333653 709.688889 632.333653 709.688889 572.60032C709.688889 560.016498 699.517156 549.844764 686.933333 549.844764 674.349511 549.844764 664.177778 560.016498 664.177778 572.60032L664.177778 655.089209C664.177778 667.673031 674.349511 677.844764 686.933333 677.844764L792.177778 677.844764C804.7616 677.844764 814.933333 667.673031 814.933333 655.089209 814.933333 642.505387 804.7616 632.333653 792.177778 632.333653\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3415 = [\n  _hoisted_2423\n];\nfunction _sfc_render423(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock423(), _createElementBlock423(\"svg\", _hoisted_1424, _hoisted_3415);\n}\nvar menu_qianqijinzhanguanli_default = /* @__PURE__ */ export_helper_default(menu_qianqijinzhanguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render423], [\"__file\", \"menu-qianqijinzhanguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-quanxianguanli.vue?vue&type=script&lang.ts\nvar menu_quanxianguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuQuanxianguanli\"\n};\n\n// src/components/menu-quanxianguanli.vue\nimport { createElementVNode as _createElementVNode416, openBlock as _openBlock424, createElementBlock as _createElementBlock424 } from \"vue\";\nvar _hoisted_1425 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2424 = /* @__PURE__ */ _createElementVNode416(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M73.275233 938.464708v-477.572045a85.535292 85.535292 0 0 1 85.535292-85.535291h706.37895a85.535292 85.535292 0 0 1 85.535292 85.535291v477.572045a85.535292 85.535292 0 0 1-85.535292 85.535292H158.810525a85.535292 85.535292 0 0 1-85.535292-85.535292z m438.724767-392.036753C451.412502 546.142837 402.300988 591.619101 402.300988 648.642628a101.074203 101.074203 0 0 0 54.813867 88.17263V833.969094a54.885145 54.885145 0 0 0 109.699011 0v-97.367674A100.789085 100.789085 0 0 0 621.699012 648.642628c0-57.023528-49.111513-102.499791-109.699012-102.499791z m0-443.714326c-105.422247 0-193.381039 69.283586-214.551023 161.732981a54.885145 54.885145 0 0 1-53.316999 42.767646 54.742587 54.742587 0 0 1-53.174439-67.501601C223.888626 102.499791 355.04274 0 511.928721 0S800.325212 102.499791 833.042461 239.641375a54.742587 54.742587 0 0 1-53.174439 67.501601 54.885145 54.885145 0 0 1-53.316999-42.767645c-21.383823-92.663233-109.200056-161.732981-214.551023-161.732981z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3416 = [\n  _hoisted_2424\n];\nfunction _sfc_render424(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock424(), _createElementBlock424(\"svg\", _hoisted_1425, _hoisted_3416);\n}\nvar menu_quanxianguanli_default = /* @__PURE__ */ export_helper_default(menu_quanxianguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render424], [\"__file\", \"menu-quanxianguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-qx-canyu.vue?vue&type=script&lang.ts\nvar menu_qx_canyu_vue_vue_type_script_lang_default = {\n  name: \"MenuQxCanyu\"\n};\n\n// src/components/menu-qx-canyu.vue\nimport { createElementVNode as _createElementVNode417, openBlock as _openBlock425, createElementBlock as _createElementBlock425 } from \"vue\";\nvar _hoisted_1426 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2425 = /* @__PURE__ */ _createElementVNode417(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M437.76 832c25.6-61.44 74.24-112.64 138.24-143.36-30.72-33.28-46.08-79.36-46.08-125.44 0-104.96 84.48-192 189.44-192 46.08 0 84.48 5.12 117.76 35.84V81.92c0-48.64-7.68-53.76-56.32-53.76H117.76c-48.64 0-58.88 12.8-58.88 61.44v852.48c0 48.64 5.12 53.76 53.76 53.76h440.32c-25.6-10.24-51.2-23.04-74.24-38.4-40.96-25.6-58.88-84.48-40.96-125.44z m-245.76-588.8c0-15.36 12.8-25.6 25.6-25.6H460.8c15.36 0 25.6 12.8 25.6 25.6v25.6c0 15.36-12.8 25.6-25.6 25.6H220.16c-15.36 0-25.6-12.8-25.6-25.6v-25.6z m171.52 463.36c0 7.68-2.56 12.8-7.68 17.92-5.12 5.12-20.48 2.56-28.16 2.56H220.16c-7.68 0-17.92 2.56-23.04-2.56-5.12-5.12-7.68-12.8-7.68-17.92v-35.84c0-7.68 2.56-12.8 7.68-17.92 5.12-5.12 15.36-5.12 23.04-5.12h107.52c7.68 0 23.04 0 28.16 5.12 5.12 5.12 7.68 12.8 7.68 17.92v35.84z m0-220.16c0 7.68-2.56 12.8-7.68 17.92-5.12 5.12-12.8 7.68-17.92 7.68H215.04c-7.68 0-12.8-2.56-17.92-7.68-5.12-5.12-7.68-12.8-7.68-17.92v-35.84c0-7.68 2.56-12.8 7.68-17.92 5.12-5.12 15.36 0 23.04 0h107.52c7.68 0 23.04-5.12 28.16 0 5.12 5.12 7.68 12.8 7.68 17.92V486.4z m596.48 343.04c-28.16-64-89.6-110.08-161.28-128 40.96-25.6 66.56-71.68 66.56-122.88 0-79.36-64-143.36-143.36-143.36-79.36 0-143.36 64-143.36 143.36 0 53.76 28.16 99.84 71.68 125.44-71.68 20.48-128 69.12-156.16 130.56-10.24 25.6 0 61.44 25.6 76.8 61.44 38.4 130.56 58.88 204.8 58.88 76.8 0 148.48-23.04 212.48-64 23.04-15.36 35.84-53.76 23.04-76.8z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3417 = [\n  _hoisted_2425\n];\nfunction _sfc_render425(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock425(), _createElementBlock425(\"svg\", _hoisted_1426, _hoisted_3417);\n}\nvar menu_qx_canyu_default = /* @__PURE__ */ export_helper_default(menu_qx_canyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render425], [\"__file\", \"menu-qx-canyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-qx-danwei.vue?vue&type=script&lang.ts\nvar menu_qx_danwei_vue_vue_type_script_lang_default = {\n  name: \"MenuQxDanwei\"\n};\n\n// src/components/menu-qx-danwei.vue\nimport { createElementVNode as _createElementVNode418, openBlock as _openBlock426, createElementBlock as _createElementBlock426 } from \"vue\";\nvar _hoisted_1427 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2426 = /* @__PURE__ */ _createElementVNode418(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M889.4 861.5v-500H586.3v-250H131.6v750H30.5v50h960v-50H889.4z m-202.1-400h50.5v150h-50.5v-150z m0 200h50.5v150h-50.5v-150z m-454.7-400h252.6v50H232.6v-50z m0 100h252.6v50H232.6v-50z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3418 = [\n  _hoisted_2426\n];\nfunction _sfc_render426(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock426(), _createElementBlock426(\"svg\", _hoisted_1427, _hoisted_3418);\n}\nvar menu_qx_danwei_default = /* @__PURE__ */ export_helper_default(menu_qx_danwei_vue_vue_type_script_lang_default, [[\"render\", _sfc_render426], [\"__file\", \"menu-qx-danwei.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-renwudiaodu.vue?vue&type=script&lang.ts\nvar menu_renwudiaodu_vue_vue_type_script_lang_default = {\n  name: \"MenuRenwudiaodu\"\n};\n\n// src/components/menu-renwudiaodu.vue\nimport { createElementVNode as _createElementVNode419, openBlock as _openBlock427, createElementBlock as _createElementBlock427 } from \"vue\";\nvar _hoisted_1428 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2427 = /* @__PURE__ */ _createElementVNode419(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M871.21269874 4.87619048H152.78730126C110.52698446 4.87619048 74.60571429 21.7803178 47.13650827 49.24952381 21.7803178 76.71872982 4.87619048 112.64 4.87619048 152.78730126v718.42539749c0 82.40761906 65.50349174 147.9111108 147.91111078 147.91111077h718.42539749c82.40761906 0 147.9111108-65.50349174 147.91111077-147.91111077V152.78730126c0-82.40761906-65.50349174-147.9111108-147.91111077-147.91111078z m-63.39047618 669.82603207c0 23.24317495-19.01714286 40.14730126-40.14730226 40.14730125h-274.69206316c-16.90412731 38.03428572-52.82539649 63.3904762-97.19872982 63.39047621s-80.29460349-25.35619048-97.19873082-63.39047621h-42.2603168c-23.24317495 0-40.14730126-19.01714286-40.14730225-40.14730125v-2.11301654c0-23.24317495 19.01714286-40.14730126 40.14730225-40.14730125h42.2603168c16.90412731-38.03428572 52.82539649-63.3904762 97.19873082-63.39047619s80.29460349 25.35619048 97.19872982 63.39047619h274.69206316c23.24317495 0 40.14730126 19.01714286 40.14730225 40.14730125v2.11301654z m0-316.95238097c0 23.24317495-19.01714286 40.14730126-40.14730226 40.14730129h-42.26031679c-16.90412731 38.03428572-52.82539649 63.3904762-97.19873082 63.39047618s-80.29460349-25.35619048-97.19872983-63.3904762h-274.69206316c-23.24317495 0-40.14730126-19.01714286-40.14730225-40.14730127v-2.11301652c0-23.24317495 19.01714286-40.14730126 40.14730225-40.14730125h274.69206316c16.90412731-38.03428572 52.82539649-63.3904762 97.19872982-63.39047619s80.29460349 25.35619048 97.19873082 63.39047619h42.2603168c23.24317495 0 40.14730126 19.01714286 40.14730225 40.14730125v2.11301652z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3419 = [\n  _hoisted_2427\n];\nfunction _sfc_render427(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock427(), _createElementBlock427(\"svg\", _hoisted_1428, _hoisted_3419);\n}\nvar menu_renwudiaodu_default = /* @__PURE__ */ export_helper_default(menu_renwudiaodu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render427], [\"__file\", \"menu-renwudiaodu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-shejiguanli.vue?vue&type=script&lang.ts\nvar menu_shejiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuShejiguanli\"\n};\n\n// src/components/menu-shejiguanli.vue\nimport { createElementVNode as _createElementVNode420, openBlock as _openBlock428, createElementBlock as _createElementBlock428 } from \"vue\";\nvar _hoisted_1429 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2428 = /* @__PURE__ */ _createElementVNode420(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M827.52 7.25333333L5.12 829.65333333l191.57333333 191.57333334 822.4-822.4L827.52 7.25333333zM135.25333333 874.24l-74.66666666-74.66666667 16.42666666-16.42666666 74.66666667 74.66666666L135.25333333 874.24zM208.42666667 801.06666667l-74.66666667-74.66666667 16.42666667-16.42666667 74.66666666 74.66666667L208.42666667 801.06666667zM281.38666667 728.10666667l-74.66666667-74.66666667 16.42666667-16.42666667 74.66666666 74.66666667L281.38666667 728.10666667zM354.56 654.93333333l-74.66666667-74.66666666 16.42666667-16.42666667 74.66666667 74.66666667L354.56 654.93333333zM427.52 581.97333333l-74.66666667-74.66666666 16.42666667-16.42666667 74.66666667 74.66666667L427.52 581.97333333zM500.69333333 508.8l-74.66666666-74.66666667 16.42666666-16.42666666 74.66666667 74.66666666L500.69333333 508.8zM573.86666667 435.84l-74.66666667-74.66666667 16.42666667-16.42666666 74.66666666 74.66666666L573.86666667 435.84zM646.82666667 362.66666667l-74.66666667-74.66666667 16.42666667-16.42666667 74.66666666 74.66666667L646.82666667 362.66666667zM720 289.49333333l-74.66666667-74.66666666 16.42666667-16.42666667 74.66666667 74.66666667L720 289.49333333zM792.96 216.53333333l-74.66666667-74.66666666 16.42666667-16.42666667 74.66666667 74.66666667L792.96 216.53333333zM791.46666667 68.69333333l16.42666666-16.42666666 74.66666667 74.66666666-16.42666667 16.42666667L791.46666667 68.69333333zM867.62666667 682.45333333L724.26666667 539.09333333 537.6 725.76 680.96 869.12 923.73333333 925.22666667ZM194.09527467 9.09128533l291.13664 291.13664-186.598976 186.598976-291.13664-291.13664 186.598976-186.598976Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3420 = [\n  _hoisted_2428\n];\nfunction _sfc_render428(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock428(), _createElementBlock428(\"svg\", _hoisted_1429, _hoisted_3420);\n}\nvar menu_shejiguanli_default = /* @__PURE__ */ export_helper_default(menu_shejiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render428], [\"__file\", \"menu-shejiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-shiguguanli.vue?vue&type=script&lang.ts\nvar menu_shiguguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuShiguguanli\"\n};\n\n// src/components/menu-shiguguanli.vue\nimport { createElementVNode as _createElementVNode421, openBlock as _openBlock429, createElementBlock as _createElementBlock429 } from \"vue\";\nvar _hoisted_1430 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2429 = /* @__PURE__ */ _createElementVNode421(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M910.216533 102.4c61.508267 0 111.616 47.8208 113.7152 107.588267l0.068267 3.925333v613.256533c0 60.2624-48.810667 109.3632-109.789867 111.428267l-3.9936 0.068267H113.783467c-61.508267 0-111.616-47.8208-113.7152-107.588267L0 827.153067V213.9136C0 152.32 50.944 102.4 113.783467 102.4h796.433066z m9.198934 85.367467L124.791467 187.733333c-30.139733 0-38.8608 7.099733-39.424 34.986667L85.333333 832.341333C85.333333 862.7712 93.576533 870.4 124.808533 870.4h791.4496c31.232 0 39.4752-7.611733 39.4752-38.058667V225.792c0-29.3888-7.68-37.512533-36.317866-38.024533z m5.4272 281.975466l2.269866 1.979734c15.4112 14.592 15.4112 38.229333 0 52.821333l-225.416533 213.162667-70.946133 29.354666c-5.905067 2.4576-12.8-0.085333-15.36-5.6832a10.496 10.496 0 0 1-0.0512-8.772266l30.5152-67.703467 225.416533-213.162667c13.909333-13.1584 35.618133-14.4384 51.063467-3.857066l2.5088 1.877333zM328.635733 293.205333c5.546667 2.781867 10.069333 7.287467 12.834134 12.8512l201.608533 403.2A28.791467 28.791467 0 0 1 517.3248 750.933333H114.1248a28.791467 28.791467 0 0 1-25.736533-41.693866L289.962667 306.039467a28.791467 28.791467 0 0 1 38.656-12.8512z m-12.9024 116.599467L170.666667 699.733333h290.133333l-145.066667-289.962666zM315.733333 597.333333c14.1312 0 25.6 15.274667 25.6 34.133334 0 17.92-10.3424 32.597333-23.5008 34.013866L315.733333 665.6c-14.1312 0-25.6-15.274667-25.6-34.133333 0-17.92 10.3424-32.597333 23.5008-34.013867L315.733333 597.333333z m0-119.466666c14.1312 0 25.6 13.380267 25.6 29.866666v59.733334c0 16.4864-11.4688 29.866667-25.6 29.866666s-25.6-13.380267-25.6-29.866666v-59.733334c0-15.633067 10.2912-28.450133 23.381334-29.764266L315.733333 477.866667z m337.066667 17.066666c16.4864 0 29.866667 15.274667 29.866667 34.133334 0 17.954133-12.117333 32.6656-27.528534 34.030933L652.8 563.2h-59.733333c-16.4864 0-29.866667-15.274667-29.866667-34.133333s13.380267-34.133333 29.866667-34.133334h59.733333z m119.466667-102.4c16.4864 0 29.866667 15.274667 29.866666 34.133334 0 17.954133-12.117333 32.6656-27.528533 34.030933L772.266667 460.8h-179.2c-16.4864 0-29.866667-15.274667-29.866667-34.133333s13.380267-34.133333 29.866667-34.133334h179.2z m119.466666-119.466666c16.4864 0 29.866667 15.274667 29.866667 34.133333 0 17.954133-12.117333 32.6656-27.528533 34.030933L891.733333 341.333333h-298.666666c-16.4864 0-29.866667-15.274667-29.866667-34.133333s13.380267-34.133333 29.866667-34.133333h298.666666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3421 = [\n  _hoisted_2429\n];\nfunction _sfc_render429(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock429(), _createElementBlock429(\"svg\", _hoisted_1430, _hoisted_3421);\n}\nvar menu_shiguguanli_default = /* @__PURE__ */ export_helper_default(menu_shiguguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render429], [\"__file\", \"menu-shiguguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-shili-2.vue?vue&type=script&lang.ts\nvar menu_shili_2_vue_vue_type_script_lang_default = {\n  name: \"MenuShili2\"\n};\n\n// src/components/menu-shili-2.vue\nimport { createElementVNode as _createElementVNode422, openBlock as _openBlock430, createElementBlock as _createElementBlock430 } from \"vue\";\nvar _hoisted_1431 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2430 = /* @__PURE__ */ _createElementVNode422(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M129.72487111 85.20286815L512 0.25283987l382.27512889 84.95002828a46.5224695 46.5224695 0 0 1 36.42709334 45.40593024v464.61989925a279.13481481 279.13481481 0 0 1-124.30803718 232.24016593L512 1023.74716013l-294.39418505-196.27829656A279.13481481 279.13481481 0 0 1 93.29777777 595.27521939V130.60879839a46.5224695 46.5224695 0 0 1 36.42709334-45.40593024zM512 581.78370371l136.72953643 71.87721481-26.09910519-152.22151865 110.5839095-107.83908418-152.87283394-22.23773952L512 232.86518519l-68.38802963 138.49739098-152.82631111 22.23773952 110.5839095 107.83908418-26.05258344 152.22151865L512 581.78370371z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3422 = [\n  _hoisted_2430\n];\nfunction _sfc_render430(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock430(), _createElementBlock430(\"svg\", _hoisted_1431, _hoisted_3422);\n}\nvar menu_shili_2_default = /* @__PURE__ */ export_helper_default(menu_shili_2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render430], [\"__file\", \"menu-shili-2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-shili.vue?vue&type=script&lang.ts\nvar menu_shili_vue_vue_type_script_lang_default = {\n  name: \"MenuShili\"\n};\n\n// src/components/menu-shili.vue\nimport { createElementVNode as _createElementVNode423, openBlock as _openBlock431, createElementBlock as _createElementBlock431 } from \"vue\";\nvar _hoisted_1432 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2431 = /* @__PURE__ */ _createElementVNode423(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M306.33726724 114.14899014l176.38365451 305.45474783-300.89572174 521.40061681L5.4415455 635.6002632 306.33726724 114.14899014z m110.22712001 521.45127306H1018.5584545l-176.38365451 305.40409158H240.23138897l176.33299828-305.40409158z m219.99833622-50.65584581L335.61634668 63.44248929h352.76730664l300.89572174 521.5019281H636.6133797z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3423 = [\n  _hoisted_2431\n];\nfunction _sfc_render431(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock431(), _createElementBlock431(\"svg\", _hoisted_1432, _hoisted_3423);\n}\nvar menu_shili_default = /* @__PURE__ */ export_helper_default(menu_shili_vue_vue_type_script_lang_default, [[\"render\", _sfc_render431], [\"__file\", \"menu-shili.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-shili3.vue?vue&type=script&lang.ts\nvar menu_shili3_vue_vue_type_script_lang_default = {\n  name: \"MenuShili3\"\n};\n\n// src/components/menu-shili3.vue\nimport { createElementVNode as _createElementVNode424, openBlock as _openBlock432, createElementBlock as _createElementBlock432 } from \"vue\";\nvar _hoisted_1433 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2432 = /* @__PURE__ */ _createElementVNode424(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M177.91886222 633.26435555c97.00352 0 175.64103111 78.69895111 175.64103111 175.78325334 0 97.07975111-78.63751111 175.78325333-175.64103111 175.78325333C80.91192889 984.83086222 2.27555555 906.12736 2.27555555 809.04760889c0-97.08430222 78.63637333-175.78325333 175.64330667-175.78325334z m439.84213333 142.3007289l0.80099556 0.00568888c18.45475555 0.32199111 33.36533333 15.34520889 33.46545778 33.91146667 0.10467555 18.83818667-15.06759111 34.19022222-33.88871111 34.29489778l-224.68380445 1.24700444-0.80782222-0.00455111c-18.44565333-0.32312889-33.35736889-15.34634667-33.46318222-33.91146666-0.10126222-18.83818667 15.07214222-34.19022222 33.89212444-34.29603556l224.68494222-1.24700444z m-3.03445333-400.27363556c16.40334222-9.23875555 37.18257778-3.42471111 46.41450667 12.99000889l118.73166222 211.13856 0.41187556 0.75093333c8.64256 16.29297778 2.76252445 36.60231111-13.39619556 45.69884444-16.40334222 9.23875555-37.18257778 3.42016-46.41564444-12.99569777l-118.73052445-211.13742223-0.41187555-0.74524444c-8.64142222-16.29297778-2.75683555-36.60231111 13.39619555-45.69998222zM410.36458667 359.54915555c16.15303111 9.09880889 22.03875555 29.40700445 13.39050666 45.69998223l-0.40618666 0.75093333-118.73848889 211.13742222c-9.22965333 16.41130667-30.01002667 22.22990222-46.41336889 12.99114667-16.15303111-9.09767111-22.03192889-29.40586667-13.39164444-45.69884445l0.40732444-0.75093333 118.73621333-211.13856c9.23306667-16.40903111 30.01230222-22.22876445 46.41564445-12.99114667zM516.096 19.34222222c97.00465778 0 175.64103111 78.69781333 175.64103111 175.78325333 0 97.07975111-78.63637333 175.77756445-175.64103111 175.77756445-97.00693333 0-175.64330667-78.69781333-175.64330667-175.78325333C340.45269333 98.04003555 419.09020445 19.34222222 516.096 19.34222222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3424 = /* @__PURE__ */ _createElementVNode424(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M847.28490667 633.43729778c26.43057778-28.82218667 71.20213333-30.74958222 100.00156444-4.29397333l51.51402667 47.30993777c28.20778667 25.90264889 30.72 69.56487111 5.66954667 98.53838223L851.34449778 952.11178667l-97.9968 45.87178666a70.71288889 70.71288889 0 0 1-53.77137778 2.55544889c-36.81507555-13.14133333-56.01848889-53.66784-42.88967111-90.51363555l36.54883556-102.55928889 153.21315555-173.10492445 0.83626667-0.92387555z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_492 = [\n  _hoisted_2432,\n  _hoisted_3424\n];\nfunction _sfc_render432(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock432(), _createElementBlock432(\"svg\", _hoisted_1433, _hoisted_492);\n}\nvar menu_shili3_default = /* @__PURE__ */ export_helper_default(menu_shili3_vue_vue_type_script_lang_default, [[\"render\", _sfc_render432], [\"__file\", \"menu-shili3.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-shuzizidian.vue?vue&type=script&lang.ts\nvar menu_shuzizidian_vue_vue_type_script_lang_default = {\n  name: \"MenuShuzizidian\"\n};\n\n// src/components/menu-shuzizidian.vue\nimport { createElementVNode as _createElementVNode425, openBlock as _openBlock433, createElementBlock as _createElementBlock433 } from \"vue\";\nvar _hoisted_1434 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2433 = /* @__PURE__ */ _createElementVNode425(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M164.29511111 614.79442963h77.42957037V681.90814815h-77.42957037v-67.11371852z m0-201.2197926h77.42957037v67.11371852h-77.42957037v-67.11371852z m0-201.09842962h77.42957037v67.11371851h-77.42957037v-67.11371851z m154.85914074 402.31822222h541.6429037V681.90814815H319.15425185v-67.11371852z m0-201.2197926h541.6429037v67.11371852H319.15425185v-67.11371852z m0-201.09842962h541.6429037v67.11371851H319.15425185v-67.11371851zM9.55733333 80.31194075v842.62305184c0 56.55514075 54.61333333 94.29902222 116.9938963 94.29902223h888.9837037v-56.55514074H126.55122963c-23.42305185 0-39.07887408-12.62174815-39.07887408-31.43300741 0-18.81125925 15.53445925-31.43300741 39.07887408-31.43300742h888.9837037V11.25641482H95.36094815c-38.95751111 6.18951111-78.03638518 37.74388148-85.80361482 69.05552593z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3425 = [\n  _hoisted_2433\n];\nfunction _sfc_render433(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock433(), _createElementBlock433(\"svg\", _hoisted_1434, _hoisted_3425);\n}\nvar menu_shuzizidian_default = /* @__PURE__ */ export_helper_default(menu_shuzizidian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render433], [\"__file\", \"menu-shuzizidian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-sjcg-shejichengguo.vue?vue&type=script&lang.ts\nvar menu_sjcg_shejichengguo_vue_vue_type_script_lang_default = {\n  name: \"MenuSjcgShejichengguo\"\n};\n\n// src/components/menu-sjcg-shejichengguo.vue\nimport { createElementVNode as _createElementVNode426, openBlock as _openBlock434, createElementBlock as _createElementBlock434 } from \"vue\";\nvar _hoisted_1435 = {\n  class: \"icon\",\n  viewBox: \"0 0 1059 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2434 = /* @__PURE__ */ _createElementVNode426(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M12.141546 32.149112C25.369689 12.165167 49.251211 0.035433 73.191788 0.862191 202.319723 0.885813 331.459469 0.826759 460.587405 0.897624c28.204291-0.200784 55.26293 18.306805 65.408443 44.60955 3.354279 8.373887 5.04323 17.409181 5.007797 26.444475 0 39.814348-0.011811 79.628697 0.011811 119.454856 135.198708 0.023622 270.409227-0.011811 405.607935 0.023622 18.5194 0 36.838016 7.771534 49.79451 20.976055 13.03917 13.05098 20.62173 31.369596 20.491811 49.818132-0.011811 103.628328 0.011811 207.256655-0.011811 310.884982-45.16466-38.904913-102.907866-63.069896-162.422699-67.215501-47.999262-3.720415-96.93158 5.078662-140.537209 25.546851-33.153033 15.472203-63.211626 37.511234-87.978962 64.439954-28.121615 30.507405-49.38113 67.33361-61.558108 107.018039-15.035202 48.743345-16.298962 101.620484-3.744037 151.048858 9.802999 38.763183 28.19248 75.270496 53.243275 106.415686-50.101592 0.165352-100.214994-0.28346-150.316585 0.259839-127.580715-0.023622-255.16143 0.011811-382.753957-0.011811-18.956401 0.070865-37.73564-7.925075-50.857485-21.60203C8.054994 926.855825 1.086597 910.297024 0 893.360277V68.160369C0.921246 55.381038 4.866067 42.755248 12.141546 32.149112m115.935224 218.97301c-6.838478 0.649596-13.369873 3.826713-18.141453 8.751834-11.161246 11.208489-11.338408 31.298731-0.448812 42.743437 5.740069 6.271557 14.267497 9.661269 22.747682 9.425052 69.695779-0.023622 139.391557 0.035433 209.099146-0.023621 10.062837 0.047243 19.91308-5.432987 25.133472-14.043092 4.440877-7.01564 5.267636-15.802907 3.708604-23.822468-2.373979-11.586436-12.425006-21.094164-24.12955-22.806736-5.858178-0.779516-11.78722-0.259839-17.669019-0.401568-66.76669 0.118108-133.54519-0.236217-200.30007 0.177162m0.035433 214.957324c-9.743945 0.885813-18.767428 7.039262-23.220115 15.743853-3.342468 6.188881-3.956632 13.523414-2.952711 20.397324 1.594464 10.570704 9.484106 19.842215 19.617809 23.184683 5.32669 1.936978 11.07857 1.594464 16.641476 1.594463 67.711557 0 135.423114 0.011811 203.12286-0.011811 7.240046-0.011811 14.44466-2.716494 19.783161-7.617993 12.401384-10.830542 13.145467-31.98376 1.948789-43.900899-5.763691-6.389666-14.409227-9.826621-22.972088-9.578593-70.652457 0.129919-141.328535-0.236217-211.969181 0.188973m0.011811 213.764429c-10.051027 0.897624-19.346159 7.417209-23.633495 16.54699-2.999954 5.999908-3.496009 12.956494-2.562953 19.523322 1.582653 10.641569 9.554971 19.972134 19.77135 23.314602 5.267636 1.830681 10.93684 1.559031 16.428881 1.54722h202.059885c8.173103 0.200784 16.41707-2.917278 22.133518-8.810888 11.432895-11.302976 11.539193-31.912895 0.188973-43.310357-5.716448-6.023529-14.078524-9.236078-22.346113-8.97624-70.676078 0.106298-141.375779-0.236217-212.040046 0.165351z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3426 = /* @__PURE__ */ _createElementVNode426(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M793.157093 546.546713c45.105606-4.995986 91.687566 2.917278 132.316863 23.231926 34.664821 17.054856 65.018685 42.743437 87.683691 74.018547 21.554787 29.645213 36.176609 64.298224 42.176517 100.463022 9.720323 57.164475-2.078708 117.813149-33.259331 166.780899-24.094118 38.633264-59.632941 69.967428-100.817347 89.337209-58.380992 27.696424-128.135825 30.02316-188.264822 6.401476-31.759354-12.354141-60.778593-31.641246-84.530196-56.054256-28.275156-28.995617-49.062238-65.254902-59.538454-104.37241-12.247843-45.341822-10.783299-94.309573 4.299146-138.789204 13.251765-39.41278 37.109666-75.152388 68.290289-102.648028 36.507313-32.349896 83.112895-53.148789 131.643644-58.369181m16.641477 100.274048c-3.803091 2.055087-6.649504 5.503852-8.444752 9.377809-11.314787 22.960277-22.676817 45.885121-33.956171 68.857209-23.869712 3.519631-47.751234 6.944775-71.632757 10.405351-5.102284 0.661407-10.547082 1.311003-14.680876 4.688905-9.826621 6.921153-10.499839 22.747682-1.476355 30.625513 18.460346 17.917047 36.838016 35.90496 55.321983 53.786574-4.310957 25.924798-8.928997 51.790542-13.216332 77.715341-1.748005 10.653379 6.791234 21.413057 17.468236 22.393356 6.342422 0.992111 12.082491-2.279493 17.409181-5.196771 21.04692-11.066759 42.08203-22.133518 63.12895-33.188466 22.842168 12.023437 45.696148 24.046874 68.550127 36.070312 7.003829 3.968443 16.381638 3.212549 22.523276-2.055087 5.562907-4.523552 8.243968-12.129735 6.850288-19.157185-4.334579-25.487797-8.751834-50.963783-13.086413-76.45158 18.602076-18.153264 37.251396-36.259285 55.82985-54.436171 5.775502-5.621961 7.511696-14.905283 4.121984-22.216194-2.622007-6.118016-8.515617-10.606136-15.070634-11.621868-25.818501-3.814902-51.672434-7.452641-77.490935-11.302976-11.432895-23.243737-22.913033-46.463852-34.381361-69.683968-4.558985-10.157324-18.259562-14.385606-27.767289-8.610104z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_493 = [\n  _hoisted_2434,\n  _hoisted_3426\n];\nfunction _sfc_render434(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock434(), _createElementBlock434(\"svg\", _hoisted_1435, _hoisted_493);\n}\nvar menu_sjcg_shejichengguo_default = /* @__PURE__ */ export_helper_default(menu_sjcg_shejichengguo_vue_vue_type_script_lang_default, [[\"render\", _sfc_render434], [\"__file\", \"menu-sjcg-shejichengguo.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tongzhigonggao.vue?vue&type=script&lang.ts\nvar menu_tongzhigonggao_vue_vue_type_script_lang_default = {\n  name: \"MenuTongzhigonggao\"\n};\n\n// src/components/menu-tongzhigonggao.vue\nimport { createElementVNode as _createElementVNode427, openBlock as _openBlock435, createElementBlock as _createElementBlock435 } from \"vue\";\nvar _hoisted_1436 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2435 = /* @__PURE__ */ _createElementVNode427(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M533.48933531 66.03156543c-15.92282075-7.63777581-34.95253333-5.30760691-48.67463901 5.95487605L225.13031902 288.4332405H59.81778173c-11.9097521-0.12945383-23.30168889 4.53088395-31.58673383 12.9453827-8.54395259 8.41449876-13.33374419 19.93588939-13.3337442 31.97509532v361.56453926c0.51781531 24.20786569 19.93588939 43.75539358 44.14375506 44.53211653h167.77216l259.81383111 215.67007606c8.15559111 6.73159902 18.38244347 10.35630617 28.9976573 10.35630616 6.73159902 0 13.33374419-1.55344592 19.28862024-4.40143011 15.79336691-7.50832197 25.89076543-23.43114272 26.02021926-40.77795556V106.93897482c-0.12945383-17.47626667-10.22685235-33.26963358-26.02021926-40.77795557h-1.4239921z m174.11539752 225.63802074c-21.61878914-6.47269136-44.79102419 4.14252247-54.11169974 24.725681-9.32067555 20.58315852-2.07126124 44.92047803 16.95845136 56.95968394 47.25064691 28.99765728 74.43595061 81.68536494 70.5523358 136.96214914 0 106.92886124-63.43237531 142.14030222-65.37418272 143.69374814-20.32425086 12.03920592-27.96202667 37.80051753-17.47626667 59.03094519 10.48576 21.23042765 35.59980247 30.68055703 57.47749927 21.87769679 4.78979161-2.58907653 115.47281383-59.80766815 115.47281382-224.60239012 3.75416098-90.48822518-44.14375506-175.15102815-123.49895112-218.64751408z m140.58685631-132.43126519c-20.19479703-9.5795832-44.40266272-2.84798419-56.70077631 15.79336692-12.29811358 18.64135111-9.0617679 43.62593975 7.76722964 58.38367605 4.78979161 3.3657995 120.65096691 82.33263408 120.65096692 278.71408988 0 196.38145581-111.33029136 275.34829037-115.47281384 278.32572839-16.05227457 7.63777581-26.14967309 23.94895803-25.7613116 41.81358617 0.38836148 17.73517431 11.13302914 33.65799506 27.44421136 40.64850174 16.31118222 6.99050667 35.34089482 3.75416098 48.41573136-8.28504495 6.34323753-4.14252247 155.47404642-106.54049975 155.47404642-354.05621728s-154.05005431-347.4540721-160.65219951-351.46714073h-1.16508444z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3427 = [\n  _hoisted_2435\n];\nfunction _sfc_render435(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock435(), _createElementBlock435(\"svg\", _hoisted_1436, _hoisted_3427);\n}\nvar menu_tongzhigonggao_default = /* @__PURE__ */ export_helper_default(menu_tongzhigonggao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render435], [\"__file\", \"menu-tongzhigonggao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tu-shenghe.vue?vue&type=script&lang.ts\nvar menu_tu_shenghe_vue_vue_type_script_lang_default = {\n  name: \"MenuTuShenghe\"\n};\n\n// src/components/menu-tu-shenghe.vue\nimport { createElementVNode as _createElementVNode428, openBlock as _openBlock436, createElementBlock as _createElementBlock436 } from \"vue\";\nvar _hoisted_1437 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2436 = /* @__PURE__ */ _createElementVNode428(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M125.44 906.24h788.48c25.6-2.56 23.04 5.12 23.04-23.04V819.2c0-35.84-7.68-43.52-43.52-43.52h-153.6c-20.48-15.36-23.04-35.84-28.16-40.96-89.6-99.84-38.4-166.4 17.92-258.56 10.24-12.8 20.48-25.6 28.16-40.96 23.04-40.96 35.84-87.04 35.84-138.24C793.6 138.24 665.6 7.68 504.32 7.68c-158.72 0-289.28 128-289.28 289.28 0 66.56 23.04 128 61.44 176.64 61.44 97.28 161.28 176.64 0 302.08h-153.6c-28.16 0-43.52 15.36-43.52 43.52v66.56c0 25.6 17.92 20.48 46.08 20.48z m855.04 43.52H35.84c-12.8 0-23.04 10.24-23.04 23.04v23.04c0 12.8 10.24 23.04 23.04 23.04h942.08c12.8 0 23.04-10.24 23.04-23.04V972.8c0-12.8-10.24-23.04-20.48-23.04z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3428 = [\n  _hoisted_2436\n];\nfunction _sfc_render436(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock436(), _createElementBlock436(\"svg\", _hoisted_1437, _hoisted_3428);\n}\nvar menu_tu_shenghe_default = /* @__PURE__ */ export_helper_default(menu_tu_shenghe_vue_vue_type_script_lang_default, [[\"render\", _sfc_render436], [\"__file\", \"menu-tu-shenghe.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tu-taizhang.vue?vue&type=script&lang.ts\nvar menu_tu_taizhang_vue_vue_type_script_lang_default = {\n  name: \"MenuTuTaizhang\"\n};\n\n// src/components/menu-tu-taizhang.vue\nimport { createElementVNode as _createElementVNode429, openBlock as _openBlock437, createElementBlock as _createElementBlock437 } from \"vue\";\nvar _hoisted_1438 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2437 = /* @__PURE__ */ _createElementVNode429(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M455.72785825 491.55488261h100.54976018a33.5165862 33.5165862 0 0 0 0-67.03317399h-91.56731546l76.0156187-76.04913477a33.5165862 33.5165862 0 1 0-47.42597075-47.39245468L422.21127046 372.16879963l-71.08868047-71.05516283a33.5165862 33.5165862 0 0 0-47.42596917 47.35893705l76.01561872 76.0156187H288.14492406a33.5165862 33.5165862 0 1 0 0 67.03317243h100.54976019v67.03317399h-100.54976019a33.5165862 33.5165862 0 1 0 0 67.03317399h100.54976019v67.03317243a33.5165862 33.5165862 0 0 0 67.033174 0v-67.03317243h100.54976018a33.5165862 33.5165862 0 0 0 0-67.03317399h-100.54976018v-67.03317399zM824.41031126 210.35071939v737.36490763a134.0663464 134.0663464 0 0 0 134.06634796-134.06634641V277.3838934h-67.03317397v-67.03317401h67.03317397a67.03317398 67.03317398 0 0 1 67.03317243 67.03317401v536.26538721a201.1665541 201.1665541 0 0 1-167.58293262 198.31764317V1014.74880099H221.11175006a201.09952038 201.09952038 0 0 1-201.09952039-201.09952038V76.28437298a67.03317398 67.03317398 0 0 1 67.03317398-67.03317397h670.33173519a67.03317398 67.03317398 0 0 1 67.03317242 67.03317397v134.06634641z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3429 = [\n  _hoisted_2437\n];\nfunction _sfc_render437(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock437(), _createElementBlock437(\"svg\", _hoisted_1438, _hoisted_3429);\n}\nvar menu_tu_taizhang_default = /* @__PURE__ */ export_helper_default(menu_tu_taizhang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render437], [\"__file\", \"menu-tu-taizhang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tuzhibiangeng.vue?vue&type=script&lang.ts\nvar menu_tuzhibiangeng_vue_vue_type_script_lang_default = {\n  name: \"MenuTuzhibiangeng\"\n};\n\n// src/components/menu-tuzhibiangeng.vue\nimport { createElementVNode as _createElementVNode430, openBlock as _openBlock438, createElementBlock as _createElementBlock438 } from \"vue\";\nvar _hoisted_1439 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2438 = /* @__PURE__ */ _createElementVNode430(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M854.16391111 3.41333333H106.33671111a68.10737778 68.10737778 0 0 0-68.10737778 68.11875556v880.93582222A68.10737778 68.10737778 0 0 0 106.33671111 1020.58666667h530.90986667a248.0128 248.0128 0 0 1-5.46133333-4.36906667c-78.50666667-64.64853333-109.31768889-177.92568889-74.3992889-273.48764445A254.93048889 254.93048889 0 0 1 649.07946667 622.36444445c41.17617778-29.51395555 92.0576-44.8512 142.56355555-45.03324445a276.65066667 276.65066667 0 0 1 40.96 3.52711111 237.056 237.056 0 0 1 89.63413333 33.66684444V71.53208889A68.10737778 68.10737778 0 0 0 854.16391111 3.41333333zM480.256 656.86186667H139.68497778c-15.28035555 0-26.58986667-12.51555555-27.30666667-27.30666667s12.99342222-27.30666667 27.30666667-27.30666667H480.256c15.26897778 0 26.57848889 12.51555555 27.24977778 27.30666667s-12.99342222 27.30666667-27.24977778 27.30666667z m113.52746667-217.87306667h-0.78506667c-18.34097778 0.44373333-36.75022222 0-55.0912 0h-398.22222222c-15.28035555 0-26.58986667-12.51555555-27.30666667-27.2384s12.99342222-27.24977778 27.30666667-27.24977778h0.78506667c18.34097778-0.44373333 36.75022222 0 55.0912 0h398.22222222c15.26897778 0 26.57848889 12.51555555 27.2384 27.24977778s-12.99342222 27.2384-27.2384 27.2384z m227.04355555-216.4736h-1.20604444c-27.4432 0.53475555-54.95466667 0-82.40924445 0H139.68497778c-15.28035555 0-26.58986667-12.51555555-27.30666667-27.24977778s12.99342222-27.2384 27.30666667-27.2384h1.13777777c27.45457778-0.53475555 54.96604445 0 82.42062223 0h597.58364444c15.26897778 0 26.57848889 12.51555555 27.30666667 27.2384s-13.0048 27.24977778-27.30666667 27.24977778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3430 = /* @__PURE__ */ _createElementVNode430(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M791.64302222 631.83075555A194.12764445 194.12764445 0 1 0 985.77066667 825.9584a194.11626667 194.11626667 0 0 0-194.12764445-194.12764445z m-102.22933333 138.37653334h163.06631111l-38.14968889-38.94613334a17.73795555 17.73795555 0 0 1 0-24.74666666 16.896 16.896 0 0 1 24.23466667 0l67.40195555 68.82417778c10.79751111 11.01368889 3.14026667 29.86666667-12.11733333 29.86666666H689.41368889a17.49902222 17.49902222 0 0 1 0-34.99804444z m204.47004444 111.50222222H730.81742222l38.14968889 38.95751111a17.73795555 17.73795555 0 0 1 0 24.74666667 16.88462222 16.88462222 0 0 1-24.23466666 0l-67.40195556-68.8128c-10.79751111-11.01368889-3.14026667-29.86666667 12.11733333-29.86666667h204.43591111a17.49902222 17.49902222 0 0 1 0 34.98666667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_494 = [\n  _hoisted_2438,\n  _hoisted_3430\n];\nfunction _sfc_render438(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock438(), _createElementBlock438(\"svg\", _hoisted_1439, _hoisted_494);\n}\nvar menu_tuzhibiangeng_default = /* @__PURE__ */ export_helper_default(menu_tuzhibiangeng_vue_vue_type_script_lang_default, [[\"render\", _sfc_render438], [\"__file\", \"menu-tuzhibiangeng.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tuzhichaxun.vue?vue&type=script&lang.ts\nvar menu_tuzhichaxun_vue_vue_type_script_lang_default = {\n  name: \"MenuTuzhichaxun\"\n};\n\n// src/components/menu-tuzhichaxun.vue\nimport { createElementVNode as _createElementVNode431, openBlock as _openBlock439, createElementBlock as _createElementBlock439 } from \"vue\";\nvar _hoisted_1440 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2439 = /* @__PURE__ */ _createElementVNode431(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M718.27911111 773.46133333m-93.52533333 0a93.52533333 93.52533333 0 1 0 187.05066667 0 93.52533333 93.52533333 0 1 0-187.05066667 0Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3431 = /* @__PURE__ */ _createElementVNode431(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M739.21422222 559.67288889c-127.08977778 0-230.74133333 103.08266667-230.74133333 230.74133333 0 127.08977778 103.08266667 230.74133333 230.74133333 230.74133333 127.08977778 0 230.74133333-103.08266667 230.74133333-230.74133333s-103.65155555-230.74133333-230.74133333-230.74133333z m123.56266667 372.39466666l-63.71555556-63.71555555c-21.73155555 18.54577778-49.94844445 29.696-80.78222222 29.696-68.83555555 0-124.70044445-55.86488889-124.70044444-124.70044445s55.86488889-124.70044445 124.70044444-124.70044444 124.70044445 55.86488889 124.70044444 124.70044444c0 26.85155555-8.41955555 51.65511111-22.86933333 72.02133334l64.62577778 64.62577778-21.95911111 22.07288888zM577.64977778 571.73333333l-7.28177778 5.46133334c3.072-1.25155555 5.57511111-3.072 7.28177778-5.46133334z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_495 = /* @__PURE__ */ _createElementVNode431(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M467.39911111 789.84533333c0-85.56088889 40.39111111-163.27111111 103.65155556-212.76444444-3.64088889 1.82044445-7.85066667 2.95822222-12.06044445 2.95822222H266.80888889c-14.44977778 0-26.51022222-12.06044445-26.51022222-26.51022222s12.06044445-26.51022222 26.51022222-26.51022222h291.61244444c14.44977778 0 26.51022222 12.06044445 26.51022222 26.51022222 0 7.28177778-2.95822222 13.312-7.28177777 18.09066666 42.21155555-31.28888889 93.98044445-49.37955555 150.07288889-49.37955555 69.85955555 0 143.36 21.73155555 190.464 66.33244445V44.48711111c0-23.552-18.65955555-42.21155555-42.21155556-42.21155556H114.91555555c-23.552 0-42.21155555 18.65955555-42.21155555 42.21155556v908.62933334c0 23.552 18.65955555 42.21155555 42.21155555 42.21155555h448.28444445c-60.87111111-47.67288889-95.80088889-121.74222222-95.80088889-205.48266667zM266.80888889 199.90755555h454.31466666c14.44977778 0 26.51022222 12.06044445 26.51022223 26.51022223 0 14.44977778-12.06044445 26.51022222-26.51022223 26.51022222H266.80888889c-14.44977778 0-26.51022222-12.06044445-26.51022222-26.51022222 0-14.44977778 12.06044445-26.51022222 26.51022222-26.51022223z m0 163.84h454.31466666c14.44977778 0 26.51022222 12.06044445 26.51022223 26.51022223 0 14.44977778-12.06044445 26.51022222-26.51022223 26.51022222H266.80888889c-14.44977778 0-26.51022222-12.06044445-26.51022222-26.51022222 0-14.44977778 12.06044445-26.51022222 26.51022222-26.51022223z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_536 = [\n  _hoisted_2439,\n  _hoisted_3431,\n  _hoisted_495\n];\nfunction _sfc_render439(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock439(), _createElementBlock439(\"svg\", _hoisted_1440, _hoisted_536);\n}\nvar menu_tuzhichaxun_default = /* @__PURE__ */ export_helper_default(menu_tuzhichaxun_vue_vue_type_script_lang_default, [[\"render\", _sfc_render439], [\"__file\", \"menu-tuzhichaxun.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tuzhifenfaguanli.vue?vue&type=script&lang.ts\nvar menu_tuzhifenfaguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuTuzhifenfaguanli\"\n};\n\n// src/components/menu-tuzhifenfaguanli.vue\nimport { createElementVNode as _createElementVNode432, openBlock as _openBlock440, createElementBlock as _createElementBlock440 } from \"vue\";\nvar _hoisted_1441 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2440 = /* @__PURE__ */ _createElementVNode432(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M157.538462 0h590.76923a157.538462 157.538462 0 0 1 157.538462 157.538462v582.57723a157.538462 157.538462 0 0 1-157.538462 157.538462H157.538462a157.538462 157.538462 0 0 1-157.538462-157.538462V157.538462a157.538462 157.538462 0 0 1 157.538462-157.538462z m276.637538 338.865231h105.314462a51.278769 51.278769 0 0 0 0-102.557539H315.076923a39.384615 39.384615 0 0 0-39.384615 39.384616v224.413538a51.278769 51.278769 0 0 0 102.518154 0v-79.438769L590.769231 654.690462a44.110769 44.110769 0 0 0 65.220923 0.078769 53.169231 53.169231 0 0 0 0.078769-71.601231l-221.892923-244.302769zM857.403077 1023.921231H281.245538a38.4 38.4 0 0 1 0-76.8h576.196924a89.678769 89.678769 0 0 0 89.560615-89.560616V277.110154a38.4 38.4 0 1 1 76.8 0v580.450461a166.557538 166.557538 0 0 1-166.360615 166.360616z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3432 = [\n  _hoisted_2440\n];\nfunction _sfc_render440(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock440(), _createElementBlock440(\"svg\", _hoisted_1441, _hoisted_3432);\n}\nvar menu_tuzhifenfaguanli_default = /* @__PURE__ */ export_helper_default(menu_tuzhifenfaguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render440], [\"__file\", \"menu-tuzhifenfaguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tuzhihuishen.vue?vue&type=script&lang.ts\nvar menu_tuzhihuishen_vue_vue_type_script_lang_default = {\n  name: \"MenuTuzhihuishen\"\n};\n\n// src/components/menu-tuzhihuishen.vue\nimport { createElementVNode as _createElementVNode433, openBlock as _openBlock441, createElementBlock as _createElementBlock441 } from \"vue\";\nvar _hoisted_1442 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2441 = /* @__PURE__ */ _createElementVNode433(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M718.29033718 706.63949275L294.95083615 706.63949275l-0.49152-11.43845927c-0.21481245-5.16399408-0.3155437-10.39473778-0.3155437-15.5769363 0-160.00493037 95.17283555-405.17510637 212.4640711-405.17510636 117.28759467 0 212.49077097 245.17138963 212.49077097 405.17510636 0 5.18219852-0.11529482 10.41294222-0.33374815 15.57086815L718.29033718 706.63949275zM508.4816877 270.13817837c-62.39269925 0-113.16732208-49.72847408-113.16732207-110.85899852 0-61.11474725 50.77462282-110.83715318 113.16732207-110.83715318 62.40119467 0 113.19159467 49.72240592 113.19159467 110.83715318C621.67328237 220.4097043 570.884096 270.13817837 508.4816877 270.13817837zM1008.51772682 706.63949275L759.83287941 706.63949275l0.52186074-12.44577186c0.23058963-5.60090075 0.34588445-11.26855111 0.34588444-16.89979259 0-83.69189925-58.81856-275.67232948-94.8512237-328.40696415l-5.49774222-8.03058726 6.73564444-7.00507022c37.42226963-38.862848 82.28408889-59.40110222 129.74307556-59.40110222 117.29123555 0 212.47620741 245.17138963 212.47620741 405.17510637 0 5.18219852-0.09709037 10.41294222-0.31554371 15.57086815L1008.51772682 706.63949275zM798.70543645 270.13817837c-62.39269925 0-113.17096297-49.72847408-113.17096297-110.85899852 0-61.11474725 50.7782637-110.83715318 113.17096297-110.83715318 62.41697185 0 113.19523555 49.72240592 113.19523555 110.83715318C911.900672 220.4097043 861.1224083 270.13817837 798.70543645 270.13817837zM260.98741097 706.63949275L12.31227259 706.63949275l-0.46360651-11.44452742c-0.23058963-5.15792592-0.33010725-10.38866963-0.33010726-15.57086815 0-160.00493037 95.18739911-405.17510637 212.47863466-405.17510636 47.45534578 0 92.32080592 20.53461333 129.72729837 59.40110221l6.7623443 7.00507022-5.50623763 8.03058727c-36.04115911 52.73463467-94.85729185 244.71506489-94.85729185 328.40696415 0 5.63124148 0.11529482 11.29889185 0.34588444 16.89979258L260.98741097 706.63949275zM222.12092208 270.13817837c-62.40483555 0-113.19523555-49.72847408-113.19523556-110.85899852 0-61.11474725 50.7904-110.83715318 113.19523556-110.83715318s113.16489482 49.72240592 113.16489481 110.83715318C335.28581689 220.4097043 284.52818489 270.13817837 222.12092208 270.13817837zM11.51734518 743.76442311l998.899712 0 0 231.79112297L11.51734518 975.55554608 11.51734518 743.76442311z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3433 = [\n  _hoisted_2441\n];\nfunction _sfc_render441(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock441(), _createElementBlock441(\"svg\", _hoisted_1442, _hoisted_3433);\n}\nvar menu_tuzhihuishen_default = /* @__PURE__ */ export_helper_default(menu_tuzhihuishen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render441], [\"__file\", \"menu-tuzhihuishen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tuzhijiaodi.vue?vue&type=script&lang.ts\nvar menu_tuzhijiaodi_vue_vue_type_script_lang_default = {\n  name: \"MenuTuzhijiaodi\"\n};\n\n// src/components/menu-tuzhijiaodi.vue\nimport { createElementVNode as _createElementVNode434, openBlock as _openBlock442, createElementBlock as _createElementBlock442 } from \"vue\";\nvar _hoisted_1443 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2442 = /* @__PURE__ */ _createElementVNode434(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M953.45777778 174.08H614.4a65.99111111 65.99111111 0 0 1-65.99111111-65.99111111 68.26666667 68.26666667 0 0 0-68.26666667-68.26666667H70.54222222a68.26666667 68.26666667 0 0 0-68.26666667 68.26666667v808.96a68.26666667 68.26666667 0 0 0 68.26666667 68.26666666h882.91555556a68.26666667 68.26666667 0 0 0 68.26666667-68.26666666V242.34666667a68.26666667 68.26666667 0 0 0-68.26666667-68.26666667zM283.22702222 475.9552L263.75964445 376.60444445a36.40888889 36.40888889 0 0 1 28.74026666-42.72355556 36.40888889 36.40888889 0 0 1 42.72355556 28.72888889l2.7648 14.11982222A218.15751111 218.15751111 0 0 1 516.3008 284.44444445c104.18631111 0 189.91786667 73.95555555 211.62666667 171.69066666a36.40888889 36.40888889 0 0 1 2.27555555 11.30951111V468.76444445a36.40888889 36.40888889 0 0 1-72.81777777 0v-1.13777778c-16.21333333-62.74844445-73.35253333-110.36444445-141.08444445-110.36444445a145.54453333 145.54453333 0 0 0-116.54257778 58.37937778l18.38648889-3.97084445a36.40888889 36.40888889 0 0 1 43.23555556 27.89831112 36.40888889 36.40888889 0 0 1-27.89831112 43.23555555l-98.98666666 21.39022223a36.06755555 36.06755555 0 0 1-10.24 0.72817777 36.40888889 36.40888889 0 0 1-41.02826667-28.96782222z m448.28444445 288.14222222a36.40888889 36.40888889 0 0 1-42.72355556-28.72888889l-2.7648-14.11982222A218.15751111 218.15751111 0 0 1 507.6992 813.51111111c-104.18631111 0-189.91786667-73.95555555-211.62666667-171.69066666a36.40888889 36.40888889 0 0 1-2.21866666-11.30951112V630.32888889v-1.13777778a36.40888889 36.40888889 0 0 1 72.81777778 0v1.13777778c16.21333333 62.74844445 73.35253333 110.36444445 141.08444444 110.36444444a145.54453333 145.54453333 0 0 0 116.54257778-58.37937778l-18.38648889 3.97084445a36.40888889 36.40888889 0 0 1-43.23555556-27.89831111 36.40888889 36.40888889 0 0 1 27.89831111-43.23555556l98.98666667-21.39022222a36.06755555 36.06755555 0 0 1 10.24-0.72817778 36.40888889 36.40888889 0 0 1 41.07377778 29.01333334L760.24035555 721.35111111a36.40888889 36.40888889 0 0 1-28.74026666 42.74631111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3434 = [\n  _hoisted_2442\n];\nfunction _sfc_render442(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock442(), _createElementBlock442(\"svg\", _hoisted_1443, _hoisted_3434);\n}\nvar menu_tuzhijiaodi_default = /* @__PURE__ */ export_helper_default(menu_tuzhijiaodi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render442], [\"__file\", \"menu-tuzhijiaodi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tuzhimulu.vue?vue&type=script&lang.ts\nvar menu_tuzhimulu_vue_vue_type_script_lang_default = {\n  name: \"MenuTuzhimulu\"\n};\n\n// src/components/menu-tuzhimulu.vue\nimport { createElementVNode as _createElementVNode435, openBlock as _openBlock443, createElementBlock as _createElementBlock443 } from \"vue\";\nvar _hoisted_1444 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2443 = /* @__PURE__ */ _createElementVNode435(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M585.142857 0l438.857143 438.857143v585.142857H0V0h585.142857z m292.571429 658.285714H146.285714v146.285715h731.428572V658.285714zM585.142857 365.714286H146.285714v146.285714h438.857143V365.714286z m438.857143-365.714286v292.571429l-292.571429-292.571429h292.571429z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3435 = [\n  _hoisted_2443\n];\nfunction _sfc_render443(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock443(), _createElementBlock443(\"svg\", _hoisted_1444, _hoisted_3435);\n}\nvar menu_tuzhimulu_default = /* @__PURE__ */ export_helper_default(menu_tuzhimulu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render443], [\"__file\", \"menu-tuzhimulu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tuzhishencha.vue?vue&type=script&lang.ts\nvar menu_tuzhishencha_vue_vue_type_script_lang_default = {\n  name: \"MenuTuzhishencha\"\n};\n\n// src/components/menu-tuzhishencha.vue\nimport { createElementVNode as _createElementVNode436, openBlock as _openBlock444, createElementBlock as _createElementBlock444 } from \"vue\";\nvar _hoisted_1445 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2444 = /* @__PURE__ */ _createElementVNode436(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M984.74666667 948.33777778h-946.63111112c-20.02488889 0-36.40888889 16.384-36.40888888 36.40888889s16.384 36.40888889 36.40888888 36.40888888h946.63111112c20.02488889 0 36.40888889-16.384 36.40888888-36.40888888s-16.384-36.40888889-36.40888888-36.40888889zM912.49777778 621.22666667H704.30151111c-35.04128-47.41347555-60.56732445-94.92024889-78.79907556-135.85408C709.29066667 443.62296889 766.86222222 357.11089778 766.86222222 257.13777778c0-140.75676445-114.10545778-254.86222222-254.86222222-254.86222223S257.13777778 116.38101333 257.13777778 257.13777778c0 99.97312 57.57155555 186.48519111 141.35978667 228.23480889-18.23175111 40.93383111-43.75779555 88.44060445-78.79907556 135.85408H111.50222222c-60.07466667 0-109.22666667 49.152-109.22666667 109.22666666v109.22666667c0 20.02488889 16.384 36.40888889 36.4088889 36.40888889h946.6311111c20.02488889 0 36.40888889-16.384 36.4088889-36.40888889v-109.22666667c0-60.07466667-49.152-109.22666667-109.22666667-109.22666666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3436 = [\n  _hoisted_2444\n];\nfunction _sfc_render444(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock444(), _createElementBlock444(\"svg\", _hoisted_1445, _hoisted_3436);\n}\nvar menu_tuzhishencha_default = /* @__PURE__ */ export_helper_default(menu_tuzhishencha_vue_vue_type_script_lang_default, [[\"render\", _sfc_render444], [\"__file\", \"menu-tuzhishencha.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tz-mulu.vue?vue&type=script&lang.ts\nvar menu_tz_mulu_vue_vue_type_script_lang_default = {\n  name: \"MenuTzMulu\"\n};\n\n// src/components/menu-tz-mulu.vue\nimport { createElementVNode as _createElementVNode437, openBlock as _openBlock445, createElementBlock as _createElementBlock445 } from \"vue\";\nvar _hoisted_1446 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  version: \"1.1\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2445 = /* @__PURE__ */ _createElementVNode437(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M900.36148148-5.81530905a77.6722963 77.6722963 0 0 1 77.6722963 77.6722963v880.2860255a77.6722963 77.6722963 0 0 1-77.6722963 77.6722963H123.63851852a77.6722963 77.6722963 0 0 1-77.6722963-77.6722963V71.85698725a77.6722963 77.6722963 0 0 1 77.6722963-77.6722963h776.72296296z m-168.28997571 699.05066667h-310.68918518a38.83614815 38.83614815 0 0 0-3.72827023 77.49106135L421.38232059 770.90765392h310.68918518a38.83614815 38.83614815 0 0 0 0-77.6722963z m-440.14301154 0a38.83614815 38.83614815 0 1 0 0 77.6722963 38.83614815 38.83614815 0 0 0 0-77.6722963z m440.14301154-207.12612264h-310.68918518a38.83614815 38.83614815 0 0 0-3.72827023 77.49106012L421.38232059 563.78153127h310.68918518a38.83614815 38.83614815 0 0 0 0-77.67229629z m-440.14301154 0a38.83614815 38.83614815 0 1 0 0 77.67229629 38.83614815 38.83614815 0 0 0 0-77.67229629z m440.14301154-233.0168889h-310.68918518a38.83614815 38.83614815 0 0 0-3.72827023 77.49106014L421.38232059 330.76464238h310.68918518a38.83614815 38.83614815 0 0 0 0-77.6722963z m-440.14301154 0a38.83614815 38.83614815 0 1 0 0 77.6722963 38.83614815 38.83614815 0 0 0 0-77.6722963z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3437 = [\n  _hoisted_2445\n];\nfunction _sfc_render445(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock445(), _createElementBlock445(\"svg\", _hoisted_1446, _hoisted_3437);\n}\nvar menu_tz_mulu_default = /* @__PURE__ */ export_helper_default(menu_tz_mulu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render445], [\"__file\", \"menu-tz-mulu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tz-tuchengguangli2.vue?vue&type=script&lang.ts\nvar menu_tz_tuchengguangli2_vue_vue_type_script_lang_default = {\n  name: \"MenuTzTuchengguangli2\"\n};\n\n// src/components/menu-tz-tuchengguangli2.vue\nimport { createElementVNode as _createElementVNode438, openBlock as _openBlock446, createElementBlock as _createElementBlock446 } from \"vue\";\nvar _hoisted_1447 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2446 = /* @__PURE__ */ _createElementVNode438(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M896.32252208 865.71963733h-701.12192791a35.63863861 35.63863861 0 0 1-35.81987398-35.45740325V136.28615743a35.66452939 35.66452939 0 0 1 0.64726914-6.69276286v-28.13031665H50.75601383a35.63863861 35.63863861 0 0 0-35.85871013 35.45740326v836.94488335a35.63863861 35.63863861 0 0 0 35.83281936 35.45740328h845.59239902a35.63863861 35.63863861 0 0 0 35.83281935-35.45740328v-109.60855544h-25.65774854a36.13056317 36.13056317 0 0 1-10.17507081 1.46282824z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3438 = /* @__PURE__ */ _createElementVNode438(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M199.51140661 15.0526483m38.83614815 0l731.81543033 0q38.83614815 0 38.83614815 38.83614815l0 731.81543031q0 38.83614815-38.83614815 38.83614815l-731.81543033 0q-38.83614815 0-38.83614815-38.83614815l0-731.81543031q0-38.83614815 38.83614815-38.83614815Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_496 = [\n  _hoisted_2446,\n  _hoisted_3438\n];\nfunction _sfc_render446(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock446(), _createElementBlock446(\"svg\", _hoisted_1447, _hoisted_496);\n}\nvar menu_tz_tuchengguangli2_default = /* @__PURE__ */ export_helper_default(menu_tz_tuchengguangli2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render446], [\"__file\", \"menu-tz-tuchengguangli2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-tz-tuzhiguangli.vue?vue&type=script&lang.ts\nvar menu_tz_tuzhiguangli_vue_vue_type_script_lang_default = {\n  name: \"MenuTzTuzhiguangli\"\n};\n\n// src/components/menu-tz-tuzhiguangli.vue\nimport { createElementVNode as _createElementVNode439, openBlock as _openBlock447, createElementBlock as _createElementBlock447 } from \"vue\";\nvar _hoisted_1448 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2447 = /* @__PURE__ */ _createElementVNode439(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M159.40566357 335.70283179v509.2271525h235.17655723V727.39853881h-39.21503687v-39.1013706h156.5191498V727.39853881h-38.98770432v117.53144548h234.94922353V727.39853881h-39.21503687v-39.1013706h156.74648235V727.39853881h-39.1013706v117.53144548h234.94922468v-509.2271525z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3439 = /* @__PURE__ */ _createElementVNode439(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M942.91074389 257.38642432H81.08925611v509.22715136h39.21503687V296.60146119h822.60645091z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_497 = /* @__PURE__ */ _createElementVNode439(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M864.59433643 179.07001571H2.7728475v509.2271525H41.98788551V218.28505373h822.60645092z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_537 = [\n  _hoisted_2447,\n  _hoisted_3439,\n  _hoisted_497\n];\nfunction _sfc_render447(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock447(), _createElementBlock447(\"svg\", _hoisted_1448, _hoisted_537);\n}\nvar menu_tz_tuzhiguangli_default = /* @__PURE__ */ export_helper_default(menu_tz_tuzhiguangli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render447], [\"__file\", \"menu-tz-tuzhiguangli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wd-anquan.vue?vue&type=script&lang.ts\nvar menu_wd_anquan_vue_vue_type_script_lang_default = {\n  name: \"MenuWdAnquan\"\n};\n\n// src/components/menu-wd-anquan.vue\nimport { createElementVNode as _createElementVNode440, openBlock as _openBlock448, createElementBlock as _createElementBlock448 } from \"vue\";\nvar _hoisted_1449 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2448 = /* @__PURE__ */ _createElementVNode440(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M848.457143 128c0 0-58.51428601 0-153.6-36.571429-102.4-36.571429-164.571429-76.8-164.57142901-76.8L501.028571 0 475.428571 14.628571c0 0-65.828571 40.228571-164.57142899 76.8-98.742857 32.91428599-153.6 36.571429-153.6 36.571429L109.71428599 131.657143l2e-8 504.685714C109.71428599 822.857143 457.142857 1024 501.028571 1024c40.228571 0 391.31428599-201.142857 391.314286-387.657143l0-504.685714L848.457143 128zM475.428571 709.48571401l-182.857143-168.22857101 54.857143-69.485714 117.02857099 106.057143 219.42857101-274.28571401 65.828571 62.17142901L475.428571 709.48571401 475.428571 709.48571401z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3440 = [\n  _hoisted_2448\n];\nfunction _sfc_render448(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock448(), _createElementBlock448(\"svg\", _hoisted_1449, _hoisted_3440);\n}\nvar menu_wd_anquan_default = /* @__PURE__ */ export_helper_default(menu_wd_anquan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render448], [\"__file\", \"menu-wd-anquan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wd-bim.vue?vue&type=script&lang.ts\nvar menu_wd_bim_vue_vue_type_script_lang_default = {\n  name: \"MenuWdBim\"\n};\n\n// src/components/menu-wd-bim.vue\nimport { createElementVNode as _createElementVNode441, openBlock as _openBlock449, createElementBlock as _createElementBlock449 } from \"vue\";\nvar _hoisted_1450 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2449 = /* @__PURE__ */ _createElementVNode441(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512-0.78279111l436.90666667 182.04444444 36.40888888 15.14609778v631.11168l-436.90666666 182.04444444-36.40888889 15.14609778-36.40888889-15.21891555-436.90666666-181.97162667V196.40775111l36.40888888-15.21891556L512-0.78279111zM111.50222222 275.34222222v503.60775111l364.08888889 151.75224889V427.02165333l-364.08888889-151.67943111zM512 78.07886222L169.75644445 220.72888889 512 363.30609778 854.17073778 220.72888889 512 78.07886222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3441 = [\n  _hoisted_2449\n];\nfunction _sfc_render449(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock449(), _createElementBlock449(\"svg\", _hoisted_1450, _hoisted_3441);\n}\nvar menu_wd_bim_default = /* @__PURE__ */ export_helper_default(menu_wd_bim_vue_vue_type_script_lang_default, [[\"render\", _sfc_render449], [\"__file\", \"menu-wd-bim.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wd-caigou.vue?vue&type=script&lang.ts\nvar menu_wd_caigou_vue_vue_type_script_lang_default = {\n  name: \"MenuWdCaigou\"\n};\n\n// src/components/menu-wd-caigou.vue\nimport { createElementVNode as _createElementVNode442, openBlock as _openBlock450, createElementBlock as _createElementBlock450 } from \"vue\";\nvar _hoisted_1451 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2450 = /* @__PURE__ */ _createElementVNode442(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M298.815635 298.666667a36.266667 36.266667 0 0 0 47.36-21.333334l99.413334-207.36a50.773333 50.773333 0 0 0-15.36-64.426666L424.255635 2.56a37.12 37.12 0 0 0-47.786666 20.906667L277.055635 230.4a52.48 52.48 0 0 0 14.506667 64.853333zM975.082302 358.826667H51.348969A56.746667 56.746667 0 0 0 0.148969 418.986667a56.32 56.32 0 0 0 51.2 60.16h25.6l128 483.413333A56.32 56.32 0 0 0 256.148969 1024h512a55.893333 55.893333 0 0 0 51.626666-60.586667l128-483.413333h25.173334A55.893333 55.893333 0 0 0 1024.148969 418.986667a55.04 55.04 0 0 0-49.066667-60.16zM640.148969 758.613333a22.613333 22.613333 0 0 1-23.04 21.76h-77.653334v42.666667a25.6 25.6 0 0 1-51.2 0v-42.666667H406.335635a21.76 21.76 0 1 1 0-42.666666h81.92v-25.6H406.335635a21.76 21.76 0 1 1 0-42.666667H469.482302l-71.68-98.986667a21.333333 21.333333 0 0 1 0-31.146666 24.32 24.32 0 0 1 32.426667 0 20.053333 20.053333 0 0 1 3.84 5.12L512.148969 650.24l76.8-104.96a24.32 24.32 0 0 1 32.426666 0 21.76 21.76 0 0 1 5.12 26.026667L554.815635 667.733333h64a21.76 21.76 0 1 1 0 42.666667h-79.36v25.6h79.786667a21.76 21.76 0 0 1 22.613333 21.333333zM680.255635 278.186667l3.84 6.826666a36.266667 36.266667 0 0 0 50.773334 9.386667 52.053333 52.053333 0 0 0 14.506666-64.853333L648.682302 23.466667a26.026667 26.026667 0 0 0-2.986667-5.973334 37.973333 37.973333 0 0 0-52.053333-11.52 52.053333 52.053333 0 0 0-14.506667 65.28z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3442 = [\n  _hoisted_2450\n];\nfunction _sfc_render450(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock450(), _createElementBlock450(\"svg\", _hoisted_1451, _hoisted_3442);\n}\nvar menu_wd_caigou_default = /* @__PURE__ */ export_helper_default(menu_wd_caigou_vue_vue_type_script_lang_default, [[\"render\", _sfc_render450], [\"__file\", \"menu-wd-caigou.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wd-dangjian.vue?vue&type=script&lang.ts\nvar menu_wd_dangjian_vue_vue_type_script_lang_default = {\n  name: \"MenuWdDangjian\"\n};\n\n// src/components/menu-wd-dangjian.vue\nimport { createElementVNode as _createElementVNode443, openBlock as _openBlock451, createElementBlock as _createElementBlock451 } from \"vue\";\nvar _hoisted_1452 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2451 = /* @__PURE__ */ _createElementVNode443(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M964.01821062 197.81168951L824.96308956 40.47842852c-14.60802165-16.47606885-34.7761991-23.79094668-56.69832315-21.96817723L107.74672915 18.51025129c-18.28771173 1.82328595-36.60983488 9.16093213-58.54385961 25.61500805-16.44295069 9.16041431-27.46054585 32.92936938-32.91901955 65.85951417l0 805.03214985c3.64683082 56.74256658 32.91901954 87.82769141 91.46287916 91.47322899l823.32063831 0c43.92497163-3.64553758 67.71540049-27.43855293 73.18474053-73.17439199L1004.25210799 274.65490396C1004.2523669 243.54830402 991.44512177 219.75735734 964.01821062 197.81168951zM693.24406121 292.93174933l201.22459661 0 0 91.47400573-201.22459661 0L693.24406121 292.93174933zM327.30379876 258.20082671c0-45.75912394 16.45330052-86.00363005 47.59353516-117.11022997 32.9301448-32.9301448 71.33997949-49.40543694 117.07788852-49.40543694 45.72574815 0 84.16792428 16.47529214 117.10971217 49.40543694 31.08409051 31.10659994 47.54980953 69.52833661 47.54980953 117.11022997 0 45.71539831-16.46571902 84.13687607-47.54980953 115.26495111-31.13971811 32.90815318-71.38396402 47.56067718-117.10971217 49.38422205-45.73790774-1.82328595-84.14800133-16.47606885-117.07788852-49.38422205C343.75709798 342.337963 327.30379876 302.09216364 327.30379876 258.20082671zM894.46865782 567.39826625l0 54.87426047-786.72192867 0 0-54.87426047L894.46865782 567.39826625zM290.72759857 292.93174933l0 91.47400573-201.26858115 0 0-91.47400573L290.72759857 292.93174933zM894.46865782 732.0471805l0 109.79405891-786.72192867 0 0-109.79405891L894.46865782 732.0471805zM523.06992039 217.95658081l-31.09444034-87.82769142-32.94178788 87.82769142-93.30815803 1.80077653 75.01992848 58.54385962-25.62484008 91.49651516 76.85485751-54.89754664 76.84321445 54.89754664-25.6157848-91.49651516 75.01009647-58.54385962L523.06992039 217.95658081z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3443 = [\n  _hoisted_2451\n];\nfunction _sfc_render451(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock451(), _createElementBlock451(\"svg\", _hoisted_1452, _hoisted_3443);\n}\nvar menu_wd_dangjian_default = /* @__PURE__ */ export_helper_default(menu_wd_dangjian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render451], [\"__file\", \"menu-wd-dangjian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wd-gongwen.vue?vue&type=script&lang.ts\nvar menu_wd_gongwen_vue_vue_type_script_lang_default = {\n  name: \"MenuWdGongwen\"\n};\n\n// src/components/menu-wd-gongwen.vue\nimport { createElementVNode as _createElementVNode444, openBlock as _openBlock452, createElementBlock as _createElementBlock452 } from \"vue\";\nvar _hoisted_1453 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2452 = /* @__PURE__ */ _createElementVNode444(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M898.67858173 97.74775309h-110.42411456c0-30.42164939-24.85513482-55.27678419-55.2767842-55.2767842-30.42164939 0-55.27678419 24.85513482-55.27678421 55.2767842H346.29910124c0-30.42164939-24.85513482-55.27678419-55.27678421-55.2767842-30.42164939 0-55.27678419 24.85513482-55.2767842 55.2767842h-110.42411456c-60.71384494 0-110.42411457 49.71026963-110.42411457 110.42411456v662.80359507c0 60.71384494 49.71026963 110.42411457 110.42411457 110.42411456h773.22770963c60.71384494 0 110.42411457-49.71026963 110.42411457-110.42411456v-662.80359507c0.12945383-60.71384494-49.58081581-110.42411457-110.29466074-110.42411456zM782.55849876 603.13549431l-115.73172148 117.80298272c-4.66033778 3.62470717-6.47269136 10.09739852-5.56651456 15.6639131l28.86820345 173.0797669c1.81235358 11.9097521-11.13302914 20.19479703-21.48933531 14.7577363l-147.44790913-80.13191902c-5.56651457-3.62470717-13.07483653-3.62470717-18.64135112 0l-147.44790913 80.13191902c-10.22685235 5.56651457-23.30168889-2.71853037-21.48933531-14.7577363l28.86820346-173.0797669c0.9061768-5.56651457-0.9061768-11.9097521-5.56651457-15.6639131l-115.73172148-117.80298272c-11.13302914-11.00357531-4.66033778-28.47984197 10.22685234-31.32782616l158.58093827-23.94895802c6.47269136-0.9061768 12.16865975-4.66033778 13.98101334-10.09739852l74.56540444-155.60350025c4.66033778-11.00357531 21.48933531-11.00357531 26.14967309 0l74.69485827 155.60350025c1.81235358 5.56651457 7.50832197 9.19122173 13.98101334 10.09739852l158.58093827 23.94895802c15.27555161 2.84798419 21.74824297 20.32425086 10.61521382 31.32782616z m60.84329877-284.41005826H180.59820247c-30.42164939 0-55.27678419-24.85513482-55.2767842-55.2767842s24.85513482-55.27678419 55.2767842-55.2767842h55.2767842c0 30.42164939 24.85513482 55.27678419 55.27678419 55.2767842 30.42164939 0 55.27678419-24.85513482 55.2767842-55.2767842h331.40179753c0 30.42164939 24.85513482 55.27678419 55.27678421 55.2767842 30.42164939 0 55.27678419-24.85513482 55.27678418-55.2767842H843.40179753c30.42164939 0 55.27678419 24.85513482 55.2767842 55.2767842s-24.85513482 55.27678419-55.2767842 55.2767842z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3444 = [\n  _hoisted_2452\n];\nfunction _sfc_render452(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock452(), _createElementBlock452(\"svg\", _hoisted_1453, _hoisted_3444);\n}\nvar menu_wd_gongwen_default = /* @__PURE__ */ export_helper_default(menu_wd_gongwen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render452], [\"__file\", \"menu-wd-gongwen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wd-shangjiwenjian.vue?vue&type=script&lang.ts\nvar menu_wd_shangjiwenjian_vue_vue_type_script_lang_default = {\n  name: \"MenuWdShangjiwenjian\"\n};\n\n// src/components/menu-wd-shangjiwenjian.vue\nimport { createElementVNode as _createElementVNode445, openBlock as _openBlock453, createElementBlock as _createElementBlock453 } from \"vue\";\nvar _hoisted_1454 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2453 = /* @__PURE__ */ _createElementVNode445(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M874.47071645 20.07545719a51.78153127 51.78153127 0 0 1 51.78153006 51.78153006v880.2860255a51.78153127 51.78153127 0 0 1-51.78153006 51.78153006H149.52928355a51.78153127 51.78153127 0 0 1-51.78153006-51.78153006v-880.2860255a51.78153127 51.78153127 0 0 1 51.78153006-51.78153006h724.9414329zM324.39551408 232.06904415c-52.09222045 0-94.96732801 45.3088391-94.967328 100.30082487 0 39.30218192 20.03945245 72.90839586 50.07274075 89.0642335l6.57625361 3.2104545v174.71088596a102.00961539 102.00961539 0 0 0-56.64899436 92.274688c0 54.99198578 42.87510755 100.30082489 94.967328 100.30082487 52.04043852 0 94.91554608-45.3088391 94.91554608-100.30082487 0-39.30218192-19.98767051-72.90839586-50.07274075-89.0642335l-6.57625482-3.2104545V432.77425778c0-3.26223645-1.55344592-6.47269095 0-8.07791881A102.00961539 102.00961539 0 0 0 419.31106016 332.31808831c0-54.99198578-42.87510755-100.30082489-94.91554608-100.30082609z m0 419.06792887c21.43755378 0 38.31833244 17.81284622 38.31833244 40.49315796 0 22.62852859-16.88077866 40.44137601-38.31833244 40.44137479s-38.31833244-17.81284622-38.31833364-40.44137479c0-22.68031052 16.88077866-40.44137601 38.31833364-40.44137601z m433.3596314 0H529.6057209a38.83614815 38.83614815 0 0 0-26.04611084 11.3919372 40.18246755 40.18246755 0 0 0-10.71877689 27.44421095c0 20.81617541 14.13635792 37.48982875 33.03661751 40.13068683l5.22993421 0.36247111h226.64776059a38.83614815 38.83614815 0 0 0 26.04610962-11.34015525 35.36678517 35.36678517 0 0 0 12.22044209-27.49599288c0-22.68031052-16.82899794-40.44137601-38.26655171-40.44137601z m0-179.57834903h-151.61632237a38.83614815 38.83614815 0 0 0-25.99432889 11.34015526 40.18246755 40.18246755 0 0 0-10.7187769 27.44421216c0 20.81617541 14.13635792 37.48982875 32.98483557 40.13068561l5.28171614 0.36247113h150.06287645a38.83614815 38.83614815 0 0 0 26.04610962-11.34015526 35.36678517 35.36678517 0 0 0 12.22044209-27.49599289c0-22.68031052-16.82899794-40.44137601-38.26655171-40.44137601zM324.34373215 293.48194016c21.48933571 0 38.31833244 17.81284622 38.31833244 40.49315673 0 22.62852859-16.82899794 40.38959408-38.31833244 40.38959408-21.38577184 0-38.26655171-17.76106549-38.26655171-40.38959408 0-22.68031052 16.88077866-40.49315673 38.31833364-40.49315673z m433.41141333 0H529.6057209a38.83614815 38.83614815 0 0 0-26.04611084 11.34015525 40.18246755 40.18246755 0 0 0-10.71877689 27.4959929c0 20.76439347 14.13635792 37.48982875 33.03661751 40.07890488l5.22993421 0.41425184h226.64776059a38.83614815 38.83614815 0 0 0 26.04610962-11.39193719 40.90740978 40.90740978 0 0 0 12.22044209-27.44421095c0-22.68031052-16.82899794-40.49315673-38.26655171-40.49315673z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3445 = [\n  _hoisted_2453\n];\nfunction _sfc_render453(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock453(), _createElementBlock453(\"svg\", _hoisted_1454, _hoisted_3445);\n}\nvar menu_wd_shangjiwenjian_default = /* @__PURE__ */ export_helper_default(menu_wd_shangjiwenjian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render453], [\"__file\", \"menu-wd-shangjiwenjian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wd-sheji.vue?vue&type=script&lang.ts\nvar menu_wd_sheji_vue_vue_type_script_lang_default = {\n  name: \"MenuWdSheji\"\n};\n\n// src/components/menu-wd-sheji.vue\nimport { createElementVNode as _createElementVNode446, openBlock as _openBlock454, createElementBlock as _createElementBlock454 } from \"vue\";\nvar _hoisted_1455 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2454 = /* @__PURE__ */ _createElementVNode446(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M855.89333333 656.10666667c-4.16 0-8 0.74666667-12.05333333 1.17333333v-107.73333333H634.24c-11.30666667 0-20.48-9.17333333-20.48-20.48s9.17333333-20.48 20.48-20.48h209.70666667v-234.66666667H465.38666667v83.52c0 11.30666667-9.17333333 20.48-20.48 20.48s-20.48-9.17333333-20.48-20.48v-83.52H303.57333333c-13.86666667-61.33333333-68.69333333-107.2-134.08-107.2-75.84 0-137.6 61.65333333-137.6 137.6v416.42666667c0 75.84 61.76 137.6 137.6 137.6 0.32 0 0.74666667 0 1.06666667-0.10666667h254.18666667c0-0.42666667-0.21333333-0.74666667-0.21333334-1.17333333V725.54666667c0-11.30666667 9.17333333-20.48 20.48-20.48s20.48 9.17333333 20.48 20.48v131.52c0 0.42666667-0.21333333 0.74666667-0.21333333 1.17333333h378.77333333v-1.17333333c3.94666667 0.53333333 7.89333333 1.17333333 12.05333334 1.17333333 55.78666667 0 101.01333333-45.22666667 101.01333333-101.01333333-0.21333333-55.89333333-45.44-101.12-101.22666667-101.12zM169.38666667 796.37333333c-41.92 0-76.05333333-34.02666667-76.16-75.94666666 0.10666667-41.92 34.24-75.94666667 76.16-75.94666667s76.05333333 34.02666667 76.16 75.94666667c0 41.92-34.13333333 75.94666667-76.16 75.94666666z m0-568.42666666c42.02666667 0 76.16 34.13333333 76.16 76.16v301.97333333c-21.86666667-14.61333333-48-23.14666667-76.16-23.14666667s-54.4 8.53333333-76.16 23.14666667v-301.86666667c0-42.02666667 34.24-76.26666667 76.16-76.26666666zM507.94666667 571.73333333c0 11.30666667-9.17333333 20.48-20.48 20.48h-85.22666667c-11.30666667 0-20.48-9.17333333-20.48-20.48v-85.22666666c0-11.30666667 9.17333333-20.48 20.48-20.48H487.46666667c11.30666667 0 20.48 9.17333333 20.48 20.48V571.73333333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3446 = /* @__PURE__ */ _createElementVNode446(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M878.08 167.78666667v462.4c59.30666667 3.41333333 114.13333333 48.85333333 114.13333333 111.89333333V281.92c0.10666667-63.04-50.98666667-114.13333333-114.13333333-114.13333333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_498 = [\n  _hoisted_2454,\n  _hoisted_3446\n];\nfunction _sfc_render454(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock454(), _createElementBlock454(\"svg\", _hoisted_1455, _hoisted_498);\n}\nvar menu_wd_sheji_default = /* @__PURE__ */ export_helper_default(menu_wd_sheji_vue_vue_type_script_lang_default, [[\"render\", _sfc_render454], [\"__file\", \"menu-wd-sheji.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wd-wendang.vue?vue&type=script&lang.ts\nvar menu_wd_wendang_vue_vue_type_script_lang_default = {\n  name: \"MenuWdWendang\"\n};\n\n// src/components/menu-wd-wendang.vue\nimport { createElementVNode as _createElementVNode447, openBlock as _openBlock455, createElementBlock as _createElementBlock455 } from \"vue\";\nvar _hoisted_1456 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2455 = /* @__PURE__ */ _createElementVNode447(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M629.76 849.92v151.04l220.16-184.32H665.6c-17.92 0-35.84 15.36-35.84 33.28z m184.32-742.4H125.44c-17.92 0-33.28 20.48-33.28 38.4v824.32c0 17.92 12.8 30.72 30.72 30.72h473.6v-184.32c0-17.92 17.92-35.84 33.28-35.84h220.16v-640c0-15.36-17.92-35.84-35.84-33.28z m-563.2 624.64c-23.04 0-40.96-17.92-40.96-40.96 0-23.04 17.92-40.96 40.96-40.96s40.96 17.92 40.96 40.96c0 20.48-17.92 40.96-40.96 40.96z m0-186.88c-23.04 0-40.96-17.92-40.96-40.96 0-23.04 17.92-40.96 40.96-40.96s40.96 17.92 40.96 40.96c0 23.04-17.92 40.96-40.96 40.96z m0-184.32c-23.04 0-40.96-17.92-40.96-40.96 0-23.04 17.92-40.96 40.96-40.96s40.96 17.92 40.96 40.96c0 20.48-17.92 40.96-40.96 40.96z m445.44 335.36c0 10.24-7.68 17.92-17.92 17.92H376.32c-10.24 0-17.92-7.68-17.92-17.92v-17.92c0-10.24 7.68-17.92 17.92-17.92h302.08c10.24 0 17.92 7.68 17.92 17.92v17.92z m0-184.32c0 10.24-7.68 17.92-17.92 17.92H376.32c-10.24 0-17.92-7.68-17.92-17.92v-17.92c0-10.24 7.68-17.92 17.92-17.92h302.08c10.24 0 17.92 7.68 17.92 17.92v17.92z m0-184.32c0 10.24-7.68 17.92-17.92 17.92H376.32c-10.24 0-17.92-7.68-17.92-17.92v-17.92c0-10.24 7.68-17.92 17.92-17.92h302.08c10.24 0 17.92 7.68 17.92 17.92v17.92zM903.68 23.04H202.24c-25.6 0-43.52 25.6-43.52 51.2h691.2c17.92 0 33.28 17.92 33.28 33.28v624.64c25.6 0 51.2-15.36 51.2-40.96V53.76c-2.56-17.92-15.36-30.72-30.72-30.72z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3447 = [\n  _hoisted_2455\n];\nfunction _sfc_render455(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock455(), _createElementBlock455(\"svg\", _hoisted_1456, _hoisted_3447);\n}\nvar menu_wd_wendang_default = /* @__PURE__ */ export_helper_default(menu_wd_wendang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render455], [\"__file\", \"menu-wd-wendang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wd-yanshou.vue?vue&type=script&lang.ts\nvar menu_wd_yanshou_vue_vue_type_script_lang_default = {\n  name: \"MenuWdYanshou\"\n};\n\n// src/components/menu-wd-yanshou.vue\nimport { createElementVNode as _createElementVNode448, openBlock as _openBlock456, createElementBlock as _createElementBlock456 } from \"vue\";\nvar _hoisted_1457 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2456 = /* @__PURE__ */ _createElementVNode448(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M830.14572563 993.63727908H193.85427437c-92.79250331 0-163.49155345-75.11774077-163.49155345-163.49155345V193.85427437c0-92.79250331 75.11774077-163.49155345 163.49155345-163.49155345h631.87276063c92.79250331 0 163.49155345 75.11774077 163.49155345 163.49155345v631.87276063c4.41869063 92.79250331-70.69905013 167.91024409-159.07286282 167.91024408z m-490.47466035-136.97940965h273.95881931c17.67476253 0 35.34952507-13.2560719 35.34952504-35.34952508s-13.2560719-35.34952507-35.34952504-35.34952505h-273.95881931c-17.67476253 0-35.34952507 13.2560719-35.34952507 35.34952505s17.67476253 35.34952507 35.34952507 35.34952508z m494.89335099-600.94192618c-26.51214381-22.09345317-61.86166887-26.51214381-83.95512205-4.41869065l-269.54012865 251.86536613-136.97940966-128.14202836c-22.09345317-22.09345317-61.86166887-17.67476253-83.95512204 4.41869061-26.51214381 22.09345317-26.51214381 57.44297824-4.41869062 79.53643141l181.16631598 172.32893472 4.41869064 4.41869064c8.83738127 8.83738127 22.09345317 13.2560719 35.34952506 13.25607188h8.83738126c13.2560719 0 26.51214381-4.41869063 35.34952508-13.25607188l4.41869063-4.41869064 313.727035-296.05227245c22.09345317-22.09345317 22.09345317-57.44297824-4.41869063-79.53643141z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3448 = [\n  _hoisted_2456\n];\nfunction _sfc_render456(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock456(), _createElementBlock456(\"svg\", _hoisted_1457, _hoisted_3448);\n}\nvar menu_wd_yanshou_default = /* @__PURE__ */ export_helper_default(menu_wd_yanshou_vue_vue_type_script_lang_default, [[\"render\", _sfc_render456], [\"__file\", \"menu-wd-yanshou.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-weiguiqingkuang.vue?vue&type=script&lang.ts\nvar menu_weiguiqingkuang_vue_vue_type_script_lang_default = {\n  name: \"MenuWeiguiqingkuang\"\n};\n\n// src/components/menu-weiguiqingkuang.vue\nimport { createElementVNode as _createElementVNode449, openBlock as _openBlock457, createElementBlock as _createElementBlock457 } from \"vue\";\nvar _hoisted_1458 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2457 = /* @__PURE__ */ _createElementVNode449(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M996.56590222 769.03461925l-394.97576297-695.40977777c-16.63886222-49.30977185-69.34679703-75.56058075-117.9041185-58.6668563-27.2095763 9.47844741-48.44809482 31.04464592-57.78090667 58.6668563l-394.8544 695.40977777c-48.55732148 84.79630222-9.33281185 153.73046518 87.7818311 153.7304652h789.83016297c97.11464297 0 136.46051555-68.8249363 87.90319407-153.7304652z m-537.0553837-498.0736c29.11497482-30.47424 77.11402667-31.15387259 107.00572445-1.48062814 0.57040592 0.44904297 1.01944889 1.03158518 1.46849185 1.48062814a82.18093037 82.18093037 0 0 1 21.46910815 57.97508742c0 19.62439111-30.01306075 166.06094222-39.22450964 272.65403258h-71.37355851c-8.54395259-106.59309037-40.69300148-253.02964148-40.69300149-272.65403258-0.55826963-21.45697185 7.07546075-42.23431111 21.34774519-57.97508742z m107.7945837 507.53991112c-30.01306075 28.87224889-77.11402667 28.87224889-107.11495111 0-29.56401778-30.01306075-29.56401778-78.75242667 0.10922667-108.65626074 29.56401778-30.01306075 77.55093333-30.01306075 107.00572444 0.12136296 29.56401778 29.90383408 29.56401778 78.52183703 0 108.53489778z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3449 = [\n  _hoisted_2457\n];\nfunction _sfc_render457(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock457(), _createElementBlock457(\"svg\", _hoisted_1458, _hoisted_3449);\n}\nvar menu_weiguiqingkuang_default = /* @__PURE__ */ export_helper_default(menu_weiguiqingkuang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render457], [\"__file\", \"menu-weiguiqingkuang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-weixianyuanguanli.vue?vue&type=script&lang.ts\nvar menu_weixianyuanguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuWeixianyuanguanli\"\n};\n\n// src/components/menu-weixianyuanguanli.vue\nimport { createElementVNode as _createElementVNode450, openBlock as _openBlock458, createElementBlock as _createElementBlock458 } from \"vue\";\nvar _hoisted_1459 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2458 = /* @__PURE__ */ _createElementVNode450(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 512m-507.24764928 0a507.24764928 507.24764928 0 1 0 1014.49529856 0 507.24764928 507.24764928 0 1 0-1014.49529856 0Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3450 = /* @__PURE__ */ _createElementVNode450(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 850.19891603L173.86871699 512l338.16509952-338.19327995L850.16509952 512zM227.90186381 512L512 796.15449705 796.10940837 512 512 227.84550295z m320.94122378-141.71935713l-18.40745359 206.22434986h-0.11272169a17.06606535 17.06606535 0 0 1-33.91795948 0h-0.1127217l-21.90746237-204.51098001a37.95903242 37.95903242 0 1 1 74.45831883-1.71336985z m-37.37851566 244.16647403a34.14903897 34.14903897 0 1 1-34.14340288 34.14903897 34.14340288 34.14340288 0 0 1 34.14340288-34.14903897z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_499 = [\n  _hoisted_2458,\n  _hoisted_3450\n];\nfunction _sfc_render458(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock458(), _createElementBlock458(\"svg\", _hoisted_1459, _hoisted_499);\n}\nvar menu_weixianyuanguanli_default = /* @__PURE__ */ export_helper_default(menu_weixianyuanguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render458], [\"__file\", \"menu-weixianyuanguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wenjianbaoshen.vue?vue&type=script&lang.ts\nvar menu_wenjianbaoshen_vue_vue_type_script_lang_default = {\n  name: \"MenuWenjianbaoshen\"\n};\n\n// src/components/menu-wenjianbaoshen.vue\nimport { createElementVNode as _createElementVNode451, openBlock as _openBlock459, createElementBlock as _createElementBlock459 } from \"vue\";\nvar _hoisted_1460 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2459 = /* @__PURE__ */ _createElementVNode451(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M441.039504 781.667388a303.362412 303.362412 0 0 1 12.36318-85.756159H214.929099a35.731733 35.731733 0 0 1-35.731733-35.731733 35.731733 35.731733 0 0 1 35.731733-35.731733h269.91751a304.291437 304.291437 0 0 1 66.246633-76.751762h-335.878289a35.731733 35.731733 0 0 1 0-71.463466h570.56431a35.231489 35.231489 0 0 1 22.725382 8.361226 303.576802 303.576802 0 0 1 152.860353 84.255426V187.377207a85.756159 85.756159 0 0 0-85.756159-85.756159H644.853309C621.413292 39.090516 566.672277 0 496.42369 0c-62.601996 0-125.132528 39.090516-140.783027 101.621048H124.813669a85.756159 85.756159 0 0 0-85.756159 85.756159v750.795171a85.756159 85.756159 0 0 0 85.756159 85.756159h436.856165a303.148021 303.148021 0 0 1-120.63033-242.261149zM214.929099 328.017308h570.56431a35.731733 35.731733 0 0 1 0 71.463465H214.929099a35.731733 35.731733 0 1 1 0-71.463465z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3451 = /* @__PURE__ */ _createElementVNode451(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M742.543866 539.334776a242.332612 242.332612 0 1 0 242.332612 242.332612 243.547491 243.547491 0 0 0-242.332612-242.332612z m110.053737 390.404913H632.704519a12.220253 12.220253 0 1 1 0-24.440506h219.893084a12.220253 12.220253 0 0 1 0 24.440506z m24.154652-73.82176a24.797823 24.797823 0 0 1-24.797823 24.797822H633.1333a24.797823 24.797823 0 0 1-24.869286-24.797822v-23.654407a24.797823 24.797823 0 0 1 24.869286-24.72636H667.936008a25.226603 25.226603 0 0 0 23.225626-15.364645l15.293182-35.731733a13.435132 13.435132 0 0 0-3.7161-15.579035 60.458092 60.458092 0 0 1-20.867332-45.808082 61.101263 61.101263 0 1 1 101.835438 45.379301 13.578058 13.578058 0 0 0-3.501709 15.293182l15.650499 36.803685a25.226603 25.226603 0 0 0 23.154162 15.364645h33.230512a24.869286 24.869286 0 0 1 24.726359 24.869286z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4100 = [\n  _hoisted_2459,\n  _hoisted_3451\n];\nfunction _sfc_render459(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock459(), _createElementBlock459(\"svg\", _hoisted_1460, _hoisted_4100);\n}\nvar menu_wenjianbaoshen_default = /* @__PURE__ */ export_helper_default(menu_wenjianbaoshen_vue_vue_type_script_lang_default, [[\"render\", _sfc_render459], [\"__file\", \"menu-wenjianbaoshen.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wodexiangmu.vue?vue&type=script&lang.ts\nvar menu_wodexiangmu_vue_vue_type_script_lang_default = {\n  name: \"MenuWodexiangmu\"\n};\n\n// src/components/menu-wodexiangmu.vue\nimport { createElementVNode as _createElementVNode452, openBlock as _openBlock460, createElementBlock as _createElementBlock460 } from \"vue\";\nvar _hoisted_1461 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2460 = /* @__PURE__ */ _createElementVNode452(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M802.133333 136.533333c-8.533333-2.133333-14.933333-2.133333-23.466667-2.133333L189.866667 134.4l0 0 588.8 0C787.2 134.4 795.733333 134.4 802.133333 136.533333zM829.866667 145.066667c-2.133333 0-2.133333-2.133333-4.266667-2.133333C827.733333 142.933333 829.866667 145.066667 829.866667 145.066667zM878.933333 185.6c-2.133333-2.133333-4.266667-6.4-6.4-8.533333C874.666667 181.333333 876.8 183.466667 878.933333 185.6zM921.6 832c-4.266667 0-6.4 0-10.666667 0l-19.2 0L891.733333 232.533333c0-8.533333 0-14.933333-2.133333-23.466667 2.133333 6.4 2.133333 14.933333 2.133333 23.466667L891.733333 832l19.2 0C915.2 832 917.333333 832 921.6 832zM940.8 825.6c-2.133333 2.133333-6.4 2.133333-8.533333 4.266667C934.4 827.733333 938.666667 827.733333 940.8 825.6zM989.866667 27.733333c-21.333333-17.066667-49.066667-25.6-76.8-25.6L245.333333 2.133333c-29.866667 0-57.6 8.533333-76.8 25.6-21.333333 19.2-34.133333 44.8-34.133333 70.4l0 34.133333L113.066667 132.266667c-29.866667 0-57.6 8.533333-76.8 25.6C12.8 179.2 0 204.8 0 232.533333l0 693.333333c0 27.733333 12.8 53.333333 34.133333 70.4 21.333333 17.066667 49.066667 25.6 76.8 25.6l665.6 0c29.866667 0 57.6-8.533333 76.8-25.6 21.333333-19.2 36.266667-44.8 36.266667-70.4l0-34.133333 19.2 0c29.866667 0 57.6-8.533333 76.8-25.6 21.333333-19.2 34.133333-44.8 34.133333-70.4L1019.733333 100.266667C1024 72.533333 1011.2 46.933333 989.866667 27.733333zM834.133333 923.733333c0 21.333333-25.6 38.4-55.466667 38.4L113.066667 962.133333c-29.866667 0-55.466667-17.066667-55.466667-38.4L57.6 232.533333c0-21.333333 25.6-38.4 55.466667-38.4l19.2 0 57.6 0 0 0 588.8 0c29.866667 0 55.466667 17.066667 55.466667 38.4L834.133333 923.733333 834.133333 923.733333zM966.4 791.466667c0 8.533333-4.266667 17.066667-10.666667 23.466667 0 0 0 0-2.133333 2.133333-2.133333 2.133333-4.266667 4.266667-6.4 4.266667 0 0-2.133333 0-2.133333 2.133333s-2.133333 0-2.133333 2.133333c0 0-2.133333 0-2.133333 2.133333 0 0 0 0-2.133333 0-2.133333 2.133333-6.4 2.133333-8.533333 4.266667 0 0-2.133333 0-2.133333 0 0 0 0 0-2.133333 0-2.133333 0-4.266667 0-6.4 2.133333-4.266667 0-6.4 0-10.666667 0l-19.2 0L889.6 232.533333c0-8.533333 0-14.933333-2.133333-23.466667 0-2.133333 0-2.133333-2.133333-4.266667 0-2.133333 0-2.133333-2.133333-4.266667 0-2.133333 0-2.133333-2.133333-4.266667 0-2.133333-2.133333-2.133333-2.133333-4.266667-2.133333-2.133333-2.133333-4.266667-4.266667-6.4-2.133333-2.133333-4.266667-6.4-6.4-8.533333-2.133333-4.266667-6.4-6.4-8.533333-10.666667-2.133333-2.133333-4.266667-4.266667-8.533333-6.4-2.133333-2.133333-2.133333-2.133333-4.266667-4.266667 0 0 0 0-2.133333-2.133333l0 0c-2.133333 0-2.133333-2.133333-4.266667-2.133333-4.266667-2.133333-10.666667-6.4-14.933333-8.533333-2.133333 0-2.133333-2.133333-4.266667-2.133333-2.133333 0-4.266667-2.133333-6.4-2.133333 0 0-2.133333 0-2.133333 0-4.266667 0-6.4-2.133333-10.666667-2.133333 0 0-2.133333 0-2.133333 0-2.133333 0-2.133333 0-4.266667 0-8.533333-2.133333-14.933333-2.133333-23.466667-2.133333L189.866667 134.4 189.866667 100.266667c0-4.266667 0-8.533333 2.133333-12.8 2.133333-4.266667 4.266667-6.4 8.533333-10.666667 10.666667-10.666667 25.6-17.066667 44.8-17.066667l665.6 0c29.866667 0 55.466667 17.066667 55.466667 38.4L966.4 791.466667 966.4 791.466667zM149.333333 253.866667l428.8 0 0 57.6L149.333333 311.466667 149.333333 253.866667zM672 283.733333c0-17.066667 12.8-29.866667 29.866667-32 17.066667 0 29.866667 12.8 32 29.866667 0 0 0 2.133333 0 2.133333 0 17.066667-12.8 29.866667-29.866667 32-17.066667 0-29.866667-12.8-32-29.866667C672 285.866667 672 283.733333 672 283.733333zM57.6 362.666667l776.533333 0 0 57.6L57.6 420.266667 57.6 362.666667 57.6 362.666667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3452 = [\n  _hoisted_2460\n];\nfunction _sfc_render460(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock460(), _createElementBlock460(\"svg\", _hoisted_1461, _hoisted_3452);\n}\nvar menu_wodexiangmu_default = /* @__PURE__ */ export_helper_default(menu_wodexiangmu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render460], [\"__file\", \"menu-wodexiangmu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wodexiangmu1.vue?vue&type=script&lang.ts\nvar menu_wodexiangmu1_vue_vue_type_script_lang_default = {\n  name: \"MenuWodexiangmu1\"\n};\n\n// src/components/menu-wodexiangmu1.vue\nimport { createElementVNode as _createElementVNode453, openBlock as _openBlock461, createElementBlock as _createElementBlock461 } from \"vue\";\nvar _hoisted_1462 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2461 = /* @__PURE__ */ _createElementVNode453(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 648.53333333a204.8 204.8 0 0 0-204.8 204.8h68.26666667a136.53333333 136.53333333 0 0 1 273.06666666 0h68.26666667a204.8 204.8 0 0 0-204.8-204.8zM512 580.26666667a136.53333333 136.53333333 0 1 0-0.06826667-273.13493334A136.53333333 136.53333333 0 0 0 512 580.26666667z m0-204.25386667a67.72053333 67.72053333 0 1 1 0 135.44106667 67.72053333 67.72053333 0 0 1 0-135.44106667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3453 = /* @__PURE__ */ _createElementVNode453(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M887.46666667 170.66666667h-409.6a136.53333333 136.53333333 0 0 0-136.53333334-136.53333334h-204.8a136.53333333 136.53333333 0 0 0-136.53333333 136.53333334v682.66666666a136.53333333 136.53333333 0 0 0 136.53333333 136.53333334h750.93333334a136.53333333 136.53333333 0 0 0 136.53333333-136.53333334V307.2a136.53333333 136.53333333 0 0 0-136.53333333-136.53333333z m-750.93333334-68.26666667h204.8a68.26666667 68.26666667 0 0 1 68.26666667 68.26666667h-341.33333333a68.26666667 68.26666667 0 0 1 68.26666666-68.26666667z m819.2 750.93333333a68.26666667 68.26666667 0 0 1-68.26666666 68.26666667h-750.93333334a68.26666667 68.26666667 0 0 1-68.26666666-68.26666667V238.93333333h819.2a68.26666667 68.26666667 0 0 1 68.26666666 68.26666667v546.13333333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4101 = [\n  _hoisted_2461,\n  _hoisted_3453\n];\nfunction _sfc_render461(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock461(), _createElementBlock461(\"svg\", _hoisted_1462, _hoisted_4101);\n}\nvar menu_wodexiangmu1_default = /* @__PURE__ */ export_helper_default(menu_wodexiangmu1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render461], [\"__file\", \"menu-wodexiangmu1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wodexiangmu2.vue?vue&type=script&lang.ts\nvar menu_wodexiangmu2_vue_vue_type_script_lang_default = {\n  name: \"MenuWodexiangmu2\"\n};\n\n// src/components/menu-wodexiangmu2.vue\nimport { createElementVNode as _createElementVNode454, openBlock as _openBlock462, createElementBlock as _createElementBlock462 } from \"vue\";\nvar _hoisted_1463 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2462 = /* @__PURE__ */ _createElementVNode454(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M921.6 256h-121.856a51.2 51.2 0 0 1-45.824-28.416l-59.904-119.808A102.4 102.4 0 0 0 602.368 51.2H102.4a102.4 102.4 0 0 0-102.4 102.4v716.8a102.4 102.4 0 0 0 102.4 102.4h819.2a102.4 102.4 0 0 0 102.4-102.4V358.4a102.4 102.4 0 0 0-102.4-102.4zM102.4 179.2a25.6 25.6 0 0 1 25.6-25.6h444.928a25.6 25.6 0 0 1 23.04 14.08l34.816 69.888a12.8 12.8 0 0 1-11.52 18.432H128a25.6 25.6 0 0 1-25.6-25.6z m819.2 665.6a25.6 25.6 0 0 1-25.6 25.6H128a25.6 25.6 0 0 1-25.6-25.6V384a25.6 25.6 0 0 1 25.6-25.6h768a25.6 25.6 0 0 1 25.6 25.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3454 = /* @__PURE__ */ _createElementVNode454(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 512m-51.2 0a51.2 51.2 0 1 0 102.4 0 51.2 51.2 0 1 0-102.4 0Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4102 = /* @__PURE__ */ _createElementVNode454(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 716.8m-51.2 0a51.2 51.2 0 1 0 102.4 0 51.2 51.2 0 1 0-102.4 0Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_538 = /* @__PURE__ */ _createElementVNode454(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M409.6 563.2h179.2a51.2 51.2 0 0 0 0-102.4h-179.2a51.2 51.2 0 0 0 0 102.4zM768 665.6H409.6a51.2 51.2 0 0 0 0 102.4h358.4a51.2 51.2 0 0 0 0-102.4z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_62 = [\n  _hoisted_2462,\n  _hoisted_3454,\n  _hoisted_4102,\n  _hoisted_538\n];\nfunction _sfc_render462(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock462(), _createElementBlock462(\"svg\", _hoisted_1463, _hoisted_62);\n}\nvar menu_wodexiangmu2_default = /* @__PURE__ */ export_helper_default(menu_wodexiangmu2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render462], [\"__file\", \"menu-wodexiangmu2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-wofaqide.vue?vue&type=script&lang.ts\nvar menu_wofaqide_vue_vue_type_script_lang_default = {\n  name: \"MenuWofaqide\"\n};\n\n// src/components/menu-wofaqide.vue\nimport { createElementVNode as _createElementVNode455, openBlock as _openBlock463, createElementBlock as _createElementBlock463 } from \"vue\";\nvar _hoisted_1464 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2463 = /* @__PURE__ */ _createElementVNode455(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M886.66567111 2.27555555A98.75911111 98.75911111 0 0 1 985.31555555 100.92544v840.35356445A98.75911111 98.75911111 0 0 1 886.66567111 1039.92888889H155.53877333A98.75911111 98.75911111 0 0 1 56.88888889 941.27900445V100.92544A98.75911111 98.75911111 0 0 1 155.53877333 2.27555555h731.12689778z m-114.56056889 396.54741334l57.94474667-57.92654222-128.74183111-128.72362667-57.90833778 57.92654222 128.70542222 128.72362667z m-399.04142222 399.02321778l360.42979555-360.41159112-128.70542222-128.72362666-360.42979555 360.42979556 128.70542222 128.70542222z m-160.90908445-83.66762667v115.87128889h115.8712889l-115.8712889-115.87128889z m444.11562667-328.22613333a27.30666667 27.30666667 0 0 1 0 38.61162666L360.17493333 720.62293333a27.19744 27.19744 0 0 1-38.61162666 0 27.30666667 27.30666667 0 0 1 0-38.61162666l296.07708444-296.05888a27.30666667 27.30666667 0 0 1 38.59342222 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3455 = [\n  _hoisted_2463\n];\nfunction _sfc_render463(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock463(), _createElementBlock463(\"svg\", _hoisted_1464, _hoisted_3455);\n}\nvar menu_wofaqide_default = /* @__PURE__ */ export_helper_default(menu_wofaqide_vue_vue_type_script_lang_default, [[\"render\", _sfc_render463], [\"__file\", \"menu-wofaqide.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xiangmuguanli.vue?vue&type=script&lang.ts\nvar menu_xiangmuguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuXiangmuguanli\"\n};\n\n// src/components/menu-xiangmuguanli.vue\nimport { createElementVNode as _createElementVNode456, openBlock as _openBlock464, createElementBlock as _createElementBlock464 } from \"vue\";\nvar _hoisted_1465 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2464 = /* @__PURE__ */ _createElementVNode456(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M967.111111 113.777778H535.324444a56.888889 56.888889 0 0 1-39.822222-16.497778L414.72 16.497778a56.888889 56.888889 0 0 0-39.822222-16.497778H56.888889a56.888889 56.888889 0 0 0-56.888889 56.888889v910.222222a56.888889 56.888889 0 0 0 56.888889 56.888889h910.222222a56.888889 56.888889 0 0 0 56.888889-56.888889V170.666667a56.888889 56.888889 0 0 0-56.888889-56.888889z m-284.444444 398.222222a113.777778 113.777778 0 0 1-81.351111-34.702222l-207.075556 118.328889A106.951111 106.951111 0 0 1 398.222222 625.777778a170.666667 170.666667 0 0 1 0 23.893333l143.928889 72.248889A113.777778 113.777778 0 1 1 512 796.444444a170.666667 170.666667 0 0 1 0-23.893333l-141.653333-72.248889A113.777778 113.777778 0 1 1 284.444444 512a113.777778 113.777778 0 0 1 81.351112 34.702222l207.075555-118.328889A106.951111 106.951111 0 0 1 568.888889 398.222222a113.777778 113.777778 0 1 1 113.777778 113.777778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3456 = [\n  _hoisted_2464\n];\nfunction _sfc_render464(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock464(), _createElementBlock464(\"svg\", _hoisted_1465, _hoisted_3456);\n}\nvar menu_xiangmuguanli_default = /* @__PURE__ */ export_helper_default(menu_xiangmuguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render464], [\"__file\", \"menu-xiangmuguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xiangmuquan.vue?vue&type=script&lang.ts\nvar menu_xiangmuquan_vue_vue_type_script_lang_default = {\n  name: \"MenuXiangmuquan\"\n};\n\n// src/components/menu-xiangmuquan.vue\nimport { openBlock as _openBlock465, createElementBlock as _createElementBlock465, createStaticVNode as _createStaticVNode9 } from \"vue\";\nvar _hoisted_1466 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2465 = /* @__PURE__ */ _createStaticVNode9('<path fill=\"currentColor\" d=\"M687.46922667 41.45265778s-66.38592-27.33511111-167.91324445-27.33511111-167.91324445 31.23996445-167.91324444 31.23996444l335.82876444 337.77891556v-341.68376889z\"></path><path fill=\"currentColor\" d=\"M869.04945778 160.55296c-72.24092445-70.28963555-140.57813333-95.67118222-140.57813333-95.67118222l-1.95242667 474.45560889 242.10545777-242.10545778s-29.28753778-66.38592-99.57717333-136.67555556z\"></path><path fill=\"currentColor\" d=\"M982.29475555 347.99388445l-337.77891555 333.87406222v1.95242666h341.68376889s27.33511111-66.38592 27.33511111-167.91324444-31.23996445-167.91324445-31.23996445-167.91324444z\"></path><path fill=\"currentColor\" d=\"M730.42261333 966.92906667s66.38592-29.28753778 136.67555556-99.57717334c70.28963555-72.24092445 95.67118222-140.57813333 95.67118222-140.57813333l-474.45560889-1.95242667 242.10545778 242.10545778z\"></path><path fill=\"currentColor\" d=\"M349.68917333 644.76842667v341.68376888s66.38592 27.33511111 167.91324445 27.33511112c101.5296 0 167.91324445-31.23996445 167.91324444-31.23996445l-333.87406222-337.77891555h-1.95242667z\"></path><path fill=\"currentColor\" d=\"M172.01493333 867.35189333c72.24092445 70.28963555 140.57813333 95.67118222 140.57813334 95.67118222l1.95242666-474.45560888-242.10545778 242.10545778s29.28753778 66.38592 99.57717334 136.67555555z\"></path><path fill=\"currentColor\" d=\"M54.86250667 346.03690667s-27.33511111 66.38592-27.33511112 167.91324444 31.23996445 167.91324445 31.23996445 167.91324444l337.77891555-335.82876444h-341.68376888z\"></path><path fill=\"currentColor\" d=\"M308.68821333 60.97806222s-66.38592 27.33511111-136.67555555 99.57717333c-70.28963555 72.24092445-95.67118222 140.57813333-95.67118223 140.57813334l474.4556089 1.95242666-242.10545778-242.10545777z\"></path>', 8), _hoisted_10 = [\n  _hoisted_2465\n];\nfunction _sfc_render465(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock465(), _createElementBlock465(\"svg\", _hoisted_1466, _hoisted_10);\n}\nvar menu_xiangmuquan_default = /* @__PURE__ */ export_helper_default(menu_xiangmuquan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render465], [\"__file\", \"menu-xiangmuquan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xiaoxizhongxin1.vue?vue&type=script&lang.ts\nvar menu_xiaoxizhongxin1_vue_vue_type_script_lang_default = {\n  name: \"MenuXiaoxizhongxin1\"\n};\n\n// src/components/menu-xiaoxizhongxin1.vue\nimport { createElementVNode as _createElementVNode457, openBlock as _openBlock466, createElementBlock as _createElementBlock466 } from \"vue\";\nvar _hoisted_1467 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2466 = /* @__PURE__ */ _createElementVNode457(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M887.50671645 732.8825344c8.97115022-0.25631858 17.94812587 1.53208605 26.54062364 7.14779307-31.16018347-19.90546773-51.67149511-54.60750791-51.67149511-94.28445867v-221.36604445c0-162.15645298-117.84246613-297.52178915-275.3036288-330.81990257v-7.91092338c0-41.33719609-33.58938453-74.63530951-75.00813653-74.63530951-41.418752 0-75.01396195 33.42627271-75.01396196 74.63530951v7.91092338c-157.46116267 33.29811342-275.29197795 168.54111573-275.29197796 330.825728v221.36021902c0 39.67112533-20.64529635 74.37899093-51.67732053 94.28445867 8.72065707-5.61570702 17.56947342-7.53227093 26.54062365-7.14779307-27.56589795 0.12815929-49.87726507 22.19485867-49.87726507 49.76075662 0 27.55424711 22.31136711 49.7549312 50.00542435 49.7549312h750.50079574c27.69405725 0 50.00542435-22.19485867 50.00542435-49.7549312 0.12815929-27.30375395-22.18320782-49.63259733-49.74910577-49.76075662zM514.91271111 1012.98631111c69.16523805 0 125.24657778-54.77644515 125.24657778-122.33386666H389.66613333c0 67.55742151 55.95318045 122.33386667 125.24657778 122.33386666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3457 = [\n  _hoisted_2466\n];\nfunction _sfc_render466(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock466(), _createElementBlock466(\"svg\", _hoisted_1467, _hoisted_3457);\n}\nvar menu_xiaoxizhongxin1_default = /* @__PURE__ */ export_helper_default(menu_xiaoxizhongxin1_vue_vue_type_script_lang_default, [[\"render\", _sfc_render466], [\"__file\", \"menu-xiaoxizhongxin1.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xiaoxizhongxin2.vue?vue&type=script&lang.ts\nvar menu_xiaoxizhongxin2_vue_vue_type_script_lang_default = {\n  name: \"MenuXiaoxizhongxin2\"\n};\n\n// src/components/menu-xiaoxizhongxin2.vue\nimport { createElementVNode as _createElementVNode458, openBlock as _openBlock467, createElementBlock as _createElementBlock467 } from \"vue\";\nvar _hoisted_1468 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2467 = /* @__PURE__ */ _createElementVNode458(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M138.12622222 29.46844445h751.50222223c4.096 1.024 8.41955555 1.47911111 12.62933333 2.048 31.63022222 5.12 61.09866667 22.18666667 81.46488889 46.99022222 15.58755555 18.65955555 25.82755555 41.64266667 29.46844444 65.76355555 0.68266667 4.55111111 0.91022222 9.10222222 1.93422222 13.53955556v590.39288889c-1.59288889 7.73688889-1.82044445 15.70133333-3.75466666 23.32444444-6.94044445 30.72-25.14488889 58.59555555-50.176 77.48266667-15.70133333 11.83288889-33.90577778 20.13866667-53.13422222 24.23466667-18.65955555 4.096-37.888 2.73066667-56.8888889 2.95822222H687.21777778c-1.93422222-0.11377778-3.98222222 0.22755555-5.34755556 1.82044444-37.43288889 37.43288889-74.63822222 75.20711111-112.07111111 112.64-11.83288889 12.17422222-27.648 20.48-44.37333333 23.21066667-14.10844445 2.16177778-28.78577778 1.024-42.09777778-4.20977778-11.37777778-4.20977778-21.61777778-11.264-30.03733333-20.02488889-37.31911111-37.66044445-74.752-75.20711111-112.07111112-112.75377778-1.13777778-1.024-2.84444445-0.68266667-4.32355555-0.79644444-54.61333333 0.11377778-109.34044445 0-163.95377778 0-19.456-0.22755555-39.13955555 1.13777778-58.25422222-3.29955556-33.22311111-7.39555555-63.14666667-27.98933333-82.14755555-56.20622222-9.55733333-14.336-16.61155555-30.49244445-20.13866667-47.44533333-1.59288889-6.03022222-1.36533333-12.40177778-3.29955556-18.432V158.83377778c1.36533333-6.37155555 1.47911111-12.97066667 2.84444445-19.34222223 4.43733333-24.12088889 15.81511111-46.87644445 32.31288888-65.08088888 19.00088889-21.27644445 44.94222222-36.18133333 72.93155556-41.87022222 6.71288889-1.70666667 13.88088889-2.048 20.93511111-3.072m104.78933333 339.968c-18.88711111 0.45511111-37.43288889 6.82666667-52.56533333 18.09066666-17.74933333 12.97066667-30.49244445 32.54044445-35.27111111 54.04444444-4.66488889 20.59377778-2.16177778 42.78044445 7.39555556 61.78133334 9.55733333 19.56977778 26.39644445 35.38488889 46.42133333 43.91822222 29.92355555 13.19822222 66.78755555 8.76088889 92.72888889-11.264 14.67733333-11.03644445 25.82755555-26.51022222 31.63022222-43.91822222 6.25777778-18.31822222 6.48533333-38.68444445 0.91022222-57.23022222-6.25777778-20.59377778-20.02488889-38.68444445-38.00177778-50.40355556-15.81511111-10.35377778-34.58844445-15.58755555-53.248-15.01866666m263.96444445 0c-13.312 0.34133333-26.73777778 3.41333333-38.68444445 9.44355555-17.63555555 8.53333333-32.19911111 22.86933333-41.30133333 40.04977778-9.67111111 18.20444445-12.85688889 39.70844445-9.10222222 59.96088889 5.23377778 30.15111111 26.624 56.77511111 54.84088889 68.49422222 16.83911111 7.28177778 35.84 9.10222222 53.81688889 5.68888889 20.70755555-3.86844445 39.82222222-15.13244445 53.36177777-31.28888889 11.83288889-13.99466667 19.34222222-31.51644445 21.27644445-49.72088889 2.048-18.31822222-1.59288889-37.31911111-10.35377778-53.58933333-7.96444445-14.90488889-20.02488889-27.53422222-34.58844444-36.06755556-14.67733333-8.87466667-31.97155555-13.312-49.26577778-12.97066666m263.168 0c-28.89955555 0.56888889-57.00266667 15.70133333-73.38666667 39.48088888-12.17422222 17.408-18.20444445 39.02577778-16.384 60.30222222 1.13777778 15.92888889 6.48533333 31.40266667 15.47377778 44.6008889 10.69511111 15.92888889 26.51022222 28.44444445 44.48711111 35.15733333 18.54577778 6.94044445 39.25333333 7.62311111 58.25422223 2.16177777 30.60622222-8.53333333 55.63733333-34.13333333 63.71555555-64.85333333 5.34755555-19.79733333 3.86844445-41.30133333-4.096-60.07466667-8.192-19.56977778-23.43822222-36.18133333-42.32533333-46.08-14.10844445-7.50933333-30.03733333-11.15022222-45.73866667-10.6951111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3458 = /* @__PURE__ */ _createElementVNode458(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M240.98133333 422.68444445c8.07822222-0.91022222 16.49777778 0.79644445 23.552 4.77866666 12.74311111 6.94044445 21.04888889 21.27644445 20.48 35.84-0.34133333 15.36-10.58133333 29.80977778-24.80355555 35.49866667-11.83288889 4.89244445-25.94133333 3.41333333-36.52266667-3.75466667-9.44355555-6.144-16.04266667-16.61155555-17.52177778-27.76177778-1.36533333-9.44355555 1.024-19.22844445 6.25777778-27.19288888 6.37155555-9.55733333 17.06666667-16.15644445 28.55822222-17.408zM503.12533333 422.912c8.41955555-1.36533333 17.29422222 0.34133333 24.68977778 4.43733333 11.60533333 6.144 19.56977778 18.432 20.59377778 31.40266667 1.70666667 17.18044445-9.44355555 34.58844445-25.71377778 40.39111111-13.312 5.12-29.12711111 2.16177778-39.70844444-7.28177778-11.49155555-9.78488889-16.49777778-26.51022222-12.06044445-40.96 4.096-14.56355555 17.29422222-25.94133333 32.19911111-27.98933333zM768.11377778 422.68444445c8.76088889-1.024 17.97688889 1.13777778 25.48622222 5.91644444 9.44355555 5.91644445 16.15644445 15.92888889 17.97688889 26.96533333 2.048 11.49155555-1.59288889 23.89333333-9.32977778 32.65422223-10.58133333 12.51555555-29.46844445 17.18044445-44.60088889 10.6951111-12.97066667-5.12-22.75555555-17.63555555-24.46222222-31.51644444-2.38933333-16.27022222 6.71288889-33.22311111 21.39022222-40.50488889 4.32355555-2.27555555 8.87466667-3.64088889 13.53955556-4.20977777z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4103 = [\n  _hoisted_2467,\n  _hoisted_3458\n];\nfunction _sfc_render467(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock467(), _createElementBlock467(\"svg\", _hoisted_1468, _hoisted_4103);\n}\nvar menu_xiaoxizhongxin2_default = /* @__PURE__ */ export_helper_default(menu_xiaoxizhongxin2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render467], [\"__file\", \"menu-xiaoxizhongxin2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xiaoxizhongxin3.vue?vue&type=script&lang.ts\nvar menu_xiaoxizhongxin3_vue_vue_type_script_lang_default = {\n  name: \"MenuXiaoxizhongxin3\"\n};\n\n// src/components/menu-xiaoxizhongxin3.vue\nimport { createElementVNode as _createElementVNode459, openBlock as _openBlock468, createElementBlock as _createElementBlock468 } from \"vue\";\nvar _hoisted_1469 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2468 = /* @__PURE__ */ _createElementVNode459(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M830.450526 853.759999q-11.722105 8.791579-27.351579 8.791579-19.536842 0-33.701053-14.164211t-14.164211-33.701053q0-21.490526 16.606316-36.143158 0.976842-0.976842 1.953684-1.465263t1.953684-1.465263l0.976842-0.976842q27.351579-18.56 50.795789-43.957895t41.027368-55.191579 27.351579-63.494737 9.768421-69.84421q0-73.263158-37.12-133.827368t-92.8-99.637895q-20.513684-14.652632-20.513684-39.073684 0-19.536842 14.164211-33.701053t33.701053-14.164211q16.606316 0 29.305263 10.745263 36.143158 25.397895 67.402105 59.098947t53.726316 73.263158 35.166316 84.496842 12.698947 92.8q0 48.842105-12.698947 93.776842t-35.654737 84.985263-54.214737 73.751579-68.378947 59.098947zM775.747368 415.157894q20.513684 28.328421 32.72421 57.145263t12.210526 69.84421q0 39.073684-12.698947 70.332632t-32.235789 56.656842q-7.814737 10.745263-16.606316 19.048421t-22.467368 8.303158q-17.583158 0-29.793684-12.698947t-12.210526-30.282105q0-7.814737 2.930526-15.629474l-0.976842 0q4.884211-10.745263 11.722105-20.513684t13.187368-20.025263 10.745263-23.444211 4.395789-31.747368q0-17.583158-4.395789-30.770526t-10.745263-23.932632-13.187368-20.513684-10.745263-20.513684q-2.930526-6.837895-2.930526-15.629474 0-17.583158 12.210526-30.282105t29.793684-12.698947q13.675789 0 22.467368 8.303158t16.606316 19.048421zM460.227368 995.402104q-49.818947-44.934737-105.498947-93.776842t-103.545263-89.869474q-55.68-46.888421-111.36-92.8-10.745263 0.976842-21.490526 0.976842-8.791579 0.976842-18.56 0.976842l-16.606316 0q-26.374737 0-42.981053-16.117895t-16.606316-38.585263l0-246.16421 0.976842 0-0.976842-0.976842q0-27.351579 17.094737-44.934737t42.492632-17.583158l55.68 0q89.869474-76.193684 163.132631-136.757895 31.258947-26.374737 61.541053-51.28421t54.703158-45.423158 41.027368-34.189474 20.513684-16.606316q29.305263-21.490526 47.376842-19.536842t28.328421 17.583158 14.164211 38.096842 3.907368 41.027368l0 788.311578 0 2.930526q0 18.56-6.837895 39.562105t-21.002105 33.212632-35.654737 10.256842-49.818947-28.328421z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3459 = [\n  _hoisted_2468\n];\nfunction _sfc_render468(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock468(), _createElementBlock468(\"svg\", _hoisted_1469, _hoisted_3459);\n}\nvar menu_xiaoxizhongxin3_default = /* @__PURE__ */ export_helper_default(menu_xiaoxizhongxin3_vue_vue_type_script_lang_default, [[\"render\", _sfc_render468], [\"__file\", \"menu-xiaoxizhongxin3.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xinchoufafang.vue?vue&type=script&lang.ts\nvar menu_xinchoufafang_vue_vue_type_script_lang_default = {\n  name: \"MenuXinchoufafang\"\n};\n\n// src/components/menu-xinchoufafang.vue\nimport { createElementVNode as _createElementVNode460, openBlock as _openBlock469, createElementBlock as _createElementBlock469 } from \"vue\";\nvar _hoisted_1470 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2469 = /* @__PURE__ */ _createElementVNode460(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M691.57558736 498.56718048c13.43281952 0 24.74466755-11.31184801 24.74466754-25.45165806V441.30094987c0-7.06990501-2.82796201-13.43281952-7.06990501-18.38175305-4.24194301-4.9489335-10.60485751-7.77689552-17.67476253-7.77689552h-103.92760371l89.08080318-92.61575567c9.89786702-9.89786702 9.89786702-26.15864854 0-36.05651558l-21.91670554-22.62369604c-9.19087652-9.89786702-24.74466755-9.89786702-33.93554408-0.7069905l-0.70699049 0.7069905-84.83886018 87.66682216c-9.19087652 9.89786702-24.74466755 9.89786702-33.93554405 0.70699052l-0.7069905-0.70699052-86.95983168-89.78779366c-9.19087652-9.89786702-24.74466755-9.89786702-34.64253457-0.70699051l-0.70699051 0.70699051-21.91670553 22.62369605c-9.89786702 9.89786702-9.89786702 26.15864854 0 36.05651556l91.20177467 94.73672718H338.08033666c-6.36291451 0-12.72582902 2.82796201-17.67476254 7.77689552-4.9489335 4.9489335-7.06990501 11.31184801-7.06990502 18.38175305v31.81457255c0 7.06990501 2.82796201 13.43281952 7.06990502 18.38175303 4.24194301 4.9489335 10.60485751 7.77689552 17.67476254 7.77689553h137.15615728v58.68021162H338.08033666c-14.13981003 0-24.74466755 12.01883853-24.74466756 25.45165804v31.81457258c0 7.06990501 2.82796201 13.43281952 7.06990502 18.38175302 4.24194301 4.9489335 10.60485751 7.77689552 17.67476254 7.77689552h137.15615728v65.75011662c0 14.13981003 11.31184801 25.45165805 24.74466753 25.45165805h31.10758207c6.36291451 0 12.72582902-2.82796201 17.67476252-7.77689551 4.9489335-4.9489335 7.06990501-11.31184801 7.06990503-18.38175304v-65.75011663h135.74217627c13.43281952 0 24.74466755-11.31184801 24.74466754-25.45165803V582.69905013c0-7.06990501-2.82796201-13.43281952-7.06990501-18.38175302-4.24194301-4.9489335-10.60485751-7.77689552-17.67476253-7.77689552h-135.74217627V497.86018997l135.74217627 0.70699051z m284.91717205-84.13186967c-19.79573404 16.96777203-32.52156306 41.71243958-32.52156305 68.57807864 0 9.89786702 2.1209715 19.79573404 5.65592399 29.69360105 9.19087652 50.1963256 48.78234459 85.54585068 94.7367272 85.54585066v271.48435255c0 17.67476253-6.36291451 33.93554407-17.67476253 47.36836359-10.60485751 12.01883853-26.15864854 19.08874354-42.41943009 19.79573404H41.85131657c-33.22855357 0-60.80118311-29.69360106-60.80118312-67.16409763v-271.48435255c45.9543826 0 85.54585068-36.05651557 94.73672719-85.54585066 3.5349525-9.19087652 5.65592402-19.08874354 5.65592401-29.69360105 0-27.57262956-12.72582902-51.61030659-33.22855358-68.57807864-16.96777203-19.08874354-41.71243958-30.40059155-67.87108813-30.40059156V112.55036672c0-36.76350606 26.86563906-66.45710714 60.80118313-66.45710715h941.71134786c16.26078154 0 31.81457257 7.06990501 42.41943009 19.79573405 11.31184801 12.72582902 17.67476253 29.69360106 17.67476253 47.36836359V384.74170975c-24.03767705-0.7069905-48.07535409 10.60485751-66.45710714 29.69360106z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3460 = [\n  _hoisted_2469\n];\nfunction _sfc_render469(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock469(), _createElementBlock469(\"svg\", _hoisted_1470, _hoisted_3460);\n}\nvar menu_xinchoufafang_default = /* @__PURE__ */ export_helper_default(menu_xinchoufafang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render469], [\"__file\", \"menu-xinchoufafang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xinwendongtai.vue?vue&type=script&lang.ts\nvar menu_xinwendongtai_vue_vue_type_script_lang_default = {\n  name: \"MenuXinwendongtai\"\n};\n\n// src/components/menu-xinwendongtai.vue\nimport { createElementVNode as _createElementVNode461, openBlock as _openBlock470, createElementBlock as _createElementBlock470 } from \"vue\";\nvar _hoisted_1471 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2470 = /* @__PURE__ */ _createElementVNode461(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 7.31069554c-278.38411093 0-504.84881294 227.0002779-504.84881294 506.04105159S233.61588907 1019.39279758 512 1019.39279758s504.84881294-227.0002779 504.84881294-506.04105159S790.38294699 7.31069554 512 7.31069554zM512 941.54104491c-235.54853205 0-427.17985451-192.0842331-427.17985451-428.18929892 0-95.26727794 31.58383161-183.06327552 84.27749718-254.27039687 8.05226496 5.65032391 16.38279623 12.06908245 19.73014414 14.95420587 0.73932686 0.62755499 2.80595115 4.20077682 4.17166905 6.57593799l1.46002603 2.37632625c0.20840903 0.39935317 2.63596373 4.4662363 5.04372565 8.24902998l2.12367473 3.34502002c0.77774962 1.23531719 1.83958642 2.64178574 2.95847368 3.99120384-0.66364871 3.3648128-1.25161699 6.84256256-1.57412694 10.54851299-3.75485099 42.21500985 7.14877155 74.18422386 33.22199496 97.67736889 3.98188885 3.61164345 8.36196693 6.59573191 14.71436117 10.43441209 1.02341518 2.35653347 2.25640334 4.84696064 3.90620956 7.60284615 6.80763278 11.32859051 15.09392157 22.19961344 23.38020921 32.92044288l9.44359766 12.43001401c11.96546048 16.26985927 24.21500814 22.23803506 34.70064981 23.49314503 11.75705145 16.32690973 26.77412864 24.82277035 39.51733873 30.56274546 1.57412693 0.74165589 3.41371335 1.86287218 5.38486443 3.0027173 8.91267869 5.13221291 19.98628864 11.53699954 32.76675527 13.19029874 5.10077611 0.66481266 9.74631367 0.60776221 13.80388182 0.17115136 4.9680475 4.40918585 11.85135957 9.21888768 20.93402453 11.91772387 3.12846109 0.93143609 6.04851314 1.50194062 8.70310571 1.88150101 3.26119083 4.48602909 7.88809842 10.30168235 14.77141162 15.566625 4.94941867 3.76300203 9.76494251 6.93803463 14.46869448 9.52276878-0.07567929 0.18978019-0.15135858 0.39935317-0.22703787 0.58913337-3.46959872 9.23751651-4.24734834 17.5820197-4.36144925 25.16507307-4.9680475 9.75097059-6.73195349 23.7201829 2.23777565 42.7657216 3.1668827 6.72846165 7.30013013 13.05756899 11.52884963 19.2353189l6.78900395 10.34010396c6.50375168 10.18758144 13.88072505 21.76300259 26.26300359 33.07180146 3.37529173 3.05976775 7.88809842 6.38615779 12.79909547 9.80802104 1.04320797 0.74165589 2.14230243 1.46351901 3.22393315 2.2051749-0.24683065 3.87710293-0.83480007 9.16183723-1.89663687 15.20569344-1.59275577 9.02794354-2.50323399 18.79754411-3.37529173 28.624194-0.92910706 10.70103552-1.91526571 21.76300259-4.03893931 28.92807509-1.0618368 3.57322183-2.18072519 6.48163101-3.1668827 9.12341561-4.32302763 11.42289863-10.20155335 27.00931641-4.60827989 52.3827985-0.03842162 0.18978019-0.07567929 0.37956039-0.11410091 0.58913337-3.07141063 3.93415339-7.37580942 9.92212195-10.40996238 18.13273145-4.26597717 11.61267883-2.67322141 24.5759397 4.13324743 34.89625088 1.34592512 2.05265237 2.8630016 3.93415339 4.53143666 5.66429582 6.97762019 11.95498155 19.75808683 19.27257657 33.50608327 19.27257657 1.04320797 0 2.08641707-0.03842162 3.12846108-0.13272974 17.44463303-1.40646855 34.58654891-3.76300203 50.97050909-7.01371392 13.63389554-2.69883619 23.38020921-14.00763392 27.83596658-27.21772544 1.49844765-4.40918585 2.00957269-9.14204445 1.66843505-13.89469696 1.30866745-2.24243257 2.27503218-4.08667591 2.71164303-5.13221291 0.73932686-1.71034965 1.47865486-3.83984526 2.35071146-6.74708935 1.32729629-0.95006493 2.57891328-1.93855147 3.7350582-2.94566684 14.16481337-3.05976775 30.18784199-10.58693461 40.35097373-29.27037781 11.68020821-5.24631381 20.70698781-16.97309355 33.06947243-33.03454379l4.49417898-5.49314447c5.63169507-5.87270371 12.64773689-13.19029874 18.16533106-24.29068742 0.66364871-1.33078926 1.44139719-3.17386866 2.40776192-5.87270372 3.1668827-0.98848654 6.40944469-2.12833166 9.67063438-3.59185067 5.30918514-2.35653347 16.21280882-7.18486528 23.2661083-18.89301617 12.74204501-8.36313088 19.3598976-19.27257657 22.64088122-37.08279695 1.23298816-6.74708935 1.42160441-13.22872035 1.4216044-19.55782883 0-0.51345408-0.01862883-1.02690816-0.01862883-1.5391983 0.22703787-0.20957298 0.47386851-0.41798201 0.70207033-0.62755498 4.13324743-3.80142365 9.76610645-9.0093147 15.01824227-16.82173497 17.38874653-25.90672896 17.17917355-55.29120768-0.56934059-74.92587975-12.34385579-13.62807353-33.77154275-21.00271901-49.70026325-24.84256313-4.4184997-1.04553699-9.06403726-1.78719289-13.76662414-2.47063439-2.78732231-0.41798201-5.65032391-0.60776221-9.76494251-2.45200554-2.93868089-1.69172082-8.02082816-4.63738766-14.58163143-6.65278236-4.42781355-2.47994823-9.23984555-3.67800775-14.10776291-4.278784-0.76377771-16.21047979-11.2063397-30.9097051-27.62755755-35.63557888-4.9680475-1.42509739-9.23518862-2.22380373-13.88072505-2.47063439l-3.20414037-2.37632625c-12.04113977-8.95226425-28.51940693-21.23092082-51.61552783-23.79702614-2.48460515-0.26662343-4.74100963-0.32367389-6.92173368-0.26662343-3.52664917-1.99560192-8.21060835-4.21940565-14.08913408-5.72134627-11.0165595-2.73725781-20.32742741-1.48214784-27.51462059 0.9698577-11.52884963-2.37632626-23.03907043-0.36093155-34.43519033 5.98680462-1.44139719-3.34502002-3.3566629-6.53868146-5.80284644-9.48434716-0.49249735-0.60776221-1.00478635-1.19689557-1.53570531-1.76740011-1.42160441-2.54747762-3.26119083-5.24631381-5.59443741-7.86830563 14.24049266-3.53480021 25.46662514-14.36972942 30.71876096-30.03066254 3.10983225-9.27593813 2.73027186-18.30388281 0.60659826-29.68835983 8.07787861-5.49314446 19.64514987-14.31267897 24.74592712-29.63130937 0.58796942-1.78719289 1.04320797-3.55459299 1.3657179-5.28357148 2.52186283-3.17386866 4.4184997-6.3675301 5.87852572-9.35161742 2.59754211-1.52056946 5.42328605-3.45912093 8.19197952-5.98680462 2.14230243-1.93855147 4.03893931-3.91552455 5.89715456-6.04385508 14.16481337 0.34230272 25.5795621-3.55459299 26.01617294-3.72574436 11.39611989-4.21940565 19.98628864-10.60556345 26.2630036-15.28137272l4.81668892-3.45912093c2.97710251-1.99560192 10.10724523-0.89301447 14.07050524-0.11410091 16.51552483 3.47774976 33.86701483-4.50465792 42.17193131-19.00711708 2.98874539-5.19857721 4.42082873-10.45886293 4.94476061-15.66675399 17.64954909-4.92263993 32.2090587-19.29236935 43.18137457-43.93933141 0.3038811-0.70323427 0.60659826-1.40646855 0.89068544-2.10970283 3.12846109-0.3038811 6.65511026-0.87438563 10.448384-1.93855147 12.70478734-3.55459299 20.97244729-10.58693461 26.96390884-15.6807259 2.44618354-1.69172082 3.56507193-2.10970283 17.48305465-2.56610646 8.86028515 0.42729586 17.04178688-2.32393273 23.85174869-7.09405013 20.70698781 23.6782683 39.1447643 49.38473927 54.30272114 77.22303375-5.58395961 2.05032334-10.70918542 5.224192-14.84010496 9.58680518-3.22393315 2.14812445-7.54696078 5.55019491-11.45317035 10.60556346-3.09120341 3.95394617-5.08214841 7.75536981-6.40944469 10.89081571-1.87684409 2.45200555-3.50802147 4.99831922-4.58848711 7.29896619-5.91578339 12.62095815-4.39870691 24.42341717-3.65937892 28.81513813-0.73932686 6.06364899-2.44618354 20.26106197 6.90194091 35.08719616 3.34734791 5.27891342 8.11862926 10.58460672 13.73751751 15.92988445-4.87141035 3.01785315-11.3705051 7.46545949-17.47373966 15.27904369-5.53738695 7.12781483-8.24902997 13.85627534-9.74631368 18.64618553-3.14825387 3.17386866-6.80763278 7.64126891-9.65200554 13.68512398-7.37580942 15.66209707-5.36623559 31.13324999-4.03893931 41.35925305 0.22703787 1.76740011 0.51229013 3.49754254 0.58796943 4.42897863-0.07567929 1.80582173-0.32250994 3.55459299-0.53091898 5.26494265-1.23298816 10.07348053-3.50802147 28.83376697 8.36196694 47.70698923 6.88331207 10.90944455 17.17917355 22.35213597 30.5476096 33.94618709 7.71811214 6.74708935 19.37969152 16.95446471 35.95226681 21.24954852 3.26119083 0.83596402 6.5235456 1.23531719 9.72768483 1.23531719 4.33583445 0 8.56571904-0.74864185 12.55808683-2.12134571C873.09912519 808.43184925 707.95667911 941.54104491 512 941.54104491z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3461 = [\n  _hoisted_2470\n];\nfunction _sfc_render470(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock470(), _createElementBlock470(\"svg\", _hoisted_1471, _hoisted_3461);\n}\nvar menu_xinwendongtai_default = /* @__PURE__ */ export_helper_default(menu_xinwendongtai_vue_vue_type_script_lang_default, [[\"render\", _sfc_render470], [\"__file\", \"menu-xinwendongtai.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitong.vue?vue&type=script&lang.ts\nvar menu_xitong_vue_vue_type_script_lang_default = {\n  name: \"MenuXitong\"\n};\n\n// src/components/menu-xitong.vue\nimport { createElementVNode as _createElementVNode462, openBlock as _openBlock471, createElementBlock as _createElementBlock471 } from \"vue\";\nvar _hoisted_1472 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2471 = /* @__PURE__ */ _createElementVNode462(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M2.06923852 693.8745363c2.26948741 41.37263408 36.74870518 73.60663703 78.19415703 73.08477629h401.99054223v111.33838223H328.42638222c-16.18981925 0-29.32129185 13.13147259-29.32129185 29.32129185s13.13147259 29.32129185 29.32129185 29.32129185h367.15937186c16.18981925 0 29.32129185-13.13147259 29.32129184-29.32129185s-13.13147259-29.32129185-29.32129184-29.32129185H541.74606222v-111.33838223h402.00267853c41.43331555 0.52186075 75.91253333-31.71214222 78.19415703-73.08477629v-67.13799112H2.06923852v67.13799112zM943.73660445 87.05972148H80.26339555c-42.39208297-0.47331555-77.25966222 33.26558815-78.19415703 75.64553482v398.59237925h1019.86152296V162.7052563c-0.93449482-42.39208297-35.80207408-76.11885037-78.19415703-75.64553482z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3462 = [\n  _hoisted_2471\n];\nfunction _sfc_render471(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock471(), _createElementBlock471(\"svg\", _hoisted_1472, _hoisted_3462);\n}\nvar menu_xitong_default = /* @__PURE__ */ export_helper_default(menu_xitong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render471], [\"__file\", \"menu-xitong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitongcaidan.vue?vue&type=script&lang.ts\nvar menu_xitongcaidan_vue_vue_type_script_lang_default = {\n  name: \"MenuXitongcaidan\"\n};\n\n// src/components/menu-xitongcaidan.vue\nimport { createElementVNode as _createElementVNode463, openBlock as _openBlock472, createElementBlock as _createElementBlock472 } from \"vue\";\nvar _hoisted_1473 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2472 = /* @__PURE__ */ _createElementVNode463(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M84 786.2c-38 0-72 32-72 70.1 0 38 34 72.1 72 72.1s70-34 70-72.1c0-38-32-70.1-70-70.1z m0-344.3c-38 0-72 32-72 70.1 0 38 34 70.1 72 70.1s70-32 70-70.1c0-38-32-70.1-70-70.1z m256-210.1h606c36 0 66-28 66-64.1s-30-66.1-66-66.1H340c-36 0-66 30-66 66.1s30 64.1 66 64.1zM84 95.6c-38 0-72 34-72 72.1 0 38 34 70.1 72 70.1s70-32 70-70.1c0-38-32-72.1-70-72.1zM946 446H340c-36 0-66 30-66 66s30 66.1 66 66.1h606c36 0 66-30 66-66.1 0-36-30-66-66-66z m0 344.3H340c-36 0-66 30-66 66s30 66.1 66 66.1h606c36 0 66-30 66-66.1 0-36-30-66-66-66z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3463 = [\n  _hoisted_2472\n];\nfunction _sfc_render472(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock472(), _createElementBlock472(\"svg\", _hoisted_1473, _hoisted_3463);\n}\nvar menu_xitongcaidan_default = /* @__PURE__ */ export_helper_default(menu_xitongcaidan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render472], [\"__file\", \"menu-xitongcaidan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitongdiaodu.vue?vue&type=script&lang.ts\nvar menu_xitongdiaodu_vue_vue_type_script_lang_default = {\n  name: \"MenuXitongdiaodu\"\n};\n\n// src/components/menu-xitongdiaodu.vue\nimport { createElementVNode as _createElementVNode464, openBlock as _openBlock473, createElementBlock as _createElementBlock473 } from \"vue\";\nvar _hoisted_1474 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2473 = /* @__PURE__ */ _createElementVNode464(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 378.50074112a167.48088889 167.48088889 0 1 1 167.48088889-167.48088889A167.96634112 167.96634112 0 0 1 512 378.50074112z m0-237.87140779a70.3905189 70.3905189 0 1 0 70.3905189 70.3905189A70.3905189 70.3905189 0 0 0 512 140.62933333zM851.81629667 924.63407445a167.48088889 167.48088889 0 1 1 167.4808889-167.48088888A167.96634112 167.96634112 0 0 1 851.81629667 924.63407445z m0-237.38595555a70.3905189 70.3905189 0 1 0 70.39051776 69.90506667A70.3905189 70.3905189 0 0 0 851.81629667 687.2481189zM172.18370333 924.63407445a167.48088889 167.48088889 0 1 1 167.48088888-167.48088888A167.96634112 167.96634112 0 0 1 172.18370333 924.63407445z m0-237.38595555a70.3905189 70.3905189 0 1 0 70.39051889 69.90506667A70.3905189 70.3905189 0 0 0 172.18370333 687.2481189zM890.16699221 560.54518557a48.54518557 48.54518557 0 0 1-48.54518442-38.83614891 339.81629667 339.81629667 0 0 0-112.62483001-190.29712555 48.54518557 48.54518557 0 0 1 63.10874112-74.27413333 436.90666667 436.90666667 0 0 1 145.63555555 242.72592555A48.54518557 48.54518557 0 0 1 900.3614811 560.54518557zM512 1021.72444445a430.11034112 430.11034112 0 0 1-179.61718557-38.83614778 48.54518557 48.54518557 0 0 1 39.80705224-88.35223779 339.81629667 339.81629667 0 0 0 272.82394112 2.91271111 48.54518557 48.54518557 0 1 1 38.35069554 88.83768889 421.85765888 421.85765888 0 0 1-171.36450333 35.43798557zM134.80391111 555.20521443a36.40888889 36.40888889 0 0 1-10.19448889 0 48.54518557 48.54518557 0 0 1-37.37979221-57.28331776 436.90666667 436.90666667 0 0 1 148.54826666-242.72592668 48.54518557 48.54518557 0 0 1 68.44871112 6.79632668 48.54518557 48.54518557 0 0 1-6.79632669 67.96325888 339.81629667 339.81629667 0 0 0-115.05208889 186.89896335 48.54518557 48.54518557 0 0 1-47.5742811 38.35069553z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3464 = [\n  _hoisted_2473\n];\nfunction _sfc_render473(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock473(), _createElementBlock473(\"svg\", _hoisted_1474, _hoisted_3464);\n}\nvar menu_xitongdiaodu_default = /* @__PURE__ */ export_helper_default(menu_xitongdiaodu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render473], [\"__file\", \"menu-xitongdiaodu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitonggonggao.vue?vue&type=script&lang.ts\nvar menu_xitonggonggao_vue_vue_type_script_lang_default = {\n  name: \"MenuXitonggonggao\"\n};\n\n// src/components/menu-xitonggonggao.vue\nimport { createElementVNode as _createElementVNode465, openBlock as _openBlock474, createElementBlock as _createElementBlock474 } from \"vue\";\nvar _hoisted_1475 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2474 = /* @__PURE__ */ _createElementVNode465(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M457.6798629 986.26045383c-34.66135438-31.25433685-71.35099563-63.87322653-110.08871765-97.85084928-38.73073607-33.97180075-74.74622237-65.23195847-108.04762283-93.76999538-38.73073607-32.61772573-77.46263723-64.89314873-116.20035925-96.82976199-7.4750885 0.67761949-14.95017586 1.02108729-22.4206063 1.02108729-6.11746247 0.67645554-12.57258553 1.01526528-19.37235399 1.01526528l-17.32427321 0c-18.35122461 0-33.29674354-5.60375239-44.84819968-16.81707804-11.55262009-11.21332565-17.33125917-24.63066226-17.33125916-40.25899464L2.04647083 385.91499605l1.02112938 0-1.02112938-1.02108728c0-19.02690987 5.94746823-34.65407829 17.8377489-46.88732616 11.89028067-12.22859093 26.67279019-18.34463232 44.34170994-18.34463232l58.09726919 0c62.51828224-53.00453262 119.26141952-100.56831317 170.22708167-142.69716594 21.74412231-18.34579741 43.15058517-36.18279765 64.21356772-53.51100074 21.06880341-17.33053213 40.09534691-33.12652288 57.08196068-47.39612331 16.99243463-14.26843534 31.26146958-26.16287459 42.81292572-35.67400049 11.55145614-9.51461888 18.68422713-15.28952263 21.40646286-17.32936704 20.38649742-14.95187683 36.86429241-21.7443749 49.43105707-20.38564182 12.57374947 1.35873195 22.42759225 7.47477447 29.56502129 18.34929038 7.13160704 10.8686939 12.05794589 24.11837213 14.77668864 39.75019748 2.71757881 15.62833237 4.07636765 29.89676885 4.07636765 42.80647225l0 825.60395036c0 12.91086734-2.37409735 26.67167061-7.13160704 41.28240981-4.75867363 14.60724622-12.06493184 26.15938162-21.91411655 34.65524224-9.85500672 8.49586062-22.25759801 12.05743957-37.2101029 10.69987158C494.71415069 1014.45967986 477.38405547 1004.60974421 457.6798629 986.26045383zM786.91440754 380.81887687c14.26903495 19.70220032 25.6516608 39.58021006 34.14787868 59.62704214 8.49039587 20.04217515 12.74141582 44.33984853 12.74141583 72.8778843 0 27.17813987-4.4198491 51.63997867-13.25489152 73.3878454-8.83387733 21.7443749-20.04185202 41.44773917-33.63440299 59.11591708-5.43515762 7.47477447-11.21379669 14.09844907-17.33125917 19.87684466-6.11047651 5.77257472-13.93021042 8.66002717-23.44173568 8.66002717-12.23376213 0-22.59525859-4.41500672-31.08681842-13.24734919-8.49621789-8.83467037-12.74141582-19.36571961-12.74141582-31.59896747 0-5.43492893 1.01414343-10.8686939 3.05523826-16.30944483l-1.02112938 0c3.3998848-7.47477447 7.4750885-14.60724622 12.23376213-21.4009071 4.75750969-6.79831893 9.34153102-13.76080327 13.76138126-20.89793194 4.41402823-7.13247175 8.15157134-15.28952263 11.20681074-24.46067485 3.06222421-9.17348125 4.58984334-20.21681949 4.58984334-33.12652288 0-12.23324786-1.52761913-22.93311943-4.58984334-32.10660067-3.05523826-9.17231616-6.79394645-17.49819051-11.20681074-24.97296498-4.4198491-7.47477447-9.00387157-14.60724622-13.76138126-21.40556402-4.75867363-6.79366201-8.49621789-13.93079069-11.21379669-21.4009071-2.04109483-4.75730944-3.05523826-10.19223837-3.05523826-16.30944483 0-12.23208391 4.24519794-22.7642971 12.74141582-31.59663957 8.49039587-8.83467037 18.85189234-13.24967822 31.08681842-13.24967822 9.51152526 0 17.33125917 2.88745131 23.44173568 8.66002716C775.70061085 366.71809877 781.47924992 373.34293845 786.91440754 380.81887687zM843.99636821 838.46716871c-8.1585573 6.11720647-17.66891861 9.17231616-28.54389077 9.17231616-13.58789405 0-25.30817934-4.92729685-35.16202211-14.7772325-9.85500672-9.85342862-14.78251065-21.57438749-14.78251066-35.16636728 0-14.95071289 5.77863907-27.51811357 17.33125917-37.71035194 0.67648398-0.68111246 1.35762489-1.18874567 2.03527282-1.53221233 0.68346994-0.33880974 1.35995392-0.84644295 2.04109483-1.52755541l1.02112938-1.0210873c19.0265435-12.90970339 36.6966272-28.19922603 52.99977102-45.86740394 16.31012978-17.66817792 30.57916473-36.86391011 42.81292573-57.58719772 12.23376213-20.72445155 21.74412231-42.80647225 28.5380699-66.25188182 6.79860451-23.44191659 10.19266617-47.7337691 10.19266617-72.87555641 0-50.96352313-12.90908103-97.51320349-38.73073607-139.64205625s-58.10309006-76.78409387-96.83382613-103.96223374c-14.26903495-10.19223837-21.40646286-23.78421931-21.40646287-40.77011968 0-13.59198094 4.92750393-25.31177472 14.78251065-35.16636729 9.85384277-9.85459371 21.57529315-14.7772325 35.16202212-14.77723249 11.55262009 0 21.74528739 3.73273031 30.57916472 11.20750364 25.14517106 17.66817792 48.5915648 38.22264206 70.3368522 61.66805162 21.74412231 23.44191659 40.42834944 48.92367758 56.06199524 76.44528413 15.62782379 27.51811357 27.85692786 56.90608526 36.68964124 88.16624299 8.83504128 31.25433685 13.25489152 63.53441678 13.25489152 96.82976199 0 33.97762275-4.4198491 66.58952647-13.25489152 97.84968533-8.83387733 31.2555008-21.2318117 60.81345877-37.20311694 88.67387506-15.96664832 27.86041629-34.82436267 53.51100075-56.56848498 76.95757426C893.60207645 800.24452665 869.81685931 820.80015474 843.99636821 838.46716871z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3465 = [\n  _hoisted_2474\n];\nfunction _sfc_render474(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock474(), _createElementBlock474(\"svg\", _hoisted_1475, _hoisted_3465);\n}\nvar menu_xitonggonggao_default = /* @__PURE__ */ export_helper_default(menu_xitonggonggao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render474], [\"__file\", \"menu-xitonggonggao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitongguanli.vue?vue&type=script&lang.ts\nvar menu_xitongguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuXitongguanli\"\n};\n\n// src/components/menu-xitongguanli.vue\nimport { createElementVNode as _createElementVNode466, openBlock as _openBlock475, createElementBlock as _createElementBlock475 } from \"vue\";\nvar _hoisted_1476 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2475 = /* @__PURE__ */ _createElementVNode466(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M902.51829214 456.31859451L1020.13116236 339.57692981l-105.19817837-176.12890336-163.0608073 40.14809676-88.8630586-50.02177014L616.98037699-2.37160174H406.65662038l-45.73833862 156.01855495-88.86305858 50.09437123-163.06080732-40.14809773L3.72363636 339.57692981l117.32246872 116.66906458v99.02713348L3.72363636 672.0873927l105.19817938 176.12890439 163.06080732-40.22069789 88.86305759 50.09437028 45.73833858 156.01855593h210.39635776l45.7383386-156.01855593 88.93565871-50.09437028 162.98820721 40.22069789 105.2707795-176.12890436-117.32246876-116.66906459V456.31859451zM342.62294555 505.83216176A169.30445334 169.30445334 0 0 1 511.92739987 336.45510731 169.30445334 169.30445334 0 0 1 681.30445334 505.83216176 169.30445334 169.30445334 0 0 1 511.92739987 675.20921525 169.30445334 169.30445334 0 0 1 342.5503454 505.83216176z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3466 = [\n  _hoisted_2475\n];\nfunction _sfc_render475(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock475(), _createElementBlock475(\"svg\", _hoisted_1476, _hoisted_3466);\n}\nvar menu_xitongguanli_default = /* @__PURE__ */ export_helper_default(menu_xitongguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render475], [\"__file\", \"menu-xitongguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitonghuancun.vue?vue&type=script&lang.ts\nvar menu_xitonghuancun_vue_vue_type_script_lang_default = {\n  name: \"MenuXitonghuancun\"\n};\n\n// src/components/menu-xitonghuancun.vue\nimport { createElementVNode as _createElementVNode467, openBlock as _openBlock476, createElementBlock as _createElementBlock476 } from \"vue\";\nvar _hoisted_1477 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2476 = /* @__PURE__ */ _createElementVNode467(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M856.58255118 469.63329282c-16.94668239-2.82444747-28.24447105-16.94668239-28.24447227-33.89336598 0-124.27567408-79.08451942-240.07800695-197.71129856-276.7958192-163.81793379-50.84004837-319.16252638 42.36670718-367.1781285 183.58906363-2.82444747 11.29778866-14.12223613 19.77112986-25.42002479 22.59557733-132.74901526 25.4200248-234.42911201 144.04680394-234.42911202 285.26916161v2.82444625c0 127.10012155 107.32899169 225.95577083 231.60466576 225.95577204h579.01166319c112.97788541-2.82444747 203.3601935-93.20675555 203.3601935-206.18464219 2.82444747-98.85564928-67.78673076-180.76461739-160.99348631-203.36019349z m-169.46682874 115.80233288l-132.74901526 132.74901527c-14.12223613 14.12223613-33.89336598 16.94668239-50.84004837 11.29778866h-2.82444747c-5.64889373-2.82444747-11.29778866-5.64889373-16.94668239-11.29778866l-132.74901526-132.74901527c-16.94668239-16.94668239-16.94668239-48.01560091 0-64.96228451 16.94668239-16.94668239 48.01560091-16.94668239 64.96228329 0l56.48894331 56.48894332V427.26658563c0-25.4200248 19.77112986-45.19115466 45.19115344-45.19115343 25.4200248 0 45.19115466 19.77112986 45.19115464 45.19115343v149.69569888l56.48894332-56.48894332c19.77112986-19.77112986 48.01560091-19.77112986 67.78673075 0 19.77112986 16.94668239 19.77112986 45.19115466 0 64.96228451z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3467 = [\n  _hoisted_2476\n];\nfunction _sfc_render476(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock476(), _createElementBlock476(\"svg\", _hoisted_1477, _hoisted_3467);\n}\nvar menu_xitonghuancun_default = /* @__PURE__ */ export_helper_default(menu_xitonghuancun_vue_vue_type_script_lang_default, [[\"render\", _sfc_render476], [\"__file\", \"menu-xitonghuancun.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitongjiankong.vue?vue&type=script&lang.ts\nvar menu_xitongjiankong_vue_vue_type_script_lang_default = {\n  name: \"MenuXitongjiankong\"\n};\n\n// src/components/menu-xitongjiankong.vue\nimport { createElementVNode as _createElementVNode468, openBlock as _openBlock477, createElementBlock as _createElementBlock477 } from \"vue\";\nvar _hoisted_1478 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2477 = /* @__PURE__ */ _createElementVNode468(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M862.43093333 897.24906666c17.6224 0 31.90826667 14.28586667 31.90826666 31.90933334 0 17.62133333-14.28586667 31.90826667-31.90826666 31.90826666H183.22133333c-17.6224 0-31.90826667-14.28586667-31.90826667-31.90826666 0-17.62346667 14.28586667-31.90933333 31.90826667-31.90933334h679.2096zM845.29493333 72.53333333C929.26293333 72.53333333 997.33333333 140.66666666 997.33333333 224.7136v400.08533333c0 84.04586667-68.0704 152.1792-152.0384 152.1792H197.90506666C113.93706666 776.97813333 45.86666666 708.8448 45.86666666 624.8v-400.08533334C45.86666666 140.66666666 113.93706666 72.53333333 197.90506666 72.53333333h647.38986667z m-96.19306667 162.4032l-0.416 0.44373333-171.12533333 185.73653334-117.4304-89.4528-0.4192-0.3136c-13.72053333-10.12693333-31.70133333-7.58293333-42.92906667 6.07466666l-0.33813333 0.41706667-170.19733334 213.0336-0.37973333 0.4832c-12.288 15.8912-11.50613333 40.26986667 1.7696 55.0528l0.40533333 0.4448 0.416 0.4416c13.67893333 14.27626667 34.66346667 13.3664 47.38666667-2.05546667l0.384-0.47253333L446.82666666 416.26666666l115.7408 88.1664 0.39466667 0.2976c12.96746667 9.58506667 29.8624 7.90186667 41.23413333-4.11093333l0.34346667-0.36693333 190.69866666-206.98133334 0.40853334-0.4512c13.36533333-14.98453333 13.95626667-39.70986667 1.22986666-55.536-12.72746667-15.82613333-34.00106667-16.8192-47.776-2.34666666z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3468 = [\n  _hoisted_2477\n];\nfunction _sfc_render477(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock477(), _createElementBlock477(\"svg\", _hoisted_1478, _hoisted_3468);\n}\nvar menu_xitongjiankong_default = /* @__PURE__ */ export_helper_default(menu_xitongjiankong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render477], [\"__file\", \"menu-xitongjiankong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitonglogo.vue?vue&type=script&lang.ts\nvar menu_xitonglogo_vue_vue_type_script_lang_default = {\n  name: \"MenuXitonglogo\"\n};\n\n// src/components/menu-xitonglogo.vue\nimport { createElementVNode as _createElementVNode469, openBlock as _openBlock478, createElementBlock as _createElementBlock478 } from \"vue\";\nvar _hoisted_1479 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2478 = /* @__PURE__ */ _createElementVNode469(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M510.421333 0.981333c281.386667 0 509.44 228.096 509.44 509.44-0.298667 281.216-228.224 509.141333-509.44 509.44-281.344 0-509.44-228.053333-509.44-509.44C0.981333 229.12 229.077333 0.981333 510.421333 0.981333z m203.221334 597.930667c-61.696 31.573333-145.877333 74.538667-146.858667 74.88a83.157333 83.157333 0 0 1-68.352 0 37294.634667 37294.634667 0 0 1-146.773333-74.88l-39.253334 20.138667a21.162667 21.162667 0 0 0-0.213333 39.253333v0.426667l201.173333 102.698666 0.170667-0.085333c5.802667 2.944 12.202667 4.693333 19.114667 4.693333a42.026667 42.026667 0 0 0 19.114666-4.693333l0.170667 0.085333 201.173333-102.741333v-0.426667a21.162667 21.162667 0 0 0-0.170666-39.253333l-39.296-20.096z m0-127.402667c-61.696 31.573333-145.877333 74.538667-146.858667 74.88a83.157333 83.157333 0 0 1-68.394667 0 37411.157333 37411.157333 0 0 1-146.688-74.88l-39.338666 20.138667a21.162667 21.162667 0 0 0-0.170667 39.253333v0.426667l201.173333 102.698667 0.170667-0.085334c5.802667 2.944 12.202667 4.736 19.114667 4.736a42.026667 42.026667 0 0 0 19.114666-4.693333l0.170667 0.042667 201.173333-102.698667v-0.426667a21.162667 21.162667 0 0 0-0.170666-39.253333l-39.296-20.138667z m-180.992-215.04a42.112 42.112 0 0 0-19.072 4.736h-0.341334L312.32 364.288a21.162667 21.162667 0 0 0-0.170667 39.210667v0.426666l201.173334 102.698667 0.170666-0.085333c5.802667 2.944 12.202667 4.736 19.114667 4.736a42.026667 42.026667 0 0 0 19.114667-4.693334l0.170666 0.042667 201.173334-102.698667v-0.426666a21.162667 21.162667 0 0 0-0.170667-39.253334L552.106667 261.248h-0.384a42.112 42.112 0 0 0-19.072-4.693333z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3469 = [\n  _hoisted_2478\n];\nfunction _sfc_render478(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock478(), _createElementBlock478(\"svg\", _hoisted_1479, _hoisted_3469);\n}\nvar menu_xitonglogo_default = /* @__PURE__ */ export_helper_default(menu_xitonglogo_vue_vue_type_script_lang_default, [[\"render\", _sfc_render478], [\"__file\", \"menu-xitonglogo.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitongpeizhi.vue?vue&type=script&lang.ts\nvar menu_xitongpeizhi_vue_vue_type_script_lang_default = {\n  name: \"MenuXitongpeizhi\"\n};\n\n// src/components/menu-xitongpeizhi.vue\nimport { createElementVNode as _createElementVNode470, openBlock as _openBlock479, createElementBlock as _createElementBlock479 } from \"vue\";\nvar _hoisted_1480 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2479 = /* @__PURE__ */ _createElementVNode470(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M557.26838518 550.10797037h77.91502223c2.42725925-11.65084445 4.73315555-25.48622222 4.73315556-37.13706667 0-83.49771852-75.48776297-153.0386963-162.8690963-143.69374815-66.02145185 6.91768889-120.2706963 60.19602963-127.30974815 125.12521482-9.46631111 85.80361482 58.9824 159.95638518 146.24237037 159.95638518v-41.74885925c-2.42725925-34.70980741 25.97167408-62.62328889 61.28829629-62.50192593M1029.00622222 1036.89481482H590.27911111c-9.46631111 0-18.81125925-11.52948148-18.81125926-25.48622223v-60.19602962c0-13.95674075 7.03905185-25.48622222 18.81125926-25.48622222H1029.00622222c9.46631111 0 18.81125925 11.52948148 18.81125926 25.48622222v60.19602962c-2.3058963 13.95674075-9.34494815 25.48622222-18.81125926 25.48622223m0.12136296-153.0386963H590.27911111c-9.46631111 0-18.81125925-11.52948148-18.81125926-25.48622222v-60.19602963c0-13.95674075 7.03905185-25.48622222 18.81125926-25.48622222H1029.00622222c9.46631111 0 18.81125925 11.52948148 18.81125926 25.48622222v60.19602963c-2.3058963 13.95674075-9.34494815 25.48622222-18.6898963 25.48622222m0-153.0386963H590.27911111c-9.46631111 0-18.81125925-11.52948148-18.81125926-25.48622222v-60.19602963c0-13.95674075 7.03905185-25.48622222 18.81125926-25.48622222H1029.00622222c9.46631111 0 18.81125925 11.52948148 18.81125926 25.48622222v60.19602963c-2.3058963 13.95674075-9.34494815 25.48622222-18.6898963 25.48622222z m-757.30488888-217.84651852c0 120.51342222 99.03217778 220.15241482 224.03602962 220.15241482v303.65013333H403.98696297c-35.43798518 0-63.71555555-25.48622222-66.02145186-60.19602963l-11.77220741-76.58002963c-31.7970963-13.22856297-61.89511111-30.4621037-89.68722962-50.97244444l-73.18186667 30.09801482c-14.56355555 7.40314075-31.43300741 8.98085925-47.08882963 4.61179258-16.50536297-5.09724445-30.70482963-15.65582222-40.17114075-30.0980148L-15.92888889 698.41351111c-16.50536297-30.09801482-9.46631111-67.23508148 21.23851852-85.80361481l63.71555555-48.66654815c-2.42725925-18.56853333-2.42725925-34.83117037-2.42725926-50.97244445 0-16.26263703 0-32.52527408 2.42725926-51.0938074l-61.28829629-48.66654815C-22.23976297 395.97700741-32.79834075 357.74767408-15.92888889 327.5282963l91.99312592-155.3445926c18.81125925-30.21937778 56.6765037-41.74885925 87.25997038-25.48622222l73.18186667 30.09801482c28.27757037-20.87442963 56.6765037-37.13706667 89.68722962-50.97244445l9.46631112-78.76456296c2.3058963-32.52527408 30.70482963-60.31739259 66.02145185-60.31739259h183.98625185c35.31662222 0 63.71555555 27.79211852 63.71555556 62.62328888l11.7722074 76.45866667c32.52527408 11.89357037 62.86601482 29.12711111 89.68722963 50.97244445L823.90281482 146.69748148c14.0781037-7.03905185 30.70482963-9.22358518 47.08882963-4.61179259 16.62672592 4.61179259 30.70482963 16.26263703 40.17114073 30.21937778l94.29902223 155.34459258c16.50536297 29.73392592 7.28177778 67.11371852-21.23851852 85.80361483l-63.71555556 48.66654814c2.42725925 16.26263703 2.42725925 34.70980741 2.42725926 51.09380741 0 11.52948148 0 25.48622222-2.42725926 37.13706667H717.71022222c0-11.65084445 2.42725925-23.30168889 2.42725926-37.13706667 0-120.63478518-101.45943703-220.27377778-224.15739259-220.27377778-122.69795555-0.24272592-224.03602963 99.51762963-224.15739259 220.03105185z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3470 = [\n  _hoisted_2479\n];\nfunction _sfc_render479(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock479(), _createElementBlock479(\"svg\", _hoisted_1480, _hoisted_3470);\n}\nvar menu_xitongpeizhi_default = /* @__PURE__ */ export_helper_default(menu_xitongpeizhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render479], [\"__file\", \"menu-xitongpeizhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitongquanxian.vue?vue&type=script&lang.ts\nvar menu_xitongquanxian_vue_vue_type_script_lang_default = {\n  name: \"MenuXitongquanxian\"\n};\n\n// src/components/menu-xitongquanxian.vue\nimport { createElementVNode as _createElementVNode471, openBlock as _openBlock480, createElementBlock as _createElementBlock480 } from \"vue\";\nvar _hoisted_1481 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2480 = /* @__PURE__ */ _createElementVNode471(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M924.11398602 119.18146853c-26.83006993 4.62587413-54.27692307 7.093007-82.44335665 7.09300699-118.62797203 0-227.28461538-43.07202797-311.06433567-114.3104895-10.8965035-9.25174825-26.93286713-9.25174825-37.82937062-3e-8-83.77972029 71.34125874-192.43636364 114.31048953-311.06433567 114.31048953-27.75524475 0-54.99650348-2.36433566-81.41538462-6.88741258-17.68111888-2.98111887-33.82027971 10.69090909-33.92307692 28.68041957-0.20559441 112.15174825-0.41118881 244.76013984-0.41118881 249.28321676 0 484.17482517 405.53496503 609.27902098 443.05594407 619.86713289 1.85034964 0.51398601 3.7006993 0.51398601 5.55104893 0C551.9881119 1006.73251748 955.05594406 882.34790209 957.62587413 401.97657342l0.41118881-253.90909091c0-18.09230769-16.24195804-31.96993006-33.92307692-28.88601398zM546.95104895 569.74160838v158.82167832c0 19.32587412-15.62517481 34.95104895-34.95104895 34.95104898s-34.95104895-15.62517481-34.95104895-34.95104898V569.74160838c-70.10769231-15.93356644-122.43146852-78.53706293-122.43146854-153.47622377 0-86.86363637 70.41608393-157.38251749 157.38251749-157.38251748S669.38251749 329.29895104 669.38251749 416.26538461c0 74.93916084-52.32377623 137.64545455-122.43146854 153.47622377z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3471 = [\n  _hoisted_2480\n];\nfunction _sfc_render480(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock480(), _createElementBlock480(\"svg\", _hoisted_1481, _hoisted_3471);\n}\nvar menu_xitongquanxian_default = /* @__PURE__ */ export_helper_default(menu_xitongquanxian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render480], [\"__file\", \"menu-xitongquanxian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xitongrizhi.vue?vue&type=script&lang.ts\nvar menu_xitongrizhi_vue_vue_type_script_lang_default = {\n  name: \"MenuXitongrizhi\"\n};\n\n// src/components/menu-xitongrizhi.vue\nimport { createElementVNode as _createElementVNode472, openBlock as _openBlock481, createElementBlock as _createElementBlock481 } from \"vue\";\nvar _hoisted_1482 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2481 = /* @__PURE__ */ _createElementVNode472(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M253.09234608 253.09234608c20.71261275 0 38.83614815-18.12353539 38.83614815-38.83614814v-155.3445926c0-20.71261275-18.12353539-38.83614815-38.83614815-38.83614815s-38.83614815 18.12353539-38.83614814 38.83614815v155.3445926c0 20.71261275 18.12353539 38.83614815 38.83614814 38.83614814zM589.6722963 253.09234608c20.71261275 0 38.83614815-18.12353539 38.83614815-38.83614814v-155.3445926c0-20.71261275-18.12353539-38.83614815-38.83614815-38.83614815s-38.83614815 18.12353539-38.83614815 38.83614815v155.3445926c0 20.71261275 18.12353539 38.83614815 38.83614815 38.83614814z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3472 = /* @__PURE__ */ _createElementVNode472(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M460.21846873 770.90765392c0-126.86475022 77.6722963-238.19504238 186.41351111-284.79841894H162.47466667c-20.71261275 0-38.83614815-18.12353539-38.83614815-38.83614815s18.12353539-38.83614815 38.83614815-38.83614815h491.9245428c20.71261275 0 38.83614815 18.12353539 38.83614815 38.83614815 0 10.35630577-5.17815349 18.12353539-10.35630577 25.89076502 28.47984238-7.76722963 56.95968355-12.94538311 88.02860207-12.94538312 7.76722963 0 18.12353539 0 25.89076624 2.58907735V227.20157984c0-56.95968355-46.60337778-103.56306132-103.56306254-103.56306132v90.61767942c0 64.72691317-51.78153127 116.50844445-116.50844445 116.50844444S460.21846873 278.98311111 460.21846873 214.25619794V123.63851852h-103.56306132v90.61767942c0 64.72691317-51.78153127 116.50844445-116.50844444 116.50844444S123.63851852 278.98311111 123.63851852 214.25619794V123.63851852c-56.95968355 0-103.56306132 46.60337778-103.56306133 103.56306132v673.15990164c0 56.95968355 46.60337778 103.56306132 103.56306133 103.56306133h442.73208889c-64.72691317-56.95968355-106.15213868-139.81013333-106.15213868-233.01688889z m-64.72691318 25.89076624h-233.01688888c-20.71261275 0-38.83614815-18.12353539-38.83614815-38.83614815s18.12353539-38.83614815 38.83614815-38.83614815h233.01688888c20.71261275 0 38.83614815 18.12353539 38.83614815 38.83614815s-18.12353539 38.83614815-38.83614815 38.83614815z m0-155.3445926h-233.01688888c-20.71261275 0-38.83614815-18.12353539-38.83614815-38.83614815s18.12353539-38.83614815 38.83614815-38.83614814h233.01688888c20.71261275 0 38.83614815 18.12353539 38.83614815 38.83614814s-18.12353539 38.83614815-38.83614815 38.83614815z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4104 = /* @__PURE__ */ _createElementVNode472(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M770.90765392 537.89076502c-129.45382756 0-233.01688889 106.15213868-233.0168889 233.0168889s106.15213868 233.01688889 233.0168889 233.01688889 233.01688889-106.15213868 233.01688889-233.01688889-103.56306132-233.01688889-233.01688889-233.0168889z m90.61767941 310.6891852h-129.45382756c-20.71261275 0-38.83614815-18.12353539-38.83614815-38.83614816v-155.34459259c0-20.71261275 18.12353539-38.83614815 38.83614815-38.83614815s38.83614815 18.12353539 38.83614815 38.83614815V770.90765392h90.61767941c20.71261275 0 38.83614815 18.12353539 38.83614815 38.83614814s-18.12353539 38.83614815-38.83614815 38.83614816z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_539 = [\n  _hoisted_2481,\n  _hoisted_3472,\n  _hoisted_4104\n];\nfunction _sfc_render481(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock481(), _createElementBlock481(\"svg\", _hoisted_1482, _hoisted_539);\n}\nvar menu_xitongrizhi_default = /* @__PURE__ */ export_helper_default(menu_xitongrizhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render481], [\"__file\", \"menu-xitongrizhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-bangong.vue?vue&type=script&lang.ts\nvar menu_xm_bangong_vue_vue_type_script_lang_default = {\n  name: \"MenuXmBangong\"\n};\n\n// src/components/menu-xm-bangong.vue\nimport { createElementVNode as _createElementVNode473, openBlock as _openBlock482, createElementBlock as _createElementBlock482 } from \"vue\";\nvar _hoisted_1483 = {\n  class: \"icon\",\n  viewBox: \"0 0 1274 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2482 = /* @__PURE__ */ _createElementVNode473(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M423.99251565 467.055949c0 23.377492-14.32283 42.474598-31.77363299 42.474598-17.450804 0-31.773633-19.097106-31.773634-42.474598V414.868167c0-23.377492 14.32283-42.474598 31.773634-42.474598 17.450804 0 31.773633 19.097106 31.77363299 42.474598v52.187782z m467.71447001 0c0 23.377492-14.32283 42.474598-31.773634 42.474598-17.450804 0-31.773633-19.097106-31.77363301-42.474598V414.868167c0-23.377492 14.32283-42.474598 31.77363301-42.474598 17.450804 0 31.773633 19.097106 31.773634 42.474598v52.187782z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3473 = /* @__PURE__ */ _createElementVNode473(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M332.29348065 379.472669v-5.926688c0-23.871383 19.097106-43.462379 42.47459801-43.46238H408.68190465c23.377492 0 42.474598 19.426367 42.47459801 43.46238v6.255948c0 24.036013 5.926688 26.340836 29.46881099 26.340836h296.005144c21.566559 0 23.871383-2.963344 23.871383-22.883601v-9.713183c0-23.871383 19.097106-43.462379 42.474598-43.46238h33.090675c23.377492 0 42.474598 19.426367 42.47459801 43.46238v7.57299c0 21.566559 7.24373 25.023794 27.82250799 25.023794h163.477814c22.06045 0 28.481029-6.091318 28.481029-27.822508v-48.565916c0-47.742765-38.358842-86.760129-84.949196-86.760129H199.10762866c-46.754984 0-84.949196 39.017363-84.949196 86.760129v45.437942c0 24.365273 7.0791 30.785852 33.41993499 30.785852h154.42315101c24.529904 0 30.291961-2.798714 30.29196199-26.505466z m586.24823101 114.911897v9.219293c0 23.871383-19.097106 43.462379-42.47459801 43.462379h-33.090675c-23.377492 0-42.474598-19.426367-42.474598-43.462379v-8.725402c0-18.767846-5.103537-24.036013-24.200643-24.036013H481.77772465c-24.200643 0-30.456592 5.268167-30.456591 26.999357v5.597427c0 23.871383-19.097106 43.462379-42.47459799 43.46238H374.76807866c-23.377492 0-42.474598-19.590997-42.47459801-43.46238v-3.457234c0-25.353055-6.255949-28.97492-29.46881-28.97492h-156.23408399c-25.846945 0-32.596785 6.585209-32.59678501 32.432154v433.800643c0 47.742765 38.358842 86.760129 84.94919701 86.760129h854.26623799c46.754984 0 84.949196-39.017363 84.949196-86.760129V497.01865c0-19.426367-8.066881-26.011576-26.176206-26.011576h-164.30096499c-23.048232 0-29.13955 3.951125-29.13955 23.377492zM447.69926866 197.55627c27.328617-73.918971 96.967203-126.271383 178.953054-126.271383 81.821222 0 151.624437 52.517042 178.95305499 126.271383 0 0 5.762058 24.365273 39.51125401 24.365273S878.70119765 197.55627 878.70119765 197.55627C848.90312665 83.796785 747.49090865 0 626.65232266 0c-120.673955 0-222.250804 83.796785-252.048874 197.55627 0 0-1.810932 21.237299 32.92604499 21.237299 34.901608 0 40.169775-21.237299 40.16977501-21.237299z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4105 = [\n  _hoisted_2482,\n  _hoisted_3473\n];\nfunction _sfc_render482(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock482(), _createElementBlock482(\"svg\", _hoisted_1483, _hoisted_4105);\n}\nvar menu_xm_bangong_default = /* @__PURE__ */ export_helper_default(menu_xm_bangong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render482], [\"__file\", \"menu-xm-bangong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-biaoduan.vue?vue&type=script&lang.ts\nvar menu_xm_biaoduan_vue_vue_type_script_lang_default = {\n  name: \"MenuXmBiaoduan\"\n};\n\n// src/components/menu-xm-biaoduan.vue\nimport { createElementVNode as _createElementVNode474, openBlock as _openBlock483, createElementBlock as _createElementBlock483 } from \"vue\";\nvar _hoisted_1484 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2483 = /* @__PURE__ */ _createElementVNode474(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M766.4 705.6c-174.4 90.13333333-351.36 43.09333333-252.8-106.66666667 53.33333333-81.06666667 128.96-233.28 49.06666667-308.26666666-103.46666667-97.06666667-347.41333333-40.64-418.56-26.98666667-12.48 2.34666667-21.33333333 13.44-20.8 26.13333333v0.74666667c0.53333333 15.68 14.93333333 27.09333333 30.4 24.32 95.04-17.6 245.76-21.97333333 274.56 33.49333333 44.8 86.18666667-166.93333333 250.13333333-215.46666667 375.46666667-96.85333333 249.92 334.61333333 321.06666667 539.09333333 228.69333333 9.06666667-4.05333333 14.82666667-13.01333333 15.04-22.93333333 0.32-23.57333333-0.10666667-224.21333333-0.53333333-224zM210.88 105.92L95.25333333 34.24c-4.05333333-2.56-8.74666667-3.84-13.54666666-3.84H54.93333333c-14.18666667 0-25.6 11.52-25.6 25.6v239.89333333c0 14.18666667 11.52 25.6 25.6 25.6h8.42666667c14.18666667 0 25.6-11.52 25.6-25.6V234.66666667c0-9.17333333 4.90666667-17.6 12.8-22.18666667L210.13333333 149.97333333c16.74666667-9.70666667 17.17333333-33.81333333 0.74666667-44.05333333zM1001.28 693.65333333l-115.52-71.68c-4.05333333-2.56-8.74666667-3.84-13.54666667-3.84h-26.77333333c-14.18666667 0-25.6 11.52-25.6 25.6v271.89333334c0 14.18666667 11.52 25.6 25.6 25.6h8.42666667c14.18666667 0 25.6-11.52 25.6-25.6V822.4c0-9.17333333 4.90666667-17.6 12.8-22.18666667L1000.53333333 737.70666667c16.74666667-9.70666667 17.17333333-33.81333333 0.74666667-44.05333334z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3474 = [\n  _hoisted_2483\n];\nfunction _sfc_render483(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock483(), _createElementBlock483(\"svg\", _hoisted_1484, _hoisted_3474);\n}\nvar menu_xm_biaoduan_default = /* @__PURE__ */ export_helper_default(menu_xm_biaoduan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render483], [\"__file\", \"menu-xm-biaoduan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-chakan.vue?vue&type=script&lang.ts\nvar menu_xm_chakan_vue_vue_type_script_lang_default = {\n  name: \"MenuXmChakan\"\n};\n\n// src/components/menu-xm-chakan.vue\nimport { createElementVNode as _createElementVNode475, openBlock as _openBlock484, createElementBlock as _createElementBlock484 } from \"vue\";\nvar _hoisted_1485 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2484 = /* @__PURE__ */ _createElementVNode475(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 156.92782909C156.92782909 156.92782909 14.8973037 512 14.8973037 512s142.03052539 355.08045597 497.1026963 355.08045597S1009.1026963 512 1009.1026963 512 867.07217091 156.92782909 512 156.92782909L512 156.92782909zM512 725.04993058c-117.61449794 0-213.04164555-95.36086723-213.04164555-213.04993058 0-117.68077829 95.42714761-213.04164555 213.04164555-213.04164555S725.04164555 394.31093665 725.04164555 512C725.04164555 629.68906335 629.61449794 725.04993058 512 725.04993058L512 725.04993058zM512 725.04993058M618.51253773 512c0 58.80724897-47.70528876 106.52910782-106.51253773 106.52910782S405.48746227 570.80724897 405.48746227 512c0-58.80724897 47.70528876-106.51253773 106.51253773-106.51253773C570.81553403 405.47089218 618.51253773 453.18446597 618.51253773 512L618.51253773 512zM618.51253773 512\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3475 = [\n  _hoisted_2484\n];\nfunction _sfc_render484(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock484(), _createElementBlock484(\"svg\", _hoisted_1485, _hoisted_3475);\n}\nvar menu_xm_chakan_default = /* @__PURE__ */ export_helper_default(menu_xm_chakan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render484], [\"__file\", \"menu-xm-chakan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-dongtai.vue?vue&type=script&lang.ts\nvar menu_xm_dongtai_vue_vue_type_script_lang_default = {\n  name: \"MenuXmDongtai\"\n};\n\n// src/components/menu-xm-dongtai.vue\nimport { createElementVNode as _createElementVNode476, openBlock as _openBlock485, createElementBlock as _createElementBlock485 } from \"vue\";\nvar _hoisted_1486 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2485 = /* @__PURE__ */ _createElementVNode476(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M763.37440099 70.93839926v754.1232015a125.68719975 125.68719975 0 0 0 125.68719976 125.68719975H134.93839925a125.68719975 125.68719975 0 0 1-125.68719975-125.68719975V70.93839926h754.12320149z m-251.37440099 540.45496058H134.93839925v100.54976069h377.06160075v-100.54976069z m125.68719975-188.53080037H134.93839925v100.54976068h502.7488005v-100.54976068z m0-188.53080037H134.93839925v100.5497607h502.7488005V234.3317591z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3476 = /* @__PURE__ */ _createElementVNode476(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M813.64928061 347.45023933H1014.7488005v465.04264189a100.54976068 100.54976068 0 1 1-201.09951989 0v-465.04264189z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4106 = [\n  _hoisted_2485,\n  _hoisted_3476\n];\nfunction _sfc_render485(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock485(), _createElementBlock485(\"svg\", _hoisted_1486, _hoisted_4106);\n}\nvar menu_xm_dongtai_default = /* @__PURE__ */ export_helper_default(menu_xm_dongtai_vue_vue_type_script_lang_default, [[\"render\", _sfc_render485], [\"__file\", \"menu-xm-dongtai.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-fabu.vue?vue&type=script&lang.ts\nvar menu_xm_fabu_vue_vue_type_script_lang_default = {\n  name: \"MenuXmFabu\"\n};\n\n// src/components/menu-xm-fabu.vue\nimport { createElementVNode as _createElementVNode477, openBlock as _openBlock486, createElementBlock as _createElementBlock486 } from \"vue\";\nvar _hoisted_1487 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2486 = /* @__PURE__ */ _createElementVNode477(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M340.1728 651.60106666l-319.96586667-194.90133333 969.04533334-379.35786667-169.6768 872.82346667-412.84266667-264.39680001L775.74826667 287.39839999zM409.6 756.79999999v223.91466668l136.8064-138.88853335z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3477 = [\n  _hoisted_2486\n];\nfunction _sfc_render486(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock486(), _createElementBlock486(\"svg\", _hoisted_1487, _hoisted_3477);\n}\nvar menu_xm_fabu_default = /* @__PURE__ */ export_helper_default(menu_xm_fabu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render486], [\"__file\", \"menu-xm-fabu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-gongchengguanli.vue?vue&type=script&lang.ts\nvar menu_xm_gongchengguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuXmGongchengguanli\"\n};\n\n// src/components/menu-xm-gongchengguanli.vue\nimport { createElementVNode as _createElementVNode478, openBlock as _openBlock487, createElementBlock as _createElementBlock487 } from \"vue\";\nvar _hoisted_1488 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2487 = /* @__PURE__ */ _createElementVNode478(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M866.703303 643.95362L739.489038 645.450258l66.450746 66.35097c-51.883465 68.945143-127.014713 119.431745-213.719965 139.586475V521.22927h131.604404V365.878203H592.219819v-85.308389c44.001169-26.440612 73.335282-74.532593 73.335282-129.509111C665.654877 67.648056 598.006821 0 514.594173 0 431.181526 0 363.53347 67.648056 363.53347 151.060703c0 54.976518 29.433889 103.168274 73.335282 129.509111v85.308389H296.583845v155.351067h140.284907v333.15171c-88.501218-16.961902-165.827536-65.153659-220.305174-132.701939l67.847608-67.747832-127.214265-1.496638L30.082432 650.937932l1.297087 127.214265 1.297086 127.214265 69.74335-69.543798c98.379031 115.141382 244.550716 188.177336 407.883855 188.177336 166.426191 0 315.092273-75.729904 413.471304-194.662769l67.747833 67.54828 1.297086-127.214265 1.297087-127.214265-127.413817 1.496639zM513.596414 108.057293c23.746663 0 43.00341 19.256748 43.003411 43.00341s-19.256748 43.00341-43.003411 43.003411-43.00341-19.256748-43.00341-43.003411 19.256748-43.00341 43.00341-43.00341z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3478 = [\n  _hoisted_2487\n];\nfunction _sfc_render487(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock487(), _createElementBlock487(\"svg\", _hoisted_1488, _hoisted_3478);\n}\nvar menu_xm_gongchengguanli_default = /* @__PURE__ */ export_helper_default(menu_xm_gongchengguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render487], [\"__file\", \"menu-xm-gongchengguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-guihua.vue?vue&type=script&lang.ts\nvar menu_xm_guihua_vue_vue_type_script_lang_default = {\n  name: \"MenuXmGuihua\"\n};\n\n// src/components/menu-xm-guihua.vue\nimport { createElementVNode as _createElementVNode479, openBlock as _openBlock488, createElementBlock as _createElementBlock488 } from \"vue\";\nvar _hoisted_1489 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2488 = /* @__PURE__ */ _createElementVNode479(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M989.80774765 744.84132453l-187.35248287-187.35248286a29.45793709 29.45793709 0 0 0-41.53569195 0l-187.35248287 187.35248286a29.45793709 29.45793709 0 0 0 0 41.53569197L760.91957283 975.2023967a29.45793709 29.45793709 0 0 0 41.53569195 0l187.35248287-187.35248287a29.45793709 29.45793709 0 0 0 0-43.0085893z m-291.63358182 0l-20.91513612 20.91513613a29.45793709 29.45793709 0 0 1-41.53569196 0 29.45793709 29.45793709 0 0 1 0-41.53569195l20.91513613-20.91513613a29.45793709 29.45793709 0 0 1 41.53569195 0 29.45793709 29.45793709 0 0 1 0.29457891 41.53569195z m124.90165479 41.53569197l-62.45082809 62.45082808a29.45793709 29.45793709 0 0 1-41.53569194 0 29.45793709 29.45793709 0 0 1 0-41.53569195l62.45082806-62.4508281a29.45793709 29.45793709 0 1 1 41.53569197 41.53569197zM281.63892784 453.20774271l187.35248286-187.35248287a29.45793709 29.45793709 0 0 0 0-41.53569195l-187.35248286-187.94164071a29.45793709 29.45793709 0 0 0-41.53569196 0L52.750753 224.02498898a29.45793709 29.45793709 0 0 0 0 41.53569194l187.35248288 187.35248287a29.45793709 29.45793709 0 0 0 41.53569196 0.29457892z m20.91513613-62.4508267a29.45793709 29.45793709 0 0 1-41.53569197-41.53569196 29.45793709 29.45793709 0 0 1 41.53569197 0 29.45793709 29.45793709 0 0 1 0 41.53569196z m-124.9016548-83.36596422a29.45793709 29.45793709 0 0 1 0-41.53569195l62.45082671-62.45082671a29.45793709 29.45793709 0 0 1 41.53569196 0 29.45793709 29.45793709 0 0 1 0 41.53569198l-62.45082671 62.45082668a29.45793709 29.45793709 0 0 1-41.53569196 0zM844.28553567 348.92664375a29.45793709 29.45793709 0 0 0 41.53569195 0l61.86166888-61.86166886a29.45793709 29.45793709 0 0 0 9.13196017-21.50429397 29.45793709 29.45793709 0 0 0-8.54280098-20.62055581l-166.73192704-166.73192704a29.45793709 29.45793709 0 0 0-42.41943008 0l-61.86166886 61.86166886a29.45793709 29.45793709 0 0 0 0 41.53569197zM802.45526478 390.75691601L635.72333775 224.02498898a29.45793709 29.45793709 0 0 0-41.53569197 0L85.743644 732.46899077a29.45793709 29.45793709 0 0 0-8.54280237 23.56635051l14.72896925 152.0029578a29.45793709 29.45793709 0 0 0 26.5121438 26.51214379l152.0029578 14.72896924a29.45793709 29.45793709 0 0 0 23.56634912-8.54280235l508.44400318-508.44400178a29.45793709 29.45793709 0 0 0 0-41.53569197z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3479 = [\n  _hoisted_2488\n];\nfunction _sfc_render488(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock488(), _createElementBlock488(\"svg\", _hoisted_1489, _hoisted_3479);\n}\nvar menu_xm_guihua_default = /* @__PURE__ */ export_helper_default(menu_xm_guihua_vue_vue_type_script_lang_default, [[\"render\", _sfc_render488], [\"__file\", \"menu-xm-guihua.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-jianjie.vue?vue&type=script&lang.ts\nvar menu_xm_jianjie_vue_vue_type_script_lang_default = {\n  name: \"MenuXmJianjie\"\n};\n\n// src/components/menu-xm-jianjie.vue\nimport { createElementVNode as _createElementVNode480, openBlock as _openBlock489, createElementBlock as _createElementBlock489 } from \"vue\";\nvar _hoisted_1490 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2489 = /* @__PURE__ */ _createElementVNode480(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M830.93333333 22.4c67.73333333 0 122.66666667 54.93333333 122.66666667 122.66666667v733.86666666c0 67.73333333-54.93333333 122.66666667-122.66666667 122.66666667H193.06666667c-67.73333333 0-122.66666667-54.93333333-122.66666667-122.66666667V145.06666667c0-67.73333333 54.93333333-122.66666667 122.66666667-122.66666667h637.86666666zM520.85333333 702.93333333H284.16c-22.61333333 0-40.96 18.34666667-40.96 40.96s18.34666667 40.96 40.96 40.96h236.69333333c22.61333333 0 40.96-18.34666667 40.96-40.96S543.46666667 702.93333333 520.85333333 702.93333333z m90.98666667-228.26666666H284.16c-22.61333333 0-40.96 18.34666667-40.96 40.96s18.34666667 40.96 40.96 40.96h327.68c22.61333333 0 40.96-18.34666667 40.96-40.96S634.45333333 474.66666667 611.84 474.66666667z m136.53333333-227.2H284.16c-22.61333333 0-40.96 18.34666667-40.96 40.96s18.34666667 40.96 40.96 40.96h464.21333333c22.61333333 0 40.96-18.34666667 40.96-40.96S770.98666667 247.46666667 748.37333333 247.46666667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3480 = [\n  _hoisted_2489\n];\nfunction _sfc_render489(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock489(), _createElementBlock489(\"svg\", _hoisted_1490, _hoisted_3480);\n}\nvar menu_xm_jianjie_default = /* @__PURE__ */ export_helper_default(menu_xm_jianjie_vue_vue_type_script_lang_default, [[\"render\", _sfc_render489], [\"__file\", \"menu-xm-jianjie.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-jiankong.vue?vue&type=script&lang.ts\nvar menu_xm_jiankong_vue_vue_type_script_lang_default = {\n  name: \"MenuXmJiankong\"\n};\n\n// src/components/menu-xm-jiankong.vue\nimport { createElementVNode as _createElementVNode481, openBlock as _openBlock490, createElementBlock as _createElementBlock490 } from \"vue\";\nvar _hoisted_1491 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2490 = /* @__PURE__ */ _createElementVNode481(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M292.47366232 566.64447371l0.17674762-0.29457892-134.12198877-143.43069797a58.91587557 58.91587557 0 0 1-2.85742088-77.17979593l31.49053618-39.12014154 530.21341719 541.14231248-61.86166888 37.79453436a58.91587557 58.91587557 0 0 1-61.09576204 0.23566395l-301.94386042-319.14729643z m-15.4948747 26.27648122l85.33964556 90.20020389-54.88013767 92.91033599a58.76858542 58.76858542 0 0 1-38.2364034 27.6315445c-4.18302668 0.97211193-8.54280236 1.47289734-13.02040795 1.47289734H166.62935307v90.14128892a58.91587557 58.91587557 0 1 1-117.83174977 0v-235.66350093a58.91587557 58.91587557 0 1 1 117.83174977 0V688.74762534h53.76073696l56.55924011-95.82667041z m-52.8180825-332.28553564l135.56542864-168.4994033a58.91587557 58.91587557 0 0 1 87.25441197-5.03730733l526.1482218 518.5480753a58.91587557 58.91587557 0 0 1-10.60485751 92.23280157l-193.83322867 118.47982533-544.52997623-555.72399157z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3481 = [\n  _hoisted_2490\n];\nfunction _sfc_render490(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock490(), _createElementBlock490(\"svg\", _hoisted_1491, _hoisted_3481);\n}\nvar menu_xm_jiankong_default = /* @__PURE__ */ export_helper_default(menu_xm_jiankong_vue_vue_type_script_lang_default, [[\"render\", _sfc_render490], [\"__file\", \"menu-xm-jiankong.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-jianshe.vue?vue&type=script&lang.ts\nvar menu_xm_jianshe_vue_vue_type_script_lang_default = {\n  name: \"MenuXmJianshe\"\n};\n\n// src/components/menu-xm-jianshe.vue\nimport { createElementVNode as _createElementVNode482, openBlock as _openBlock491, createElementBlock as _createElementBlock491 } from \"vue\";\nvar _hoisted_1492 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2491 = /* @__PURE__ */ _createElementVNode482(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M152.98138643 318.68228521m27.61681604 0l0 0q27.61681602 0 27.61681603 27.61681603l0 110.46726541q0 27.61681602-27.61681603 27.61681733l0 0q-27.61681602 0-27.61681604-27.61681733l0-110.46726541q0-27.61681602 27.61681604-27.61681603Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3482 = /* @__PURE__ */ _createElementVNode482(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M70.13093706 456.76636665m55.23363206 0l110.4672667 0q55.23363335 0 55.23363206 55.23363335l0 110.46726541q0 55.23363335-55.23363206 55.23363335l-110.4672667 0q-55.23363335 0-55.23363206-55.23363335l0-110.46726541q0-55.23363335 55.23363206-55.23363335Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4107 = /* @__PURE__ */ _createElementVNode482(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M966.02046261 252.95426116l-176.47145718-219.0013541a55.23363335 55.23363335 0 0 0-41.42522468-19.05560336h-119.0284794a55.23363335 55.23363335 0 0 0-24.57896577 5.79953147L173.97016652 235.83183582H97.74775309a55.23363335 55.23363335 0 0 0-55.23363336 55.23363206v27.61681733a55.23363335 55.23363335 0 0 0 55.23363336 55.23363206h497.1026963v524.71951361a55.23363335 55.23363335 0 0 0 55.23363334 55.23363206h82.85044939a55.23363335 55.23363335 0 0 0 55.23363206-55.23363206V373.91591727h138.08408273a55.23363335 55.23363335 0 0 0 55.23363336-55.23363206v-27.61681733a55.23363335 55.23363335 0 0 0-15.46541766-38.11120672z m-82.85044937-17.12242534H788.16816418V115.97485195zM594.85044939 87.2533624V235.83183582H297.69350383z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_540 = /* @__PURE__ */ _createElementVNode482(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M484.38318398 843.40179753m27.61681602 0l359.01861357 0q27.61681602 0 27.61681731 27.61681604l0 82.85044937q0 27.61681602-27.61681731 27.61681733l-359.01861357 0q-27.61681602 0-27.61681602-27.61681733l0-82.85044937q0-27.61681602 27.61681602-27.61681604Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_63 = [\n  _hoisted_2491,\n  _hoisted_3482,\n  _hoisted_4107,\n  _hoisted_540\n];\nfunction _sfc_render491(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock491(), _createElementBlock491(\"svg\", _hoisted_1492, _hoisted_63);\n}\nvar menu_xm_jianshe_default = /* @__PURE__ */ export_helper_default(menu_xm_jianshe_vue_vue_type_script_lang_default, [[\"render\", _sfc_render491], [\"__file\", \"menu-xm-jianshe.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-lichengbei.vue?vue&type=script&lang.ts\nvar menu_xm_lichengbei_vue_vue_type_script_lang_default = {\n  name: \"MenuXmLichengbei\"\n};\n\n// src/components/menu-xm-lichengbei.vue\nimport { createElementVNode as _createElementVNode483, openBlock as _openBlock492, createElementBlock as _createElementBlock492 } from \"vue\";\nvar _hoisted_1493 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2492 = /* @__PURE__ */ _createElementVNode483(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M760.55134815 139.17297778l-41.42522468-124.27567408H97.74775309v994.2053926h124.27567408V512h165.70089875l41.42522469 124.27567408h497.1026963V139.17297778H760.55134815z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3483 = [\n  _hoisted_2492\n];\nfunction _sfc_render492(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock492(), _createElementBlock492(\"svg\", _hoisted_1493, _hoisted_3483);\n}\nvar menu_xm_lichengbei_default = /* @__PURE__ */ export_helper_default(menu_xm_lichengbei_vue_vue_type_script_lang_default, [[\"render\", _sfc_render492], [\"__file\", \"menu-xm-lichengbei.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-menghu.vue?vue&type=script&lang.ts\nvar menu_xm_menghu_vue_vue_type_script_lang_default = {\n  name: \"MenuXmMenghu\"\n};\n\n// src/components/menu-xm-menghu.vue\nimport { createElementVNode as _createElementVNode484, openBlock as _openBlock493, createElementBlock as _createElementBlock493 } from \"vue\";\nvar _hoisted_1494 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2493 = /* @__PURE__ */ _createElementVNode484(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M585.142857 0a36.571429 36.571429 0 0 1 36.571429 36.571429v950.857142a36.571429 36.571429 0 0 1-36.571429 36.571429h-36.571428L29.403429 920.137143A36.571429 36.571429 0 0 1 0 884.297143V139.702857a36.571429 36.571429 0 0 1 29.403429-35.84L548.571429 0h36.571428z m402.285714 73.142857a36.571429 36.571429 0 0 1 36.571429 36.571429v804.571428a36.571429 36.571429 0 0 1-36.571429 36.571429h-256a36.571429 36.571429 0 0 1 0-73.142857h201.142858a18.285714 18.285714 0 0 0 18.285714-18.285715v-694.857142a18.285714 18.285714 0 0 0-18.285714-18.285715H731.428571a36.571429 36.571429 0 0 1 0-73.142857zM512 457.142857a54.857143 54.857143 0 1 0 0 109.714286 54.857143 54.857143 0 0 0 0-109.714286z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3484 = [\n  _hoisted_2493\n];\nfunction _sfc_render493(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock493(), _createElementBlock493(\"svg\", _hoisted_1494, _hoisted_3484);\n}\nvar menu_xm_menghu_default = /* @__PURE__ */ export_helper_default(menu_xm_menghu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render493], [\"__file\", \"menu-xm-menghu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-quanzi.vue?vue&type=script&lang.ts\nvar menu_xm_quanzi_vue_vue_type_script_lang_default = {\n  name: \"MenuXmQuanzi\"\n};\n\n// src/components/menu-xm-quanzi.vue\nimport { createElementVNode as _createElementVNode485, openBlock as _openBlock494, createElementBlock as _createElementBlock494 } from \"vue\";\nvar _hoisted_1495 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2494 = /* @__PURE__ */ _createElementVNode485(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M685.410462 27.372308S616.369231 0 512 0c-104.369231 0-173.410462 31.389538-173.410462 31.389538l346.939077 345.718154-0.118153-349.735384zM873.275077 149.700923c-73.806769-72.861538-145.132308-98.816-145.132308-98.816l-2.441846 486.478769 250.683077-247.335384c0 0.118154-29.223385-67.465846-103.108923-140.327385zM991.192615 339.889231l-350.444307 342.252307h354.540307s27.805538-68.135385 27.805539-171.165538c-0.118154-102.912-31.901538-171.086769-31.901539-171.086769zM730.978462 974.020923S799.507692 945.230769 873.314462 872.369231c73.767385-72.861538 100.155077-143.163077 100.155076-143.163077l-493.095384-2.441846 250.683077 247.335384zM338.471385 994.658462s69.080615 27.411692 173.410461 27.411692c104.448 0 173.449846-31.389538 173.449846-31.389539l-346.978461-345.718153 0.118154 349.735384zM150.646154 872.369231c73.767385 72.861538 145.092923 98.776615 145.092923 98.776615l2.481231-486.4-250.683077 247.296c0.078769-0.118154 29.302154 67.426462 103.108923 140.288zM28.750769 339.889231s-27.844923 68.174769-27.844923 171.204923c0 102.990769 31.783385 171.165538 31.783385 171.165538l350.444307-342.252307H28.711385V339.889231zM293.021538 48.049231S224.492308 76.8 150.685538 149.661538 50.569846 292.903385 50.569846 292.903385l493.095385 2.441846-250.683077-247.335385z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3485 = [\n  _hoisted_2494\n];\nfunction _sfc_render494(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock494(), _createElementBlock494(\"svg\", _hoisted_1495, _hoisted_3485);\n}\nvar menu_xm_quanzi_default = /* @__PURE__ */ export_helper_default(menu_xm_quanzi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render494], [\"__file\", \"menu-xm-quanzi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-shu.vue?vue&type=script&lang.ts\nvar menu_xm_shu_vue_vue_type_script_lang_default = {\n  name: \"MenuXmShu\"\n};\n\n// src/components/menu-xm-shu.vue\nimport { createElementVNode as _createElementVNode486, openBlock as _openBlock495, createElementBlock as _createElementBlock495 } from \"vue\";\nvar _hoisted_1496 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2495 = /* @__PURE__ */ _createElementVNode486(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M923.87555555 216.31431111v31.85777778H394.80888889v-31.85777778h529.06666666z m48.92444445-97.84888889H345.88444445c-27.02222222 0-48.92444445 21.90222222-48.92444445 48.92444445v129.70666666c0 27.02222222 21.90222222 48.92444445 48.92444445 48.92444445h626.91555555c27.02222222 0 48.92444445-21.90222222 48.92444445-48.92444445v-129.70666666c0-27.02222222-21.90222222-48.92444445-48.92444445-48.92444445z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3486 = /* @__PURE__ */ _createElementVNode486(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M527.92888889 632.7296h444.87111111c27.02222222 0 48.92444445-21.90222222 48.92444445-48.92444445v-129.70666666c0-27.01084445-21.90222222-48.92444445-48.92444445-48.92444444H527.92888889c-27.02222222 0-48.92444445 21.9136-48.92444444 48.92444444v17.82897778l-314.02666667-1.64977778V321.06951111a113.9712 113.9712 0 0 0 31.52782222-22.28906666c20.59377778-20.59377778 33.32551111-49.03822222 33.32551111-80.45226667s-12.73173333-59.86986667-33.32551111-80.45226667c-20.59377778-20.59377778-49.03822222-33.32551111-80.45226667-33.32551111-31.41404445 0-59.85848889 12.73173333-80.45226666 33.32551111C15.00728889 158.45831111 2.27555555 186.90275555 2.27555555 218.32817778c0 45.31768889 26.49884445 84.45724445 64.85333334 102.74133333v484.61368889c0 27.02222222 21.90222222 48.92444445 48.92444444 48.92444445h362.95111112v15.92888888c0 27.02222222 21.90222222 48.92444445 48.92444444 48.92444445h444.87111111c27.02222222 0 48.92444445-21.90222222 48.92444445-48.92444445v-129.70666666c0-27.01084445-21.90222222-48.92444445-48.92444445-48.92444445H527.92888889c-27.02222222 0-48.92444445 21.9136-48.92444444 48.92444445v15.92888888H164.97777778V568.13795555l314.02666667 1.6384v14.0288c0 27.02222222 21.90222222 48.92444445 48.92444444 48.92444445z m48.92444444-129.70666667h347.02222222v31.85777778H576.85333333v-31.85777778z m0 286.72h347.02222222v31.85777778H576.85333333v-31.85777778z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4108 = [\n  _hoisted_2495,\n  _hoisted_3486\n];\nfunction _sfc_render495(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock495(), _createElementBlock495(\"svg\", _hoisted_1496, _hoisted_4108);\n}\nvar menu_xm_shu_default = /* @__PURE__ */ export_helper_default(menu_xm_shu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render495], [\"__file\", \"menu-xm-shu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-tongzhi.vue?vue&type=script&lang.ts\nvar menu_xm_tongzhi_vue_vue_type_script_lang_default = {\n  name: \"MenuXmTongzhi\"\n};\n\n// src/components/menu-xm-tongzhi.vue\nimport { createElementVNode as _createElementVNode487, openBlock as _openBlock496, createElementBlock as _createElementBlock496 } from \"vue\";\nvar _hoisted_1497 = {\n  class: \"icon\",\n  viewBox: \"0 0 1057 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2496 = /* @__PURE__ */ _createElementVNode487(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M0 404.169697v143.644444c0 60.767677 34.650505 110.028283 77.446465 110.028283H145.842424v292.331313c0 40.210101 32.581818 72.921212 72.921212 72.921212 40.210101 0 72.921212-32.581818 72.921212-72.921212v-78.092929H259.10303c-14.480808 0-26.246465-11.765657-26.246464-26.246465 0-14.480808 11.765657-26.246465 26.246464-26.246464h32.452526v-62.707071H259.10303c-14.480808 0-26.246465-11.765657-26.246464-26.246465 0-14.480808 11.765657-26.246465 26.246464-26.246464h32.452526V294.141414H77.446465c-42.79596 0-77.446465 49.260606-77.446465 110.028283zM983.40202 2.585859h73.955556v946.812121h-73.955556V2.585859zM328.662626 294.141414v364.476768h135.240404c117.915152 0 484.977778 291.555556 484.977778 291.555555L949.39798 2.585859S584.662626 294.141414 462.222222 294.141414H328.662626z m0 0\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3487 = [\n  _hoisted_2496\n];\nfunction _sfc_render496(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock496(), _createElementBlock496(\"svg\", _hoisted_1497, _hoisted_3487);\n}\nvar menu_xm_tongzhi_default = /* @__PURE__ */ export_helper_default(menu_xm_tongzhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render496], [\"__file\", \"menu-xm-tongzhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-zhandian.vue?vue&type=script&lang.ts\nvar menu_xm_zhandian_vue_vue_type_script_lang_default = {\n  name: \"MenuXmZhandian\"\n};\n\n// src/components/menu-xm-zhandian.vue\nimport { createElementVNode as _createElementVNode488, openBlock as _openBlock497, createElementBlock as _createElementBlock497 } from \"vue\";\nvar _hoisted_1498 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\",\n  idth: \"64\",\n  height: \"64\"\n}, _hoisted_2497 = /* @__PURE__ */ _createElementVNode488(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M756.34915555 514.3552c-10.43342222 20.00213333-21.74293333 40.00426667-33.90577777 59.56266667 144.78222222 31.30026667 235.2128 93.47982222 235.2128 150.43697778 0 81.73795555-183.03431111 172.60088889-445.6448 172.60088888-262.59911111 0-445.6448-90.86293333-445.6448-172.60088888 0-58.2656 93.91217778-121.29848889 243.9168-152.1664-11.74186667-19.56977778-23.48373333-39.56053333-33.91715556-59.99502223C110.26204445 550.44551111 1.13777778 629.13422222 1.13777778 724.35484445c0 135.64586667 219.56835555 237.81831111 510.86222222 237.8183111 290.86151111 0 510.86222222-102.17244445 510.86222222-237.8183111 0-93.47982222-105.21031111-171.30382222-266.51306667-209.99964445z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3488 = /* @__PURE__ */ _createElementVNode488(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M348.30791111 629.57795555c-73.04533333 13.91502222-142.17671111 41.73368889-142.17671111 94.7768889 0 106.51875555 274.78471111 109.568 306.08497778 109.568h7.82791111c54.35164445-0.86471111 297.82471111-9.13635555 297.82471111-109.568 0-51.3024-63.90897778-78.70008889-133.47271111-93.04746667-14.34737778 21.2992-29.12711111 40.86897778-43.04213334 58.69795555 58.25422222 9.12497778 96.51768889 23.47235555 108.69191112 34.34951112-16.52053333 14.77973333-77.39164445 35.21422222-171.30382222 41.74506666-20.86684445 1.7408-43.04213333 2.60551111-66.52586667 2.60551111-19.5584 0-38.26346667-0.43235555-55.64871111-1.7408-100.43164445-6.08711111-165.64906667-27.38631111-182.60195556-42.60977777 13.03893333-11.30951111 54.35164445-26.5216 118.26062222-36.09031112-13.91502222-17.8176-28.70613333-37.38737778-43.91822222-58.68657778zM713.07946667 273.12355555c0-116.51982222-89.99822222-211.29671111-200.86328889-211.2967111-111.29742222 0-201.30702222 94.77688889-201.30702223 211.2967111 0 116.95217778 201.30702222 348.25102222 201.30702223 348.25102223s200.86328889-231.29884445 200.86328889-348.25102223z m-266.08071112 25.21315556c0-36.09031111 29.12711111-65.21742222 65.21742223-65.21742222 35.64657778 0 65.21742222 29.12711111 65.21742222 65.21742222 0 35.64657778-29.55946667 65.21742222-65.21742222 65.21742222-36.07893333 0-65.21742222-29.55946667-65.21742223-65.21742222z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4109 = [\n  _hoisted_2497,\n  _hoisted_3488\n];\nfunction _sfc_render497(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock497(), _createElementBlock497(\"svg\", _hoisted_1498, _hoisted_4109);\n}\nvar menu_xm_zhandian_default = /* @__PURE__ */ export_helper_default(menu_xm_zhandian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render497], [\"__file\", \"menu-xm-zhandian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xm-zuzhi.vue?vue&type=script&lang.ts\nvar menu_xm_zuzhi_vue_vue_type_script_lang_default = {\n  name: \"MenuXmZuzhi\"\n};\n\n// src/components/menu-xm-zuzhi.vue\nimport { createElementVNode as _createElementVNode489, openBlock as _openBlock498, createElementBlock as _createElementBlock498 } from \"vue\";\nvar _hoisted_1499 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2498 = /* @__PURE__ */ _createElementVNode489(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M974.70681442 603.98988958h-122.35975744v-69.41314211h0.05178154v-38.74553049H542.79706548v-75.83405195h135.11095941c26.12378231 0 39.19861886-13.06189117 39.19861886-39.19861886V67.09308682c0-26.1367277-13.07483653-39.19861886-39.19861886-39.19861887H364.17667476c-26.1367277 0-39.19861886 13.06189117-39.19861886 39.19861887v313.71840473c0 26.12378231 13.06189117 39.19861886 39.19861886 39.19861887h134.39896337v75.83405195H189.67291575v108.1586726H49.29318558c-26.1367277 0-39.19861886 13.06189117-39.19861886 39.19861886v313.71840474c0 26.12378231 13.06189117 39.19861886 39.19861886 39.19861886h313.71840473c26.12378231 0 39.19861886-13.07483653 39.19861887-39.19861886V643.18850845c0-26.1367277-13.06189117-39.19861886-39.19861887-39.19861887H233.28591013v-69.41314211h575.44815248v69.41314211H660.9754643c-26.12378231 0-39.19861886 13.06189117-39.19861887 39.19861887v313.71840473c0 26.12378231 13.07483653 39.19861886 39.19861887 39.19861887h313.71840473c26.1367277 0 39.19861886-13.07483653 39.19861887-39.19861887V643.18850845c0.01294539-26.1367277-13.06189117-39.19861886-39.18567348-39.19861887z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3489 = [\n  _hoisted_2498\n];\nfunction _sfc_render498(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock498(), _createElementBlock498(\"svg\", _hoisted_1499, _hoisted_3489);\n}\nvar menu_xm_zuzhi_default = /* @__PURE__ */ export_helper_default(menu_xm_zuzhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render498], [\"__file\", \"menu-xm-zuzhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xmjd-danti.vue?vue&type=script&lang.ts\nvar menu_xmjd_danti_vue_vue_type_script_lang_default = {\n  name: \"MenuXmjdDanti\"\n};\n\n// src/components/menu-xmjd-danti.vue\nimport { createElementVNode as _createElementVNode490, openBlock as _openBlock499, createElementBlock as _createElementBlock499 } from \"vue\";\nvar _hoisted_1500 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2499 = /* @__PURE__ */ _createElementVNode490(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M972.8 1024H51.2a51.2 51.2 0 0 1-51.2-51.2V51.2A51.2 51.2 0 0 1 51.2 0h921.6a51.2 51.2 0 0 1 51.2 51.2v921.6a51.2 51.2 0 0 1-51.2 51.2zM102.4 921.6h819.2V102.4H102.4z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3490 = /* @__PURE__ */ _createElementVNode490(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M204.8 204.8h256v256H204.8zM563.2 204.8h256v256H563.2zM204.8 563.2h256v256H204.8zM563.2 563.2h256v256H563.2z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4110 = [\n  _hoisted_2499,\n  _hoisted_3490\n];\nfunction _sfc_render499(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock499(), _createElementBlock499(\"svg\", _hoisted_1500, _hoisted_4110);\n}\nvar menu_xmjd_danti_default = /* @__PURE__ */ export_helper_default(menu_xmjd_danti_vue_vue_type_script_lang_default, [[\"render\", _sfc_render499], [\"__file\", \"menu-xmjd-danti.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xmjd-xiangmujindu2.vue?vue&type=script&lang.ts\nvar menu_xmjd_xiangmujindu2_vue_vue_type_script_lang_default = {\n  name: \"MenuXmjdXiangmujindu2\"\n};\n\n// src/components/menu-xmjd-xiangmujindu2.vue\nimport { createElementVNode as _createElementVNode491, openBlock as _openBlock500, createElementBlock as _createElementBlock500 } from \"vue\";\nvar _hoisted_1501 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2500 = /* @__PURE__ */ _createElementVNode491(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M822.68918518 978.03377778H201.31081482a194.18074075 194.18074075 0 0 1 0-388.36148148h621.37837036a194.18074075 194.18074075 0 0 1 0 388.36148148zM201.31081482 667.34459259a116.50844445 116.50844445 0 0 0 0 233.01688889h621.37837036a116.50844445 116.50844445 0 0 0 0-233.01688889z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3491 = /* @__PURE__ */ _createElementVNode491(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M45.96622222 628.50844445m155.3445926 0l155.34459259 0q155.34459259 0 155.34459259 155.34459258l0 0q0 155.34459259-155.34459259 155.3445926l-155.34459259 0q-155.34459259 0-155.3445926-155.3445926l0 0q0-155.34459259 155.3445926-155.34459258Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4111 = /* @__PURE__ */ _createElementVNode491(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M356.65540741 978.03377778H201.31081482a194.18074075 194.18074075 0 0 1 0-388.36148148h155.34459259a194.18074075 194.18074075 0 0 1 0 388.36148148z m-155.34459259-310.68918519a116.50844445 116.50844445 0 0 0 0 233.01688889h155.34459259a116.50844445 116.50844445 0 0 0 0-233.01688889zM356.65540741 278.98311111a116.50844445 116.50844445 0 1 1 116.50844444-116.50844444 116.50844445 116.50844445 0 0 1-116.50844444 116.50844444z m0-155.34459259a38.83614815 38.83614815 0 1 0 38.83614814 38.83614815 38.83614815 38.83614815 0 0 0-38.83614814-38.83614815zM667.34459259 512a116.50844445 116.50844445 0 1 1 116.50844444-116.50844445 116.50844445 116.50844445 0 0 1-116.50844444 116.50844445z m0-155.34459259a38.83614815 38.83614815 0 1 0 38.83614816 38.83614814 38.83614815 38.83614815 0 0 0-38.83614816-38.83614814zM278.98311111 550.83614815a38.83614815 38.83614815 0 0 1-27.57366519-11.26248297 38.83614815 38.83614815 0 0 1 0-55.14733036l466.03377778-466.03377779a38.83614815 38.83614815 0 1 1 55.14733038 55.14733038l-466.03377778 466.03377777A38.83614815 38.83614815 0 0 1 278.98311111 550.83614815z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_541 = [\n  _hoisted_2500,\n  _hoisted_3491,\n  _hoisted_4111\n];\nfunction _sfc_render500(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock500(), _createElementBlock500(\"svg\", _hoisted_1501, _hoisted_541);\n}\nvar menu_xmjd_xiangmujindu2_default = /* @__PURE__ */ export_helper_default(menu_xmjd_xiangmujindu2_vue_vue_type_script_lang_default, [[\"render\", _sfc_render500], [\"__file\", \"menu-xmjd-xiangmujindu2.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xmjd-xiangmujingdu.vue?vue&type=script&lang.ts\nvar menu_xmjd_xiangmujingdu_vue_vue_type_script_lang_default = {\n  name: \"MenuXmjdXiangmujingdu\"\n};\n\n// src/components/menu-xmjd-xiangmujingdu.vue\nimport { createElementVNode as _createElementVNode492, openBlock as _openBlock501, createElementBlock as _createElementBlock501 } from \"vue\";\nvar _hoisted_1502 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2501 = /* @__PURE__ */ _createElementVNode492(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M11.21506208 39.45049524m14.72896778 0l142.38494147 0q14.72896907 0 14.72896908 14.72896777l0 915.65580195q0 14.72896907-14.72896908 14.72896907l-142.38494147 0q-14.72896907 0-14.72896778-14.72896907l0-915.65580195q0-14.72896907 14.72896778-14.72896777Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3492 = /* @__PURE__ */ _createElementVNode492(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M214.9608872 100.82610814m58.91587498 0l520.41865359 0q58.91587498 0 58.91587497 58.91587496l0 115.37201203q0 58.91587498-58.91587497 58.91587496l-520.41865359 0q-58.91587498 0-58.91587498-58.91587496l0-115.37201203q0-58.91587498 58.91587498-58.91587496Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4112 = /* @__PURE__ */ _createElementVNode492(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M214.9608872 395.405483m58.91587498 0l679.99230076 0q58.91587498 0 58.91587498 58.91587497l0 115.37201332q0 58.91587498-58.91587498 58.91587496l-679.99230076 0q-58.91587498 0-58.91587498-58.91587496l0-115.37201332q0-58.91587498 58.91587498-58.91587497Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_542 = /* @__PURE__ */ _createElementVNode492(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M214.9608872 689.98485916m58.91587498 0l317.89533216 0q58.91587498 0 58.91587626 58.91587497l0 115.37201201q0 58.91587498-58.91587626 58.91587498l-317.89533216 0q-58.91587498 0-58.91587498-58.91587498l0-115.37201201q0-58.91587498 58.91587498-58.91587497Z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_64 = [\n  _hoisted_2501,\n  _hoisted_3492,\n  _hoisted_4112,\n  _hoisted_542\n];\nfunction _sfc_render501(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock501(), _createElementBlock501(\"svg\", _hoisted_1502, _hoisted_64);\n}\nvar menu_xmjd_xiangmujingdu_default = /* @__PURE__ */ export_helper_default(menu_xmjd_xiangmujingdu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render501], [\"__file\", \"menu-xmjd-xiangmujingdu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xmjd-xingxiangjingdu.vue?vue&type=script&lang.ts\nvar menu_xmjd_xingxiangjingdu_vue_vue_type_script_lang_default = {\n  name: \"MenuXmjdXingxiangjingdu\"\n};\n\n// src/components/menu-xmjd-xingxiangjingdu.vue\nimport { createElementVNode as _createElementVNode493, openBlock as _openBlock502, createElementBlock as _createElementBlock502 } from \"vue\";\nvar _hoisted_1503 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2502 = /* @__PURE__ */ _createElementVNode493(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M898.21866667 936.04266667h-35.456c6.208-26.496 9.52533333-54.10133333 9.52533333-82.48533334-0.02133333-158.80533333-102.784-293.61066667-245.42933333-341.55733333 142.64533333-47.95733333 245.38666667-182.752 245.38666666-341.55733333 0-28.384-3.30666667-55.98933333-9.52533333-82.48533334h35.456c14.73066667 0 26.66666667-11.936 26.66666667-26.66666666 0.02133333-14.73066667-11.91466667-26.66666667-26.64533334-26.66666667H125.78133333c-14.73066667 0-26.66666667 11.936-26.66666666 26.66666667s11.936 26.66666667 26.66666666 26.66666666h35.456a361.1712 361.1712 0 0 0-9.52533333 82.48533334c0 158.80533333 102.752 293.61066667 245.39733333 341.55733333-142.64533333 47.95733333-245.38666667 182.752-245.38666666 341.55733333 0 28.384 3.30666667 55.98933333 9.52533333 82.48533334h-35.456c-14.73066667 0-26.66666667 11.936-26.66666667 26.66666666s11.936 26.66666667 26.66666667 26.66666667h772.42666667c14.73066667 0 26.66666667-11.936 26.66666666-26.66666667s-11.936-26.66666667-26.66666666-26.66666666zM600.384 405.728c0.62933333-11.872 9.024-21.86666667 20.576-24.62933333 75.584-18.05866667 133.92-86.63466667 138.44266667-171.43466667 0.256-4.72533333 0.33066667-9.41866667 0.24533333-14.06933333-0.288-15.47733333 12.75733333-27.88266667 28.21333333-27.06133334l0.72533334 0.04266667c13.96266667 0.74666667 25.09866667 12.10666667 25.35466666 26.09066667 0.10666667 5.92 0.01066667 11.88266667-0.30933333 17.888-5.824 109.09866667-81.71733333 197.312-180.20266667 220.64-17.44 4.13866667-33.99466667-9.55733333-33.04533333-27.46666667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3493 = [\n  _hoisted_2502\n];\nfunction _sfc_render502(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock502(), _createElementBlock502(\"svg\", _hoisted_1503, _hoisted_3493);\n}\nvar menu_xmjd_xingxiangjingdu_default = /* @__PURE__ */ export_helper_default(menu_xmjd_xingxiangjingdu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render502], [\"__file\", \"menu-xmjd-xingxiangjingdu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-xt-tongjipeizhi.vue?vue&type=script&lang.ts\nvar menu_xt_tongjipeizhi_vue_vue_type_script_lang_default = {\n  name: \"MenuXtTongjipeizhi\"\n};\n\n// src/components/menu-xt-tongjipeizhi.vue\nimport { createElementVNode as _createElementVNode494, openBlock as _openBlock503, createElementBlock as _createElementBlock503 } from \"vue\";\nvar _hoisted_1504 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2503 = /* @__PURE__ */ _createElementVNode494(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M958.00888889 448.28444445l-254.86222222 0c-35.17098667 0-63.71555555-28.54456889-63.71555556-63.71555556L639.43111111 320.85333333c0-35.17098667 28.54456889-63.71555555 63.71555556-63.71555555l254.86222222 0C993.17987555 257.13777778 1021.72444445 285.68234667 1021.72444445 320.85333333L1021.72444445 384.56888889C1021.72444445 419.73987555 993.17987555 448.28444445 958.00888889 448.28444445zM766.86222222 65.99111111C766.86222222 47.49539555 779.75096889 2.27555555 799.04768 2.27555555l63.06019555 0c19.29671111 0 32.03982222 45.21984 32.18545778 63.71555556l0 127.43111111L766.86222222 193.42222222 766.86222222 65.99111111zM448.28444445 65.99111111C448.28444445 47.49539555 461.17319111 2.27555555 480.46990222 2.27555555l63.06019556 0c19.29671111 0 32.03982222 45.21984 32.18545777 63.71555556l0 509.72444444-127.4311111 0L448.28444445 65.99111111zM703.14666667 703.14666667L703.14666667 766.86222222c0 35.17098667-28.54456889 63.71555555-63.71555556 63.71555556l-254.86222222 0c-35.17098667 0-63.71555555-28.54456889-63.71555556-63.71555556l0-63.71555555c0-35.17098667 28.54456889-63.71555555 63.71555556-63.71555556l254.86222222 0C674.60209778 639.43111111 703.14666667 667.97568 703.14666667 703.14666667zM320.85333333 575.71555555l-254.86222222 0C30.82012445 575.71555555 2.27555555 547.17098667 2.27555555 512L2.27555555 448.28444445C2.27555555 413.11345778 30.82012445 384.56888889 65.99111111 384.56888889l254.86222222 0c35.17098667 0 63.71555555 28.54456889 63.71555556 63.71555556L384.56888889 512C384.56888889 547.17098667 356.02432 575.71555555 320.85333333 575.71555555zM129.70666667 65.99111111C129.70666667 47.49539555 142.59541333 2.27555555 161.89212445 2.27555555l63.06019555 0C244.24903111 2.27555555 256.99214222 47.49539555 257.13777778 65.99111111l0 254.86222222L129.70666667 320.85333333 129.70666667 65.99111111zM257.13777778 958.00888889C256.99214222 976.50460445 244.24903111 1021.72444445 224.95232 1021.72444445L161.89212445 1021.72444445c-19.29671111 0-32.18545778-45.21984-32.18545778-63.71555556L129.70666667 639.43111111 257.13777778 639.43111111 257.13777778 958.00888889zM575.71555555 958.00888889C575.56992 976.50460445 562.82680889 1021.72444445 543.53009778 1021.72444445L480.46990222 1021.72444445c-19.29671111 0-32.18545778-45.21984-32.18545777-63.71555556L448.28444445 894.29333333l127.4311111 0L575.71555555 958.00888889zM894.29333333 958.00888889C894.14769778 976.50460445 881.40458667 1021.72444445 862.10787555 1021.72444445l-63.06019555 0c-19.29671111 0-32.18545778-45.21984-32.18545778-63.71555556L766.86222222 512l127.43111111 0L894.29333333 958.00888889z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3494 = [\n  _hoisted_2503\n];\nfunction _sfc_render503(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock503(), _createElementBlock503(\"svg\", _hoisted_1504, _hoisted_3494);\n}\nvar menu_xt_tongjipeizhi_default = /* @__PURE__ */ export_helper_default(menu_xt_tongjipeizhi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render503], [\"__file\", \"menu-xt-tongjipeizhi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-yewubiaodan.vue?vue&type=script&lang.ts\nvar menu_yewubiaodan_vue_vue_type_script_lang_default = {\n  name: \"MenuYewubiaodan\"\n};\n\n// src/components/menu-yewubiaodan.vue\nimport { createElementVNode as _createElementVNode495, openBlock as _openBlock504, createElementBlock as _createElementBlock504 } from \"vue\";\nvar _hoisted_1505 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2504 = /* @__PURE__ */ _createElementVNode495(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M695.308642 594.17284H309.728395c-18.962963 0-37.925926 18.962963-37.925926 37.925925s18.962963 37.925926 37.925926 37.925926h385.580247c18.962963 0 37.925926-18.962963 37.925926-37.925926s-18.962963-37.925926-37.925926-37.925925zM309.728395 512h183.308642c18.962963 0 37.925926-18.962963 37.925926-37.925926s-12.641975-37.925926-37.925926-37.925926H309.728395c-18.962963 0-37.925926 18.962963-37.925926 37.925926s18.962963 37.925926 37.925926 37.925926z m385.580247 240.197531H309.728395c-18.962963 0-37.925926 18.962963-37.925926 37.925926s18.962963 37.925926 37.925926 37.925926h385.580247c18.962963 0 37.925926-18.962963 37.925926-37.925926 0-25.283951-18.962963-37.925926-37.925926-37.925926z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3495 = /* @__PURE__ */ _createElementVNode495(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M935.506173 322.37037V316.049383v-6.320988L651.061728 18.962963h-6.320987H208.592593c-63.209877 0-113.777778 50.567901-113.777778 113.777778v777.481481c0 63.209877 50.567901 113.777778 113.777778 113.777778h613.135802c63.209877 0 113.777778-50.567901 113.777778-113.777778V821.728395c0-18.962963-18.962963-37.925926-37.925926-37.925926s-37.925926 18.962963-37.925926 37.925926v88.493827c0 18.962963-18.962963 37.925926-37.925926 37.925926H208.592593c-18.962963 0-37.925926-18.962963-37.925926-37.925926V113.777778c0-18.962963 18.962963-37.925926 37.925926-37.925926h372.938271v252.839506c0 18.962963 18.962963 37.925926 37.925926 37.925926h246.518519V632.098765c0 18.962963 18.962963 37.925926 37.925926 37.925926s37.925926-18.962963 37.925925-37.925926l-6.320987-309.728395c0 6.320988 0 6.320988 0 0z m-278.123457-31.604938V132.740741l151.703704 158.024691h-151.703704z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4113 = [\n  _hoisted_2504,\n  _hoisted_3495\n];\nfunction _sfc_render504(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock504(), _createElementBlock504(\"svg\", _hoisted_1505, _hoisted_4113);\n}\nvar menu_yewubiaodan_default = /* @__PURE__ */ export_helper_default(menu_yewubiaodan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render504], [\"__file\", \"menu-yewubiaodan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-yibanshiyi.vue?vue&type=script&lang.ts\nvar menu_yibanshiyi_vue_vue_type_script_lang_default = {\n  name: \"MenuYibanshiyi\"\n};\n\n// src/components/menu-yibanshiyi.vue\nimport { createElementVNode as _createElementVNode496, openBlock as _openBlock505, createElementBlock as _createElementBlock505 } from \"vue\";\nvar _hoisted_1506 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2505 = /* @__PURE__ */ _createElementVNode496(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M913.95413333 2.2755552H110.04586667C71.4524448 2.2755552 39.9587552 33.5872 39.9587552 72.36266667v879.27466666C39.9587552 990.4128 71.4524448 1021.7244448 110.04586667 1021.7244448h803.72622186c38.77546667 0 70.08711147-31.3116448 70.08711147-70.08711147V72.36266667A69.85045333 69.85045333 0 0 0 913.95413333 2.2755552zM217.45208853 204.34488853h589.09582294c20.02488853 0 36.40888853 16.384 36.40888853 36.4088896s-16.384 36.40888853-36.40888853 36.40888854H217.45208853a36.40888853 36.40888853 0 1 1 0-72.81777814z m0 193.3312h589.09582294c20.02488853 0 36.40888853 16.384 36.40888853 36.4088896s-16.384 36.40888853-36.40888853 36.40888854H217.45208853a36.40888853 36.40888853 0 1 1 0-72.81777814z m264.1464896 266.14897814H217.45208853c-20.02488853 0-36.40888853-16.384-36.40888853-36.40888854s16.384-36.40888853 36.40888853-36.4088896h264.32853334c20.02488853 0 36.40888853 16.384 36.4088896 36.4088896s-16.384 36.40888853-36.59093334 36.40888854z m372.64497707 47.6956448l-169.48337707 169.48337706c-9.6483552 9.6483552-22.20942187 14.38151147-34.95253333 14.38151147-12.56106667 0-25.30417813-4.7331552-34.95253333-14.38151147l-80.09955627-80.0995552c-14.19946667-14.19946667-14.19946667-37.31911147 0-51.51857813s37.31911147-14.19946667 51.51857813 0l63.53351147 63.53351147 152.91733333-152.91733334c14.19946667-14.19946667 37.31911147-14.19946667 51.51857707 0s14.19946667 37.31911147 0 51.51857814z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3496 = [\n  _hoisted_2505\n];\nfunction _sfc_render505(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock505(), _createElementBlock505(\"svg\", _hoisted_1506, _hoisted_3496);\n}\nvar menu_yibanshiyi_default = /* @__PURE__ */ export_helper_default(menu_yibanshiyi_vue_vue_type_script_lang_default, [[\"render\", _sfc_render505], [\"__file\", \"menu-yibanshiyi.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-yingjiyanlian.vue?vue&type=script&lang.ts\nvar menu_yingjiyanlian_vue_vue_type_script_lang_default = {\n  name: \"MenuYingjiyanlian\"\n};\n\n// src/components/menu-yingjiyanlian.vue\nimport { createElementVNode as _createElementVNode497, openBlock as _openBlock506, createElementBlock as _createElementBlock506 } from \"vue\";\nvar _hoisted_1507 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2506 = /* @__PURE__ */ _createElementVNode497(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M582.07194038 193.99869593c51.7309626 0 94.05629593-42.32533334 94.05629702-94.05629592s-42.32533334-94.05629593-94.05629702-94.05629593-94.05629593 42.32533334-94.05629594 94.05629593 42.32533334 94.05629593 94.05629594 94.05629592z m-169.30133334 653.69125963l47.02814852-206.92385147 98.7591111 94.05629592 0 282.16888888 94.05629594 0 0-352.7111111-98.75911112-94.05629594 28.21688891-141.08444443c61.13659296 70.54222222 155.19288889 117.57037074 258.65481517 117.57036963l1e-8-94.05629593c-89.35348185 0-164.59851815-47.02814852-202.22103742-112.86755556l-47.02814741-75.2450374c-18.81125962-28.21688889-47.02814852-47.02814852-79.94785258-47.02814741-14.10844444 0-23.5140737 4.70281517-37.62251816 4.70281408l-244.54637074 103.46192629 0 221.03229593 94.05629704 0 0-159.89570297 84.65066666-32.91970407-75.2450374 380.928-230.4379263-47.02814851-18.81125852 94.05629702 329.1970363 65.83940704z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3497 = [\n  _hoisted_2506\n];\nfunction _sfc_render506(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock506(), _createElementBlock506(\"svg\", _hoisted_1507, _hoisted_3497);\n}\nvar menu_yingjiyanlian_default = /* @__PURE__ */ export_helper_default(menu_yingjiyanlian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render506], [\"__file\", \"menu-yingjiyanlian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-yingjiyuan.vue?vue&type=script&lang.ts\nvar menu_yingjiyuan_vue_vue_type_script_lang_default = {\n  name: \"MenuYingjiyuan\"\n};\n\n// src/components/menu-yingjiyuan.vue\nimport { createElementVNode as _createElementVNode498, openBlock as _openBlock507, createElementBlock as _createElementBlock507 } from \"vue\";\nvar _hoisted_1508 = {\n  class: \"icon\",\n  viewBox: \"0 0 1030 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2507 = /* @__PURE__ */ _createElementVNode498(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M612.27404255 315.62280851c0-17.77021277-14.37957447-34.48851064-32.14978723-34.48851064H194.3186383c-17.77021277 0-32.14978723 16.71829787-32.14978724 34.48851064s14.37957447 34.48748936 32.14978724 34.48748936h385.80459574c17.77021277 0 32.14978723-16.71829787 32.14978724-34.48851064zM194.31965957 481.7906383c-17.77021277 0-32.14978723 17.23914894-32.14978723 35.0093617s14.37957447 35.0093617 32.14978723 35.0093617h257.20340426c17.77021277 0 32.14978723-17.23914894 32.14978723-35.0093617s-14.37957447-35.0093617-32.14978723-35.0093617H194.3186383zM387.22144681 684.53446809H194.31965957c-17.77021277 0-32.14978723 17.24017021-32.14978723 35.01038297s14.37957447 35.01038298 32.14978723 35.01038298h192.90178724c17.77225532 0 32.15080851-17.23914894 32.15080851-35.0093617 0-17.77021277-14.37957447-35.01038298-32.14978723-35.01038298z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3498 = /* @__PURE__ */ _createElementVNode498(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M334.28765957 896.38604255H126.94297872c-32.33770213 0-58.64885106-25.14893617-58.64885106-56.07421276v-659.45872341c0-30.92629787 26.31012766-56.07421277 58.64885106-56.07421276h590.07114894c32.27540426 0 58.58655319 25.14791489 58.58655319 56.07421276v136.82655319c0 17.77225532 14.37957447 32.15080851 32.14978724 32.15080852s32.14978723-14.37957447 32.14978723-32.14978724V180.85208511c0-66.37276596-55.13157447-120.37480851-122.88612766-120.37480851H126.94297872c-67.81582979 0-122.94944681 54.00204255-122.94944681 120.37480851v659.4587234c0 66.37276596 55.13157447 120.37480851 122.94944681 120.37480851H334.28765957c17.77021277 0 32.14978723-14.37957447 32.14978724-32.14978723 0-17.77123404-14.37957447-32.14978723-32.14978724-32.14978724zM743.26604255 793.28204255h-34.69276595c-2.56544681 0-5.13293617 1.21123404-7.0692766 3.63472341-1.96085106 2.42042553-2.93106383 5.61702128-2.93106383 8.79319149v20.70842553c0 3.19761702 0.97021277 6.37378723 2.93106383 8.79319149 1.93634043 2.42451064 4.50382979 3.63574468 7.07029787 3.63574468h34.69276596c2.54297872 0 5.10842553-1.21123404 7.07234043-3.63574468 1.93838298-2.42042553 2.93106383-5.59353191 2.93106383-8.79319149V805.70893617c0-3.17310638-0.99268085-6.37276596-2.93106383-8.79319149-1.96391489-2.42348936-4.53038298-3.63574468-7.07336171-3.63574468zM701.72051064 758.32782979c1.9373617 1.59829787 4.4813617 2.42348936 7.02638298 2.42348936l34.47012766 0.14297872c2.56748936 0.02451064 5.13395745-0.79761702 7.09787234-2.42042553 1.96289362-1.62076596 2.95659574-3.75114894 2.9320851-5.91114894l-0.0520851-59.27285106v-91.19489362c0-2.10689362-0.96612766-4.24034043-2.92902128-5.86417021-1.94042553-1.62076596-4.50689362-2.44493617-7.0733617-2.44493617h-34.64374468c-2.54297872 0-5.10944681 0.82519149-7.0692766 2.44493617-1.94042553 1.62382979-2.90757447 3.75829787-2.90757447 5.86417021v91.87404256l0.21651064 58.49770212c0.02348936 2.13140426 0.99268085 4.2413617 2.93106383 5.86212766z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4114 = /* @__PURE__ */ _createElementVNode498(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1014.09123404 820.40510638L792.68051064 436.83302128c-27.00153191-46.90723404-102.60459574-46.90723404-129.60612766 0L441.6013617 820.40510638l-0.06229787 0.0306383c-13.5012766 23.42195745-13.43795745 51.39676596 0.06229787 74.81872341 13.56459574 23.42195745 37.73923404 37.39404255 64.80306383 37.39404255h442.88374468c27.06382979 0 51.36408511-14.0027234 64.8653617-37.45634043 13.5012766-23.42195745 13.5012766-51.39676596-0.06127659-74.7880851z m-55.6360851 42.66893617c-1.12953191 1.97821277-3.82978723 5.27489362-9.16697873 5.27489362H506.40340426c-5.27387234 0-7.97412766-3.29668085-9.10468086-5.27489362-1.13055319-1.97719149-2.63795745-5.96425532 0-10.51710638l221.40970213-383.57412766c5.39948936-9.168 12.93548936-9.168 18.336 0l221.40970213 383.60476596c2.63795745 4.55285106 1.13157447 8.53991489 0 10.48646808z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_543 = [\n  _hoisted_2507,\n  _hoisted_3498,\n  _hoisted_4114\n];\nfunction _sfc_render507(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock507(), _createElementBlock507(\"svg\", _hoisted_1508, _hoisted_543);\n}\nvar menu_yingjiyuan_default = /* @__PURE__ */ export_helper_default(menu_yingjiyuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render507], [\"__file\", \"menu-yingjiyuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-yingjiziyuan.vue?vue&type=script&lang.ts\nvar menu_yingjiziyuan_vue_vue_type_script_lang_default = {\n  name: \"MenuYingjiziyuan\"\n};\n\n// src/components/menu-yingjiziyuan.vue\nimport { createElementVNode as _createElementVNode499, openBlock as _openBlock508, createElementBlock as _createElementBlock508 } from \"vue\";\nvar _hoisted_1509 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2508 = /* @__PURE__ */ _createElementVNode499(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M0 916c0 59.4 48.6 108 108 108h808c59.4 0 108-48.6 108-108V420H0v496zM916 128H759.9C739.7 53.7 683.6 0 618 0H150C67.5 0 0 85.1 0 189.1V320H1024v-84c0-59.4-48.6-108-108-108z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3499 = [\n  _hoisted_2508\n];\nfunction _sfc_render508(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock508(), _createElementBlock508(\"svg\", _hoisted_1509, _hoisted_3499);\n}\nvar menu_yingjiziyuan_default = /* @__PURE__ */ export_helper_default(menu_yingjiziyuan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render508], [\"__file\", \"menu-yingjiziyuan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-yinhuanpaicha.vue?vue&type=script&lang.ts\nvar menu_yinhuanpaicha_vue_vue_type_script_lang_default = {\n  name: \"MenuYinhuanpaicha\"\n};\n\n// src/components/menu-yinhuanpaicha.vue\nimport { createElementVNode as _createElementVNode500, openBlock as _openBlock509, createElementBlock as _createElementBlock509 } from \"vue\";\nvar _hoisted_1510 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2509 = /* @__PURE__ */ _createElementVNode500(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M514.0128873 647.8699062c-18.11598777 0-32.70942173 14.59343397-32.70942173 32.70942174 0 14.59343397 14.59343397 29.18686896 32.70942173 29.18686895s32.70942173-14.59343397 32.70942173-32.70942173c-3.52255278-14.59343397-18.11598777-29.18686896-32.70942173-29.18686896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3500 = /* @__PURE__ */ _createElementVNode500(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M866.26819999 6.76523801h-704.51062435c-83.03160941 0-150.96656199 67.93495258-150.96656199 150.966562v704.51062435c0 83.03160941 67.93495258 150.96656199 150.96656199 150.96656199h704.51062435c83.03160941 0 150.96656199-67.93495258 150.966562-150.96656199v-704.51062435c0-83.03160941-67.93495258-150.96656199-150.966562-150.966562z m-100.14115352 775.96813075H261.89872814c-43.78030291 0-69.44461909-47.30285569-47.30285569-84.03805305 84.03805306-145.93434374 168.07610611-288.34613367 252.11415916-434.78369924 22.14176237-36.73519633 76.48972465-36.73519633 98.63148702 0 80.51550028 142.41178993 164.55355333 288.34613367 248.59160639 434.78369924 21.63854055 36.73519633-7.54832841 84.03805306-47.80607855 84.03805305z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4115 = /* @__PURE__ */ _createElementVNode500(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M532.12887507 596.54127488l11.07088118-175.1212127c0-18.11598777-14.59343397-32.70942173-32.70942172-32.70942172-14.59343397 0-29.18686896 14.59343397-29.18686896 32.70942172l11.07088119 175.1212127c3.52255278 25.66431514 39.75452831 25.66431514 39.75452831 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_544 = [\n  _hoisted_2509,\n  _hoisted_3500,\n  _hoisted_4115\n];\nfunction _sfc_render509(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock509(), _createElementBlock509(\"svg\", _hoisted_1510, _hoisted_544);\n}\nvar menu_yinhuanpaicha_default = /* @__PURE__ */ export_helper_default(menu_yinhuanpaicha_vue_vue_type_script_lang_default, [[\"render\", _sfc_render509], [\"__file\", \"menu-yinhuanpaicha.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-yonghuguanli.vue?vue&type=script&lang.ts\nvar menu_yonghuguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuYonghuguanli\"\n};\n\n// src/components/menu-yonghuguanli.vue\nimport { createElementVNode as _createElementVNode501, openBlock as _openBlock510, createElementBlock as _createElementBlock510 } from \"vue\";\nvar _hoisted_1511 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2510 = /* @__PURE__ */ _createElementVNode501(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M955.5828 746.560353a190.913341 190.913341 0 0 0-29.760352-64.510871l33.395722-55.704697-29.557134-29.602293-57.646571 34.637618a186.871533 186.871533 0 0 0-60.694862-24.070209l-16.618831-66.520485h-41.750298l-16.641411 66.520485a184.47806 184.47806 0 0 0-60.220684 24.363748l-58.120749-34.908577-29.534554 29.602293 33.508622 55.953076a189.513385 189.513385 0 0 0-30.008732 64.330232l-59.407806 14.857596v41.840617l55.162778 13.79634a188.181169 188.181169 0 0 0 27.999118 75.755678l-27.27656 45.566307 29.534554 29.624873 43.511532-26.147564c23.144432 17.386549 50.082293 30.008732 79.752326 35.202117l11.741566 46.898523h41.750298l11.764145-46.943683a187.63925 187.63925 0 0 0 79.616847-35.202116l43.579272 26.192723 29.557134-29.624873-27.52494-45.927586c14.293098-22.444454 24.566968-47.75656 28.270078-75.394399l55.140198-13.79634v-41.840617l-59.520706-14.947916z m-181.745887 149.885601a104.545094 104.545094 0 0 1-104.477354-104.612834 104.545094 104.545094 0 0 1 104.477354-104.590253 104.545094 104.545094 0 0 1 104.454774 104.590253 104.567674 104.567674 0 0 1-104.454774 104.612834z m-185.245777-324.992988c-33.621521-24.612128-71.984829-43.014774-113.238369-55.162779 81.039383-39.018126 137.398897-121.141345 137.398898-217.083484 0-133.424829-108.135303-241.582712-241.537553-241.582712S129.6314 165.781874 129.6314 299.206703c0 95.49054 55.930496 177.275061 136.382801 216.518986C117.212437 559.575921 8.851334 693.836207 8.851334 852.798942c0 0 185.290937 50.330673 368.481941 50.330672 47.304961 0 94.316384-3.52247 138.076295-8.715854a280.126659 280.126659 0 0 1-23.415391-112.064212c0.02258-84.381213 37.866549-159.256273 96.596957-210.896582z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3501 = [\n  _hoisted_2510\n];\nfunction _sfc_render510(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock510(), _createElementBlock510(\"svg\", _hoisted_1511, _hoisted_3501);\n}\nvar menu_yonghuguanli_default = /* @__PURE__ */ export_helper_default(menu_yonghuguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render510], [\"__file\", \"menu-yonghuguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-yuebao.vue?vue&type=script&lang.ts\nvar menu_yuebao_vue_vue_type_script_lang_default = {\n  name: \"MenuYuebao\"\n};\n\n// src/components/menu-yuebao.vue\nimport { createElementVNode as _createElementVNode502, openBlock as _openBlock511, createElementBlock as _createElementBlock511 } from \"vue\";\nvar _hoisted_1512 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2511 = /* @__PURE__ */ _createElementVNode502(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M733.090909 744.727273h-442.181818a34.909091 34.909091 0 1 0 0 69.818182h442.181818a34.909091 34.909091 0 1 0 0-69.818182M651.636364 498.618182a34.909091 34.909091 0 0 0 34.909091-34.909091V206.824727a53.806545 53.806545 0 0 0-103.121455-21.550545l-71.144727 163.002182-71.703273-163.118546a53.829818 53.829818 0 0 0-49.268364-32.139636h-0.046545A53.806545 53.806545 0 0 0 337.454545 206.824727v256.884364a34.909091 34.909091 0 1 0 69.818182 0v-180.782546l73.634909 165.213091a35.002182 35.002182 0 0 0 64.046546-0.256l71.773091-164.375272v180.200727a34.909091 34.909091 0 0 0 34.909091 34.909091M872.727273 721.454545a34.909091 34.909091 0 0 0 34.909091-34.90909V93.090909a69.818182 69.818182 0 0 0-69.818182-69.818182H186.181818a69.818182 69.818182 0 0 0-69.818182 69.818182v837.818182a69.818182 69.818182 0 0 0 69.818182 69.818182h651.636364a69.818182 69.818182 0 0 0 69.818182-69.818182v-81.454546a34.909091 34.909091 0 1 0-69.818182 0V930.909091H186.181818V93.090909h651.636364v593.454546a34.909091 34.909091 0 0 0 34.909091 34.90909m-139.636364-116.363636h-442.181818a34.909091 34.909091 0 1 0 0 69.818182h442.181818a34.909091 34.909091 0 1 0 0-69.818182\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3502 = [\n  _hoisted_2511\n];\nfunction _sfc_render511(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock511(), _createElementBlock511(\"svg\", _hoisted_1512, _hoisted_3502);\n}\nvar menu_yuebao_default = /* @__PURE__ */ export_helper_default(menu_yuebao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render511], [\"__file\", \"menu-yuebao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zaixianyonghu.vue?vue&type=script&lang.ts\nvar menu_zaixianyonghu_vue_vue_type_script_lang_default = {\n  name: \"MenuZaixianyonghu\"\n};\n\n// src/components/menu-zaixianyonghu.vue\nimport { createElementVNode as _createElementVNode503, openBlock as _openBlock512, createElementBlock as _createElementBlock512 } from \"vue\";\nvar _hoisted_1513 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2512 = /* @__PURE__ */ _createElementVNode503(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M522.88 598.4C593.28 552.96 640 474.24 640 384c0-141.44-114.56-256-256-256C242.56 128 128 242.56 128 384c0 90.24 46.72 168.96 117.12 214.4C101.76 645.76 0 765.44 0 928 0 945.92 14.08 960 32 960l704 0c17.92 0 32-14.08 32-32C768 765.44 666.24 645.76 522.88 598.4zM804.48 602.24C878.08 556.8 928 476.8 928 384c0-141.44-114.56-256-256-256C654.08 128 640 142.08 640 160 640 177.92 654.08 192 672 192c105.6 0 192 86.4 192 192 0 71.04-38.4 132.48-96 165.76-56.32 34.56-71.68 83.2 0 109.44 111.36 39.68 192 144 192 269.44 0 17.92 14.08 32 32 32 17.92 0 32-14.08 32-32C1024 780.8 933.12 654.72 804.48 602.24z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3503 = [\n  _hoisted_2512\n];\nfunction _sfc_render512(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock512(), _createElementBlock512(\"svg\", _hoisted_1513, _hoisted_3503);\n}\nvar menu_zaixianyonghu_default = /* @__PURE__ */ export_helper_default(menu_zaixianyonghu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render512], [\"__file\", \"menu-zaixianyonghu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zhengcefagui.vue?vue&type=script&lang.ts\nvar menu_zhengcefagui_vue_vue_type_script_lang_default = {\n  name: \"MenuZhengcefagui\"\n};\n\n// src/components/menu-zhengcefagui.vue\nimport { createElementVNode as _createElementVNode504, openBlock as _openBlock513, createElementBlock as _createElementBlock513 } from \"vue\";\nvar _hoisted_1514 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2513 = /* @__PURE__ */ _createElementVNode504(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M972.8 0c-6.144 0-12.8 1.024-18.944 3.584l-422.912 174.08c-6.144 2.56-12.8 3.584-18.944 3.584-6.144 0-12.8-1.024-18.944-3.584L70.144 3.584C64 1.024 57.344 0 51.2 0 24.064 0 0 22.528 0 52.736v729.088c0 21.504 12.8 40.96 32.256 49.152l460.8 189.44c6.144 2.56 12.8 3.584 18.944 3.584 6.656 0 12.8-1.024 18.944-3.584l460.8-189.44c19.456-8.192 32.256-27.136 32.256-49.152V52.736C1024 22.528 999.936 0 972.8 0zM450.56 498.176c-0.512 2.56-1.536 5.12-3.584 7.168l-53.248 51.712c-3.072 2.56-4.096 6.656-3.584 10.752l12.288 73.216c1.024 6.656-3.072 12.8-9.728 13.824h-2.048c-2.048 0-3.584-0.512-5.632-1.024l-65.536-34.816c-2.048-1.024-3.584-1.536-5.632-1.536-2.048 0-4.096 0.512-5.632 1.536l-65.536 34.816c-1.536 1.024-3.584 1.536-5.632 1.536-4.096 0-8.704-2.56-10.752-6.656-1.024-2.56-1.536-5.12-1.024-7.68l12.288-72.704c0.512-4.096-0.512-7.68-3.584-10.752L181.248 505.344c-4.608-4.608-4.608-12.288 0-16.896 2.048-2.048 4.096-3.072 6.656-3.584L261.12 474.112c4.096-0.512 7.168-3.072 9.216-6.656l32.768-67.072c2.048-4.608 6.656-7.168 10.752-7.168 2.048 0 3.584 0.512 5.12 1.024 2.56 1.536 4.608 3.584 5.632 6.144l33.28 66.56c1.536 3.584 5.12 6.144 9.216 6.656L440.32 484.352c6.656 1.024 11.264 7.168 10.24 13.824z m403.456 178.176l-222.72 103.936c-5.632 3.072-11.776 4.096-17.408 4.096-15.872 0-30.208-8.704-37.376-23.552-9.216-20.48-0.512-44.544 19.968-54.272l222.72-103.936c5.632-3.072 11.776-4.096 17.408-4.096 15.36 0 30.208 8.704 37.376 23.552 9.216 20.48 0.512 44.544-19.968 54.272z m0-167.424l-222.72 103.936c-5.632 3.072-11.776 4.096-17.408 4.096-15.872 0-30.208-8.704-37.376-23.552-9.216-20.48-0.512-44.544 19.968-54.272L819.2 435.2c5.632-3.072 11.776-4.096 17.408-4.096 15.36 0 30.208 8.704 37.376 23.552 9.216 20.48 0.512 44.544-19.968 54.272z m0-167.424L631.296 445.44c-5.632 3.072-11.776 4.096-17.408 4.096-15.872 0-30.208-8.704-37.376-23.552-9.216-20.48-0.512-44.544 19.968-54.272L819.2 267.776c5.632-3.072 11.776-4.096 17.408-4.096 15.36 0 30.208 8.704 37.376 23.552 9.216 20.48 0.512 44.544-19.968 54.272z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3504 = [\n  _hoisted_2513\n];\nfunction _sfc_render513(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock513(), _createElementBlock513(\"svg\", _hoisted_1514, _hoisted_3504);\n}\nvar menu_zhengcefagui_default = /* @__PURE__ */ export_helper_default(menu_zhengcefagui_vue_vue_type_script_lang_default, [[\"render\", _sfc_render513], [\"__file\", \"menu-zhengcefagui.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zhiduguanli.vue?vue&type=script&lang.ts\nvar menu_zhiduguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuZhiduguanli\"\n};\n\n// src/components/menu-zhiduguanli.vue\nimport { createElementVNode as _createElementVNode505, openBlock as _openBlock514, createElementBlock as _createElementBlock514 } from \"vue\";\nvar _hoisted_1515 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2514 = /* @__PURE__ */ _createElementVNode505(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M894.29333333 1021.7244448h-23.66577813c-34.5884448 0-63.7155552-29.12711147-63.7155552-63.71555627V315.392h136.53333333c25.48622187 0 45.51111147 20.02488853 45.51111147 45.51111147v566.15822186c0 52.79288853-41.87022187 94.66311147-94.66311147 94.66311147z m-32.768-651.71911147v588.0035552c0 5.46133333 3.64088853 9.10222187 9.10222187 9.10222294H894.29333333c21.84533333 0 40.04977813-18.2044448 40.04977814-40.04977814V370.00533333h-72.81777814zM632.14933333 175.21777813H253.49688853c-23.66577813 0-41.87022187-18.2044448-41.87022186-41.87022293V44.14577813c0-23.66577813 18.2044448-41.87022187 41.87022186-41.87022293h380.4728896C657.6355552 2.2755552 675.84 20.48 675.84 44.14577813v89.20177707c-1.8204448 23.66577813-20.02488853 41.87022187-43.69066667 41.87022293z m-365.90933333-54.61333333H621.22666667V56.88888853H266.24v63.71555627z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3505 = /* @__PURE__ */ _createElementVNode505(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M806.912 120.6044448H89.65688853c-29.12711147 0-54.61333333 23.66577813-54.61333333 54.61333333V967.11111147c0 29.12711147 23.66577813 54.61333333 54.61333333 54.61333333h771.8684448V175.21777813c0-30.9475552-23.66577813-54.61333333-54.61333333-54.61333333zM215.2675552 388.20977813h207.53066667c14.5635552 0 27.30666667 12.74311147 27.30666666 27.30666667s-12.74311147 27.30666667-27.30666666 27.30666667H215.2675552c-14.5635552 0-27.30666667-12.74311147-27.30666667-27.30666667s12.74311147-27.30666667 27.30666667-27.30666667z m453.29066667 411.42044374H215.2675552c-14.5635552 0-27.30666667-12.74311147-27.30666667-27.30666667s12.74311147-27.30666667 27.30666667-27.30666667h453.29066667c14.5635552 0 27.30666667 12.74311147 27.30666666 27.30666667s-12.74311147 27.30666667-27.30666666 27.30666667z m0-178.4035552H215.2675552c-14.5635552 0-27.30666667-12.74311147-27.30666667-27.30666667s12.74311147-27.30666667 27.30666667-27.30666667h453.29066667c14.5635552 0 27.30666667 12.74311147 27.30666666 27.30666667s-12.74311147 27.30666667-27.30666666 27.30666667z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4116 = [\n  _hoisted_2514,\n  _hoisted_3505\n];\nfunction _sfc_render514(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock514(), _createElementBlock514(\"svg\", _hoisted_1515, _hoisted_4116);\n}\nvar menu_zhiduguanli_default = /* @__PURE__ */ export_helper_default(menu_zhiduguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render514], [\"__file\", \"menu-zhiduguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zhiliang.vue?vue&type=script&lang.ts\nvar menu_zhiliang_vue_vue_type_script_lang_default = {\n  name: \"MenuZhiliang\"\n};\n\n// src/components/menu-zhiliang.vue\nimport { createElementVNode as _createElementVNode506, openBlock as _openBlock515, createElementBlock as _createElementBlock515 } from \"vue\";\nvar _hoisted_1516 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2515 = /* @__PURE__ */ _createElementVNode506(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M657.63555555 512c0 46.42133333-21.84533333 87.38133333-55.52355555 113.77777778l-49.152-49.152-51.88266667 51.88266667 28.21688889 28.21688888c-5.46133333 0.91022222-11.83288889 0.91022222-17.29422222 0.91022222-80.09955555 0-145.63555555-65.536-145.63555555-145.63555555s65.536-145.63555555 145.63555555-145.63555555 145.63555555 65.536 145.63555555 145.63555555z m257.5928889-322.21866667v278.528c0 257.59288889-172.032 497.89155555-402.31822223 557.056-231.19644445-58.25422222-403.22844445-299.46311111-403.22844444-557.056V189.78133333L512.91022222 4.096l402.31822223 185.68533333zM653.99466667 677.66044445C700.416 637.61066667 730.45333333 578.44622222 730.45333333 512c0-121.05955555-97.39377778-218.45333333-218.45333333-218.45333333S293.54666667 391.85066667 293.54666667 512s97.39377778 218.45333333 218.45333333 218.45333333c27.30666667 0 52.79288889-5.46133333 77.36888889-13.65333333l66.44622222 66.44622222 51.88266667-51.88266667-53.70311111-53.7031111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3506 = [\n  _hoisted_2515\n];\nfunction _sfc_render515(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock515(), _createElementBlock515(\"svg\", _hoisted_1516, _hoisted_3506);\n}\nvar menu_zhiliang_default = /* @__PURE__ */ export_helper_default(menu_zhiliang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render515], [\"__file\", \"menu-zhiliang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zhiyejiankang.vue?vue&type=script&lang.ts\nvar menu_zhiyejiankang_vue_vue_type_script_lang_default = {\n  name: \"MenuZhiyejiankang\"\n};\n\n// src/components/menu-zhiyejiankang.vue\nimport { createElementVNode as _createElementVNode507, openBlock as _openBlock516, createElementBlock as _createElementBlock516 } from \"vue\";\nvar _hoisted_1517 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2516 = /* @__PURE__ */ _createElementVNode507(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M945.48451214 170.98030763c-59.25330375-70.92419698-140.83312981-109.99211805-254.05849486-109.99211805 0 0-116.44929821 13.25899207-181.47051975 37.05951119-64.46701682-23.80051911-126.28293405-36.45640704-183.95745394-36.45640704-101.77452373 0-190.17595335 38.35071488-248.91231118 108.53791288-63.64386077 76.05058901-88.10453561 182.76172345-67.11695246 293.04025771 16.70297714 87.66443179 93.17387605 265.90170453 417.41025507 475.43988451 6.42807353 4.39987086 37.7871963 24.40246045 75.67801458 24.40246045 38.30297827 0 73.08512939-21.59068729 76.93195947-24.04967879 338.35578482-208.96418361 417.33341184-387.86976085 434.2471259-475.8695094C1035.31919019 353.43698489 1008.94674261 246.9645312 945.48451214 170.98030763zM864.64983609 482.09158827L777.36845653 482.09158827l-42.78900736 110.98642546c-3.07024555 7.97891357-10.98163086 13.02962631-19.49612032 12.51267925-8.53311829-0.53557589-15.73661241-6.53402339-17.79275662-14.827297L665.41566635 462.63505351l-50.29987442 130.4441253c-2.98408846 7.73906887-10.63699911 12.72341618-18.80685796 12.53247204-8.29443755-0.21073693-15.54566713-5.63402411-18.10944568-13.52677946L511.79159097 387.71266787l-57.75136313 203.66314724c-2.29599005 8.09301447-9.49948302 13.8131968-17.89870763 14.2253568-8.33169522 0.36326059-16.11850069-4.5826651-19.18991132-12.41720718l-54.3737435-138.68151239-54.37490745 138.68151239c-0.42031104 1.07115179-1.10025842 1.93156551-1.68357092 2.8793014-0.05705045 0.11526485-0.11526485 0.22005191-0.18163029 0.32483784-2.74540771 4.33350656-6.8774912 7.33738781-11.67089323 8.53311829-0.13389369 0.03842162-0.22005191 0.13389369-0.34463175 0.16300145-1.17593771 0.27710237-2.33324771 0.34463175-3.49172053 0.41216-0.29689515 0.01979278-0.57399751 0.13389369-0.87089266 0.1338937-0.02910777 0-0.06752939-0.01862883-0.09663602-0.01862884-0.04773661 0-0.08615822 0.01862883-0.13389369 0.01862884-2.4112549 0-4.72587378-0.52626091-6.90659783-1.35873195-0.00931385 0-0.00931385 0-0.00931385 0-0.01979278-0.00931385-0.02910777-0.01979278-0.03842162-0.02794269-2.34372551-0.89883534-4.39987086-2.30530389-6.23712824-4.00866759-0.21073693-0.21073693-0.38305337-0.43078883-0.59262635-0.65084075-1.52173341-1.54967723-2.74540771-3.32871907-3.69197966-5.35692174-0.12457984-0.26778738-0.22936576-0.51694706-0.34463175-0.79404942-0.39236722-0.94657195-0.96636473-1.78952192-1.21435933-2.82225095l-26.05808753-108.51928519-85.28228352 0c-10.81862941 0-19.59159239-8.76248405-19.5915924-19.59159239 0-10.8104795 8.77179904-19.59159239 19.5915924-19.59159239l100.72200078 0c9.05938034 0 16.9323429 6.21733547 19.0455387 15.01824227l15.21035036 63.28991517 50.00297928-127.54502998c2.93635186-7.50970311 10.17826759-12.44514987 18.24217542-12.44514986 8.05459285 0 15.29650859 4.9366107 18.23286045 12.44514986l51.38965504 131.07633721 59.47335566-209.69070364c2.3530405-8.29443755 9.85342862-14.08098418 18.47270514-14.24398564 8.60996153-0.26778738 16.33971655 5.32781397 19.00828103 13.52677945l69.25925604 213.15331641 52.75653688-136.84425501c3.07141063-7.96843577 10.97231701-13.02846123 19.49612032-12.50220032 8.53311829 0.53557589 15.73661241 6.52470955 17.79392171 14.827297l31.8737408 128.12950642 25.31177472-65.64295452c2.91772302-7.55743971 10.17826759-12.55110087 18.28059705-12.55110088l100.72200078 0c10.81979449 0 19.59159239 8.78111289 19.5915924 19.5915924C884.24142848 473.32910421 875.46846549 482.09158827 864.64983609 482.09158827z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3507 = [\n  _hoisted_2516\n];\nfunction _sfc_render516(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock516(), _createElementBlock516(\"svg\", _hoisted_1517, _hoisted_3507);\n}\nvar menu_zhiyejiankang_default = /* @__PURE__ */ export_helper_default(menu_zhiyejiankang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render516], [\"__file\", \"menu-zhiyejiankang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zhoubao.vue?vue&type=script&lang.ts\nvar menu_zhoubao_vue_vue_type_script_lang_default = {\n  name: \"MenuZhoubao\"\n};\n\n// src/components/menu-zhoubao.vue\nimport { createElementVNode as _createElementVNode508, openBlock as _openBlock517, createElementBlock as _createElementBlock517 } from \"vue\";\nvar _hoisted_1518 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2517 = /* @__PURE__ */ _createElementVNode508(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M733.090909 744.727273h-442.181818a34.909091 34.909091 0 1 0 0 69.818182h442.181818a34.909091 34.909091 0 1 0 0-69.818182m-297.681454-229.818182a52.037818 52.037818 0 0 0 50.129454-38.050909L512 381.928727l26.461091 94.929455a52.037818 52.037818 0 0 0 100.119273 0.372363l70.283636-244.736a34.955636 34.955636 0 0 0-29.672727-44.357818c-17.268364-2.048-33.117091 10.146909-37.911273 26.856728l-52.433455 182.574545-43.659636-153.227636a35.025455 35.025455 0 0 0-67.374545 0.186181l-42.658909 153.041455-52.433455-182.574545c-4.794182-16.709818-20.642909-28.904727-37.911273-26.856728a34.955636 34.955636 0 0 0-29.672727 44.357818l70.283636 244.736a52.014545 52.014545 0 0 0 49.989819 37.678546M733.090909 605.090909h-442.181818a34.909091 34.909091 0 1 0 0 69.818182h442.181818a34.909091 34.909091 0 1 0 0-69.818182m139.636364 116.363636a34.909091 34.909091 0 0 0 34.909091-34.90909V93.090909a69.818182 69.818182 0 0 0-69.818182-69.818182H186.181818a69.818182 69.818182 0 0 0-69.818182 69.818182v837.818182a69.818182 69.818182 0 0 0 69.818182 69.818182h651.636364a69.818182 69.818182 0 0 0 69.818182-69.818182v-81.454546a34.909091 34.909091 0 1 0-69.818182 0V930.909091H186.181818V93.090909h651.636364v593.454546a34.909091 34.909091 0 0 0 34.909091 34.90909\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3508 = [\n  _hoisted_2517\n];\nfunction _sfc_render517(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock517(), _createElementBlock517(\"svg\", _hoisted_1518, _hoisted_3508);\n}\nvar menu_zhoubao_default = /* @__PURE__ */ export_helper_default(menu_zhoubao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render517], [\"__file\", \"menu-zhoubao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zhuanxiangshigongfangan.vue?vue&type=script&lang.ts\nvar menu_zhuanxiangshigongfangan_vue_vue_type_script_lang_default = {\n  name: \"MenuZhuanxiangshigongfangan\"\n};\n\n// src/components/menu-zhuanxiangshigongfangan.vue\nimport { createElementVNode as _createElementVNode509, openBlock as _openBlock518, createElementBlock as _createElementBlock518 } from \"vue\";\nvar _hoisted_1519 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2518 = /* @__PURE__ */ _createElementVNode509(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M459.6 267.9c57 1.1 103.4-45.3 102.3-102.3-1-54-44.6-97.5-98.5-98.5-57-1.1-103.4 45.3-102.3 102.3 1 54 44.6 97.5 98.5 98.5zM346.5 669.3s-120.6-58.9-168.7-70.1c-10.5-2.4-21 3.9-23.8 14.2-14.8 54.4-75.4 254.9-93.8 321.2-3.5 12.7 6 25.3 19.3 25.3h35.2c8.1 0 15.3-4.8 18.4-12.3 20.3-48.6 79.6-227.3 88.6-227.3 67.4-0.4 124.1 86.7 121.9 112.8-2.8 32.2-21.2 71-35.6 97.1-7.3 13.3 2.3 29.7 17.5 29.7h40.3c7 0 13.6-3.7 17.2-9.8 36.4-61.2 48.5-99 48.6-121.7 0.4-56.4-54.6-145-85.1-159.1z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3509 = /* @__PURE__ */ _createElementVNode509(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M957.8 917L789.5 598.5c-27.3-47.3-84.2-13.8-111.5 33.5l-72.9 102.1-38.6-36.5c0.8-4.8 0.8-10.5-0.3-17-12.4-72.1-67.5-318.8-107.8-358.4-1.3-1.3-2.8-2.4-4.5-3.2l-124.8-66.1c-6.3-3.4-13.4-4.9-20.6-4.6-43.5 2.1-142.6 16.6-174.4 21.4-6.3 1-11.8 4.9-14.8 10.5C109 300 80 348.7 63.9 386.7c-6.4 15-3 32.4 8.6 43.9L94 448l74.5 57.5c6.6 5.1 9.4 13.8 6.9 21.8-6.6 20.9-0.7 5.7-3.2 15.5-2.5 9.9 2.8 20.2 12.5 23.7 34.2 12.5 125.6 60.6 160.8 70.6 9.9 2.8 8.2-7.3 12-16.8l-3.9-5.2 219.4 168L485.5 932c-7.7 13.3 1.9 30 17.3 30H931.8c23.1 0 37.6-25 26-45zM240.1 360.6c-9.6 17.7-18.4 38.3-29.8 67.7-5.1 13.3-22.1 17-32.4 7.2L138 398c-2-1.7 14.9-38.2 25.3-57.5 3.6-6.7 10.6-10.7 18.2-10.5l41.7 1.2c14.8 0.3 24 16.3 16.9 29.4zM378 554l26.8-66.1c7-17.5 32.1-16.5 37.7 1.5 14.4 46.7 34.7 117.2 56.3 164.5L378 554z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4117 = [\n  _hoisted_2518,\n  _hoisted_3509\n];\nfunction _sfc_render518(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock518(), _createElementBlock518(\"svg\", _hoisted_1519, _hoisted_4117);\n}\nvar menu_zhuanxiangshigongfangan_default = /* @__PURE__ */ export_helper_default(menu_zhuanxiangshigongfangan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render518], [\"__file\", \"menu-zhuanxiangshigongfangan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zl-fenbu.vue?vue&type=script&lang.ts\nvar menu_zl_fenbu_vue_vue_type_script_lang_default = {\n  name: \"MenuZlFenbu\"\n};\n\n// src/components/menu-zl-fenbu.vue\nimport { createElementVNode as _createElementVNode510, openBlock as _openBlock519, createElementBlock as _createElementBlock519 } from \"vue\";\nvar _hoisted_1520 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2519 = /* @__PURE__ */ _createElementVNode510(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M511.6928 0L0.2048 358.4l511.8464 358.4 511.8464-358.4z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3510 = /* @__PURE__ */ _createElementVNode510(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M235.4688 625.664l-56.9856 39.8848 333.312 233.4208L845.1584 665.6l-57.0368-39.8848 89.2928-62.464 146.2784 102.2976-511.7952 358.4L0 665.6l146.176-102.4 89.2928 62.464z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4118 = [\n  _hoisted_2519,\n  _hoisted_3510\n];\nfunction _sfc_render519(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock519(), _createElementBlock519(\"svg\", _hoisted_1520, _hoisted_4118);\n}\nvar menu_zl_fenbu_default = /* @__PURE__ */ export_helper_default(menu_zl_fenbu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render519], [\"__file\", \"menu-zl-fenbu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zl-fenxiang.vue?vue&type=script&lang.ts\nvar menu_zl_fenxiang_vue_vue_type_script_lang_default = {\n  name: \"MenuZlFenxiang\"\n};\n\n// src/components/menu-zl-fenxiang.vue\nimport { createElementVNode as _createElementVNode511, openBlock as _openBlock520, createElementBlock as _createElementBlock520 } from \"vue\";\nvar _hoisted_1521 = {\n  class: \"icon\",\n  viewBox: \"0 0 1257 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2520 = /* @__PURE__ */ _createElementVNode511(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1146.89539975 736.01238206c35.92820903 0 65.38934014 29.10184941 65.38934015 65.38933892v123.23375604c0 35.92820903-29.10184941 65.38934014-65.38934015 65.38934015H120.42647537c-35.92820903 0-65.38934014-29.10184941-65.38934015-65.38934015v-123.23375604c0-35.92820903 29.10184941-65.38934014 65.38934015-65.38933892h1026.46892438\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3511 = /* @__PURE__ */ _createElementVNode511(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1146.89539975 707.26981435H120.42647537c-51.73662091 0-94.13190663 42.03600403-94.13190663 94.13190663v123.23375604c0 51.73662091 42.03600403 94.13190663 94.13190663 94.13190787h1026.46892438c51.73662091 0 94.13190663-42.03600403 94.13190663-94.13190787v-123.23375604c-0.3592817-51.73662091-42.39528573-94.13190663-94.13190663-94.13190663zM1146.89539975 3.07692249H120.42647537c-51.73662091 0-94.13190663 42.03600403-94.13190663 94.13190784v123.23375605c0 51.73662091 42.03600403 94.13190663 94.13190663 94.13190663h1026.46892438c51.73662091 0 94.13190663-42.03600403 94.13190663-94.13190663V97.20883033c-0.3592817-51.73662091-42.39528573-94.13190663-94.13190663-94.13190784z m65.03005722 217.36566389c0 35.92820903-29.10184941 65.38934014-65.38933892 65.38933892h-538.9231318c35.92820903 0 65.38934014-29.10184941 65.38934014-65.38933892V97.20883033c0-35.92820903-29.10184941-65.38934014-65.38934014-65.38934014h538.9231318c35.92820903 0 65.38934014 29.10184941 65.38933892 65.38934014v123.23375605zM1146.89539975 349.42485572H120.42647537c-51.73662091 0-94.13190663 42.03600403-94.13190663 94.13190664v123.23375605c0 51.73662091 42.03600403 94.13190663 94.13190663 94.13190662h1026.46892438c51.73662091 0 94.13190663-42.03600403 94.13190663-94.13190662v-123.23375605c-0.3592817-52.0959026-42.39528573-94.13190663-94.13190663-94.13190664z m65.03005722 217.36566269c0 35.92820903-29.10184941 65.38934014-65.38933892 65.38934014h-359.28208786c35.92820903 0 65.38934014-29.10184941 65.38934014-65.38934014v-123.23375605c0-35.92820903-29.10184941-65.38934014-65.38934014-65.38934014h359.28208786c35.92820903 0 65.38934014 29.10184941 65.38933892 65.38934014v123.23375605z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4119 = [\n  _hoisted_2520,\n  _hoisted_3511\n];\nfunction _sfc_render520(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock520(), _createElementBlock520(\"svg\", _hoisted_1521, _hoisted_4119);\n}\nvar menu_zl_fenxiang_default = /* @__PURE__ */ export_helper_default(menu_zl_fenxiang_vue_vue_type_script_lang_default, [[\"render\", _sfc_render520], [\"__file\", \"menu-zl-fenxiang.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zl-jianyan.vue?vue&type=script&lang.ts\nvar menu_zl_jianyan_vue_vue_type_script_lang_default = {\n  name: \"MenuZlJianyan\"\n};\n\n// src/components/menu-zl-jianyan.vue\nimport { createElementVNode as _createElementVNode512, openBlock as _openBlock521, createElementBlock as _createElementBlock521 } from \"vue\";\nvar _hoisted_1522 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2521 = /* @__PURE__ */ _createElementVNode512(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M911.810834 604.436156c-12.404856-82.233422-18.438758-163.313228-18.358839-244.483377 0.074707-78.331279 5.851478-156.424537 17.090555-235.409069C846.756573 91.206963 781.146353 67.208605 716.024334 51.08403 641.510068 32.63311 567.581297 24.517833 497.698872 24.517833c-68.01301 0-139.28881 8.004086-212.461823 25.904257-65.438221 16.008171-132.474826 39.917923-200.155997 73.067034 10.531966 77.745783 15.690232 155.51589 15.690231 233.09141 0 81.632291-5.7177 163.342763-16.890757 244.863862-1.17794 8.60348-1.749536 17.085343-1.749537 25.428217-0.001737 95.559087 72.650063 184.408432 159.041024 251.387705 87.316981 67.696808 187.923142 112.673966 242.825921 120.198536 4.941094 0.675839 9.578147 1.023314 13.84514 1.023313 4.312164 0 9.114268-0.389172 14.340291-1.148404 54.802012-7.971075 155.328254-53.794335 242.572265-121.484194 86.269344-66.932363 158.841225-154.859162 158.841225-247.388267 0-8.389783-0.582021-16.739606-1.786021-25.025146z m6.061701-244.483377c-0.078182 79.603037 5.893175 159.475367 18.160778 240.845314v0.095556c1.402061 9.656329 2.081375 19.182355 2.081375 28.567653 0 101.405353-76.948328 195.763914-168.42111 266.732198-90.496377 70.212526-195.953288 117.917363-254.063261 126.369691-6.537741 0.948607-12.493462 1.436809-17.787243 1.436809-5.038387 0-10.766511-0.444768-17.10098-1.311718-58.266338-7.984974-163.891774-54.82981-254.508029-125.084034-91.540539-70.971759-168.52709-166.226805-168.523615-270.731635 0.001737-9.56946 0.634142-19.140658 1.940647-28.684057 10.981946-80.127724 16.602353-160.748863 16.602354-241.608022 0-79.611724-5.453619-159.178276-16.602354-238.445999l-1.216162-8.655602 7.872045-3.938628c72.101053-36.052264 143.528004-61.829693 213.182833-78.868128 75.341257-18.430072 148.529906-26.672177 218.209059-26.672177 71.605901 0 147.497905 8.349823 224.166516 27.334117C791.389914 44.548026 861.527734 70.54089 929.636299 107.017073l7.614914 4.079356-1.245698 8.466228c-11.92534 81.043321-18.056536 160.766237-18.13298 240.390122z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3512 = /* @__PURE__ */ _createElementVNode512(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M856.855933 588.348065c-20.784214-137.846789-20.228254-271.198989-0.024323-408.482868-118.88508-63.669573-245.367701-88.913628-359.082354-88.913628-111.756632 0-234.090401 25.400419-358.85997 87.791284 19.092011 135.749777 18.529102 272.057252 0 407.245857-25.621066 186.931101 272.825172 347.056246 358.983323 347.059721 85.301626 0 385.328875-163.566885 358.983324-344.700366zM402.059866 488.320451c-5.375438-8.839763-11.061865-17.384172-17.055808-25.629753l-2.731154 0.842627-7.41859 207.063799-4.4998 4.339962h-34.462566l-4.187073-4.339962 7.085014-197.744521-1.577536-0.359636c-5.599559 12.740169-11.741179 25.555045-18.41791 38.430729a504.612335 504.612335 0 0 1-21.699811 37.772265l-5.802832 1.037213-29.352947-22.214074-0.96598-6.17463c5.795882-8.374146 11.89233-18.061748 18.282395-29.054118 7.314348-12.583805 14.496655-25.985914 21.545184-40.206327 7.046792-14.218675 13.860776-28.765714 20.440214-43.639379 5.957458-13.464654 11.306835-26.729511 16.042919-39.794569l-2.877093-4.08978h-39.365437l-4.188811-4.339963 1.376001-38.389032 4.499801-4.3417h43.286692l4.498063-4.339962 2.816285-78.59536 4.494588-4.143639 34.403495 1.565375 4.181861 4.538023-2.745052 76.635601 4.187074 4.339962h41.325196l4.187073 4.339962-1.181415 32.996222 3.188083 1.568849c22.836054-19.095486 42.654288-39.011013 59.452964-59.743106 16.703121-20.612214 31.0382-42.772429 43.000026-66.473696l6.277135-3.888245h30.049634l6.146832 3.950791c14.302069 30.834927 32.902403 59.267065 55.797528 85.287727 22.995892 26.138803 49.69413 50.606252 80.091239 73.407559l0.901697 6.086023-24.206842 32.732141-6.03564 0.856526a739.684527 739.684527 0 0 1-18.006152-14.281221c-5.818468-4.765619-11.412815-9.586834-16.774354-14.465382l-3.353133 1.398586-0.847839 23.682156-4.498063 4.339962H464.826004l-4.188811-4.339962 0.778344-21.718922-3.15681-1.534102c-6.608974 5.564811-13.796493 11.418027-21.557346 17.55096l-5.915761-0.863475-22.992418-32.617474 1.07891-6.007842c3.042143-2.121335 5.959195-4.246144 8.747682-6.367479 2.684244-2.04489 5.333741-4.088043 7.939803-6.132933l-0.934708-2.69293h-34.460828l-4.499801 4.339962-1.35689 37.90083 2.967436 1.32388 3.40178-3.283638 6.119034 0.128565c12.781866 13.594958 24.893106 28.680583 36.331981 45.244714l6.5916 2.277698 27.424461-8.660813 5.554387 2.798911c2.569577 7.576691 5.338953 16.26009 8.294227 26.046722 3.506022 11.603926 6.916489 23.617873 10.229663 36.040102 3.314911 12.420492 6.473458 24.597752 9.479116 36.528305 2.550466 10.128895 4.725659 19.255325 6.523843 27.382764l-3.118588 5.830629-35.676991 13.987604-4.741296-2.701617c-1.254385-7.486348-2.875355-15.947363-4.859437-25.376096-2.373254-11.2773-4.982791-22.881226-7.823398-34.813516-2.840608-11.930553-5.695114-23.536216-8.558309-34.813515-2.425375-9.539925-4.763882-18.200738-7.013781-25.985915l-4.423357-1.230061-23.51363 21.583407-5.436245-0.788768z m157.856133-206.744123c-20.101426 35.939334-46.419179 69.15099-78.944572 99.64018l1.160567 2.957012h153.12005l1.223112-3.021294c-31.712302-31.003453-55.926094-64.150826-72.630952-99.438645l-3.928205-0.137253z m-16.26009 290.047768c-1.502829-7.759116-3.325335-16.390394-5.462306-25.888621-2.538305-11.2773-5.231235-22.799569-8.077056-34.566809-2.847557-11.767239-5.709013-23.127933-8.586106-34.078606-2.366304-9.011763-4.557134-16.862959-6.563801-23.548377l2.896203-5.38065 33.293313-9.805743 5.493579 2.910102c2.001456 6.384852 4.185336 13.914634 6.542953 22.585872 2.887517 10.622309 5.839317 21.738033 8.855399 33.343697 3.01782 11.603926 5.794145 23.044539 8.33245 34.321838 2.138708 9.498228 3.959477 18.127768 5.462306 25.886884l-3.304487 5.655155-33.955252 11.444088-4.927195-2.87883z m131.828523-112.700026c-3.080365 9.713662-6.758388 20.431527-11.034068 32.141433-4.892447 13.402109-10.043764 27.130844-15.450473 41.186206-5.408448 14.057099-10.891602 27.949148-16.449465 41.677883-4.913296 12.1373-9.475642 23.383327-13.687038 33.731131l2.705092 4.02376h67.312848l4.188811 4.339962-1.376001 38.390771-4.499801 4.341699H407.079141l-4.18881-4.339962 1.376001-38.39077 4.4998-4.3417h155.573224l6.10166-3.971638c5.106144-11.612613 10.243562-24.020944 15.407039-37.214568 5.75766-14.708615 11.517057-29.502361 17.27993-44.374289 5.762872-14.873665 11.193906-29.584018 16.2931-44.129319 4.553659-12.997301 8.820652-25.275328 12.800977-36.83582l5.550913-2.790224 34.870849 11.094876 2.840608 5.460569z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4120 = [\n  _hoisted_2521,\n  _hoisted_3512\n];\nfunction _sfc_render521(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock521(), _createElementBlock521(\"svg\", _hoisted_1522, _hoisted_4120);\n}\nvar menu_zl_jianyan_default = /* @__PURE__ */ export_helper_default(menu_zl_jianyan_vue_vue_type_script_lang_default, [[\"render\", _sfc_render521], [\"__file\", \"menu-zl-jianyan.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zl-wentiku.vue?vue&type=script&lang.ts\nvar menu_zl_wentiku_vue_vue_type_script_lang_default = {\n  name: \"MenuZlWentiku\"\n};\n\n// src/components/menu-zl-wentiku.vue\nimport { createElementVNode as _createElementVNode513, openBlock as _openBlock522, createElementBlock as _createElementBlock522 } from \"vue\";\nvar _hoisted_1523 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2522 = /* @__PURE__ */ _createElementVNode513(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M893.72444445 1022.29333333h-764.58666667c-40.21589333 0-72.81777778-32.60188445-72.81777778-72.81777778v-800.99555555c0-40.21589333 32.60188445-72.81777778 72.81777778-72.81777778h97.26179555c14.99704889-42.41863111 55.43253333-72.81777778 102.98709334-72.81777777h364.08888888c47.55456 0 87.99004445 30.39914667 102.98709334 72.81777777H893.72444445c40.21589333 0 72.81777778 32.60188445 72.81777777 72.81777778v800.99555555c0 40.21589333-32.60188445 72.81777778-72.81777777 72.81777778z m-431.78780445-112.90851555c9.44469333 9.50044445 21.33333333 14.22222222 35.55555555 14.22222222s26.05511111-4.72177778 35.55555556-14.22222222c9.44469333-9.44469333 14.22222222-21.33333333 14.22222222-35.55555556s-4.77752889-26.05511111-14.22222222-35.55555555c-9.50044445-9.44469333-21.33333333-14.22222222-35.55555556-14.22222222s-26.11086222 4.77752889-35.55555555 14.22222222c-9.50044445 9.50044445-14.22222222 21.33333333-14.22222222 35.55555555s4.72177778 26.112 14.22222222 35.55555556zM374.95466667 500.49592889c19.98848 0 36.69674667-14.92650667 39.27722666-34.74887111 3.57489778-27.46823111 11.77258667-48.48526222 24.59420445-63.02947556 17.77777778-20.11136 39.66634667-30.22279111 65.77834667-30.22279111 26.05511111 0 46.22222222 7.72209778 60.44444444 23.11168 14.22222222 15.44419555 21.33333333 38.55587555 21.33333333 69.33390222 0 16.61155555-3.55555555 33.77834667-10.66666667 51.55612445-7.11111111 17.77777778-20.16711111 35.00032-39.1111111 51.55498667-26.11086222 23.72266667-44.44501333 45.66698667-55.11168 65.77834666-10.66666667 20.16711111-16.00056889 40.88945778-16.0005689 62.22279111v22.15367111c0 7.40124445 5.99950222 13.40188445 13.40188445 13.40188445h37.19736889c7.40124445 0 13.40188445-5.99950222 13.40188444-13.40188445V706.71928889c0-7.11111111 4.72177778-20.11136 14.22222222-39.11111111 9.44469333-18.944 26.05511111-37.88913778 49.77777778-56.88888889 23.66691555-18.944 42.66666667-41.44469333 56.88888889-67.55555556 14.22222222-26.05511111 21.33333333-54.49955555 21.33333333-85.33333333 0-45.00024889-14.83320889-81.77777778-44.44501333-110.22222222-29.66641778-28.44444445-70.55587555-42.66666667-122.66723555-42.66666667-47.44419555 0-87.72266667 16.00056889-120.88888889 48.00056889-25.00835555 24.08789333-41.26492445 57.93450667-48.76970667 101.49205333-4.15061333 24.09130667 14.59541333 46.06293333 39.04170667 46.06293334h0.96824889zM693.47555555 75.66222222H330.14442667c-19.83829333 0-36.608 15.55456-37.15185778 35.38602667-0.56433778 20.57557333 15.94709333 37.43175111 36.39523556 37.43175111h363.33112888c19.83829333 0 36.608-15.55456 37.15185778-35.38602667 0.56433778-20.57443555-15.94709333-37.43175111-36.39523556-37.43175111z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3513 = [\n  _hoisted_2522\n];\nfunction _sfc_render522(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock522(), _createElementBlock522(\"svg\", _hoisted_1523, _hoisted_3513);\n}\nvar menu_zl_wentiku_default = /* @__PURE__ */ export_helper_default(menu_zl_wentiku_vue_vue_type_script_lang_default, [[\"render\", _sfc_render522], [\"__file\", \"menu-zl-wentiku.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zongheguanli.vue?vue&type=script&lang.ts\nvar menu_zongheguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuZongheguanli\"\n};\n\n// src/components/menu-zongheguanli.vue\nimport { createElementVNode as _createElementVNode514, openBlock as _openBlock523, createElementBlock as _createElementBlock523 } from \"vue\";\nvar _hoisted_1524 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2523 = /* @__PURE__ */ _createElementVNode514(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M982.784 316.0064l-459.264 263.3728a25.6 25.6 0 0 1-25.4976 0L38.7584 316.0064a25.6 25.6 0 0 1 0-44.3904L497.9712 8.192a25.6 25.6 0 0 1 25.4464 0l459.3152 263.3728a25.6 25.6 0 0 1 0 44.3904z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3514 = /* @__PURE__ */ _createElementVNode514(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M498.3296 699.6992L85.504 468.7872a25.6 25.6 0 0 0-27.5456 1.6384l-25.9072 18.7904a25.6 25.6 0 0 0 2.304 42.9056l463.7184 265.9328a25.6 25.6 0 0 0 25.4464 0l463.4624-265.728a25.6 25.6 0 0 0 2.2016-43.0592l-23.7568-16.9984a25.6 25.6 0 0 0-27.2896-1.5872l-414.8736 229.0688a25.6 25.6 0 0 1-24.8832-0.0512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4121 = /* @__PURE__ */ _createElementVNode514(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M498.3296 913.8176l-412.8768-230.912a25.6 25.6 0 0 0-27.5456 1.6384l-25.9072 18.7904a25.6 25.6 0 0 0 2.304 42.9568l463.7184 265.8816a25.6 25.6 0 0 0 25.4464 0l463.4624-265.728a25.6 25.6 0 0 0 2.2016-43.008l-23.7568-17.0496a25.6 25.6 0 0 0-27.2896-1.5872L523.264 913.92a25.6 25.6 0 0 1-24.8832-0.1024z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_545 = [\n  _hoisted_2523,\n  _hoisted_3514,\n  _hoisted_4121\n];\nfunction _sfc_render523(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock523(), _createElementBlock523(\"svg\", _hoisted_1524, _hoisted_545);\n}\nvar menu_zongheguanli_default = /* @__PURE__ */ export_helper_default(menu_zongheguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render523], [\"__file\", \"menu-zongheguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zuzhiguanli.vue?vue&type=script&lang.ts\nvar menu_zuzhiguanli_vue_vue_type_script_lang_default = {\n  name: \"MenuZuzhiguanli\"\n};\n\n// src/components/menu-zuzhiguanli.vue\nimport { openBlock as _openBlock524, createElementBlock as _createElementBlock524, createStaticVNode as _createStaticVNode10 } from \"vue\";\nvar _hoisted_1525 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2524 = /* @__PURE__ */ _createStaticVNode10('<path fill=\"currentColor\" d=\"M329.94341925 10.04278518m22.50069334 0l319.08750223 0q22.50069333 0 22.50069333 22.50069334l0 319.08750223q0 22.50069333-22.50069333 22.50069333l-319.08750223 0q-22.50069333 0-22.50069334-22.50069333l0-319.08750223q0-22.50069333 22.50069334-22.50069334Z\"></path><path fill=\"currentColor\" d=\"M9.56946963 774.71440592m22.50069334 0l197.72453925 0q22.50069333 0 22.50069333 22.50069333l0 197.72453927q0 22.50069333-22.50069333 22.50069333l-197.72453925 0q-22.50069333 0-22.50069334-22.50069333l0-197.72453927q0-22.50069333 22.50069334-22.50069333Z\"></path><path fill=\"currentColor\" d=\"M391.86280297 774.71440592m22.50069333 0l197.72453925 0q22.50069333 0 22.50069334 22.50069333l0 197.72453927q0 22.50069333-22.50069334 22.50069333l-197.72453925 0q-22.50069333 0-22.50069333-22.50069333l0-197.72453927q0-22.50069333 22.50069333-22.50069333Z\"></path><path fill=\"currentColor\" d=\"M774.1561363 774.71440592m22.50069333 0l197.72453926 0q22.50069333 0 22.50069333 22.50069333l0 197.72453927q0 22.50069333-22.50069333 22.50069333l-197.72453926 0q-22.50069333 0-22.50069333-22.50069333l0-197.72453927q0-22.50069333 22.50069333-22.50069333Z\"></path><path fill=\"currentColor\" d=\"M136.18744889 793.65916445h-24.27259259V575.98255408a36.74870518 36.74870518 0 0 1 36.71229629-36.7122963h728.17777778a36.74870518 36.74870518 0 0 1 36.70016 36.7122963v215.81975703h-24.27259259V575.98255408a12.45184 12.45184 0 0 0-12.42756741-12.43970371h-728.17777778a12.45184 12.45184 0 0 0-12.4397037 12.43970371z\"></path><path fill=\"currentColor\" d=\"M499.87584 370.69710222h24.27259259v417.37936593h-24.27259259z\"></path>', 6), _hoisted_83 = [\n  _hoisted_2524\n];\nfunction _sfc_render524(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock524(), _createElementBlock524(\"svg\", _hoisted_1525, _hoisted_83);\n}\nvar menu_zuzhiguanli_default = /* @__PURE__ */ export_helper_default(menu_zuzhiguanli_vue_vue_type_script_lang_default, [[\"render\", _sfc_render524], [\"__file\", \"menu-zuzhiguanli.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu-zuzhijiagou.vue?vue&type=script&lang.ts\nvar menu_zuzhijiagou_vue_vue_type_script_lang_default = {\n  name: \"MenuZuzhijiagou\"\n};\n\n// src/components/menu-zuzhijiagou.vue\nimport { createElementVNode as _createElementVNode515, openBlock as _openBlock525, createElementBlock as _createElementBlock525 } from \"vue\";\nvar _hoisted_1526 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2525 = /* @__PURE__ */ _createElementVNode515(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M1021.7244448 750.47822187c0 50.9724448-20.02488853 61.89511147-98.304 61.89511146-20.02488853-196.608-118.32888853-291.27111147-220.27377813-340.42311146 67.3564448-91.02222187 70.99733333-223.91466667 7.28177813-322.21866667 78.27911147-23.66577813 160.19911147 30.9475552 180.224 114.688 16.384 74.63822187-16.384 156.55822187-85.5608896 187.50577813 127.43111147 32.768 216.63288853 156.55822187 216.6328896 298.55288854zM603.02222187 488.33422187c127.43111147 27.30666667 273.06666667 116.5084448 273.06666666 371.37066666 0 67.3564448-85.56088853 67.3564448-360.448 67.3564448-278.528 0-360.448 0-360.448-67.3564448 0-251.22133333 145.6355552-342.2435552 271.24622294-369.55022186-98.304-54.61333333-132.8924448-180.224-85.5608896-282.16888854s165.6604448-140.17422187 258.50311146-85.5608896 129.2515552 180.224 78.27911147 278.528c-16.384 40.04977813-43.69066667 67.3564448-74.63822293 87.38133334z m-280.34844374-16.384c-101.94488853 47.3315552-200.24888853 145.6355552-220.27377813 340.42311146-78.27911147 0-98.304-10.92266667-98.304-61.89511146-7.28177813-141.99466667 85.56088853-267.60533333 214.8124448-298.55288854-74.63822187-38.22933333-109.22666667-129.2515552-74.63822293-211.1715552 30.9475552-70.99733333 101.94488853-109.22666667 172.94222293-89.20177813-67.3564448 96.4835552-63.7155552 225.73511147 5.46133333 320.39822187z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3515 = [\n  _hoisted_2525\n];\nfunction _sfc_render525(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock525(), _createElementBlock525(\"svg\", _hoisted_1526, _hoisted_3515);\n}\nvar menu_zuzhijiagou_default = /* @__PURE__ */ export_helper_default(menu_zuzhijiagou_vue_vue_type_script_lang_default, [[\"render\", _sfc_render525], [\"__file\", \"menu-zuzhijiagou.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\menu.vue?vue&type=script&lang.ts\nvar menu_vue_vue_type_script_lang_default = {\n  name: \"Menu\"\n};\n\n// src/components/menu.vue\nimport { createElementVNode as _createElementVNode516, openBlock as _openBlock526, createElementBlock as _createElementBlock526 } from \"vue\";\nvar _hoisted_1527 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2526 = /* @__PURE__ */ _createElementVNode516(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H608zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H608z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3516 = [\n  _hoisted_2526\n];\nfunction _sfc_render526(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock526(), _createElementBlock526(\"svg\", _hoisted_1527, _hoisted_3516);\n}\nvar menu_default = /* @__PURE__ */ export_helper_default(menu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render526], [\"__file\", \"menu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\message-box.vue?vue&type=script&lang.ts\nvar message_box_vue_vue_type_script_lang_default = {\n  name: \"MessageBox\"\n};\n\n// src/components/message-box.vue\nimport { createElementVNode as _createElementVNode517, openBlock as _openBlock527, createElementBlock as _createElementBlock527 } from \"vue\";\nvar _hoisted_1528 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2527 = /* @__PURE__ */ _createElementVNode517(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M288 384h448v64H288v-64zm96-128h256v64H384v-64zM131.456 512H384v128h256V512h252.544L721.856 192H302.144L131.456 512zM896 576H704v128H320V576H128v256h768V576zM275.776 128h472.448a32 32 0 0 1 28.608 17.664l179.84 359.552A32 32 0 0 1 960 519.552V864a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V519.552a32 32 0 0 1 3.392-14.336l179.776-359.552A32 32 0 0 1 275.776 128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3517 = [\n  _hoisted_2527\n];\nfunction _sfc_render527(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock527(), _createElementBlock527(\"svg\", _hoisted_1528, _hoisted_3517);\n}\nvar message_box_default = /* @__PURE__ */ export_helper_default(message_box_vue_vue_type_script_lang_default, [[\"render\", _sfc_render527], [\"__file\", \"message-box.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\message.vue?vue&type=script&lang.ts\nvar message_vue_vue_type_script_lang_default = {\n  name: \"Message\"\n};\n\n// src/components/message.vue\nimport { createElementVNode as _createElementVNode518, openBlock as _openBlock528, createElementBlock as _createElementBlock528 } from \"vue\";\nvar _hoisted_1529 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2528 = /* @__PURE__ */ _createElementVNode518(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224H128zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3518 = /* @__PURE__ */ _createElementVNode518(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224h784zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4122 = [\n  _hoisted_2528,\n  _hoisted_3518\n];\nfunction _sfc_render528(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock528(), _createElementBlock528(\"svg\", _hoisted_1529, _hoisted_4122);\n}\nvar message_default = /* @__PURE__ */ export_helper_default(message_vue_vue_type_script_lang_default, [[\"render\", _sfc_render528], [\"__file\", \"message.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\mic.vue?vue&type=script&lang.ts\nvar mic_vue_vue_type_script_lang_default = {\n  name: \"Mic\"\n};\n\n// src/components/mic.vue\nimport { createElementVNode as _createElementVNode519, openBlock as _openBlock529, createElementBlock as _createElementBlock529 } from \"vue\";\nvar _hoisted_1530 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2529 = /* @__PURE__ */ _createElementVNode519(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 704h160a64 64 0 0 0 64-64v-32h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-32a64 64 0 0 0-64-64H384a64 64 0 0 0-64 64v32h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v32a64 64 0 0 0 64 64h96zm64 64v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768h-96a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64h256a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128h-96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3519 = [\n  _hoisted_2529\n];\nfunction _sfc_render529(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock529(), _createElementBlock529(\"svg\", _hoisted_1530, _hoisted_3519);\n}\nvar mic_default = /* @__PURE__ */ export_helper_default(mic_vue_vue_type_script_lang_default, [[\"render\", _sfc_render529], [\"__file\", \"mic.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\microphone.vue?vue&type=script&lang.ts\nvar microphone_vue_vue_type_script_lang_default = {\n  name: \"Microphone\"\n};\n\n// src/components/microphone.vue\nimport { createElementVNode as _createElementVNode520, openBlock as _openBlock530, createElementBlock as _createElementBlock530 } from \"vue\";\nvar _hoisted_1531 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2530 = /* @__PURE__ */ _createElementVNode520(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 128a128 128 0 0 0-128 128v256a128 128 0 1 0 256 0V256a128 128 0 0 0-128-128zm0-64a192 192 0 0 1 192 192v256a192 192 0 1 1-384 0V256A192 192 0 0 1 512 64zm-32 832v-64a288 288 0 0 1-288-288v-32a32 32 0 0 1 64 0v32a224 224 0 0 0 224 224h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64h64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3520 = [\n  _hoisted_2530\n];\nfunction _sfc_render530(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock530(), _createElementBlock530(\"svg\", _hoisted_1531, _hoisted_3520);\n}\nvar microphone_default = /* @__PURE__ */ export_helper_default(microphone_vue_vue_type_script_lang_default, [[\"render\", _sfc_render530], [\"__file\", \"microphone.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\milk-tea.vue?vue&type=script&lang.ts\nvar milk_tea_vue_vue_type_script_lang_default = {\n  name: \"MilkTea\"\n};\n\n// src/components/milk-tea.vue\nimport { createElementVNode as _createElementVNode521, openBlock as _openBlock531, createElementBlock as _createElementBlock531 } from \"vue\";\nvar _hoisted_1532 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2531 = /* @__PURE__ */ _createElementVNode521(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M416 128V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H512a32 32 0 0 0-32 32v32h320a96 96 0 0 1 11.712 191.296l-39.68 581.056A64 64 0 0 1 708.224 960H315.776a64 64 0 0 1-63.872-59.648l-39.616-581.056A96 96 0 0 1 224 128h192zM276.48 320l39.296 576h392.448l4.8-70.784a224.064 224.064 0 0 1 30.016-439.808L747.52 320H276.48zM224 256h576a32 32 0 1 0 0-64H224a32 32 0 0 0 0 64zm493.44 503.872 21.12-309.12a160 160 0 0 0-21.12 309.12z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3521 = [\n  _hoisted_2531\n];\nfunction _sfc_render531(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock531(), _createElementBlock531(\"svg\", _hoisted_1532, _hoisted_3521);\n}\nvar milk_tea_default = /* @__PURE__ */ export_helper_default(milk_tea_vue_vue_type_script_lang_default, [[\"render\", _sfc_render531], [\"__file\", \"milk-tea.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\minus.vue?vue&type=script&lang.ts\nvar minus_vue_vue_type_script_lang_default = {\n  name: \"Minus\"\n};\n\n// src/components/minus.vue\nimport { createElementVNode as _createElementVNode522, openBlock as _openBlock532, createElementBlock as _createElementBlock532 } from \"vue\";\nvar _hoisted_1533 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2532 = /* @__PURE__ */ _createElementVNode522(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3522 = [\n  _hoisted_2532\n];\nfunction _sfc_render532(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock532(), _createElementBlock532(\"svg\", _hoisted_1533, _hoisted_3522);\n}\nvar minus_default = /* @__PURE__ */ export_helper_default(minus_vue_vue_type_script_lang_default, [[\"render\", _sfc_render532], [\"__file\", \"minus.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\money.vue?vue&type=script&lang.ts\nvar money_vue_vue_type_script_lang_default = {\n  name: \"Money\"\n};\n\n// src/components/money.vue\nimport { createElementVNode as _createElementVNode523, openBlock as _openBlock533, createElementBlock as _createElementBlock533 } from \"vue\";\nvar _hoisted_1534 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2533 = /* @__PURE__ */ _createElementVNode523(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 640v192h640V384H768v-64h150.976c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H233.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096c-2.688-5.184-4.224-10.368-4.224-24.576V640h64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3523 = /* @__PURE__ */ _createElementVNode523(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M768 192H128v448h640V192zm64-22.976v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 682.432 64 677.248 64 663.04V169.024c0-14.272 1.472-19.456 4.288-24.64a29.056 29.056 0 0 1 12.096-12.16C85.568 129.536 90.752 128 104.96 128h685.952c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4123 = /* @__PURE__ */ _createElementVNode523(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M448 576a160 160 0 1 1 0-320 160 160 0 0 1 0 320zm0-64a96 96 0 1 0 0-192 96 96 0 0 0 0 192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_546 = [\n  _hoisted_2533,\n  _hoisted_3523,\n  _hoisted_4123\n];\nfunction _sfc_render533(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock533(), _createElementBlock533(\"svg\", _hoisted_1534, _hoisted_546);\n}\nvar money_default = /* @__PURE__ */ export_helper_default(money_vue_vue_type_script_lang_default, [[\"render\", _sfc_render533], [\"__file\", \"money.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\monitor.vue?vue&type=script&lang.ts\nvar monitor_vue_vue_type_script_lang_default = {\n  name: \"Monitor\"\n};\n\n// src/components/monitor.vue\nimport { createElementVNode as _createElementVNode524, openBlock as _openBlock534, createElementBlock as _createElementBlock534 } from \"vue\";\nvar _hoisted_1535 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2534 = /* @__PURE__ */ _createElementVNode524(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 768v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768H192A128 128 0 0 1 64 640V256a128 128 0 0 1 128-128h640a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128H544zM192 192a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3524 = [\n  _hoisted_2534\n];\nfunction _sfc_render534(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock534(), _createElementBlock534(\"svg\", _hoisted_1535, _hoisted_3524);\n}\nvar monitor_default = /* @__PURE__ */ export_helper_default(monitor_vue_vue_type_script_lang_default, [[\"render\", _sfc_render534], [\"__file\", \"monitor.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\moon-night.vue?vue&type=script&lang.ts\nvar moon_night_vue_vue_type_script_lang_default = {\n  name: \"MoonNight\"\n};\n\n// src/components/moon-night.vue\nimport { createElementVNode as _createElementVNode525, openBlock as _openBlock535, createElementBlock as _createElementBlock535 } from \"vue\";\nvar _hoisted_1536 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2535 = /* @__PURE__ */ _createElementVNode525(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 512a448 448 0 0 1 215.872-383.296A384 384 0 0 0 213.76 640h188.8A448.256 448.256 0 0 1 384 512zM171.136 704a448 448 0 0 1 636.992-575.296A384 384 0 0 0 499.328 704h-328.32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3525 = /* @__PURE__ */ _createElementVNode525(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M32 640h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32zm128 128h384a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm160 127.68 224 .256a32 32 0 0 1 32 32V928a32 32 0 0 1-32 32l-224-.384a32 32 0 0 1-32-32v-.064a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4124 = [\n  _hoisted_2535,\n  _hoisted_3525\n];\nfunction _sfc_render535(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock535(), _createElementBlock535(\"svg\", _hoisted_1536, _hoisted_4124);\n}\nvar moon_night_default = /* @__PURE__ */ export_helper_default(moon_night_vue_vue_type_script_lang_default, [[\"render\", _sfc_render535], [\"__file\", \"moon-night.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\moon.vue?vue&type=script&lang.ts\nvar moon_vue_vue_type_script_lang_default = {\n  name: \"Moon\"\n};\n\n// src/components/moon.vue\nimport { createElementVNode as _createElementVNode526, openBlock as _openBlock536, createElementBlock as _createElementBlock536 } from \"vue\";\nvar _hoisted_1537 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2536 = /* @__PURE__ */ _createElementVNode526(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M240.448 240.448a384 384 0 1 0 559.424 525.696 448 448 0 0 1-542.016-542.08 390.592 390.592 0 0 0-17.408 16.384zm181.056 362.048a384 384 0 0 0 525.632 16.384A448 448 0 1 1 405.056 76.8a384 384 0 0 0 16.448 525.696z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3526 = [\n  _hoisted_2536\n];\nfunction _sfc_render536(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock536(), _createElementBlock536(\"svg\", _hoisted_1537, _hoisted_3526);\n}\nvar moon_default = /* @__PURE__ */ export_helper_default(moon_vue_vue_type_script_lang_default, [[\"render\", _sfc_render536], [\"__file\", \"moon.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\more-filled.vue?vue&type=script&lang.ts\nvar more_filled_vue_vue_type_script_lang_default = {\n  name: \"MoreFilled\"\n};\n\n// src/components/more-filled.vue\nimport { createElementVNode as _createElementVNode527, openBlock as _openBlock537, createElementBlock as _createElementBlock537 } from \"vue\";\nvar _hoisted_1538 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2537 = /* @__PURE__ */ _createElementVNode527(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3527 = [\n  _hoisted_2537\n];\nfunction _sfc_render537(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock537(), _createElementBlock537(\"svg\", _hoisted_1538, _hoisted_3527);\n}\nvar more_filled_default = /* @__PURE__ */ export_helper_default(more_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render537], [\"__file\", \"more-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\more.vue?vue&type=script&lang.ts\nvar more_vue_vue_type_script_lang_default = {\n  name: \"More\"\n};\n\n// src/components/more.vue\nimport { createElementVNode as _createElementVNode528, openBlock as _openBlock538, createElementBlock as _createElementBlock538 } from \"vue\";\nvar _hoisted_1539 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2538 = /* @__PURE__ */ _createElementVNode528(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3528 = [\n  _hoisted_2538\n];\nfunction _sfc_render538(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock538(), _createElementBlock538(\"svg\", _hoisted_1539, _hoisted_3528);\n}\nvar more_default = /* @__PURE__ */ export_helper_default(more_vue_vue_type_script_lang_default, [[\"render\", _sfc_render538], [\"__file\", \"more.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\mostly-cloudy.vue?vue&type=script&lang.ts\nvar mostly_cloudy_vue_vue_type_script_lang_default = {\n  name: \"MostlyCloudy\"\n};\n\n// src/components/mostly-cloudy.vue\nimport { createElementVNode as _createElementVNode529, openBlock as _openBlock539, createElementBlock as _createElementBlock539 } from \"vue\";\nvar _hoisted_1540 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2539 = /* @__PURE__ */ _createElementVNode529(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M737.216 357.952 704 349.824l-11.776-32a192.064 192.064 0 0 0-367.424 23.04l-8.96 39.04-39.04 8.96A192.064 192.064 0 0 0 320 768h368a207.808 207.808 0 0 0 207.808-208 208.32 208.32 0 0 0-158.592-202.048zm15.168-62.208A272.32 272.32 0 0 1 959.744 560a271.808 271.808 0 0 1-271.552 272H320a256 256 0 0 1-57.536-505.536 256.128 256.128 0 0 1 489.92-30.72z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3529 = [\n  _hoisted_2539\n];\nfunction _sfc_render539(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock539(), _createElementBlock539(\"svg\", _hoisted_1540, _hoisted_3529);\n}\nvar mostly_cloudy_default = /* @__PURE__ */ export_helper_default(mostly_cloudy_vue_vue_type_script_lang_default, [[\"render\", _sfc_render539], [\"__file\", \"mostly-cloudy.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\mouse.vue?vue&type=script&lang.ts\nvar mouse_vue_vue_type_script_lang_default = {\n  name: \"Mouse\"\n};\n\n// src/components/mouse.vue\nimport { createElementVNode as _createElementVNode530, openBlock as _openBlock540, createElementBlock as _createElementBlock540 } from \"vue\";\nvar _hoisted_1541 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2540 = /* @__PURE__ */ _createElementVNode530(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M438.144 256c-68.352 0-92.736 4.672-117.76 18.112-20.096 10.752-35.52 26.176-46.272 46.272C260.672 345.408 256 369.792 256 438.144v275.712c0 68.352 4.672 92.736 18.112 117.76 10.752 20.096 26.176 35.52 46.272 46.272C345.408 891.328 369.792 896 438.144 896h147.712c68.352 0 92.736-4.672 117.76-18.112 20.096-10.752 35.52-26.176 46.272-46.272C763.328 806.592 768 782.208 768 713.856V438.144c0-68.352-4.672-92.736-18.112-117.76a110.464 110.464 0 0 0-46.272-46.272C678.592 260.672 654.208 256 585.856 256H438.144zm0-64h147.712c85.568 0 116.608 8.96 147.904 25.6 31.36 16.768 55.872 41.344 72.576 72.64C823.104 321.536 832 352.576 832 438.08v275.84c0 85.504-8.96 116.544-25.6 147.84a174.464 174.464 0 0 1-72.64 72.576C702.464 951.104 671.424 960 585.92 960H438.08c-85.504 0-116.544-8.96-147.84-25.6a174.464 174.464 0 0 1-72.64-72.704c-16.768-31.296-25.664-62.336-25.664-147.84v-275.84c0-85.504 8.96-116.544 25.6-147.84a174.464 174.464 0 0 1 72.768-72.576c31.232-16.704 62.272-25.6 147.776-25.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3530 = /* @__PURE__ */ _createElementVNode530(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 320q32 0 32 32v128q0 32-32 32t-32-32V352q0-32 32-32zm32-96a32 32 0 0 1-64 0v-64a32 32 0 0 0-32-32h-96a32 32 0 0 1 0-64h96a96 96 0 0 1 96 96v64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4125 = [\n  _hoisted_2540,\n  _hoisted_3530\n];\nfunction _sfc_render540(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock540(), _createElementBlock540(\"svg\", _hoisted_1541, _hoisted_4125);\n}\nvar mouse_default = /* @__PURE__ */ export_helper_default(mouse_vue_vue_type_script_lang_default, [[\"render\", _sfc_render540], [\"__file\", \"mouse.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\mug.vue?vue&type=script&lang.ts\nvar mug_vue_vue_type_script_lang_default = {\n  name: \"Mug\"\n};\n\n// src/components/mug.vue\nimport { createElementVNode as _createElementVNode531, openBlock as _openBlock541, createElementBlock as _createElementBlock541 } from \"vue\";\nvar _hoisted_1542 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2541 = /* @__PURE__ */ _createElementVNode531(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M736 800V160H160v640a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64zm64-544h63.552a96 96 0 0 1 96 96v224a96 96 0 0 1-96 96H800v128a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V128a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v128zm0 64v288h63.552a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32H800z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3531 = [\n  _hoisted_2541\n];\nfunction _sfc_render541(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock541(), _createElementBlock541(\"svg\", _hoisted_1542, _hoisted_3531);\n}\nvar mug_default = /* @__PURE__ */ export_helper_default(mug_vue_vue_type_script_lang_default, [[\"render\", _sfc_render541], [\"__file\", \"mug.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\mute-notification.vue?vue&type=script&lang.ts\nvar mute_notification_vue_vue_type_script_lang_default = {\n  name: \"MuteNotification\"\n};\n\n// src/components/mute-notification.vue\nimport { createElementVNode as _createElementVNode532, openBlock as _openBlock542, createElementBlock as _createElementBlock542 } from \"vue\";\nvar _hoisted_1543 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2542 = /* @__PURE__ */ _createElementVNode532(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m241.216 832 63.616-64H768V448c0-42.368-10.24-82.304-28.48-117.504l46.912-47.232C815.36 331.392 832 387.84 832 448v320h96a32 32 0 1 1 0 64H241.216zm-90.24 0H96a32 32 0 1 1 0-64h96V448a320.128 320.128 0 0 1 256-313.6V128a64 64 0 1 1 128 0v6.4a319.552 319.552 0 0 1 171.648 97.088l-45.184 45.44A256 256 0 0 0 256 448v278.336L151.04 832zM448 896h128a64 64 0 0 1-128 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3532 = /* @__PURE__ */ _createElementVNode532(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056l-704 708.544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4126 = [\n  _hoisted_2542,\n  _hoisted_3532\n];\nfunction _sfc_render542(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock542(), _createElementBlock542(\"svg\", _hoisted_1543, _hoisted_4126);\n}\nvar mute_notification_default = /* @__PURE__ */ export_helper_default(mute_notification_vue_vue_type_script_lang_default, [[\"render\", _sfc_render542], [\"__file\", \"mute-notification.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\mute.vue?vue&type=script&lang.ts\nvar mute_vue_vue_type_script_lang_default = {\n  name: \"Mute\"\n};\n\n// src/components/mute.vue\nimport { createElementVNode as _createElementVNode533, openBlock as _openBlock543, createElementBlock as _createElementBlock543 } from \"vue\";\nvar _hoisted_1544 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2543 = /* @__PURE__ */ _createElementVNode533(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m412.16 592.128-45.44 45.44A191.232 191.232 0 0 1 320 512V256a192 192 0 1 1 384 0v44.352l-64 64V256a128 128 0 1 0-256 0v256c0 30.336 10.56 58.24 28.16 80.128zm51.968 38.592A128 128 0 0 0 640 512v-57.152l64-64V512a192 192 0 0 1-287.68 166.528l47.808-47.808zM314.88 779.968l46.144-46.08A222.976 222.976 0 0 0 480 768h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64h64v-64c-61.44 0-118.4-19.2-165.12-52.032zM266.752 737.6A286.976 286.976 0 0 1 192 544v-32a32 32 0 0 1 64 0v32c0 56.832 21.184 108.8 56.064 148.288L266.752 737.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3533 = /* @__PURE__ */ _createElementVNode533(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056l-704 708.544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4127 = [\n  _hoisted_2543,\n  _hoisted_3533\n];\nfunction _sfc_render543(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock543(), _createElementBlock543(\"svg\", _hoisted_1544, _hoisted_4127);\n}\nvar mute_default = /* @__PURE__ */ export_helper_default(mute_vue_vue_type_script_lang_default, [[\"render\", _sfc_render543], [\"__file\", \"mute.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\no-smoking.vue?vue&type=script&lang.ts\nvar no_smoking_vue_vue_type_script_lang_default = {\n  name: \"NoSmoking\"\n};\n\n// src/components/no-smoking.vue\nimport { createElementVNode as _createElementVNode534, openBlock as _openBlock544, createElementBlock as _createElementBlock544 } from \"vue\";\nvar _hoisted_1545 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2544 = /* @__PURE__ */ _createElementVNode534(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M440.256 576H256v128h56.256l-64 64H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32h280.256l-64 64zm143.488 128H704V583.744L775.744 512H928a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H519.744l64-64zM768 576v128h128V576H768zm-29.696-207.552 45.248 45.248-497.856 497.856-45.248-45.248zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3534 = [\n  _hoisted_2544\n];\nfunction _sfc_render544(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock544(), _createElementBlock544(\"svg\", _hoisted_1545, _hoisted_3534);\n}\nvar no_smoking_default = /* @__PURE__ */ export_helper_default(no_smoking_vue_vue_type_script_lang_default, [[\"render\", _sfc_render544], [\"__file\", \"no-smoking.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\notebook.vue?vue&type=script&lang.ts\nvar notebook_vue_vue_type_script_lang_default = {\n  name: \"Notebook\"\n};\n\n// src/components/notebook.vue\nimport { createElementVNode as _createElementVNode535, openBlock as _openBlock545, createElementBlock as _createElementBlock545 } from \"vue\";\nvar _hoisted_1546 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2545 = /* @__PURE__ */ _createElementVNode535(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3535 = /* @__PURE__ */ _createElementVNode535(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M672 128h64v768h-64zM96 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4128 = [\n  _hoisted_2545,\n  _hoisted_3535\n];\nfunction _sfc_render545(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock545(), _createElementBlock545(\"svg\", _hoisted_1546, _hoisted_4128);\n}\nvar notebook_default = /* @__PURE__ */ export_helper_default(notebook_vue_vue_type_script_lang_default, [[\"render\", _sfc_render545], [\"__file\", \"notebook.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\notification.vue?vue&type=script&lang.ts\nvar notification_vue_vue_type_script_lang_default = {\n  name: \"Notification\"\n};\n\n// src/components/notification.vue\nimport { createElementVNode as _createElementVNode536, openBlock as _openBlock546, createElementBlock as _createElementBlock546 } from \"vue\";\nvar _hoisted_1547 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2546 = /* @__PURE__ */ _createElementVNode536(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 128v64H256a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V512h64v256a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V256a128 128 0 0 1 128-128h256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3536 = /* @__PURE__ */ _createElementVNode536(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M768 384a128 128 0 1 0 0-256 128 128 0 0 0 0 256zm0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4129 = [\n  _hoisted_2546,\n  _hoisted_3536\n];\nfunction _sfc_render546(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock546(), _createElementBlock546(\"svg\", _hoisted_1547, _hoisted_4129);\n}\nvar notification_default = /* @__PURE__ */ export_helper_default(notification_vue_vue_type_script_lang_default, [[\"render\", _sfc_render546], [\"__file\", \"notification.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\odometer.vue?vue&type=script&lang.ts\nvar odometer_vue_vue_type_script_lang_default = {\n  name: \"Odometer\"\n};\n\n// src/components/odometer.vue\nimport { createElementVNode as _createElementVNode537, openBlock as _openBlock547, createElementBlock as _createElementBlock547 } from \"vue\";\nvar _hoisted_1548 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2547 = /* @__PURE__ */ _createElementVNode537(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3537 = /* @__PURE__ */ _createElementVNode537(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 512a320 320 0 1 1 640 0 32 32 0 1 1-64 0 256 256 0 1 0-512 0 32 32 0 0 1-64 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4130 = /* @__PURE__ */ _createElementVNode537(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M570.432 627.84A96 96 0 1 1 509.568 608l60.992-187.776A32 32 0 1 1 631.424 440l-60.992 187.776zM502.08 734.464a32 32 0 1 0 19.84-60.928 32 32 0 0 0-19.84 60.928z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_547 = [\n  _hoisted_2547,\n  _hoisted_3537,\n  _hoisted_4130\n];\nfunction _sfc_render547(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock547(), _createElementBlock547(\"svg\", _hoisted_1548, _hoisted_547);\n}\nvar odometer_default = /* @__PURE__ */ export_helper_default(odometer_vue_vue_type_script_lang_default, [[\"render\", _sfc_render547], [\"__file\", \"odometer.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\office-building.vue?vue&type=script&lang.ts\nvar office_building_vue_vue_type_script_lang_default = {\n  name: \"OfficeBuilding\"\n};\n\n// src/components/office-building.vue\nimport { createElementVNode as _createElementVNode538, openBlock as _openBlock548, createElementBlock as _createElementBlock548 } from \"vue\";\nvar _hoisted_1549 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2548 = /* @__PURE__ */ _createElementVNode538(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 128v704h384V128H192zm-32-64h448a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3538 = /* @__PURE__ */ _createElementVNode538(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 256h256v64H256v-64zm0 192h256v64H256v-64zm0 192h256v64H256v-64zm384-128h128v64H640v-64zm0 128h128v64H640v-64zM64 832h896v64H64v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4131 = /* @__PURE__ */ _createElementVNode538(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M640 384v448h192V384H640zm-32-64h256a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H608a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_548 = [\n  _hoisted_2548,\n  _hoisted_3538,\n  _hoisted_4131\n];\nfunction _sfc_render548(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock548(), _createElementBlock548(\"svg\", _hoisted_1549, _hoisted_548);\n}\nvar office_building_default = /* @__PURE__ */ export_helper_default(office_building_vue_vue_type_script_lang_default, [[\"render\", _sfc_render548], [\"__file\", \"office-building.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\open.vue?vue&type=script&lang.ts\nvar open_vue_vue_type_script_lang_default = {\n  name: \"Open\"\n};\n\n// src/components/open.vue\nimport { createElementVNode as _createElementVNode539, openBlock as _openBlock549, createElementBlock as _createElementBlock549 } from \"vue\";\nvar _hoisted_1550 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2549 = /* @__PURE__ */ _createElementVNode539(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724H329.956zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3539 = /* @__PURE__ */ _createElementVNode539(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M694.044 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454zm0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4132 = [\n  _hoisted_2549,\n  _hoisted_3539\n];\nfunction _sfc_render549(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock549(), _createElementBlock549(\"svg\", _hoisted_1550, _hoisted_4132);\n}\nvar open_default = /* @__PURE__ */ export_helper_default(open_vue_vue_type_script_lang_default, [[\"render\", _sfc_render549], [\"__file\", \"open.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\operation.vue?vue&type=script&lang.ts\nvar operation_vue_vue_type_script_lang_default = {\n  name: \"Operation\"\n};\n\n// src/components/operation.vue\nimport { createElementVNode as _createElementVNode540, openBlock as _openBlock550, createElementBlock as _createElementBlock550 } from \"vue\";\nvar _hoisted_1551 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2550 = /* @__PURE__ */ _createElementVNode540(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M389.44 768a96.064 96.064 0 0 1 181.12 0H896v64H570.56a96.064 96.064 0 0 1-181.12 0H128v-64h261.44zm192-288a96.064 96.064 0 0 1 181.12 0H896v64H762.56a96.064 96.064 0 0 1-181.12 0H128v-64h453.44zm-320-288a96.064 96.064 0 0 1 181.12 0H896v64H442.56a96.064 96.064 0 0 1-181.12 0H128v-64h133.44z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3540 = [\n  _hoisted_2550\n];\nfunction _sfc_render550(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock550(), _createElementBlock550(\"svg\", _hoisted_1551, _hoisted_3540);\n}\nvar operation_default = /* @__PURE__ */ export_helper_default(operation_vue_vue_type_script_lang_default, [[\"render\", _sfc_render550], [\"__file\", \"operation.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\opportunity.vue?vue&type=script&lang.ts\nvar opportunity_vue_vue_type_script_lang_default = {\n  name: \"Opportunity\"\n};\n\n// src/components/opportunity.vue\nimport { createElementVNode as _createElementVNode541, openBlock as _openBlock551, createElementBlock as _createElementBlock551 } from \"vue\";\nvar _hoisted_1552 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2551 = /* @__PURE__ */ _createElementVNode541(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 960v-64h192.064v64H384zm448-544a350.656 350.656 0 0 1-128.32 271.424C665.344 719.04 640 763.776 640 813.504V832H320v-14.336c0-48-19.392-95.36-57.216-124.992a351.552 351.552 0 0 1-128.448-344.256c25.344-136.448 133.888-248.128 269.76-276.48A352.384 352.384 0 0 1 832 416zm-544 32c0-132.288 75.904-224 192-224v-64c-154.432 0-256 122.752-256 288h64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3541 = [\n  _hoisted_2551\n];\nfunction _sfc_render551(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock551(), _createElementBlock551(\"svg\", _hoisted_1552, _hoisted_3541);\n}\nvar opportunity_default = /* @__PURE__ */ export_helper_default(opportunity_vue_vue_type_script_lang_default, [[\"render\", _sfc_render551], [\"__file\", \"opportunity.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\orange.vue?vue&type=script&lang.ts\nvar orange_vue_vue_type_script_lang_default = {\n  name: \"Orange\"\n};\n\n// src/components/orange.vue\nimport { createElementVNode as _createElementVNode542, openBlock as _openBlock552, createElementBlock as _createElementBlock552 } from \"vue\";\nvar _hoisted_1553 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2552 = /* @__PURE__ */ _createElementVNode542(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 894.72a382.336 382.336 0 0 0 215.936-89.472L577.024 622.272c-10.24 6.016-21.248 10.688-33.024 13.696v258.688zm261.248-134.784A382.336 382.336 0 0 0 894.656 544H635.968c-3.008 11.776-7.68 22.848-13.696 33.024l182.976 182.912zM894.656 480a382.336 382.336 0 0 0-89.408-215.936L622.272 446.976c6.016 10.24 10.688 21.248 13.696 33.024h258.688zm-134.72-261.248A382.336 382.336 0 0 0 544 129.344v258.688c11.776 3.008 22.848 7.68 33.024 13.696l182.912-182.976zM480 129.344a382.336 382.336 0 0 0-215.936 89.408l182.912 182.976c10.24-6.016 21.248-10.688 33.024-13.696V129.344zm-261.248 134.72A382.336 382.336 0 0 0 129.344 480h258.688c3.008-11.776 7.68-22.848 13.696-33.024L218.752 264.064zM129.344 544a382.336 382.336 0 0 0 89.408 215.936l182.976-182.912A127.232 127.232 0 0 1 388.032 544H129.344zm134.72 261.248A382.336 382.336 0 0 0 480 894.656V635.968a127.232 127.232 0 0 1-33.024-13.696L264.064 805.248zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896zm0-384a64 64 0 1 0 0-128 64 64 0 0 0 0 128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3542 = [\n  _hoisted_2552\n];\nfunction _sfc_render552(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock552(), _createElementBlock552(\"svg\", _hoisted_1553, _hoisted_3542);\n}\nvar orange_default = /* @__PURE__ */ export_helper_default(orange_vue_vue_type_script_lang_default, [[\"render\", _sfc_render552], [\"__file\", \"orange.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\paperclip.vue?vue&type=script&lang.ts\nvar paperclip_vue_vue_type_script_lang_default = {\n  name: \"Paperclip\"\n};\n\n// src/components/paperclip.vue\nimport { createElementVNode as _createElementVNode543, openBlock as _openBlock553, createElementBlock as _createElementBlock553 } from \"vue\";\nvar _hoisted_1554 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2553 = /* @__PURE__ */ _createElementVNode543(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M602.496 240.448A192 192 0 1 1 874.048 512l-316.8 316.8A256 256 0 0 1 195.2 466.752L602.496 59.456l45.248 45.248L240.448 512A192 192 0 0 0 512 783.552l316.8-316.8a128 128 0 1 0-181.056-181.056L353.6 579.904a32 32 0 1 0 45.248 45.248l294.144-294.144 45.312 45.248L444.096 670.4a96 96 0 1 1-135.744-135.744l294.144-294.208z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3543 = [\n  _hoisted_2553\n];\nfunction _sfc_render553(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock553(), _createElementBlock553(\"svg\", _hoisted_1554, _hoisted_3543);\n}\nvar paperclip_default = /* @__PURE__ */ export_helper_default(paperclip_vue_vue_type_script_lang_default, [[\"render\", _sfc_render553], [\"__file\", \"paperclip.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\partly-cloudy.vue?vue&type=script&lang.ts\nvar partly_cloudy_vue_vue_type_script_lang_default = {\n  name: \"PartlyCloudy\"\n};\n\n// src/components/partly-cloudy.vue\nimport { createElementVNode as _createElementVNode544, openBlock as _openBlock554, createElementBlock as _createElementBlock554 } from \"vue\";\nvar _hoisted_1555 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2554 = /* @__PURE__ */ _createElementVNode544(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M598.4 895.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 895.872zm-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 445.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3544 = /* @__PURE__ */ _createElementVNode544(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M139.84 501.888a256 256 0 1 1 417.856-277.12c-17.728 2.176-38.208 8.448-61.504 18.816A192 192 0 1 0 189.12 460.48a6003.84 6003.84 0 0 0-49.28 41.408z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4133 = [\n  _hoisted_2554,\n  _hoisted_3544\n];\nfunction _sfc_render554(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock554(), _createElementBlock554(\"svg\", _hoisted_1555, _hoisted_4133);\n}\nvar partly_cloudy_default = /* @__PURE__ */ export_helper_default(partly_cloudy_vue_vue_type_script_lang_default, [[\"render\", _sfc_render554], [\"__file\", \"partly-cloudy.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\pear.vue?vue&type=script&lang.ts\nvar pear_vue_vue_type_script_lang_default = {\n  name: \"Pear\"\n};\n\n// src/components/pear.vue\nimport { createElementVNode as _createElementVNode545, openBlock as _openBlock555, createElementBlock as _createElementBlock555 } from \"vue\";\nvar _hoisted_1556 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2555 = /* @__PURE__ */ _createElementVNode545(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M542.336 258.816a443.255 443.255 0 0 0-9.024 25.088 32 32 0 1 1-60.8-20.032l1.088-3.328a162.688 162.688 0 0 0-122.048 131.392l-17.088 102.72-20.736 15.36C256.192 552.704 224 610.88 224 672c0 120.576 126.4 224 288 224s288-103.424 288-224c0-61.12-32.192-119.296-89.728-161.92l-20.736-15.424-17.088-102.72a162.688 162.688 0 0 0-130.112-133.12zm-40.128-66.56c7.936-15.552 16.576-30.08 25.92-43.776 23.296-33.92 49.408-59.776 78.528-77.12a32 32 0 1 1 32.704 55.04c-20.544 12.224-40.064 31.552-58.432 58.304a316.608 316.608 0 0 0-9.792 15.104 226.688 226.688 0 0 1 164.48 181.568l12.8 77.248C819.456 511.36 864 587.392 864 672c0 159.04-157.568 288-352 288S160 831.04 160 672c0-84.608 44.608-160.64 115.584-213.376l12.8-77.248a226.624 226.624 0 0 1 213.76-189.184z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3545 = [\n  _hoisted_2555\n];\nfunction _sfc_render555(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock555(), _createElementBlock555(\"svg\", _hoisted_1556, _hoisted_3545);\n}\nvar pear_default = /* @__PURE__ */ export_helper_default(pear_vue_vue_type_script_lang_default, [[\"render\", _sfc_render555], [\"__file\", \"pear.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\phone-filled.vue?vue&type=script&lang.ts\nvar phone_filled_vue_vue_type_script_lang_default = {\n  name: \"PhoneFilled\"\n};\n\n// src/components/phone-filled.vue\nimport { createElementVNode as _createElementVNode546, openBlock as _openBlock556, createElementBlock as _createElementBlock556 } from \"vue\";\nvar _hoisted_1557 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2556 = /* @__PURE__ */ _createElementVNode546(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M199.232 125.568 90.624 379.008a32 32 0 0 0 6.784 35.2l512.384 512.384a32 32 0 0 0 35.2 6.784l253.44-108.608a32 32 0 0 0 10.048-52.032L769.6 633.92a32 32 0 0 0-36.928-5.952l-130.176 65.088-271.488-271.552 65.024-130.176a32 32 0 0 0-5.952-36.928L251.2 115.52a32 32 0 0 0-51.968 10.048z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3546 = [\n  _hoisted_2556\n];\nfunction _sfc_render556(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock556(), _createElementBlock556(\"svg\", _hoisted_1557, _hoisted_3546);\n}\nvar phone_filled_default = /* @__PURE__ */ export_helper_default(phone_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render556], [\"__file\", \"phone-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\phone.vue?vue&type=script&lang.ts\nvar phone_vue_vue_type_script_lang_default = {\n  name: \"Phone\"\n};\n\n// src/components/phone.vue\nimport { createElementVNode as _createElementVNode547, openBlock as _openBlock557, createElementBlock as _createElementBlock557 } from \"vue\";\nvar _hoisted_1558 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2557 = /* @__PURE__ */ _createElementVNode547(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M79.36 432.256 591.744 944.64a32 32 0 0 0 35.2 6.784l253.44-108.544a32 32 0 0 0 9.984-52.032l-153.856-153.92a32 32 0 0 0-36.928-6.016l-69.888 34.944L358.08 394.24l35.008-69.888a32 32 0 0 0-5.952-36.928L233.152 133.568a32 32 0 0 0-52.032 10.048L72.512 397.056a32 32 0 0 0 6.784 35.2zm60.48-29.952 81.536-190.08L325.568 316.48l-24.64 49.216-20.608 41.216 32.576 32.64 271.552 271.552 32.64 32.64 41.216-20.672 49.28-24.576 104.192 104.128-190.08 81.472L139.84 402.304zM512 320v-64a256 256 0 0 1 256 256h-64a192 192 0 0 0-192-192zm0-192V64a448 448 0 0 1 448 448h-64a384 384 0 0 0-384-384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3547 = [\n  _hoisted_2557\n];\nfunction _sfc_render557(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock557(), _createElementBlock557(\"svg\", _hoisted_1558, _hoisted_3547);\n}\nvar phone_default = /* @__PURE__ */ export_helper_default(phone_vue_vue_type_script_lang_default, [[\"render\", _sfc_render557], [\"__file\", \"phone.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\picture-filled.vue?vue&type=script&lang.ts\nvar picture_filled_vue_vue_type_script_lang_default = {\n  name: \"PictureFilled\"\n};\n\n// src/components/picture-filled.vue\nimport { createElementVNode as _createElementVNode548, openBlock as _openBlock558, createElementBlock as _createElementBlock558 } from \"vue\";\nvar _hoisted_1559 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2558 = /* @__PURE__ */ _createElementVNode548(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H96zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112zM256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3548 = [\n  _hoisted_2558\n];\nfunction _sfc_render558(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock558(), _createElementBlock558(\"svg\", _hoisted_1559, _hoisted_3548);\n}\nvar picture_filled_default = /* @__PURE__ */ export_helper_default(picture_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render558], [\"__file\", \"picture-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\picture-rounded.vue?vue&type=script&lang.ts\nvar picture_rounded_vue_vue_type_script_lang_default = {\n  name: \"PictureRounded\"\n};\n\n// src/components/picture-rounded.vue\nimport { createElementVNode as _createElementVNode549, openBlock as _openBlock559, createElementBlock as _createElementBlock559 } from \"vue\";\nvar _hoisted_1560 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2559 = /* @__PURE__ */ _createElementVNode549(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 128a384 384 0 1 0 0 768 384 384 0 0 0 0-768zm0-64a448 448 0 1 1 0 896 448 448 0 0 1 0-896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3549 = /* @__PURE__ */ _createElementVNode549(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M640 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM214.656 790.656l-45.312-45.312 185.664-185.6a96 96 0 0 1 123.712-10.24l138.24 98.688a32 32 0 0 0 39.872-2.176L906.688 422.4l42.624 47.744L699.52 693.696a96 96 0 0 1-119.808 6.592l-138.24-98.752a32 32 0 0 0-41.152 3.456l-185.664 185.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4134 = [\n  _hoisted_2559,\n  _hoisted_3549\n];\nfunction _sfc_render559(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock559(), _createElementBlock559(\"svg\", _hoisted_1560, _hoisted_4134);\n}\nvar picture_rounded_default = /* @__PURE__ */ export_helper_default(picture_rounded_vue_vue_type_script_lang_default, [[\"render\", _sfc_render559], [\"__file\", \"picture-rounded.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\picture.vue?vue&type=script&lang.ts\nvar picture_vue_vue_type_script_lang_default = {\n  name: \"Picture\"\n};\n\n// src/components/picture.vue\nimport { createElementVNode as _createElementVNode550, openBlock as _openBlock560, createElementBlock as _createElementBlock560 } from \"vue\";\nvar _hoisted_1561 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2560 = /* @__PURE__ */ _createElementVNode550(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 160v704h704V160H160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3550 = /* @__PURE__ */ _createElementVNode550(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952L185.408 876.992z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4135 = [\n  _hoisted_2560,\n  _hoisted_3550\n];\nfunction _sfc_render560(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock560(), _createElementBlock560(\"svg\", _hoisted_1561, _hoisted_4135);\n}\nvar picture_default = /* @__PURE__ */ export_helper_default(picture_vue_vue_type_script_lang_default, [[\"render\", _sfc_render560], [\"__file\", \"picture.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\pie-chart.vue?vue&type=script&lang.ts\nvar pie_chart_vue_vue_type_script_lang_default = {\n  name: \"PieChart\"\n};\n\n// src/components/pie-chart.vue\nimport { createElementVNode as _createElementVNode551, openBlock as _openBlock561, createElementBlock as _createElementBlock561 } from \"vue\";\nvar _hoisted_1562 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2561 = /* @__PURE__ */ _createElementVNode551(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M448 68.48v64.832A384.128 384.128 0 0 0 512 896a384.128 384.128 0 0 0 378.688-320h64.768A448.128 448.128 0 0 1 64 512 448.128 448.128 0 0 1 448 68.48z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3551 = /* @__PURE__ */ _createElementVNode551(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M576 97.28V448h350.72A384.064 384.064 0 0 0 576 97.28zM512 64V33.152A448 448 0 0 1 990.848 512H512V64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4136 = [\n  _hoisted_2561,\n  _hoisted_3551\n];\nfunction _sfc_render561(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock561(), _createElementBlock561(\"svg\", _hoisted_1562, _hoisted_4136);\n}\nvar pie_chart_default = /* @__PURE__ */ export_helper_default(pie_chart_vue_vue_type_script_lang_default, [[\"render\", _sfc_render561], [\"__file\", \"pie-chart.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\place.vue?vue&type=script&lang.ts\nvar place_vue_vue_type_script_lang_default = {\n  name: \"Place\"\n};\n\n// src/components/place.vue\nimport { createElementVNode as _createElementVNode552, openBlock as _openBlock562, createElementBlock as _createElementBlock562 } from \"vue\";\nvar _hoisted_1563 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2562 = /* @__PURE__ */ _createElementVNode552(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384zm0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3552 = /* @__PURE__ */ _createElementVNode552(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 512a32 32 0 0 1 32 32v256a32 32 0 1 1-64 0V544a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4137 = /* @__PURE__ */ _createElementVNode552(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 649.088v64.96C269.76 732.352 192 771.904 192 800c0 37.696 139.904 96 320 96s320-58.304 320-96c0-28.16-77.76-67.648-192-85.952v-64.96C789.12 671.04 896 730.368 896 800c0 88.32-171.904 160-384 160s-384-71.68-384-160c0-69.696 106.88-128.96 256-150.912z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_549 = [\n  _hoisted_2562,\n  _hoisted_3552,\n  _hoisted_4137\n];\nfunction _sfc_render562(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock562(), _createElementBlock562(\"svg\", _hoisted_1563, _hoisted_549);\n}\nvar place_default = /* @__PURE__ */ export_helper_default(place_vue_vue_type_script_lang_default, [[\"render\", _sfc_render562], [\"__file\", \"place.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\platform.vue?vue&type=script&lang.ts\nvar platform_vue_vue_type_script_lang_default = {\n  name: \"Platform\"\n};\n\n// src/components/platform.vue\nimport { createElementVNode as _createElementVNode553, openBlock as _openBlock563, createElementBlock as _createElementBlock563 } from \"vue\";\nvar _hoisted_1564 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2563 = /* @__PURE__ */ _createElementVNode553(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M448 832v-64h128v64h192v64H256v-64h192zM128 704V128h768v576H128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3553 = [\n  _hoisted_2563\n];\nfunction _sfc_render563(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock563(), _createElementBlock563(\"svg\", _hoisted_1564, _hoisted_3553);\n}\nvar platform_default = /* @__PURE__ */ export_helper_default(platform_vue_vue_type_script_lang_default, [[\"render\", _sfc_render563], [\"__file\", \"platform.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\plus.vue?vue&type=script&lang.ts\nvar plus_vue_vue_type_script_lang_default = {\n  name: \"Plus\"\n};\n\n// src/components/plus.vue\nimport { createElementVNode as _createElementVNode554, openBlock as _openBlock564, createElementBlock as _createElementBlock564 } from \"vue\";\nvar _hoisted_1565 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2564 = /* @__PURE__ */ _createElementVNode554(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3554 = [\n  _hoisted_2564\n];\nfunction _sfc_render564(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock564(), _createElementBlock564(\"svg\", _hoisted_1565, _hoisted_3554);\n}\nvar plus_default = /* @__PURE__ */ export_helper_default(plus_vue_vue_type_script_lang_default, [[\"render\", _sfc_render564], [\"__file\", \"plus.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\pointer.vue?vue&type=script&lang.ts\nvar pointer_vue_vue_type_script_lang_default = {\n  name: \"Pointer\"\n};\n\n// src/components/pointer.vue\nimport { createElementVNode as _createElementVNode555, openBlock as _openBlock565, createElementBlock as _createElementBlock565 } from \"vue\";\nvar _hoisted_1566 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2565 = /* @__PURE__ */ _createElementVNode555(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M511.552 128c-35.584 0-64.384 28.8-64.384 64.448v516.48L274.048 570.88a94.272 94.272 0 0 0-112.896-3.456 44.416 44.416 0 0 0-8.96 62.208L332.8 870.4A64 64 0 0 0 384 896h512V575.232a64 64 0 0 0-45.632-61.312l-205.952-61.76A96 96 0 0 1 576 360.192V192.448C576 156.8 547.2 128 511.552 128zM359.04 556.8l24.128 19.2V192.448a128.448 128.448 0 1 1 256.832 0v167.744a32 32 0 0 0 22.784 30.656l206.016 61.76A128 128 0 0 1 960 575.232V896a64 64 0 0 1-64 64H384a128 128 0 0 1-102.4-51.2L101.056 668.032A108.416 108.416 0 0 1 128 512.512a158.272 158.272 0 0 1 185.984 8.32L359.04 556.8z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3555 = [\n  _hoisted_2565\n];\nfunction _sfc_render565(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock565(), _createElementBlock565(\"svg\", _hoisted_1566, _hoisted_3555);\n}\nvar pointer_default = /* @__PURE__ */ export_helper_default(pointer_vue_vue_type_script_lang_default, [[\"render\", _sfc_render565], [\"__file\", \"pointer.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\position.vue?vue&type=script&lang.ts\nvar position_vue_vue_type_script_lang_default = {\n  name: \"Position\"\n};\n\n// src/components/position.vue\nimport { createElementVNode as _createElementVNode556, openBlock as _openBlock566, createElementBlock as _createElementBlock566 } from \"vue\";\nvar _hoisted_1567 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2566 = /* @__PURE__ */ _createElementVNode556(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m249.6 417.088 319.744 43.072 39.168 310.272L845.12 178.88 249.6 417.088zm-129.024 47.168a32 32 0 0 1-7.68-61.44l777.792-311.04a32 32 0 0 1 41.6 41.6l-310.336 775.68a32 32 0 0 1-61.44-7.808L512 516.992l-391.424-52.736z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3556 = [\n  _hoisted_2566\n];\nfunction _sfc_render566(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock566(), _createElementBlock566(\"svg\", _hoisted_1567, _hoisted_3556);\n}\nvar position_default = /* @__PURE__ */ export_helper_default(position_vue_vue_type_script_lang_default, [[\"render\", _sfc_render566], [\"__file\", \"position.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\postcard.vue?vue&type=script&lang.ts\nvar postcard_vue_vue_type_script_lang_default = {\n  name: \"Postcard\"\n};\n\n// src/components/postcard.vue\nimport { createElementVNode as _createElementVNode557, openBlock as _openBlock567, createElementBlock as _createElementBlock567 } from \"vue\";\nvar _hoisted_1568 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2567 = /* @__PURE__ */ _createElementVNode557(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 224a32 32 0 0 0-32 32v512a32 32 0 0 0 32 32h704a32 32 0 0 0 32-32V256a32 32 0 0 0-32-32H160zm0-64h704a96 96 0 0 1 96 96v512a96 96 0 0 1-96 96H160a96 96 0 0 1-96-96V256a96 96 0 0 1 96-96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3557 = /* @__PURE__ */ _createElementVNode557(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 320a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM288 448h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32zm0 128h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4138 = [\n  _hoisted_2567,\n  _hoisted_3557\n];\nfunction _sfc_render567(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock567(), _createElementBlock567(\"svg\", _hoisted_1568, _hoisted_4138);\n}\nvar postcard_default = /* @__PURE__ */ export_helper_default(postcard_vue_vue_type_script_lang_default, [[\"render\", _sfc_render567], [\"__file\", \"postcard.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\pouring.vue?vue&type=script&lang.ts\nvar pouring_vue_vue_type_script_lang_default = {\n  name: \"Pouring\"\n};\n\n// src/components/pouring.vue\nimport { createElementVNode as _createElementVNode558, openBlock as _openBlock568, createElementBlock as _createElementBlock568 } from \"vue\";\nvar _hoisted_1569 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2568 = /* @__PURE__ */ _createElementVNode558(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672zM959.552 480a256 256 0 0 1-256 256h-400A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480zM224 800a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32zm192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32zm192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32zm192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3558 = [\n  _hoisted_2568\n];\nfunction _sfc_render568(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock568(), _createElementBlock568(\"svg\", _hoisted_1569, _hoisted_3558);\n}\nvar pouring_default = /* @__PURE__ */ export_helper_default(pouring_vue_vue_type_script_lang_default, [[\"render\", _sfc_render568], [\"__file\", \"pouring.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\present.vue?vue&type=script&lang.ts\nvar present_vue_vue_type_script_lang_default = {\n  name: \"Present\"\n};\n\n// src/components/present.vue\nimport { createElementVNode as _createElementVNode559, openBlock as _openBlock569, createElementBlock as _createElementBlock569 } from \"vue\";\nvar _hoisted_1570 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2569 = /* @__PURE__ */ _createElementVNode559(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 896V640H192v-64h288V320H192v576h288zm64 0h288V320H544v256h288v64H544v256zM128 256h768v672a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3559 = /* @__PURE__ */ _createElementVNode559(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M96 256h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4139 = /* @__PURE__ */ _createElementVNode559(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M416 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_550 = /* @__PURE__ */ _createElementVNode559(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M608 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_65 = [\n  _hoisted_2569,\n  _hoisted_3559,\n  _hoisted_4139,\n  _hoisted_550\n];\nfunction _sfc_render569(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock569(), _createElementBlock569(\"svg\", _hoisted_1570, _hoisted_65);\n}\nvar present_default = /* @__PURE__ */ export_helper_default(present_vue_vue_type_script_lang_default, [[\"render\", _sfc_render569], [\"__file\", \"present.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\price-tag.vue?vue&type=script&lang.ts\nvar price_tag_vue_vue_type_script_lang_default = {\n  name: \"PriceTag\"\n};\n\n// src/components/price-tag.vue\nimport { createElementVNode as _createElementVNode560, openBlock as _openBlock570, createElementBlock as _createElementBlock570 } from \"vue\";\nvar _hoisted_1571 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2570 = /* @__PURE__ */ _createElementVNode560(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M224 318.336V896h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0L224 318.336zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3560 = /* @__PURE__ */ _createElementVNode560(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4140 = [\n  _hoisted_2570,\n  _hoisted_3560\n];\nfunction _sfc_render570(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock570(), _createElementBlock570(\"svg\", _hoisted_1571, _hoisted_4140);\n}\nvar price_tag_default = /* @__PURE__ */ export_helper_default(price_tag_vue_vue_type_script_lang_default, [[\"render\", _sfc_render570], [\"__file\", \"price-tag.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\printer.vue?vue&type=script&lang.ts\nvar printer_vue_vue_type_script_lang_default = {\n  name: \"Printer\"\n};\n\n// src/components/printer.vue\nimport { createElementVNode as _createElementVNode561, openBlock as _openBlock571, createElementBlock as _createElementBlock571 } from \"vue\";\nvar _hoisted_1572 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2571 = /* @__PURE__ */ _createElementVNode561(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 768H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 746.432 64 741.248 64 727.04V379.072c0-42.816 4.48-58.304 12.8-73.984 8.384-15.616 20.672-27.904 36.288-36.288 15.68-8.32 31.168-12.8 73.984-12.8H256V64h512v192h68.928c42.816 0 58.304 4.48 73.984 12.8 15.616 8.384 27.904 20.672 36.288 36.288 8.32 15.68 12.8 31.168 12.8 73.984v347.904c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H768v192H256V768zm64-192v320h384V576H320zm-64 128V512h512v192h128V379.072c0-29.376-1.408-36.48-5.248-43.776a23.296 23.296 0 0 0-10.048-10.048c-7.232-3.84-14.4-5.248-43.776-5.248H187.072c-29.376 0-36.48 1.408-43.776 5.248a23.296 23.296 0 0 0-10.048 10.048c-3.84 7.232-5.248 14.4-5.248 43.776V704h128zm64-448h384V128H320v128zm-64 128h64v64h-64v-64zm128 0h64v64h-64v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3561 = [\n  _hoisted_2571\n];\nfunction _sfc_render571(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock571(), _createElementBlock571(\"svg\", _hoisted_1572, _hoisted_3561);\n}\nvar printer_default = /* @__PURE__ */ export_helper_default(printer_vue_vue_type_script_lang_default, [[\"render\", _sfc_render571], [\"__file\", \"printer.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\promotion.vue?vue&type=script&lang.ts\nvar promotion_vue_vue_type_script_lang_default = {\n  name: \"Promotion\"\n};\n\n// src/components/promotion.vue\nimport { createElementVNode as _createElementVNode562, openBlock as _openBlock572, createElementBlock as _createElementBlock572 } from \"vue\";\nvar _hoisted_1573 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2572 = /* @__PURE__ */ _createElementVNode562(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3562 = [\n  _hoisted_2572\n];\nfunction _sfc_render572(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock572(), _createElementBlock572(\"svg\", _hoisted_1573, _hoisted_3562);\n}\nvar promotion_default = /* @__PURE__ */ export_helper_default(promotion_vue_vue_type_script_lang_default, [[\"render\", _sfc_render572], [\"__file\", \"promotion.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\quartz-watch.vue?vue&type=script&lang.ts\nvar quartz_watch_vue_vue_type_script_lang_default = {\n  name: \"QuartzWatch\"\n};\n\n// src/components/quartz-watch.vue\nimport { createElementVNode as _createElementVNode563, openBlock as _openBlock573, createElementBlock as _createElementBlock573 } from \"vue\";\nvar _hoisted_1574 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2573 = /* @__PURE__ */ _createElementVNode563(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M422.02 602.01v-.03c-6.68-5.99-14.35-8.83-23.01-8.51-8.67.32-16.17 3.66-22.5 10.02-6.33 6.36-9.5 13.7-9.5 22.02s3 15.82 8.99 22.5c8.68 8.68 19.02 11.35 31.01 8s19.49-10.85 22.5-22.5c3.01-11.65.51-22.15-7.49-31.49v-.01zM384 512c0-9.35-3-17.02-8.99-23.01-6-5.99-13.66-8.99-23.01-8.99-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.66 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.67 8.99-23.01zm6.53-82.49c11.65 3.01 22.15.51 31.49-7.49h.04c5.99-6.68 8.83-14.34 8.51-23.01-.32-8.67-3.66-16.16-10.02-22.5-6.36-6.33-13.7-9.5-22.02-9.5s-15.82 3-22.5 8.99c-8.68 8.69-11.35 19.02-8 31.01 3.35 11.99 10.85 19.49 22.5 22.5zm242.94 0c11.67-3.03 19.01-10.37 22.02-22.02 3.01-11.65.51-22.15-7.49-31.49h.01c-6.68-5.99-14.18-8.99-22.5-8.99s-15.66 3.16-22.02 9.5c-6.36 6.34-9.7 13.84-10.02 22.5-.32 8.66 2.52 16.33 8.51 23.01 9.32 8.02 19.82 10.52 31.49 7.49zM512 640c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.67 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.66 8.99-23.01s-3-17.02-8.99-23.01c-6-5.99-13.66-8.99-23.01-8.99zm183.01-151.01c-6-5.99-13.66-8.99-23.01-8.99s-17.02 3-23.01 8.99c-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.66 8.99 23.01 8.99s17.02-3 23.01-8.99c5.99-6 8.99-13.67 8.99-23.01 0-9.35-3-17.02-8.99-23.01z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3563 = /* @__PURE__ */ _createElementVNode563(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M832 512c-2-90.67-33.17-166.17-93.5-226.5-20.43-20.42-42.6-37.49-66.5-51.23V64H352v170.26c-23.9 13.74-46.07 30.81-66.5 51.24-60.33 60.33-91.49 135.83-93.5 226.5 2 90.67 33.17 166.17 93.5 226.5 20.43 20.43 42.6 37.5 66.5 51.24V960h320V789.74c23.9-13.74 46.07-30.81 66.5-51.24 60.33-60.34 91.49-135.83 93.5-226.5zM416 128h192v78.69c-29.85-9.03-61.85-13.93-96-14.69-34.15.75-66.15 5.65-96 14.68V128zm192 768H416v-78.68c29.85 9.03 61.85 13.93 96 14.68 34.15-.75 66.15-5.65 96-14.68V896zm-96-128c-72.66-2.01-132.99-27.01-180.99-75.01S258.01 584.66 256 512c2.01-72.66 27.01-132.99 75.01-180.99S439.34 258.01 512 256c72.66 2.01 132.99 27.01 180.99 75.01S765.99 439.34 768 512c-2.01 72.66-27.01 132.99-75.01 180.99S584.66 765.99 512 768z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4141 = /* @__PURE__ */ _createElementVNode563(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 320c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01 0 9.35 3 17.02 8.99 23.01 6 5.99 13.67 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.66 8.99-23.01 0-9.35-3-17.02-8.99-23.01-6-5.99-13.66-8.99-23.01-8.99zm112.99 273.5c-8.66-.32-16.33 2.52-23.01 8.51-7.98 9.32-10.48 19.82-7.49 31.49s10.49 19.17 22.5 22.5 22.35.66 31.01-8v.04c5.99-6.68 8.99-14.18 8.99-22.5s-3.16-15.66-9.5-22.02-13.84-9.7-22.5-10.02z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_551 = [\n  _hoisted_2573,\n  _hoisted_3563,\n  _hoisted_4141\n];\nfunction _sfc_render573(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock573(), _createElementBlock573(\"svg\", _hoisted_1574, _hoisted_551);\n}\nvar quartz_watch_default = /* @__PURE__ */ export_helper_default(quartz_watch_vue_vue_type_script_lang_default, [[\"render\", _sfc_render573], [\"__file\", \"quartz-watch.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\question-filled.vue?vue&type=script&lang.ts\nvar question_filled_vue_vue_type_script_lang_default = {\n  name: \"QuestionFilled\"\n};\n\n// src/components/question-filled.vue\nimport { createElementVNode as _createElementVNode564, openBlock as _openBlock574, createElementBlock as _createElementBlock574 } from \"vue\";\nvar _hoisted_1575 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2574 = /* @__PURE__ */ _createElementVNode564(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3564 = [\n  _hoisted_2574\n];\nfunction _sfc_render574(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock574(), _createElementBlock574(\"svg\", _hoisted_1575, _hoisted_3564);\n}\nvar question_filled_default = /* @__PURE__ */ export_helper_default(question_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render574], [\"__file\", \"question-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\rank.vue?vue&type=script&lang.ts\nvar rank_vue_vue_type_script_lang_default = {\n  name: \"Rank\"\n};\n\n// src/components/rank.vue\nimport { createElementVNode as _createElementVNode565, openBlock as _openBlock575, createElementBlock as _createElementBlock575 } from \"vue\";\nvar _hoisted_1576 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2575 = /* @__PURE__ */ _createElementVNode565(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m186.496 544 41.408 41.344a32 32 0 1 1-45.248 45.312l-96-96a32 32 0 0 1 0-45.312l96-96a32 32 0 1 1 45.248 45.312L186.496 480h290.816V186.432l-41.472 41.472a32 32 0 1 1-45.248-45.184l96-96.128a32 32 0 0 1 45.312 0l96 96.064a32 32 0 0 1-45.248 45.184l-41.344-41.28V480H832l-41.344-41.344a32 32 0 0 1 45.248-45.312l96 96a32 32 0 0 1 0 45.312l-96 96a32 32 0 0 1-45.248-45.312L832 544H541.312v293.44l41.344-41.28a32 32 0 1 1 45.248 45.248l-96 96a32 32 0 0 1-45.312 0l-96-96a32 32 0 1 1 45.312-45.248l41.408 41.408V544H186.496z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3565 = [\n  _hoisted_2575\n];\nfunction _sfc_render575(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock575(), _createElementBlock575(\"svg\", _hoisted_1576, _hoisted_3565);\n}\nvar rank_default = /* @__PURE__ */ export_helper_default(rank_vue_vue_type_script_lang_default, [[\"render\", _sfc_render575], [\"__file\", \"rank.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\reading-lamp.vue?vue&type=script&lang.ts\nvar reading_lamp_vue_vue_type_script_lang_default = {\n  name: \"ReadingLamp\"\n};\n\n// src/components/reading-lamp.vue\nimport { createElementVNode as _createElementVNode566, openBlock as _openBlock576, createElementBlock as _createElementBlock576 } from \"vue\";\nvar _hoisted_1577 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2576 = /* @__PURE__ */ _createElementVNode566(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M352 896h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32zm-44.672-768-99.52 448h608.384l-99.52-448H307.328zm-25.6-64h460.608a32 32 0 0 1 31.232 25.088l113.792 512A32 32 0 0 1 856.128 640H167.872a32 32 0 0 1-31.232-38.912l113.792-512A32 32 0 0 1 281.664 64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3566 = /* @__PURE__ */ _createElementVNode566(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M672 576q32 0 32 32v128q0 32-32 32t-32-32V608q0-32 32-32zm-192-.064h64V960h-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4142 = [\n  _hoisted_2576,\n  _hoisted_3566\n];\nfunction _sfc_render576(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock576(), _createElementBlock576(\"svg\", _hoisted_1577, _hoisted_4142);\n}\nvar reading_lamp_default = /* @__PURE__ */ export_helper_default(reading_lamp_vue_vue_type_script_lang_default, [[\"render\", _sfc_render576], [\"__file\", \"reading-lamp.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\reading.vue?vue&type=script&lang.ts\nvar reading_vue_vue_type_script_lang_default = {\n  name: \"Reading\"\n};\n\n// src/components/reading.vue\nimport { createElementVNode as _createElementVNode567, openBlock as _openBlock577, createElementBlock as _createElementBlock577 } from \"vue\";\nvar _hoisted_1578 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2577 = /* @__PURE__ */ _createElementVNode567(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m512 863.36 384-54.848v-638.72L525.568 222.72a96 96 0 0 1-27.136 0L128 169.792v638.72l384 54.848zM137.024 106.432l370.432 52.928a32 32 0 0 0 9.088 0l370.432-52.928A64 64 0 0 1 960 169.792v638.72a64 64 0 0 1-54.976 63.36l-388.48 55.488a32 32 0 0 1-9.088 0l-388.48-55.488A64 64 0 0 1 64 808.512v-638.72a64 64 0 0 1 73.024-63.36z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3567 = /* @__PURE__ */ _createElementVNode567(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 192h64v704h-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4143 = [\n  _hoisted_2577,\n  _hoisted_3567\n];\nfunction _sfc_render577(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock577(), _createElementBlock577(\"svg\", _hoisted_1578, _hoisted_4143);\n}\nvar reading_default = /* @__PURE__ */ export_helper_default(reading_vue_vue_type_script_lang_default, [[\"render\", _sfc_render577], [\"__file\", \"reading.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\refresh-left.vue?vue&type=script&lang.ts\nvar refresh_left_vue_vue_type_script_lang_default = {\n  name: \"RefreshLeft\"\n};\n\n// src/components/refresh-left.vue\nimport { createElementVNode as _createElementVNode568, openBlock as _openBlock578, createElementBlock as _createElementBlock578 } from \"vue\";\nvar _hoisted_1579 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2578 = /* @__PURE__ */ _createElementVNode568(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3568 = [\n  _hoisted_2578\n];\nfunction _sfc_render578(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock578(), _createElementBlock578(\"svg\", _hoisted_1579, _hoisted_3568);\n}\nvar refresh_left_default = /* @__PURE__ */ export_helper_default(refresh_left_vue_vue_type_script_lang_default, [[\"render\", _sfc_render578], [\"__file\", \"refresh-left.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\refresh-right.vue?vue&type=script&lang.ts\nvar refresh_right_vue_vue_type_script_lang_default = {\n  name: \"RefreshRight\"\n};\n\n// src/components/refresh-right.vue\nimport { createElementVNode as _createElementVNode569, openBlock as _openBlock579, createElementBlock as _createElementBlock579 } from \"vue\";\nvar _hoisted_1580 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2579 = /* @__PURE__ */ _createElementVNode569(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3569 = [\n  _hoisted_2579\n];\nfunction _sfc_render579(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock579(), _createElementBlock579(\"svg\", _hoisted_1580, _hoisted_3569);\n}\nvar refresh_right_default = /* @__PURE__ */ export_helper_default(refresh_right_vue_vue_type_script_lang_default, [[\"render\", _sfc_render579], [\"__file\", \"refresh-right.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\refresh.vue?vue&type=script&lang.ts\nvar refresh_vue_vue_type_script_lang_default = {\n  name: \"Refresh\"\n};\n\n// src/components/refresh.vue\nimport { createElementVNode as _createElementVNode570, openBlock as _openBlock580, createElementBlock as _createElementBlock580 } from \"vue\";\nvar _hoisted_1581 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2580 = /* @__PURE__ */ _createElementVNode570(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3570 = [\n  _hoisted_2580\n];\nfunction _sfc_render580(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock580(), _createElementBlock580(\"svg\", _hoisted_1581, _hoisted_3570);\n}\nvar refresh_default = /* @__PURE__ */ export_helper_default(refresh_vue_vue_type_script_lang_default, [[\"render\", _sfc_render580], [\"__file\", \"refresh.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\refrigerator.vue?vue&type=script&lang.ts\nvar refrigerator_vue_vue_type_script_lang_default = {\n  name: \"Refrigerator\"\n};\n\n// src/components/refrigerator.vue\nimport { createElementVNode as _createElementVNode571, openBlock as _openBlock581, createElementBlock as _createElementBlock581 } from \"vue\";\nvar _hoisted_1582 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2581 = /* @__PURE__ */ _createElementVNode571(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 448h512V160a32 32 0 0 0-32-32H288a32 32 0 0 0-32 32v288zm0 64v352a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V512H256zm32-448h448a96 96 0 0 1 96 96v704a96 96 0 0 1-96 96H288a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96zm32 224h64v96h-64v-96zm0 288h64v96h-64v-96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3571 = [\n  _hoisted_2581\n];\nfunction _sfc_render581(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock581(), _createElementBlock581(\"svg\", _hoisted_1582, _hoisted_3571);\n}\nvar refrigerator_default = /* @__PURE__ */ export_helper_default(refrigerator_vue_vue_type_script_lang_default, [[\"render\", _sfc_render581], [\"__file\", \"refrigerator.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\remove-filled.vue?vue&type=script&lang.ts\nvar remove_filled_vue_vue_type_script_lang_default = {\n  name: \"RemoveFilled\"\n};\n\n// src/components/remove-filled.vue\nimport { createElementVNode as _createElementVNode572, openBlock as _openBlock582, createElementBlock as _createElementBlock582 } from \"vue\";\nvar _hoisted_1583 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2582 = /* @__PURE__ */ _createElementVNode572(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zM288 512a38.4 38.4 0 0 0 38.4 38.4h371.2a38.4 38.4 0 0 0 0-76.8H326.4A38.4 38.4 0 0 0 288 512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3572 = [\n  _hoisted_2582\n];\nfunction _sfc_render582(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock582(), _createElementBlock582(\"svg\", _hoisted_1583, _hoisted_3572);\n}\nvar remove_filled_default = /* @__PURE__ */ export_helper_default(remove_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render582], [\"__file\", \"remove-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\remove.vue?vue&type=script&lang.ts\nvar remove_vue_vue_type_script_lang_default = {\n  name: \"Remove\"\n};\n\n// src/components/remove.vue\nimport { createElementVNode as _createElementVNode573, openBlock as _openBlock583, createElementBlock as _createElementBlock583 } from \"vue\";\nvar _hoisted_1584 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2583 = /* @__PURE__ */ _createElementVNode573(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3573 = /* @__PURE__ */ _createElementVNode573(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4144 = [\n  _hoisted_2583,\n  _hoisted_3573\n];\nfunction _sfc_render583(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock583(), _createElementBlock583(\"svg\", _hoisted_1584, _hoisted_4144);\n}\nvar remove_default = /* @__PURE__ */ export_helper_default(remove_vue_vue_type_script_lang_default, [[\"render\", _sfc_render583], [\"__file\", \"remove.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\right.vue?vue&type=script&lang.ts\nvar right_vue_vue_type_script_lang_default = {\n  name: \"Right\"\n};\n\n// src/components/right.vue\nimport { createElementVNode as _createElementVNode574, openBlock as _openBlock584, createElementBlock as _createElementBlock584 } from \"vue\";\nvar _hoisted_1585 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2584 = /* @__PURE__ */ _createElementVNode574(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M754.752 480H160a32 32 0 1 0 0 64h594.752L521.344 777.344a32 32 0 0 0 45.312 45.312l288-288a32 32 0 0 0 0-45.312l-288-288a32 32 0 1 0-45.312 45.312L754.752 480z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3574 = [\n  _hoisted_2584\n];\nfunction _sfc_render584(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock584(), _createElementBlock584(\"svg\", _hoisted_1585, _hoisted_3574);\n}\nvar right_default = /* @__PURE__ */ export_helper_default(right_vue_vue_type_script_lang_default, [[\"render\", _sfc_render584], [\"__file\", \"right.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\scale-to-original.vue?vue&type=script&lang.ts\nvar scale_to_original_vue_vue_type_script_lang_default = {\n  name: \"ScaleToOriginal\"\n};\n\n// src/components/scale-to-original.vue\nimport { createElementVNode as _createElementVNode575, openBlock as _openBlock585, createElementBlock as _createElementBlock585 } from \"vue\";\nvar _hoisted_1586 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2585 = /* @__PURE__ */ _createElementVNode575(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zM512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412zM512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3575 = [\n  _hoisted_2585\n];\nfunction _sfc_render585(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock585(), _createElementBlock585(\"svg\", _hoisted_1586, _hoisted_3575);\n}\nvar scale_to_original_default = /* @__PURE__ */ export_helper_default(scale_to_original_vue_vue_type_script_lang_default, [[\"render\", _sfc_render585], [\"__file\", \"scale-to-original.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\school.vue?vue&type=script&lang.ts\nvar school_vue_vue_type_script_lang_default = {\n  name: \"School\"\n};\n\n// src/components/school.vue\nimport { createElementVNode as _createElementVNode576, openBlock as _openBlock586, createElementBlock as _createElementBlock586 } from \"vue\";\nvar _hoisted_1587 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2586 = /* @__PURE__ */ _createElementVNode576(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M224 128v704h576V128H224zm-32-64h640a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3576 = /* @__PURE__ */ _createElementVNode576(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M64 832h896v64H64zm256-640h128v96H320z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4145 = /* @__PURE__ */ _createElementVNode576(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 832h256v-64a128 128 0 1 0-256 0v64zm128-256a192 192 0 0 1 192 192v128H320V768a192 192 0 0 1 192-192zM320 384h128v96H320zm256-192h128v96H576zm0 192h128v96H576z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_552 = [\n  _hoisted_2586,\n  _hoisted_3576,\n  _hoisted_4145\n];\nfunction _sfc_render586(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock586(), _createElementBlock586(\"svg\", _hoisted_1587, _hoisted_552);\n}\nvar school_default = /* @__PURE__ */ export_helper_default(school_vue_vue_type_script_lang_default, [[\"render\", _sfc_render586], [\"__file\", \"school.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\scissor.vue?vue&type=script&lang.ts\nvar scissor_vue_vue_type_script_lang_default = {\n  name: \"Scissor\"\n};\n\n// src/components/scissor.vue\nimport { createElementVNode as _createElementVNode577, openBlock as _openBlock587, createElementBlock as _createElementBlock587 } from \"vue\";\nvar _hoisted_1588 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2587 = /* @__PURE__ */ _createElementVNode577(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m512.064 578.368-106.88 152.768a160 160 0 1 1-23.36-78.208L472.96 522.56 196.864 128.256a32 32 0 1 1 52.48-36.736l393.024 561.344a160 160 0 1 1-23.36 78.208l-106.88-152.704zm54.4-189.248 208.384-297.6a32 32 0 0 1 52.48 36.736l-221.76 316.672-39.04-55.808zm-376.32 425.856a96 96 0 1 0 110.144-157.248 96 96 0 0 0-110.08 157.248zm643.84 0a96 96 0 1 0-110.08-157.248 96 96 0 0 0 110.08 157.248z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3577 = [\n  _hoisted_2587\n];\nfunction _sfc_render587(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock587(), _createElementBlock587(\"svg\", _hoisted_1588, _hoisted_3577);\n}\nvar scissor_default = /* @__PURE__ */ export_helper_default(scissor_vue_vue_type_script_lang_default, [[\"render\", _sfc_render587], [\"__file\", \"scissor.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\search.vue?vue&type=script&lang.ts\nvar search_vue_vue_type_script_lang_default = {\n  name: \"Search\"\n};\n\n// src/components/search.vue\nimport { createElementVNode as _createElementVNode578, openBlock as _openBlock588, createElementBlock as _createElementBlock588 } from \"vue\";\nvar _hoisted_1589 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2588 = /* @__PURE__ */ _createElementVNode578(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3578 = [\n  _hoisted_2588\n];\nfunction _sfc_render588(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock588(), _createElementBlock588(\"svg\", _hoisted_1589, _hoisted_3578);\n}\nvar search_default = /* @__PURE__ */ export_helper_default(search_vue_vue_type_script_lang_default, [[\"render\", _sfc_render588], [\"__file\", \"search.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\select.vue?vue&type=script&lang.ts\nvar select_vue_vue_type_script_lang_default = {\n  name: \"Select\"\n};\n\n// src/components/select.vue\nimport { createElementVNode as _createElementVNode579, openBlock as _openBlock589, createElementBlock as _createElementBlock589 } from \"vue\";\nvar _hoisted_1590 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2589 = /* @__PURE__ */ _createElementVNode579(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3579 = [\n  _hoisted_2589\n];\nfunction _sfc_render589(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock589(), _createElementBlock589(\"svg\", _hoisted_1590, _hoisted_3579);\n}\nvar select_default = /* @__PURE__ */ export_helper_default(select_vue_vue_type_script_lang_default, [[\"render\", _sfc_render589], [\"__file\", \"select.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\sell.vue?vue&type=script&lang.ts\nvar sell_vue_vue_type_script_lang_default = {\n  name: \"Sell\"\n};\n\n// src/components/sell.vue\nimport { createElementVNode as _createElementVNode580, openBlock as _openBlock590, createElementBlock as _createElementBlock590 } from \"vue\";\nvar _hoisted_1591 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2590 = /* @__PURE__ */ _createElementVNode580(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 483.84L768 698.496V928a32 32 0 1 1-64 0V698.496l-73.344 73.344a32 32 0 1 1-45.248-45.248l128-128a32 32 0 0 1 45.248 0l128 128a32 32 0 1 1-45.248 45.248z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3580 = [\n  _hoisted_2590\n];\nfunction _sfc_render590(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock590(), _createElementBlock590(\"svg\", _hoisted_1591, _hoisted_3580);\n}\nvar sell_default = /* @__PURE__ */ export_helper_default(sell_vue_vue_type_script_lang_default, [[\"render\", _sfc_render590], [\"__file\", \"sell.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\semi-select.vue?vue&type=script&lang.ts\nvar semi_select_vue_vue_type_script_lang_default = {\n  name: \"SemiSelect\"\n};\n\n// src/components/semi-select.vue\nimport { createElementVNode as _createElementVNode581, openBlock as _openBlock591, createElementBlock as _createElementBlock591 } from \"vue\";\nvar _hoisted_1592 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2591 = /* @__PURE__ */ _createElementVNode581(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 448h768q64 0 64 64t-64 64H128q-64 0-64-64t64-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3581 = [\n  _hoisted_2591\n];\nfunction _sfc_render591(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock591(), _createElementBlock591(\"svg\", _hoisted_1592, _hoisted_3581);\n}\nvar semi_select_default = /* @__PURE__ */ export_helper_default(semi_select_vue_vue_type_script_lang_default, [[\"render\", _sfc_render591], [\"__file\", \"semi-select.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\service.vue?vue&type=script&lang.ts\nvar service_vue_vue_type_script_lang_default = {\n  name: \"Service\"\n};\n\n// src/components/service.vue\nimport { createElementVNode as _createElementVNode582, openBlock as _openBlock592, createElementBlock as _createElementBlock592 } from \"vue\";\nvar _hoisted_1593 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2592 = /* @__PURE__ */ _createElementVNode582(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M864 409.6a192 192 0 0 1-37.888 349.44A256.064 256.064 0 0 1 576 960h-96a32 32 0 1 1 0-64h96a192.064 192.064 0 0 0 181.12-128H736a32 32 0 0 1-32-32V416a32 32 0 0 1 32-32h32c10.368 0 20.544.832 30.528 2.432a288 288 0 0 0-573.056 0A193.235 193.235 0 0 1 256 384h32a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32h-32a192 192 0 0 1-96-358.4 352 352 0 0 1 704 0zM256 448a128 128 0 1 0 0 256V448zm640 128a128 128 0 0 0-128-128v256a128 128 0 0 0 128-128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3582 = [\n  _hoisted_2592\n];\nfunction _sfc_render592(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock592(), _createElementBlock592(\"svg\", _hoisted_1593, _hoisted_3582);\n}\nvar service_default = /* @__PURE__ */ export_helper_default(service_vue_vue_type_script_lang_default, [[\"render\", _sfc_render592], [\"__file\", \"service.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\set-up.vue?vue&type=script&lang.ts\nvar set_up_vue_vue_type_script_lang_default = {\n  name: \"SetUp\"\n};\n\n// src/components/set-up.vue\nimport { createElementVNode as _createElementVNode583, openBlock as _openBlock593, createElementBlock as _createElementBlock593 } from \"vue\";\nvar _hoisted_1594 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2593 = /* @__PURE__ */ _createElementVNode583(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M224 160a64 64 0 0 0-64 64v576a64 64 0 0 0 64 64h576a64 64 0 0 0 64-64V224a64 64 0 0 0-64-64H224zm0-64h576a128 128 0 0 1 128 128v576a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V224A128 128 0 0 1 224 96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3583 = /* @__PURE__ */ _createElementVNode583(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4146 = /* @__PURE__ */ _createElementVNode583(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 320h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32zm160 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_553 = /* @__PURE__ */ _createElementVNode583(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M288 640h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_66 = [\n  _hoisted_2593,\n  _hoisted_3583,\n  _hoisted_4146,\n  _hoisted_553\n];\nfunction _sfc_render593(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock593(), _createElementBlock593(\"svg\", _hoisted_1594, _hoisted_66);\n}\nvar set_up_default = /* @__PURE__ */ export_helper_default(set_up_vue_vue_type_script_lang_default, [[\"render\", _sfc_render593], [\"__file\", \"set-up.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\setting.vue?vue&type=script&lang.ts\nvar setting_vue_vue_type_script_lang_default = {\n  name: \"Setting\"\n};\n\n// src/components/setting.vue\nimport { createElementVNode as _createElementVNode584, openBlock as _openBlock594, createElementBlock as _createElementBlock594 } from \"vue\";\nvar _hoisted_1595 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2594 = /* @__PURE__ */ _createElementVNode584(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384zm0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3584 = [\n  _hoisted_2594\n];\nfunction _sfc_render594(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock594(), _createElementBlock594(\"svg\", _hoisted_1595, _hoisted_3584);\n}\nvar setting_default = /* @__PURE__ */ export_helper_default(setting_vue_vue_type_script_lang_default, [[\"render\", _sfc_render594], [\"__file\", \"setting.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\share.vue?vue&type=script&lang.ts\nvar share_vue_vue_type_script_lang_default = {\n  name: \"Share\"\n};\n\n// src/components/share.vue\nimport { createElementVNode as _createElementVNode585, openBlock as _openBlock595, createElementBlock as _createElementBlock595 } from \"vue\";\nvar _hoisted_1596 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2595 = /* @__PURE__ */ _createElementVNode585(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m679.872 348.8-301.76 188.608a127.808 127.808 0 0 1 5.12 52.16l279.936 104.96a128 128 0 1 1-22.464 59.904l-279.872-104.96a128 128 0 1 1-16.64-166.272l301.696-188.608a128 128 0 1 1 33.92 54.272z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3585 = [\n  _hoisted_2595\n];\nfunction _sfc_render595(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock595(), _createElementBlock595(\"svg\", _hoisted_1596, _hoisted_3585);\n}\nvar share_default = /* @__PURE__ */ export_helper_default(share_vue_vue_type_script_lang_default, [[\"render\", _sfc_render595], [\"__file\", \"share.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\ship.vue?vue&type=script&lang.ts\nvar ship_vue_vue_type_script_lang_default = {\n  name: \"Ship\"\n};\n\n// src/components/ship.vue\nimport { createElementVNode as _createElementVNode586, openBlock as _openBlock596, createElementBlock as _createElementBlock596 } from \"vue\";\nvar _hoisted_1597 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2596 = /* @__PURE__ */ _createElementVNode586(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 386.88V448h405.568a32 32 0 0 1 30.72 40.768l-76.48 267.968A192 192 0 0 1 687.168 896H336.832a192 192 0 0 1-184.64-139.264L75.648 488.768A32 32 0 0 1 106.368 448H448V117.888a32 32 0 0 1 47.36-28.096l13.888 7.616L512 96v2.88l231.68 126.4a32 32 0 0 1-2.048 57.216L512 386.88zm0-70.272 144.768-65.792L512 171.84v144.768zM512 512H148.864l18.24 64H856.96l18.24-64H512zM185.408 640l28.352 99.2A128 128 0 0 0 336.832 832h350.336a128 128 0 0 0 123.072-92.8l28.352-99.2H185.408z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3586 = [\n  _hoisted_2596\n];\nfunction _sfc_render596(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock596(), _createElementBlock596(\"svg\", _hoisted_1597, _hoisted_3586);\n}\nvar ship_default = /* @__PURE__ */ export_helper_default(ship_vue_vue_type_script_lang_default, [[\"render\", _sfc_render596], [\"__file\", \"ship.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\shop.vue?vue&type=script&lang.ts\nvar shop_vue_vue_type_script_lang_default = {\n  name: \"Shop\"\n};\n\n// src/components/shop.vue\nimport { createElementVNode as _createElementVNode587, openBlock as _openBlock597, createElementBlock as _createElementBlock597 } from \"vue\";\nvar _hoisted_1598 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2597 = /* @__PURE__ */ _createElementVNode587(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 704h64v192H256V704h64v64h384v-64zm188.544-152.192C894.528 559.616 896 567.616 896 576a96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0c0-8.384 1.408-16.384 3.392-24.192L192 128h640l60.544 423.808z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3587 = [\n  _hoisted_2597\n];\nfunction _sfc_render597(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock597(), _createElementBlock597(\"svg\", _hoisted_1598, _hoisted_3587);\n}\nvar shop_default = /* @__PURE__ */ export_helper_default(shop_vue_vue_type_script_lang_default, [[\"render\", _sfc_render597], [\"__file\", \"shop.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\shopping-bag.vue?vue&type=script&lang.ts\nvar shopping_bag_vue_vue_type_script_lang_default = {\n  name: \"ShoppingBag\"\n};\n\n// src/components/shopping-bag.vue\nimport { createElementVNode as _createElementVNode588, openBlock as _openBlock598, createElementBlock as _createElementBlock598 } from \"vue\";\nvar _hoisted_1599 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2598 = /* @__PURE__ */ _createElementVNode588(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 320v96a32 32 0 0 1-32 32h-32V320H384v128h-32a32 32 0 0 1-32-32v-96H192v576h640V320H704zm-384-64a192 192 0 1 1 384 0h160a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32h160zm64 0h256a128 128 0 1 0-256 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3588 = /* @__PURE__ */ _createElementVNode588(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 704h640v64H192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4147 = [\n  _hoisted_2598,\n  _hoisted_3588\n];\nfunction _sfc_render598(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock598(), _createElementBlock598(\"svg\", _hoisted_1599, _hoisted_4147);\n}\nvar shopping_bag_default = /* @__PURE__ */ export_helper_default(shopping_bag_vue_vue_type_script_lang_default, [[\"render\", _sfc_render598], [\"__file\", \"shopping-bag.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\shopping-cart-full.vue?vue&type=script&lang.ts\nvar shopping_cart_full_vue_vue_type_script_lang_default = {\n  name: \"ShoppingCartFull\"\n};\n\n// src/components/shopping-cart-full.vue\nimport { createElementVNode as _createElementVNode589, openBlock as _openBlock599, createElementBlock as _createElementBlock599 } from \"vue\";\nvar _hoisted_1600 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2599 = /* @__PURE__ */ _createElementVNode589(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96zm320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96zM96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128H96zm314.24 576h395.904l82.304-384H333.44l76.8 384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3589 = /* @__PURE__ */ _createElementVNode589(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M699.648 256 608 145.984 516.352 256h183.296zm-140.8-151.04a64 64 0 0 1 98.304 0L836.352 320H379.648l179.2-215.04z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4148 = [\n  _hoisted_2599,\n  _hoisted_3589\n];\nfunction _sfc_render599(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock599(), _createElementBlock599(\"svg\", _hoisted_1600, _hoisted_4148);\n}\nvar shopping_cart_full_default = /* @__PURE__ */ export_helper_default(shopping_cart_full_vue_vue_type_script_lang_default, [[\"render\", _sfc_render599], [\"__file\", \"shopping-cart-full.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\shopping-cart.vue?vue&type=script&lang.ts\nvar shopping_cart_vue_vue_type_script_lang_default = {\n  name: \"ShoppingCart\"\n};\n\n// src/components/shopping-cart.vue\nimport { createElementVNode as _createElementVNode590, openBlock as _openBlock600, createElementBlock as _createElementBlock600 } from \"vue\";\nvar _hoisted_1601 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2600 = /* @__PURE__ */ _createElementVNode590(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96zm320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96zM96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128H96zm314.24 576h395.904l82.304-384H333.44l76.8 384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3590 = [\n  _hoisted_2600\n];\nfunction _sfc_render600(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock600(), _createElementBlock600(\"svg\", _hoisted_1601, _hoisted_3590);\n}\nvar shopping_cart_default = /* @__PURE__ */ export_helper_default(shopping_cart_vue_vue_type_script_lang_default, [[\"render\", _sfc_render600], [\"__file\", \"shopping-cart.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\shopping-trolley.vue?vue&type=script&lang.ts\nvar shopping_trolley_vue_vue_type_script_lang_default = {\n  name: \"ShoppingTrolley\"\n};\n\n// src/components/shopping-trolley.vue\nimport { createElementVNode as _createElementVNode591, openBlock as _openBlock601, createElementBlock as _createElementBlock601 } from \"vue\";\nvar _hoisted_1602 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2601 = /* @__PURE__ */ _createElementVNode591(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M368 833c-13.3 0-24.5 4.5-33.5 13.5S321 866.7 321 880s4.5 24.5 13.5 33.5 20.2 13.8 33.5 14.5c13.3-.7 24.5-5.5 33.5-14.5S415 893.3 415 880s-4.5-24.5-13.5-33.5S381.3 833 368 833zm439-193c7.4 0 13.8-2.2 19.5-6.5S836 623.3 838 616l112-448c2-10-.2-19.2-6.5-27.5S929 128 919 128H96c-9.3 0-17 3-23 9s-9 13.7-9 23 3 17 9 23 13.7 9 23 9h96v576h672c9.3 0 17-3 23-9s9-13.7 9-23-3-17-9-23-13.7-9-23-9H256v-64h551zM256 192h622l-96 384H256V192zm432 641c-13.3 0-24.5 4.5-33.5 13.5S641 866.7 641 880s4.5 24.5 13.5 33.5 20.2 13.8 33.5 14.5c13.3-.7 24.5-5.5 33.5-14.5S735 893.3 735 880s-4.5-24.5-13.5-33.5S701.3 833 688 833z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3591 = [\n  _hoisted_2601\n];\nfunction _sfc_render601(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock601(), _createElementBlock601(\"svg\", _hoisted_1602, _hoisted_3591);\n}\nvar shopping_trolley_default = /* @__PURE__ */ export_helper_default(shopping_trolley_vue_vue_type_script_lang_default, [[\"render\", _sfc_render601], [\"__file\", \"shopping-trolley.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\smoking.vue?vue&type=script&lang.ts\nvar smoking_vue_vue_type_script_lang_default = {\n  name: \"Smoking\"\n};\n\n// src/components/smoking.vue\nimport { createElementVNode as _createElementVNode592, openBlock as _openBlock602, createElementBlock as _createElementBlock602 } from \"vue\";\nvar _hoisted_1603 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2602 = /* @__PURE__ */ _createElementVNode592(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 576v128h640V576H256zm-32-64h704a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3592 = /* @__PURE__ */ _createElementVNode592(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 576h64v128h-64zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4149 = [\n  _hoisted_2602,\n  _hoisted_3592\n];\nfunction _sfc_render602(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock602(), _createElementBlock602(\"svg\", _hoisted_1603, _hoisted_4149);\n}\nvar smoking_default = /* @__PURE__ */ export_helper_default(smoking_vue_vue_type_script_lang_default, [[\"render\", _sfc_render602], [\"__file\", \"smoking.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\soccer.vue?vue&type=script&lang.ts\nvar soccer_vue_vue_type_script_lang_default = {\n  name: \"Soccer\"\n};\n\n// src/components/soccer.vue\nimport { createElementVNode as _createElementVNode593, openBlock as _openBlock603, createElementBlock as _createElementBlock603 } from \"vue\";\nvar _hoisted_1604 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2603 = /* @__PURE__ */ _createElementVNode593(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M418.496 871.04 152.256 604.8c-16.512 94.016-2.368 178.624 42.944 224 44.928 44.928 129.344 58.752 223.296 42.24zm72.32-18.176a573.056 573.056 0 0 0 224.832-137.216 573.12 573.12 0 0 0 137.216-224.832L533.888 171.84a578.56 578.56 0 0 0-227.52 138.496A567.68 567.68 0 0 0 170.432 532.48l320.384 320.384zM871.04 418.496c16.512-93.952 2.688-178.368-42.24-223.296-44.544-44.544-128.704-58.048-222.592-41.536L871.04 418.496zM149.952 874.048c-112.96-112.96-88.832-408.96 111.168-608.96C461.056 65.152 760.96 36.928 874.048 149.952c113.024 113.024 86.784 411.008-113.152 610.944-199.936 199.936-497.92 226.112-610.944 113.152zm452.544-497.792 22.656-22.656a32 32 0 0 1 45.248 45.248l-22.656 22.656 45.248 45.248A32 32 0 1 1 647.744 512l-45.248-45.248L557.248 512l45.248 45.248a32 32 0 1 1-45.248 45.248L512 557.248l-45.248 45.248L512 647.744a32 32 0 1 1-45.248 45.248l-45.248-45.248-22.656 22.656a32 32 0 1 1-45.248-45.248l22.656-22.656-45.248-45.248A32 32 0 1 1 376.256 512l45.248 45.248L466.752 512l-45.248-45.248a32 32 0 1 1 45.248-45.248L512 466.752l45.248-45.248L512 376.256a32 32 0 0 1 45.248-45.248l45.248 45.248z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3593 = [\n  _hoisted_2603\n];\nfunction _sfc_render603(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock603(), _createElementBlock603(\"svg\", _hoisted_1604, _hoisted_3593);\n}\nvar soccer_default = /* @__PURE__ */ export_helper_default(soccer_vue_vue_type_script_lang_default, [[\"render\", _sfc_render603], [\"__file\", \"soccer.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\sold-out.vue?vue&type=script&lang.ts\nvar sold_out_vue_vue_type_script_lang_default = {\n  name: \"SoldOut\"\n};\n\n// src/components/sold-out.vue\nimport { createElementVNode as _createElementVNode594, openBlock as _openBlock604, createElementBlock as _createElementBlock604 } from \"vue\";\nvar _hoisted_1605 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2604 = /* @__PURE__ */ _createElementVNode594(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 476.16a32 32 0 1 1 45.248 45.184l-128 128a32 32 0 0 1-45.248 0l-128-128a32 32 0 1 1 45.248-45.248L704 837.504V608a32 32 0 1 1 64 0v229.504l73.408-73.408z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3594 = [\n  _hoisted_2604\n];\nfunction _sfc_render604(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock604(), _createElementBlock604(\"svg\", _hoisted_1605, _hoisted_3594);\n}\nvar sold_out_default = /* @__PURE__ */ export_helper_default(sold_out_vue_vue_type_script_lang_default, [[\"render\", _sfc_render604], [\"__file\", \"sold-out.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\sort-down.vue?vue&type=script&lang.ts\nvar sort_down_vue_vue_type_script_lang_default = {\n  name: \"SortDown\"\n};\n\n// src/components/sort-down.vue\nimport { createElementVNode as _createElementVNode595, openBlock as _openBlock605, createElementBlock as _createElementBlock605 } from \"vue\";\nvar _hoisted_1606 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2605 = /* @__PURE__ */ _createElementVNode595(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3595 = [\n  _hoisted_2605\n];\nfunction _sfc_render605(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock605(), _createElementBlock605(\"svg\", _hoisted_1606, _hoisted_3595);\n}\nvar sort_down_default = /* @__PURE__ */ export_helper_default(sort_down_vue_vue_type_script_lang_default, [[\"render\", _sfc_render605], [\"__file\", \"sort-down.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\sort-up.vue?vue&type=script&lang.ts\nvar sort_up_vue_vue_type_script_lang_default = {\n  name: \"SortUp\"\n};\n\n// src/components/sort-up.vue\nimport { createElementVNode as _createElementVNode596, openBlock as _openBlock606, createElementBlock as _createElementBlock606 } from \"vue\";\nvar _hoisted_1607 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2606 = /* @__PURE__ */ _createElementVNode596(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3596 = [\n  _hoisted_2606\n];\nfunction _sfc_render606(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock606(), _createElementBlock606(\"svg\", _hoisted_1607, _hoisted_3596);\n}\nvar sort_up_default = /* @__PURE__ */ export_helper_default(sort_up_vue_vue_type_script_lang_default, [[\"render\", _sfc_render606], [\"__file\", \"sort-up.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\sort.vue?vue&type=script&lang.ts\nvar sort_vue_vue_type_script_lang_default = {\n  name: \"Sort\"\n};\n\n// src/components/sort.vue\nimport { createElementVNode as _createElementVNode597, openBlock as _openBlock607, createElementBlock as _createElementBlock607 } from \"vue\";\nvar _hoisted_1608 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2607 = /* @__PURE__ */ _createElementVNode597(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 96a32 32 0 0 1 64 0v786.752a32 32 0 0 1-54.592 22.656L95.936 608a32 32 0 0 1 0-45.312h.128a32 32 0 0 1 45.184 0L384 805.632V96zm192 45.248a32 32 0 0 1 54.592-22.592L928.064 416a32 32 0 0 1 0 45.312h-.128a32 32 0 0 1-45.184 0L640 218.496V928a32 32 0 1 1-64 0V141.248z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3597 = [\n  _hoisted_2607\n];\nfunction _sfc_render607(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock607(), _createElementBlock607(\"svg\", _hoisted_1608, _hoisted_3597);\n}\nvar sort_default = /* @__PURE__ */ export_helper_default(sort_vue_vue_type_script_lang_default, [[\"render\", _sfc_render607], [\"__file\", \"sort.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\stamp.vue?vue&type=script&lang.ts\nvar stamp_vue_vue_type_script_lang_default = {\n  name: \"Stamp\"\n};\n\n// src/components/stamp.vue\nimport { createElementVNode as _createElementVNode598, openBlock as _openBlock608, createElementBlock as _createElementBlock608 } from \"vue\";\nvar _hoisted_1609 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2608 = /* @__PURE__ */ _createElementVNode598(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M624 475.968V640h144a128 128 0 0 1 128 128H128a128 128 0 0 1 128-128h144V475.968a192 192 0 1 1 224 0zM128 896v-64h768v64H128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3598 = [\n  _hoisted_2608\n];\nfunction _sfc_render608(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock608(), _createElementBlock608(\"svg\", _hoisted_1609, _hoisted_3598);\n}\nvar stamp_default = /* @__PURE__ */ export_helper_default(stamp_vue_vue_type_script_lang_default, [[\"render\", _sfc_render608], [\"__file\", \"stamp.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\star-filled.vue?vue&type=script&lang.ts\nvar star_filled_vue_vue_type_script_lang_default = {\n  name: \"StarFilled\"\n};\n\n// src/components/star-filled.vue\nimport { createElementVNode as _createElementVNode599, openBlock as _openBlock609, createElementBlock as _createElementBlock609 } from \"vue\";\nvar _hoisted_1610 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2609 = /* @__PURE__ */ _createElementVNode599(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3599 = [\n  _hoisted_2609\n];\nfunction _sfc_render609(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock609(), _createElementBlock609(\"svg\", _hoisted_1610, _hoisted_3599);\n}\nvar star_filled_default = /* @__PURE__ */ export_helper_default(star_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render609], [\"__file\", \"star-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\star.vue?vue&type=script&lang.ts\nvar star_vue_vue_type_script_lang_default = {\n  name: \"Star\"\n};\n\n// src/components/star.vue\nimport { createElementVNode as _createElementVNode600, openBlock as _openBlock610, createElementBlock as _createElementBlock610 } from \"vue\";\nvar _hoisted_1611 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2610 = /* @__PURE__ */ _createElementVNode600(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72L512 747.84zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3600 = [\n  _hoisted_2610\n];\nfunction _sfc_render610(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock610(), _createElementBlock610(\"svg\", _hoisted_1611, _hoisted_3600);\n}\nvar star_default = /* @__PURE__ */ export_helper_default(star_vue_vue_type_script_lang_default, [[\"render\", _sfc_render610], [\"__file\", \"star.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\stopwatch.vue?vue&type=script&lang.ts\nvar stopwatch_vue_vue_type_script_lang_default = {\n  name: \"Stopwatch\"\n};\n\n// src/components/stopwatch.vue\nimport { createElementVNode as _createElementVNode601, openBlock as _openBlock611, createElementBlock as _createElementBlock611 } from \"vue\";\nvar _hoisted_1612 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2611 = /* @__PURE__ */ _createElementVNode601(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3601 = /* @__PURE__ */ _createElementVNode601(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M672 234.88c-39.168 174.464-80 298.624-122.688 372.48-64 110.848-202.624 30.848-138.624-80C453.376 453.44 540.48 355.968 672 234.816z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4150 = [\n  _hoisted_2611,\n  _hoisted_3601\n];\nfunction _sfc_render611(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock611(), _createElementBlock611(\"svg\", _hoisted_1612, _hoisted_4150);\n}\nvar stopwatch_default = /* @__PURE__ */ export_helper_default(stopwatch_vue_vue_type_script_lang_default, [[\"render\", _sfc_render611], [\"__file\", \"stopwatch.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\success-filled.vue?vue&type=script&lang.ts\nvar success_filled_vue_vue_type_script_lang_default = {\n  name: \"SuccessFilled\"\n};\n\n// src/components/success-filled.vue\nimport { createElementVNode as _createElementVNode602, openBlock as _openBlock612, createElementBlock as _createElementBlock612 } from \"vue\";\nvar _hoisted_1613 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2612 = /* @__PURE__ */ _createElementVNode602(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3602 = [\n  _hoisted_2612\n];\nfunction _sfc_render612(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock612(), _createElementBlock612(\"svg\", _hoisted_1613, _hoisted_3602);\n}\nvar success_filled_default = /* @__PURE__ */ export_helper_default(success_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render612], [\"__file\", \"success-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\sugar.vue?vue&type=script&lang.ts\nvar sugar_vue_vue_type_script_lang_default = {\n  name: \"Sugar\"\n};\n\n// src/components/sugar.vue\nimport { createElementVNode as _createElementVNode603, openBlock as _openBlock613, createElementBlock as _createElementBlock613 } from \"vue\";\nvar _hoisted_1614 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2613 = /* @__PURE__ */ _createElementVNode603(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m801.728 349.184 4.48 4.48a128 128 0 0 1 0 180.992L534.656 806.144a128 128 0 0 1-181.056 0l-4.48-4.48-19.392 109.696a64 64 0 0 1-108.288 34.176L78.464 802.56a64 64 0 0 1 34.176-108.288l109.76-19.328-4.544-4.544a128 128 0 0 1 0-181.056l271.488-271.488a128 128 0 0 1 181.056 0l4.48 4.48 19.392-109.504a64 64 0 0 1 108.352-34.048l142.592 143.04a64 64 0 0 1-34.24 108.16l-109.248 19.2zm-548.8 198.72h447.168v2.24l60.8-60.8a63.808 63.808 0 0 0 18.752-44.416h-426.88l-89.664 89.728a64.064 64.064 0 0 0-10.24 13.248zm0 64c2.752 4.736 6.144 9.152 10.176 13.248l135.744 135.744a64 64 0 0 0 90.496 0L638.4 611.904H252.928zm490.048-230.976L625.152 263.104a64 64 0 0 0-90.496 0L416.768 380.928h326.208zM123.712 757.312l142.976 142.976 24.32-137.6a25.6 25.6 0 0 0-29.696-29.632l-137.6 24.256zm633.6-633.344-24.32 137.472a25.6 25.6 0 0 0 29.632 29.632l137.28-24.064-142.656-143.04z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3603 = [\n  _hoisted_2613\n];\nfunction _sfc_render613(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock613(), _createElementBlock613(\"svg\", _hoisted_1614, _hoisted_3603);\n}\nvar sugar_default = /* @__PURE__ */ export_helper_default(sugar_vue_vue_type_script_lang_default, [[\"render\", _sfc_render613], [\"__file\", \"sugar.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\suitcase-line.vue?vue&type=script&lang.ts\nvar suitcase_line_vue_vue_type_script_lang_default = {\n  name: \"SuitcaseLine\"\n};\n\n// src/components/suitcase-line.vue\nimport { createElementVNode as _createElementVNode604, openBlock as _openBlock614, createElementBlock as _createElementBlock614 } from \"vue\";\nvar _hoisted_1615 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2614 = /* @__PURE__ */ _createElementVNode604(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M922.5 229.5c-24.32-24.34-54.49-36.84-90.5-37.5H704v-64c-.68-17.98-7.02-32.98-19.01-44.99S658.01 64.66 640 64H384c-17.98.68-32.98 7.02-44.99 19.01S320.66 110 320 128v64H192c-35.99.68-66.16 13.18-90.5 37.5C77.16 253.82 64.66 283.99 64 320v448c.68 35.99 13.18 66.16 37.5 90.5s54.49 36.84 90.5 37.5h640c35.99-.68 66.16-13.18 90.5-37.5s36.84-54.49 37.5-90.5V320c-.68-35.99-13.18-66.16-37.5-90.5zM384 128h256v64H384v-64zM256 832h-64c-17.98-.68-32.98-7.02-44.99-19.01S128.66 786.01 128 768V448h128v384zm448 0H320V448h384v384zm192-64c-.68 17.98-7.02 32.98-19.01 44.99S850.01 831.34 832 832h-64V448h128v320zm0-384H128v-64c.69-17.98 7.02-32.98 19.01-44.99S173.99 256.66 192 256h640c17.98.69 32.98 7.02 44.99 19.01S895.34 301.99 896 320v64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3604 = [\n  _hoisted_2614\n];\nfunction _sfc_render614(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock614(), _createElementBlock614(\"svg\", _hoisted_1615, _hoisted_3604);\n}\nvar suitcase_line_default = /* @__PURE__ */ export_helper_default(suitcase_line_vue_vue_type_script_lang_default, [[\"render\", _sfc_render614], [\"__file\", \"suitcase-line.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\suitcase.vue?vue&type=script&lang.ts\nvar suitcase_vue_vue_type_script_lang_default = {\n  name: \"Suitcase\"\n};\n\n// src/components/suitcase.vue\nimport { createElementVNode as _createElementVNode605, openBlock as _openBlock615, createElementBlock as _createElementBlock615 } from \"vue\";\nvar _hoisted_1616 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2615 = /* @__PURE__ */ _createElementVNode605(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 384h768v-64a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64v64zm0 64v320a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V448H128zm64-256h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3605 = /* @__PURE__ */ _createElementVNode605(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M384 128v64h256v-64H384zm0-64h256a64 64 0 0 1 64 64v64a64 64 0 0 1-64 64H384a64 64 0 0 1-64-64v-64a64 64 0 0 1 64-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4151 = [\n  _hoisted_2615,\n  _hoisted_3605\n];\nfunction _sfc_render615(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock615(), _createElementBlock615(\"svg\", _hoisted_1616, _hoisted_4151);\n}\nvar suitcase_default = /* @__PURE__ */ export_helper_default(suitcase_vue_vue_type_script_lang_default, [[\"render\", _sfc_render615], [\"__file\", \"suitcase.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\sunny.vue?vue&type=script&lang.ts\nvar sunny_vue_vue_type_script_lang_default = {\n  name: \"Sunny\"\n};\n\n// src/components/sunny.vue\nimport { createElementVNode as _createElementVNode606, openBlock as _openBlock616, createElementBlock as _createElementBlock616 } from \"vue\";\nvar _hoisted_1617 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2616 = /* @__PURE__ */ _createElementVNode606(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 704a192 192 0 1 0 0-384 192 192 0 0 0 0 384zm0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512zm0-704a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 768a32 32 0 0 1 32 32v64a32 32 0 1 1-64 0v-64a32 32 0 0 1 32-32zM195.2 195.2a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 1 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm543.104 543.104a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 0 1-45.248 45.248l-45.248-45.248a32 32 0 0 1 0-45.248zM64 512a32 32 0 0 1 32-32h64a32 32 0 0 1 0 64H96a32 32 0 0 1-32-32zm768 0a32 32 0 0 1 32-32h64a32 32 0 1 1 0 64h-64a32 32 0 0 1-32-32zM195.2 828.8a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248L240.448 828.8a32 32 0 0 1-45.248 0zm543.104-543.104a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248l-45.248 45.248a32 32 0 0 1-45.248 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3606 = [\n  _hoisted_2616\n];\nfunction _sfc_render616(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock616(), _createElementBlock616(\"svg\", _hoisted_1617, _hoisted_3606);\n}\nvar sunny_default = /* @__PURE__ */ export_helper_default(sunny_vue_vue_type_script_lang_default, [[\"render\", _sfc_render616], [\"__file\", \"sunny.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\sunrise.vue?vue&type=script&lang.ts\nvar sunrise_vue_vue_type_script_lang_default = {\n  name: \"Sunrise\"\n};\n\n// src/components/sunrise.vue\nimport { createElementVNode as _createElementVNode607, openBlock as _openBlock617, createElementBlock as _createElementBlock617 } from \"vue\";\nvar _hoisted_1618 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2617 = /* @__PURE__ */ _createElementVNode607(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M32 768h960a32 32 0 1 1 0 64H32a32 32 0 1 1 0-64zm129.408-96a352 352 0 0 1 701.184 0h-64.32a288 288 0 0 0-572.544 0h-64.32zM512 128a32 32 0 0 1 32 32v96a32 32 0 0 1-64 0v-96a32 32 0 0 1 32-32zm407.296 168.704a32 32 0 0 1 0 45.248l-67.84 67.84a32 32 0 1 1-45.248-45.248l67.84-67.84a32 32 0 0 1 45.248 0zm-814.592 0a32 32 0 0 1 45.248 0l67.84 67.84a32 32 0 1 1-45.248 45.248l-67.84-67.84a32 32 0 0 1 0-45.248z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3607 = [\n  _hoisted_2617\n];\nfunction _sfc_render617(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock617(), _createElementBlock617(\"svg\", _hoisted_1618, _hoisted_3607);\n}\nvar sunrise_default = /* @__PURE__ */ export_helper_default(sunrise_vue_vue_type_script_lang_default, [[\"render\", _sfc_render617], [\"__file\", \"sunrise.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\sunset.vue?vue&type=script&lang.ts\nvar sunset_vue_vue_type_script_lang_default = {\n  name: \"Sunset\"\n};\n\n// src/components/sunset.vue\nimport { createElementVNode as _createElementVNode608, openBlock as _openBlock618, createElementBlock as _createElementBlock618 } from \"vue\";\nvar _hoisted_1619 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2618 = /* @__PURE__ */ _createElementVNode608(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M82.56 640a448 448 0 1 1 858.88 0h-67.2a384 384 0 1 0-724.288 0H82.56zM32 704h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32zm256 128h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3608 = [\n  _hoisted_2618\n];\nfunction _sfc_render618(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock618(), _createElementBlock618(\"svg\", _hoisted_1619, _hoisted_3608);\n}\nvar sunset_default = /* @__PURE__ */ export_helper_default(sunset_vue_vue_type_script_lang_default, [[\"render\", _sfc_render618], [\"__file\", \"sunset.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\switch-button.vue?vue&type=script&lang.ts\nvar switch_button_vue_vue_type_script_lang_default = {\n  name: \"SwitchButton\"\n};\n\n// src/components/switch-button.vue\nimport { createElementVNode as _createElementVNode609, openBlock as _openBlock619, createElementBlock as _createElementBlock619 } from \"vue\";\nvar _hoisted_1620 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2619 = /* @__PURE__ */ _createElementVNode609(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M352 159.872V230.4a352 352 0 1 0 320 0v-70.528A416.128 416.128 0 0 1 512 960a416 416 0 0 1-160-800.128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3609 = /* @__PURE__ */ _createElementVNode609(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64q32 0 32 32v320q0 32-32 32t-32-32V96q0-32 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4152 = [\n  _hoisted_2619,\n  _hoisted_3609\n];\nfunction _sfc_render619(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock619(), _createElementBlock619(\"svg\", _hoisted_1620, _hoisted_4152);\n}\nvar switch_button_default = /* @__PURE__ */ export_helper_default(switch_button_vue_vue_type_script_lang_default, [[\"render\", _sfc_render619], [\"__file\", \"switch-button.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\switch-filled.vue?vue&type=script&lang.ts\nvar switch_filled_vue_vue_type_script_lang_default = {\n  name: \"SwitchFilled\"\n};\n\n// src/components/switch-filled.vue\nimport { createElementVNode as _createElementVNode610, openBlock as _openBlock620, createElementBlock as _createElementBlock620 } from \"vue\";\nvar _hoisted_1621 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2620 = /* @__PURE__ */ _createElementVNode610(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M247.47 358.4v.04c.07 19.17 7.72 37.53 21.27 51.09s31.92 21.2 51.09 21.27c39.86 0 72.41-32.6 72.41-72.4s-32.6-72.36-72.41-72.36-72.36 32.55-72.36 72.36z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3610 = /* @__PURE__ */ _createElementVNode610(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M492.38 128H324.7c-52.16 0-102.19 20.73-139.08 57.61a196.655 196.655 0 0 0-57.61 139.08V698.7c-.01 25.84 5.08 51.42 14.96 75.29s24.36 45.56 42.63 63.83 39.95 32.76 63.82 42.65a196.67 196.67 0 0 0 75.28 14.98h167.68c3.03 0 5.46-2.43 5.46-5.42V133.42c.6-2.99-1.83-5.42-5.46-5.42zm-56.11 705.88H324.7c-17.76.13-35.36-3.33-51.75-10.18s-31.22-16.94-43.61-29.67c-25.3-25.35-39.81-59.1-39.81-95.32V324.69c-.13-17.75 3.33-35.35 10.17-51.74a131.695 131.695 0 0 1 29.64-43.62c25.39-25.3 59.14-39.81 95.36-39.81h111.57v644.36zm402.12-647.67a196.655 196.655 0 0 0-139.08-57.61H580.48c-3.03 0-4.82 2.43-4.82 4.82v757.16c-.6 2.99 1.79 5.42 5.42 5.42h118.23a196.69 196.69 0 0 0 139.08-57.61A196.655 196.655 0 0 0 896 699.31V325.29a196.69 196.69 0 0 0-57.61-139.08zm-111.3 441.92c-42.83 0-77.82-34.99-77.82-77.82s34.98-77.82 77.82-77.82c42.83 0 77.82 34.99 77.82 77.82s-34.99 77.82-77.82 77.82z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4153 = [\n  _hoisted_2620,\n  _hoisted_3610\n];\nfunction _sfc_render620(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock620(), _createElementBlock620(\"svg\", _hoisted_1621, _hoisted_4153);\n}\nvar switch_filled_default = /* @__PURE__ */ export_helper_default(switch_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render620], [\"__file\", \"switch-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\switch.vue?vue&type=script&lang.ts\nvar switch_vue_vue_type_script_lang_default = {\n  name: \"Switch\"\n};\n\n// src/components/switch.vue\nimport { createElementVNode as _createElementVNode611, openBlock as _openBlock621, createElementBlock as _createElementBlock621 } from \"vue\";\nvar _hoisted_1622 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2621 = /* @__PURE__ */ _createElementVNode611(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M118.656 438.656a32 32 0 0 1 0-45.248L416 96l4.48-3.776A32 32 0 0 1 461.248 96l3.712 4.48a32.064 32.064 0 0 1-3.712 40.832L218.56 384H928a32 32 0 1 1 0 64H141.248a32 32 0 0 1-22.592-9.344zM64 608a32 32 0 0 1 32-32h786.752a32 32 0 0 1 22.656 54.592L608 928l-4.48 3.776a32.064 32.064 0 0 1-40.832-49.024L805.632 640H96a32 32 0 0 1-32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3611 = [\n  _hoisted_2621\n];\nfunction _sfc_render621(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock621(), _createElementBlock621(\"svg\", _hoisted_1622, _hoisted_3611);\n}\nvar switch_default = /* @__PURE__ */ export_helper_default(switch_vue_vue_type_script_lang_default, [[\"render\", _sfc_render621], [\"__file\", \"switch.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\takeaway-box.vue?vue&type=script&lang.ts\nvar takeaway_box_vue_vue_type_script_lang_default = {\n  name: \"TakeawayBox\"\n};\n\n// src/components/takeaway-box.vue\nimport { createElementVNode as _createElementVNode612, openBlock as _openBlock622, createElementBlock as _createElementBlock622 } from \"vue\";\nvar _hoisted_1623 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2622 = /* @__PURE__ */ _createElementVNode612(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3612 = [\n  _hoisted_2622\n];\nfunction _sfc_render622(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock622(), _createElementBlock622(\"svg\", _hoisted_1623, _hoisted_3612);\n}\nvar takeaway_box_default = /* @__PURE__ */ export_helper_default(takeaway_box_vue_vue_type_script_lang_default, [[\"render\", _sfc_render622], [\"__file\", \"takeaway-box.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\ticket.vue?vue&type=script&lang.ts\nvar ticket_vue_vue_type_script_lang_default = {\n  name: \"Ticket\"\n};\n\n// src/components/ticket.vue\nimport { createElementVNode as _createElementVNode613, openBlock as _openBlock623, createElementBlock as _createElementBlock623 } from \"vue\";\nvar _hoisted_1624 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2623 = /* @__PURE__ */ _createElementVNode613(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M640 832H64V640a128 128 0 1 0 0-256V192h576v160h64V192h256v192a128 128 0 1 0 0 256v192H704V672h-64v160zm0-416v192h64V416h-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3613 = [\n  _hoisted_2623\n];\nfunction _sfc_render623(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock623(), _createElementBlock623(\"svg\", _hoisted_1624, _hoisted_3613);\n}\nvar ticket_default = /* @__PURE__ */ export_helper_default(ticket_vue_vue_type_script_lang_default, [[\"render\", _sfc_render623], [\"__file\", \"ticket.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\tickets.vue?vue&type=script&lang.ts\nvar tickets_vue_vue_type_script_lang_default = {\n  name: \"Tickets\"\n};\n\n// src/components/tickets.vue\nimport { createElementVNode as _createElementVNode614, openBlock as _openBlock624, createElementBlock as _createElementBlock624 } from \"vue\";\nvar _hoisted_1625 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2624 = /* @__PURE__ */ _createElementVNode614(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3614 = [\n  _hoisted_2624\n];\nfunction _sfc_render624(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock624(), _createElementBlock624(\"svg\", _hoisted_1625, _hoisted_3614);\n}\nvar tickets_default = /* @__PURE__ */ export_helper_default(tickets_vue_vue_type_script_lang_default, [[\"render\", _sfc_render624], [\"__file\", \"tickets.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\timer.vue?vue&type=script&lang.ts\nvar timer_vue_vue_type_script_lang_default = {\n  name: \"Timer\"\n};\n\n// src/components/timer.vue\nimport { createElementVNode as _createElementVNode615, openBlock as _openBlock625, createElementBlock as _createElementBlock625 } from \"vue\";\nvar _hoisted_1626 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2625 = /* @__PURE__ */ _createElementVNode615(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 896a320 320 0 1 0 0-640 320 320 0 0 0 0 640zm0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3615 = /* @__PURE__ */ _createElementVNode615(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 320a32 32 0 0 1 32 32l-.512 224a32 32 0 1 1-64 0L480 352a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4154 = /* @__PURE__ */ _createElementVNode615(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M448 576a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm96-448v128h-64V128h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64h-96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_554 = [\n  _hoisted_2625,\n  _hoisted_3615,\n  _hoisted_4154\n];\nfunction _sfc_render625(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock625(), _createElementBlock625(\"svg\", _hoisted_1626, _hoisted_554);\n}\nvar timer_default = /* @__PURE__ */ export_helper_default(timer_vue_vue_type_script_lang_default, [[\"render\", _sfc_render625], [\"__file\", \"timer.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\toilet-paper.vue?vue&type=script&lang.ts\nvar toilet_paper_vue_vue_type_script_lang_default = {\n  name: \"ToiletPaper\"\n};\n\n// src/components/toilet-paper.vue\nimport { createElementVNode as _createElementVNode616, openBlock as _openBlock626, createElementBlock as _createElementBlock626 } from \"vue\";\nvar _hoisted_1627 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2626 = /* @__PURE__ */ _createElementVNode616(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M595.2 128H320a192 192 0 0 0-192 192v576h384V352c0-90.496 32.448-171.2 83.2-224zM736 64c123.712 0 224 128.96 224 288S859.712 640 736 640H576v320H64V320A256 256 0 0 1 320 64h416zM576 352v224h160c84.352 0 160-97.28 160-224s-75.648-224-160-224-160 97.28-160 224z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3616 = /* @__PURE__ */ _createElementVNode616(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M736 448c-35.328 0-64-43.008-64-96s28.672-96 64-96 64 43.008 64 96-28.672 96-64 96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4155 = [\n  _hoisted_2626,\n  _hoisted_3616\n];\nfunction _sfc_render626(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock626(), _createElementBlock626(\"svg\", _hoisted_1627, _hoisted_4155);\n}\nvar toilet_paper_default = /* @__PURE__ */ export_helper_default(toilet_paper_vue_vue_type_script_lang_default, [[\"render\", _sfc_render626], [\"__file\", \"toilet-paper.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\tools.vue?vue&type=script&lang.ts\nvar tools_vue_vue_type_script_lang_default = {\n  name: \"Tools\"\n};\n\n// src/components/tools.vue\nimport { createElementVNode as _createElementVNode617, openBlock as _openBlock627, createElementBlock as _createElementBlock627 } from \"vue\";\nvar _hoisted_1628 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2627 = /* @__PURE__ */ _createElementVNode617(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M764.416 254.72a351.68 351.68 0 0 1 86.336 149.184H960v192.064H850.752a351.68 351.68 0 0 1-86.336 149.312l54.72 94.72-166.272 96-54.592-94.72a352.64 352.64 0 0 1-172.48 0L371.136 936l-166.272-96 54.72-94.72a351.68 351.68 0 0 1-86.336-149.312H64v-192h109.248a351.68 351.68 0 0 1 86.336-149.312L204.8 160l166.208-96h.192l54.656 94.592a352.64 352.64 0 0 1 172.48 0L652.8 64h.128L819.2 160l-54.72 94.72zM704 499.968a192 192 0 1 0-384 0 192 192 0 0 0 384 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3617 = [\n  _hoisted_2627\n];\nfunction _sfc_render627(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock627(), _createElementBlock627(\"svg\", _hoisted_1628, _hoisted_3617);\n}\nvar tools_default = /* @__PURE__ */ export_helper_default(tools_vue_vue_type_script_lang_default, [[\"render\", _sfc_render627], [\"__file\", \"tools.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\top-left.vue?vue&type=script&lang.ts\nvar top_left_vue_vue_type_script_lang_default = {\n  name: \"TopLeft\"\n};\n\n// src/components/top-left.vue\nimport { createElementVNode as _createElementVNode618, openBlock as _openBlock628, createElementBlock as _createElementBlock628 } from \"vue\";\nvar _hoisted_1629 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2628 = /* @__PURE__ */ _createElementVNode618(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M256 256h416a32 32 0 1 0 0-64H224a32 32 0 0 0-32 32v448a32 32 0 0 0 64 0V256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3618 = /* @__PURE__ */ _createElementVNode618(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M246.656 201.344a32 32 0 0 0-45.312 45.312l544 544a32 32 0 0 0 45.312-45.312l-544-544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4156 = [\n  _hoisted_2628,\n  _hoisted_3618\n];\nfunction _sfc_render628(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock628(), _createElementBlock628(\"svg\", _hoisted_1629, _hoisted_4156);\n}\nvar top_left_default = /* @__PURE__ */ export_helper_default(top_left_vue_vue_type_script_lang_default, [[\"render\", _sfc_render628], [\"__file\", \"top-left.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\top-right.vue?vue&type=script&lang.ts\nvar top_right_vue_vue_type_script_lang_default = {\n  name: \"TopRight\"\n};\n\n// src/components/top-right.vue\nimport { createElementVNode as _createElementVNode619, openBlock as _openBlock629, createElementBlock as _createElementBlock629 } from \"vue\";\nvar _hoisted_1630 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2629 = /* @__PURE__ */ _createElementVNode619(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M768 256H353.6a32 32 0 1 1 0-64H800a32 32 0 0 1 32 32v448a32 32 0 0 1-64 0V256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3619 = /* @__PURE__ */ _createElementVNode619(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M777.344 201.344a32 32 0 0 1 45.312 45.312l-544 544a32 32 0 0 1-45.312-45.312l544-544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4157 = [\n  _hoisted_2629,\n  _hoisted_3619\n];\nfunction _sfc_render629(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock629(), _createElementBlock629(\"svg\", _hoisted_1630, _hoisted_4157);\n}\nvar top_right_default = /* @__PURE__ */ export_helper_default(top_right_vue_vue_type_script_lang_default, [[\"render\", _sfc_render629], [\"__file\", \"top-right.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\top.vue?vue&type=script&lang.ts\nvar top_vue_vue_type_script_lang_default = {\n  name: \"Top\"\n};\n\n// src/components/top.vue\nimport { createElementVNode as _createElementVNode620, openBlock as _openBlock630, createElementBlock as _createElementBlock630 } from \"vue\";\nvar _hoisted_1631 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2630 = /* @__PURE__ */ _createElementVNode620(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3620 = [\n  _hoisted_2630\n];\nfunction _sfc_render630(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock630(), _createElementBlock630(\"svg\", _hoisted_1631, _hoisted_3620);\n}\nvar top_default = /* @__PURE__ */ export_helper_default(top_vue_vue_type_script_lang_default, [[\"render\", _sfc_render630], [\"__file\", \"top.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\trend-charts.vue?vue&type=script&lang.ts\nvar trend_charts_vue_vue_type_script_lang_default = {\n  name: \"TrendCharts\"\n};\n\n// src/components/trend-charts.vue\nimport { createElementVNode as _createElementVNode621, openBlock as _openBlock631, createElementBlock as _createElementBlock631 } from \"vue\";\nvar _hoisted_1632 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2631 = /* @__PURE__ */ _createElementVNode621(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 896V128h768v768H128zm291.712-327.296 128 102.4 180.16-201.792-47.744-42.624-139.84 156.608-128-102.4-180.16 201.792 47.744 42.624 139.84-156.608zM816 352a48 48 0 1 0-96 0 48 48 0 0 0 96 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3621 = [\n  _hoisted_2631\n];\nfunction _sfc_render631(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock631(), _createElementBlock631(\"svg\", _hoisted_1632, _hoisted_3621);\n}\nvar trend_charts_default = /* @__PURE__ */ export_helper_default(trend_charts_vue_vue_type_script_lang_default, [[\"render\", _sfc_render631], [\"__file\", \"trend-charts.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\trophy-base.vue?vue&type=script&lang.ts\nvar trophy_base_vue_vue_type_script_lang_default = {\n  name: \"TrophyBase\"\n};\n\n// src/components/trophy-base.vue\nimport { createElementVNode as _createElementVNode622, openBlock as _openBlock632, createElementBlock as _createElementBlock632 } from \"vue\";\nvar _hoisted_1633 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2632 = /* @__PURE__ */ _createElementVNode622(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M918.4 201.6c-6.4-6.4-12.8-9.6-22.4-9.6H768V96c0-9.6-3.2-16-9.6-22.4C752 67.2 745.6 64 736 64H288c-9.6 0-16 3.2-22.4 9.6C259.2 80 256 86.4 256 96v96H128c-9.6 0-16 3.2-22.4 9.6-6.4 6.4-9.6 16-9.6 22.4 3.2 108.8 25.6 185.6 64 224 34.4 34.4 77.56 55.65 127.65 61.99 10.91 20.44 24.78 39.25 41.95 56.41 40.86 40.86 91 65.47 150.4 71.9V768h-96c-9.6 0-16 3.2-22.4 9.6-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4c6.4 6.4 12.8 9.6 22.4 9.6h256c9.6 0 16-3.2 22.4-9.6 6.4-6.4 9.6-12.8 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-12.8-9.6-22.4-9.6h-96V637.26c59.4-7.71 109.54-30.01 150.4-70.86 17.2-17.2 31.51-36.06 42.81-56.55 48.93-6.51 90.02-27.7 126.79-61.85 38.4-38.4 60.8-112 64-224 0-6.4-3.2-16-9.6-22.4zM256 438.4c-19.2-6.4-35.2-19.2-51.2-35.2-22.4-22.4-35.2-70.4-41.6-147.2H256v182.4zm390.4 80C608 553.6 566.4 576 512 576s-99.2-19.2-134.4-57.6C342.4 480 320 438.4 320 384V128h384v256c0 54.4-19.2 99.2-57.6 134.4zm172.8-115.2c-16 16-32 25.6-51.2 35.2V256h92.8c-6.4 76.8-19.2 124.8-41.6 147.2zM768 896H256c-9.6 0-16 3.2-22.4 9.6-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4c6.4 6.4 12.8 9.6 22.4 9.6h512c9.6 0 16-3.2 22.4-9.6 6.4-6.4 9.6-12.8 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-12.8-9.6-22.4-9.6z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3622 = [\n  _hoisted_2632\n];\nfunction _sfc_render632(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock632(), _createElementBlock632(\"svg\", _hoisted_1633, _hoisted_3622);\n}\nvar trophy_base_default = /* @__PURE__ */ export_helper_default(trophy_base_vue_vue_type_script_lang_default, [[\"render\", _sfc_render632], [\"__file\", \"trophy-base.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\trophy.vue?vue&type=script&lang.ts\nvar trophy_vue_vue_type_script_lang_default = {\n  name: \"Trophy\"\n};\n\n// src/components/trophy.vue\nimport { createElementVNode as _createElementVNode623, openBlock as _openBlock633, createElementBlock as _createElementBlock633 } from \"vue\";\nvar _hoisted_1634 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2633 = /* @__PURE__ */ _createElementVNode623(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 896V702.08A256.256 256.256 0 0 1 264.064 512h-32.64a96 96 0 0 1-91.968-68.416L93.632 290.88a76.8 76.8 0 0 1 73.6-98.88H256V96a32 32 0 0 1 32-32h448a32 32 0 0 1 32 32v96h88.768a76.8 76.8 0 0 1 73.6 98.88L884.48 443.52A96 96 0 0 1 792.576 512h-32.64A256.256 256.256 0 0 1 544 702.08V896h128a32 32 0 1 1 0 64H352a32 32 0 1 1 0-64h128zm224-448V128H320v320a192 192 0 1 0 384 0zm64 0h24.576a32 32 0 0 0 30.656-22.784l45.824-152.768A12.8 12.8 0 0 0 856.768 256H768v192zm-512 0V256h-88.768a12.8 12.8 0 0 0-12.288 16.448l45.824 152.768A32 32 0 0 0 231.424 448H256z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3623 = [\n  _hoisted_2633\n];\nfunction _sfc_render633(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock633(), _createElementBlock633(\"svg\", _hoisted_1634, _hoisted_3623);\n}\nvar trophy_default = /* @__PURE__ */ export_helper_default(trophy_vue_vue_type_script_lang_default, [[\"render\", _sfc_render633], [\"__file\", \"trophy.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\turn-off.vue?vue&type=script&lang.ts\nvar turn_off_vue_vue_type_script_lang_default = {\n  name: \"TurnOff\"\n};\n\n// src/components/turn-off.vue\nimport { createElementVNode as _createElementVNode624, openBlock as _openBlock634, createElementBlock as _createElementBlock634 } from \"vue\";\nvar _hoisted_1635 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2634 = /* @__PURE__ */ _createElementVNode624(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724H329.956zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3624 = /* @__PURE__ */ _createElementVNode624(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M329.956 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454zm0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4158 = [\n  _hoisted_2634,\n  _hoisted_3624\n];\nfunction _sfc_render634(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock634(), _createElementBlock634(\"svg\", _hoisted_1635, _hoisted_4158);\n}\nvar turn_off_default = /* @__PURE__ */ export_helper_default(turn_off_vue_vue_type_script_lang_default, [[\"render\", _sfc_render634], [\"__file\", \"turn-off.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\umbrella.vue?vue&type=script&lang.ts\nvar umbrella_vue_vue_type_script_lang_default = {\n  name: \"Umbrella\"\n};\n\n// src/components/umbrella.vue\nimport { createElementVNode as _createElementVNode625, openBlock as _openBlock635, createElementBlock as _createElementBlock635 } from \"vue\";\nvar _hoisted_1636 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2635 = /* @__PURE__ */ _createElementVNode625(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M320 768a32 32 0 1 1 64 0 64 64 0 0 0 128 0V512H64a448 448 0 1 1 896 0H576v256a128 128 0 1 1-256 0zm570.688-320a384.128 384.128 0 0 0-757.376 0h757.376z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3625 = [\n  _hoisted_2635\n];\nfunction _sfc_render635(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock635(), _createElementBlock635(\"svg\", _hoisted_1636, _hoisted_3625);\n}\nvar umbrella_default = /* @__PURE__ */ export_helper_default(umbrella_vue_vue_type_script_lang_default, [[\"render\", _sfc_render635], [\"__file\", \"umbrella.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\unlock.vue?vue&type=script&lang.ts\nvar unlock_vue_vue_type_script_lang_default = {\n  name: \"Unlock\"\n};\n\n// src/components/unlock.vue\nimport { createElementVNode as _createElementVNode626, openBlock as _openBlock636, createElementBlock as _createElementBlock636 } from \"vue\";\nvar _hoisted_1637 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2636 = /* @__PURE__ */ _createElementVNode626(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32H224zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3626 = /* @__PURE__ */ _createElementVNode626(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32zm178.304-295.296A192.064 192.064 0 0 0 320 320v64h352l96 38.4V448H256V320a256 256 0 0 1 493.76-95.104l-59.456 23.808z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4159 = [\n  _hoisted_2636,\n  _hoisted_3626\n];\nfunction _sfc_render636(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock636(), _createElementBlock636(\"svg\", _hoisted_1637, _hoisted_4159);\n}\nvar unlock_default = /* @__PURE__ */ export_helper_default(unlock_vue_vue_type_script_lang_default, [[\"render\", _sfc_render636], [\"__file\", \"unlock.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\upload-filled.vue?vue&type=script&lang.ts\nvar upload_filled_vue_vue_type_script_lang_default = {\n  name: \"UploadFilled\"\n};\n\n// src/components/upload-filled.vue\nimport { createElementVNode as _createElementVNode627, openBlock as _openBlock637, createElementBlock as _createElementBlock637 } from \"vue\";\nvar _hoisted_1638 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2637 = /* @__PURE__ */ _createElementVNode627(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3627 = [\n  _hoisted_2637\n];\nfunction _sfc_render637(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock637(), _createElementBlock637(\"svg\", _hoisted_1638, _hoisted_3627);\n}\nvar upload_filled_default = /* @__PURE__ */ export_helper_default(upload_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render637], [\"__file\", \"upload-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\upload.vue?vue&type=script&lang.ts\nvar upload_vue_vue_type_script_lang_default = {\n  name: \"Upload\"\n};\n\n// src/components/upload.vue\nimport { createElementVNode as _createElementVNode628, openBlock as _openBlock638, createElementBlock as _createElementBlock638 } from \"vue\";\nvar _hoisted_1639 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2638 = /* @__PURE__ */ _createElementVNode628(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm384-578.304V704h-64V247.296L237.248 490.048 192 444.8 508.8 128l316.8 316.8-45.312 45.248L544 253.696z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3628 = [\n  _hoisted_2638\n];\nfunction _sfc_render638(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock638(), _createElementBlock638(\"svg\", _hoisted_1639, _hoisted_3628);\n}\nvar upload_default = /* @__PURE__ */ export_helper_default(upload_vue_vue_type_script_lang_default, [[\"render\", _sfc_render638], [\"__file\", \"upload.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\user-filled.vue?vue&type=script&lang.ts\nvar user_filled_vue_vue_type_script_lang_default = {\n  name: \"UserFilled\"\n};\n\n// src/components/user-filled.vue\nimport { createElementVNode as _createElementVNode629, openBlock as _openBlock639, createElementBlock as _createElementBlock639 } from \"vue\";\nvar _hoisted_1640 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2639 = /* @__PURE__ */ _createElementVNode629(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3629 = [\n  _hoisted_2639\n];\nfunction _sfc_render639(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock639(), _createElementBlock639(\"svg\", _hoisted_1640, _hoisted_3629);\n}\nvar user_filled_default = /* @__PURE__ */ export_helper_default(user_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render639], [\"__file\", \"user-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\user.vue?vue&type=script&lang.ts\nvar user_vue_vue_type_script_lang_default = {\n  name: \"User\"\n};\n\n// src/components/user.vue\nimport { createElementVNode as _createElementVNode630, openBlock as _openBlock640, createElementBlock as _createElementBlock640 } from \"vue\";\nvar _hoisted_1641 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2640 = /* @__PURE__ */ _createElementVNode630(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384zm0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512zm320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3630 = [\n  _hoisted_2640\n];\nfunction _sfc_render640(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock640(), _createElementBlock640(\"svg\", _hoisted_1641, _hoisted_3630);\n}\nvar user_default = /* @__PURE__ */ export_helper_default(user_vue_vue_type_script_lang_default, [[\"render\", _sfc_render640], [\"__file\", \"user.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\van.vue?vue&type=script&lang.ts\nvar van_vue_vue_type_script_lang_default = {\n  name: \"Van\"\n};\n\n// src/components/van.vue\nimport { createElementVNode as _createElementVNode631, openBlock as _openBlock641, createElementBlock as _createElementBlock641 } from \"vue\";\nvar _hoisted_1642 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2641 = /* @__PURE__ */ _createElementVNode631(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128.896 736H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v96h164.544a32 32 0 0 1 31.616 27.136l54.144 352A32 32 0 0 1 922.688 736h-91.52a144 144 0 1 1-286.272 0H415.104a144 144 0 1 1-286.272 0zm23.36-64a143.872 143.872 0 0 1 239.488 0H568.32c17.088-25.6 42.24-45.376 71.744-55.808V256H128v416h24.256zm655.488 0h77.632l-19.648-128H704v64.896A144 144 0 0 1 807.744 672zm48.128-192-14.72-96H704v96h151.872zM688 832a80 80 0 1 0 0-160 80 80 0 0 0 0 160zm-416 0a80 80 0 1 0 0-160 80 80 0 0 0 0 160z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3631 = [\n  _hoisted_2641\n];\nfunction _sfc_render641(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock641(), _createElementBlock641(\"svg\", _hoisted_1642, _hoisted_3631);\n}\nvar van_default = /* @__PURE__ */ export_helper_default(van_vue_vue_type_script_lang_default, [[\"render\", _sfc_render641], [\"__file\", \"van.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\video-camera-filled.vue?vue&type=script&lang.ts\nvar video_camera_filled_vue_vue_type_script_lang_default = {\n  name: \"VideoCameraFilled\"\n};\n\n// src/components/video-camera-filled.vue\nimport { createElementVNode as _createElementVNode632, openBlock as _openBlock642, createElementBlock as _createElementBlock642 } from \"vue\";\nvar _hoisted_1643 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2642 = /* @__PURE__ */ _createElementVNode632(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m768 576 192-64v320l-192-64v96a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V480a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v96zM192 768v64h384v-64H192zm192-480a160 160 0 0 1 320 0 160 160 0 0 1-320 0zm64 0a96 96 0 1 0 192.064-.064A96 96 0 0 0 448 288zm-320 32a128 128 0 1 1 256.064.064A128 128 0 0 1 128 320zm64 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3632 = [\n  _hoisted_2642\n];\nfunction _sfc_render642(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock642(), _createElementBlock642(\"svg\", _hoisted_1643, _hoisted_3632);\n}\nvar video_camera_filled_default = /* @__PURE__ */ export_helper_default(video_camera_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render642], [\"__file\", \"video-camera-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\video-camera.vue?vue&type=script&lang.ts\nvar video_camera_vue_vue_type_script_lang_default = {\n  name: \"VideoCamera\"\n};\n\n// src/components/video-camera.vue\nimport { createElementVNode as _createElementVNode633, openBlock as _openBlock643, createElementBlock as _createElementBlock643 } from \"vue\";\nvar _hoisted_1644 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2643 = /* @__PURE__ */ _createElementVNode633(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 768V256H128v512h576zm64-416 192-96v512l-192-96v128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v128zm0 71.552v176.896l128 64V359.552l-128 64zM192 320h192v64H192v-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3633 = [\n  _hoisted_2643\n];\nfunction _sfc_render643(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock643(), _createElementBlock643(\"svg\", _hoisted_1644, _hoisted_3633);\n}\nvar video_camera_default = /* @__PURE__ */ export_helper_default(video_camera_vue_vue_type_script_lang_default, [[\"render\", _sfc_render643], [\"__file\", \"video-camera.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\video-pause.vue?vue&type=script&lang.ts\nvar video_pause_vue_vue_type_script_lang_default = {\n  name: \"VideoPause\"\n};\n\n// src/components/video-pause.vue\nimport { createElementVNode as _createElementVNode634, openBlock as _openBlock644, createElementBlock as _createElementBlock644 } from \"vue\";\nvar _hoisted_1645 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2644 = /* @__PURE__ */ _createElementVNode634(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768zm-96-544q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32zm192 0q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3634 = [\n  _hoisted_2644\n];\nfunction _sfc_render644(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock644(), _createElementBlock644(\"svg\", _hoisted_1645, _hoisted_3634);\n}\nvar video_pause_default = /* @__PURE__ */ export_helper_default(video_pause_vue_vue_type_script_lang_default, [[\"render\", _sfc_render644], [\"__file\", \"video-pause.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\video-play.vue?vue&type=script&lang.ts\nvar video_play_vue_vue_type_script_lang_default = {\n  name: \"VideoPlay\"\n};\n\n// src/components/video-play.vue\nimport { createElementVNode as _createElementVNode635, openBlock as _openBlock645, createElementBlock as _createElementBlock645 } from \"vue\";\nvar _hoisted_1646 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2645 = /* @__PURE__ */ _createElementVNode635(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768zm-48-247.616L668.608 512 464 375.616v272.768zm10.624-342.656 249.472 166.336a48 48 0 0 1 0 79.872L474.624 718.272A48 48 0 0 1 400 678.336V345.6a48 48 0 0 1 74.624-39.936z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3635 = [\n  _hoisted_2645\n];\nfunction _sfc_render645(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock645(), _createElementBlock645(\"svg\", _hoisted_1646, _hoisted_3635);\n}\nvar video_play_default = /* @__PURE__ */ export_helper_default(video_play_vue_vue_type_script_lang_default, [[\"render\", _sfc_render645], [\"__file\", \"video-play.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\view.vue?vue&type=script&lang.ts\nvar view_vue_vue_type_script_lang_default = {\n  name: \"View\"\n};\n\n// src/components/view.vue\nimport { createElementVNode as _createElementVNode636, openBlock as _openBlock646, createElementBlock as _createElementBlock646 } from \"vue\";\nvar _hoisted_1647 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2646 = /* @__PURE__ */ _createElementVNode636(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352zm0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448zm0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3636 = [\n  _hoisted_2646\n];\nfunction _sfc_render646(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock646(), _createElementBlock646(\"svg\", _hoisted_1647, _hoisted_3636);\n}\nvar view_default = /* @__PURE__ */ export_helper_default(view_vue_vue_type_script_lang_default, [[\"render\", _sfc_render646], [\"__file\", \"view.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\wallet-filled.vue?vue&type=script&lang.ts\nvar wallet_filled_vue_vue_type_script_lang_default = {\n  name: \"WalletFilled\"\n};\n\n// src/components/wallet-filled.vue\nimport { createElementVNode as _createElementVNode637, openBlock as _openBlock647, createElementBlock as _createElementBlock647 } from \"vue\";\nvar _hoisted_1648 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2647 = /* @__PURE__ */ _createElementVNode637(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M688 512a112 112 0 1 0 0 224h208v160H128V352h768v160H688zm32 160h-32a48 48 0 0 1 0-96h32a48 48 0 0 1 0 96zm-80-544 128 160H384l256-160z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3637 = [\n  _hoisted_2647\n];\nfunction _sfc_render647(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock647(), _createElementBlock647(\"svg\", _hoisted_1648, _hoisted_3637);\n}\nvar wallet_filled_default = /* @__PURE__ */ export_helper_default(wallet_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render647], [\"__file\", \"wallet-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\wallet.vue?vue&type=script&lang.ts\nvar wallet_vue_vue_type_script_lang_default = {\n  name: \"Wallet\"\n};\n\n// src/components/wallet.vue\nimport { createElementVNode as _createElementVNode638, openBlock as _openBlock648, createElementBlock as _createElementBlock648 } from \"vue\";\nvar _hoisted_1649 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2648 = /* @__PURE__ */ _createElementVNode638(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M640 288h-64V128H128v704h384v32a32 32 0 0 0 32 32H96a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h512a32 32 0 0 1 32 32v192z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3638 = /* @__PURE__ */ _createElementVNode638(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M128 320v512h768V320H128zm-32-64h832a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4160 = /* @__PURE__ */ _createElementVNode638(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M704 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_555 = [\n  _hoisted_2648,\n  _hoisted_3638,\n  _hoisted_4160\n];\nfunction _sfc_render648(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock648(), _createElementBlock648(\"svg\", _hoisted_1649, _hoisted_555);\n}\nvar wallet_default = /* @__PURE__ */ export_helper_default(wallet_vue_vue_type_script_lang_default, [[\"render\", _sfc_render648], [\"__file\", \"wallet.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\warn-triangle-filled.vue?vue&type=script&lang.ts\nvar warn_triangle_filled_vue_vue_type_script_lang_default = {\n  name: \"WarnTriangleFilled\"\n};\n\n// src/components/warn-triangle-filled.vue\nimport { createElementVNode as _createElementVNode639, openBlock as _openBlock649, createElementBlock as _createElementBlock649 } from \"vue\";\nvar _hoisted_1650 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  \"xml:space\": \"preserve\",\n  style: { \"enable-background\": \"new 0 0 1024 1024\" },\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2649 = /* @__PURE__ */ _createElementVNode639(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M928.99 755.83 574.6 203.25c-12.89-20.16-36.76-32.58-62.6-32.58s-49.71 12.43-62.6 32.58L95.01 755.83c-12.91 20.12-12.9 44.91.01 65.03 12.92 20.12 36.78 32.51 62.59 32.49h708.78c25.82.01 49.68-12.37 62.59-32.49 12.91-20.12 12.92-44.91.01-65.03zM554.67 768h-85.33v-85.33h85.33V768zm0-426.67v298.66h-85.33V341.32l85.33.01z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3639 = [\n  _hoisted_2649\n];\nfunction _sfc_render649(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock649(), _createElementBlock649(\"svg\", _hoisted_1650, _hoisted_3639);\n}\nvar warn_triangle_filled_default = /* @__PURE__ */ export_helper_default(warn_triangle_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render649], [\"__file\", \"warn-triangle-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\warning-filled.vue?vue&type=script&lang.ts\nvar warning_filled_vue_vue_type_script_lang_default = {\n  name: \"WarningFilled\"\n};\n\n// src/components/warning-filled.vue\nimport { createElementVNode as _createElementVNode640, openBlock as _openBlock650, createElementBlock as _createElementBlock650 } from \"vue\";\nvar _hoisted_1651 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2650 = /* @__PURE__ */ _createElementVNode640(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256zm0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3640 = [\n  _hoisted_2650\n];\nfunction _sfc_render650(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock650(), _createElementBlock650(\"svg\", _hoisted_1651, _hoisted_3640);\n}\nvar warning_filled_default = /* @__PURE__ */ export_helper_default(warning_filled_vue_vue_type_script_lang_default, [[\"render\", _sfc_render650], [\"__file\", \"warning-filled.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\warning.vue?vue&type=script&lang.ts\nvar warning_vue_vue_type_script_lang_default = {\n  name: \"Warning\"\n};\n\n// src/components/warning.vue\nimport { createElementVNode as _createElementVNode641, openBlock as _openBlock651, createElementBlock as _createElementBlock651 } from \"vue\";\nvar _hoisted_1652 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2651 = /* @__PURE__ */ _createElementVNode641(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768zm48-176a48 48 0 1 1-96 0 48 48 0 0 1 96 0zm-48-464a32 32 0 0 1 32 32v288a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3641 = [\n  _hoisted_2651\n];\nfunction _sfc_render651(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock651(), _createElementBlock651(\"svg\", _hoisted_1652, _hoisted_3641);\n}\nvar warning_default = /* @__PURE__ */ export_helper_default(warning_vue_vue_type_script_lang_default, [[\"render\", _sfc_render651], [\"__file\", \"warning.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\watch.vue?vue&type=script&lang.ts\nvar watch_vue_vue_type_script_lang_default = {\n  name: \"Watch\"\n};\n\n// src/components/watch.vue\nimport { createElementVNode as _createElementVNode642, openBlock as _openBlock652, createElementBlock as _createElementBlock652 } from \"vue\";\nvar _hoisted_1653 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2652 = /* @__PURE__ */ _createElementVNode642(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M512 768a256 256 0 1 0 0-512 256 256 0 0 0 0 512zm0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3642 = /* @__PURE__ */ _createElementVNode642(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 352a32 32 0 0 1 32 32v160a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_4161 = /* @__PURE__ */ _createElementVNode642(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M480 512h128q32 0 32 32t-32 32H480q-32 0-32-32t32-32zm128-256V128H416v128h-64V64h320v192h-64zM416 768v128h192V768h64v192H352V768h64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_556 = [\n  _hoisted_2652,\n  _hoisted_3642,\n  _hoisted_4161\n];\nfunction _sfc_render652(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock652(), _createElementBlock652(\"svg\", _hoisted_1653, _hoisted_556);\n}\nvar watch_default = /* @__PURE__ */ export_helper_default(watch_vue_vue_type_script_lang_default, [[\"render\", _sfc_render652], [\"__file\", \"watch.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\watermelon.vue?vue&type=script&lang.ts\nvar watermelon_vue_vue_type_script_lang_default = {\n  name: \"Watermelon\"\n};\n\n// src/components/watermelon.vue\nimport { createElementVNode as _createElementVNode643, openBlock as _openBlock653, createElementBlock as _createElementBlock653 } from \"vue\";\nvar _hoisted_1654 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2653 = /* @__PURE__ */ _createElementVNode643(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m683.072 600.32-43.648 162.816-61.824-16.512 53.248-198.528L576 493.248l-158.4 158.4-45.248-45.248 158.4-158.4-55.616-55.616-198.528 53.248-16.512-61.824 162.816-43.648L282.752 200A384 384 0 0 0 824 741.248L683.072 600.32zm231.552 141.056a448 448 0 1 1-632-632l632 632z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3643 = [\n  _hoisted_2653\n];\nfunction _sfc_render653(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock653(), _createElementBlock653(\"svg\", _hoisted_1654, _hoisted_3643);\n}\nvar watermelon_default = /* @__PURE__ */ export_helper_default(watermelon_vue_vue_type_script_lang_default, [[\"render\", _sfc_render653], [\"__file\", \"watermelon.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-baoxue.vue?vue&type=script&lang.ts\nvar weather_baoxue_vue_vue_type_script_lang_default = {\n  name: \"WeatherBaoxue\"\n};\n\n// src/components/weather-baoxue.vue\nimport { openBlock as _openBlock654, createElementBlock as _createElementBlock654, createStaticVNode as _createStaticVNode11 } from \"vue\";\nvar _hoisted_1655 = {\n  class: \"icon\",\n  viewBox: \"0 0 1820 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2654 = /* @__PURE__ */ _createStaticVNode11('<path fill=\"currentColor\" d=\"M1195.994074 879.407407L1149.155556 852.385185l0.189629-41.434074 47.407408-27.401481c9.671111-5.594074 13.084444-18.204444 7.49037-27.875556s-18.204444-13.084444-27.875556-7.49037l-45.226666 24.177777-43.994074-23.229629v-49.588148c0-11.188148-9.765926-20.385185-20.954074-20.385185s-20.954074 9.197037-20.954074 20.385185v51.863703l-33.564445 21.712593-43.804444-26.358519c-9.671111-5.594074-21.333333-2.275556-26.927408 7.490371-5.594074 9.671111-1.801481 22.281481 7.964445 27.875555l50.631111 29.013334c0.379259 0.18963 0.853333 0.284444 1.327407 0.474074l-0.094815 36.314074c-0.568889 0.284444-1.232593 0.474074-1.801481 0.758518l-50.346667 29.013334c-9.671111 5.594074-13.084444 18.204444-7.49037 27.875555s18.204444 13.084444 27.875555 7.490371l50.346667-29.013334c1.801481-1.137778 3.318519-2.37037 4.740741-3.887407l25.694815 16.497778c-0.758519 2.180741-4.361481 4.456296-4.361482 7.016296v58.121481c0 11.188148 9.765926 20.385185 20.954074 20.385186s20.954074-9.197037 20.954074-20.385186v-58.121481c0-1.517037 2.37037-2.939259 1.991111-4.266667l30.72-16.971852c1.232593 1.232593 3.223704 2.275556 4.740741 3.223704l50.631111 29.013334c9.671111 5.594074 22.376296 2.275556 27.970371-7.490371 5.594074-9.576296 2.465185-22.186667-7.395556-27.780741z\"></path><path fill=\"currentColor\" d=\"M1068.847407 824.035556m-22.945185 0a22.945185 22.945185 0 1 0 45.890371 0 22.945185 22.945185 0 1 0-45.890371 0Z\"></path><path fill=\"currentColor\" d=\"M1172.859259 149.807407c-18.014815 0-35.365926 2.654815-51.863703 7.585186-49.114074-67.887407-128.758519-112.260741-219.022223-112.260741-88.462222 0-166.874074 42.761481-216.177777 108.562963-12.136296-2.465185-24.557037-3.887407-37.357037-3.887408-100.693333 0-182.328889 81.635556-182.328889 182.328889s81.635556 182.328889 182.328889 182.328889c21.143704 0 41.339259-3.792593 60.207407-10.429629 49.114074 50.346667 117.57037 81.73037 193.422222 81.73037 78.317037 0 148.48-33.46963 197.878519-86.565926 22.376296 9.765926 47.028148 15.265185 73.007407 15.265185 100.693333 0 182.328889-81.635556 182.328889-182.328889S1273.552593 149.807407 1172.859259 149.807407z\"></path><path fill=\"currentColor\" d=\"M901.878519 589.179259c-73.576296 0-142.506667-28.823704-194.370371-81.161481-19.437037 6.542222-39.253333 9.860741-59.259259 9.860741-102.4 0-185.837037-83.342222-185.837037-185.837038s83.342222-185.837037 185.837037-185.837037c12.041481 0 24.082963 1.232593 36.02963 3.508149C736.616296 81.066667 815.786667 41.718519 901.878519 41.718519c86.565926 0 168.77037 41.718519 220.254814 111.691851 16.592593-4.740741 33.564444-7.111111 50.536297-7.111111 102.4 0 185.837037 83.342222 185.837037 185.837037s-83.342222 185.837037-185.742223 185.837037c-24.936296 0-49.114074-4.93037-72.059259-14.601481-51.674074 54.518519-124.017778 85.807407-198.826666 85.807407z m-192.474075-89.125926l1.517037 1.611852c50.725926 51.958519 118.518519 80.687407 190.957038 80.687408 74.808889 0 144.213333-30.435556 195.413333-85.522963l1.706667-1.801482 2.18074 1.042963c22.755556 9.955556 46.933333 14.980741 71.585185 14.980741 98.607407 0 178.915556-80.213333 178.915556-178.915556s-80.213333-178.915556-178.915556-178.915555c-17.066667 0-34.228148 2.465185-50.915555 7.49037l-2.275556 0.663704-1.422222-1.991111c-50.346667-69.499259-131.128889-110.933333-216.272592-110.933334-84.574815 0.18963-162.322963 39.253333-213.333334 107.330371l-1.327407 1.801481-2.085926-0.379259c-12.136296-2.465185-24.462222-3.792593-36.693333-3.792593-98.607407 0-178.915556 80.213333-178.915556 178.915556S549.641481 511.051852 648.343704 511.051852c19.911111 0 39.727407-3.413333 59.069629-10.24l1.991111-0.758519z\"></path><path fill=\"currentColor\" d=\"M783.36 770.275556l-24.462222-22.471112 5.688889-24.936296 32.237037-10.145185c6.637037-2.085926 10.334815-9.197037 8.154074-15.834074-2.085926-6.637037-9.197037-10.334815-15.834074-8.154074l-28.634074 8.912592-21.522963-19.531851 6.731852-29.771852c1.517037-6.826667-2.465185-13.463704-9.291852-14.980741s-13.179259 2.844444-14.696297 9.576296l-7.016296 31.194074-25.6 7.964445-24.082963-22.091852c-5.12-4.740741-13.084444-4.361481-17.825185 0.663704-4.740741 5.12-4.361481 13.084444 0.663704 17.825185l26.358518 24.177778c0.18963 0.18963 0.379259 0.284444 0.568889 0.474074l-5.025185 21.807407c-0.379259 0.094815-0.758519 0.094815-1.232593 0.284445L634.311111 735.952593c-6.637037 2.085926-10.334815 9.197037-8.154074 15.834074 2.085926 6.637037 9.197037 10.334815 15.834074 8.154074l34.228148-10.714074c1.232593-0.379259 2.275556-1.042963 3.318519-1.706667l15.834074 13.937778c-0.758519 1.232593-0.758519 2.654815-1.137778 4.171852l-7.774815 34.891851c-1.517037 6.826667 2.465185 13.463704 9.291852 14.980741s13.179259-2.844444 14.696296-9.576296l7.774815-34.891852c0.18963-0.853333-0.094815-1.896296-0.094815-2.654815l19.816297-6.257778c0.568889 0.853333 1.137778 1.706667 1.896296 2.465186l26.263704 24.177777c5.12 4.740741 13.084444 4.266667 17.825185-0.758518 4.835556-5.025185 4.456296-12.98963-0.568889-17.73037z\"></path><path fill=\"currentColor\" d=\"M714.24 719.928889m-14.127407 0a14.127407 14.127407 0 1 0 28.254814 0 14.127407 14.127407 0 1 0-28.254814 0Z\"></path>', 6), _hoisted_84 = [\n  _hoisted_2654\n];\nfunction _sfc_render654(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock654(), _createElementBlock654(\"svg\", _hoisted_1655, _hoisted_84);\n}\nvar weather_baoxue_default = /* @__PURE__ */ export_helper_default(weather_baoxue_vue_vue_type_script_lang_default, [[\"render\", _sfc_render654], [\"__file\", \"weather-baoxue.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-baoyu.vue?vue&type=script&lang.ts\nvar weather_baoyu_vue_vue_type_script_lang_default = {\n  name: \"WeatherBaoyu\"\n};\n\n// src/components/weather-baoyu.vue\nimport { openBlock as _openBlock655, createElementBlock as _createElementBlock655, createStaticVNode as _createStaticVNode12 } from \"vue\";\nvar _hoisted_1656 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2655 = /* @__PURE__ */ _createStaticVNode12('<path fill=\"currentColor\" d=\"M419.8 762.7c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M364.6 821.4c-32.4 0-58.7-26.3-58.7-58.7 0-23.8 30.5-73.9 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0 18.2 27.7 48.6 77.8 48.6 101.6 0 32.4-26.3 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8 28.5 0 51.8-23.2 51.8-51.8 0-22.8-33.2-76-47.5-97.8-1-1.5-2.6-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M714.7 867.9c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M659.4 926.6c-32.4 0-58.7-26.3-58.7-58.7 0-23.8 30.5-73.9 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0C687.6 794 718 844.1 718 867.9c0.1 32.4-26.2 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8 28.5 0 51.8-23.2 51.8-51.8 0-15.8-17.7-52.4-47.5-97.8-0.9-1.5-2.5-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M774.4 205.5c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.6 0-166.9 42.8-216.3 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.4 81.6-182.4 182.4 0 100.7 81.6 182.4 182.4 182.4 21.1 0 41.3-3.8 60.2-10.4 49.1 50.4 117.6 81.7 193.5 81.7 78.3 0 148.6-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.4-81.6 182.4-182.4 0-100.7-81.7-182.4-182.4-182.4z\"></path><path fill=\"currentColor\" d=\"M503.5 645c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9C147.3 573.7 64 490.3 64 387.9s83.4-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.8 16.6-4.7 33.6-7.1 50.6-7.1 102.5 0 185.8 83.3 185.8 185.8s-83.4 185.8-185.8 185.8c-24.9 0-49.2-4.9-72.1-14.6-52.5 55.4-123 85.9-198.9 85.9z m-192.6-89.1l1.5 1.6c50.7 52 118.6 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l1.7-1.8 2.2 1c22.8 10 46.9 15 71.6 15 98.7 0 178.9-80.3 178.9-178.9 0-98.6-80.3-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-2.3 0.7-1.4-2c-50.2-69.4-131-110.9-216.2-110.9-84.6 0-162.4 39.1-213.5 107.2l-1.3 1.8-2.2-0.5c-12.1-2.5-24.5-3.8-36.7-3.8-98.7 0-178.9 80.3-178.9 178.9 0 98.7 80.3 178.9 178.9 178.9 19.9 0 39.8-3.4 59.1-10.2l2-0.8z\"></path>', 6), _hoisted_85 = [\n  _hoisted_2655\n];\nfunction _sfc_render655(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock655(), _createElementBlock655(\"svg\", _hoisted_1656, _hoisted_85);\n}\nvar weather_baoyu_default = /* @__PURE__ */ export_helper_default(weather_baoyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render655], [\"__file\", \"weather-baoyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-bingbao.vue?vue&type=script&lang.ts\nvar weather_bingbao_vue_vue_type_script_lang_default = {\n  name: \"WeatherBingbao\"\n};\n\n// src/components/weather-bingbao.vue\nimport { openBlock as _openBlock656, createElementBlock as _createElementBlock656, createStaticVNode as _createStaticVNode13 } from \"vue\";\nvar _hoisted_1657 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2656 = /* @__PURE__ */ _createStaticVNode13('<path fill=\"currentColor\" d=\"M234.2 662.1m-51.8 0a51.8 51.8 0 1 0 103.6 0 51.8 51.8 0 1 0-103.6 0Z\"></path><path fill=\"currentColor\" d=\"M234.2 717.3c-30.4 0-55.2-24.8-55.2-55.2 0-30.4 24.8-55.2 55.2-55.2s55.2 24.8 55.2 55.2c0 30.4-24.7 55.2-55.2 55.2z m0-103.5c-26.6 0-48.3 21.7-48.3 48.3 0 26.6 21.7 48.3 48.3 48.3s48.3-21.7 48.3-48.3c0-26.6-21.6-48.3-48.3-48.3z\"></path><path fill=\"currentColor\" d=\"M510.3 717.3m-51.8 0a51.8 51.8 0 1 0 103.6 0 51.8 51.8 0 1 0-103.6 0Z\"></path><path fill=\"currentColor\" d=\"M510.3 772.5c-30.4 0-55.2-24.8-55.2-55.2 0-30.4 24.8-55.2 55.2-55.2s55.2 24.8 55.2 55.2c0 30.4-24.8 55.2-55.2 55.2z m0-103.5c-26.6 0-48.3 21.7-48.3 48.3s21.7 48.3 48.3 48.3c26.6 0 48.3-21.7 48.3-48.3S536.9 669 510.3 669z\"></path><path fill=\"currentColor\" d=\"M786.3 662.1m-51.8 0a51.8 51.8 0 1 0 103.6 0 51.8 51.8 0 1 0-103.6 0Z\"></path><path fill=\"currentColor\" d=\"M786.3 717.3c-30.4 0-55.2-24.8-55.2-55.2 0-30.4 24.8-55.2 55.2-55.2 30.4 0 55.2 24.8 55.2 55.2 0 30.4-24.8 55.2-55.2 55.2z m0-103.5c-26.6 0-48.3 21.7-48.3 48.3 0 26.6 21.7 48.3 48.3 48.3s48.3-21.7 48.3-48.3c0-26.6-21.7-48.3-48.3-48.3z\"></path><path fill=\"currentColor\" d=\"M675.9 882.9m-51.8 0a51.8 51.8 0 1 0 103.6 0 51.8 51.8 0 1 0-103.6 0Z\"></path><path fill=\"currentColor\" d=\"M675.9 938.1c-30.4 0-55.2-24.8-55.2-55.2 0-30.4 24.8-55.2 55.2-55.2 30.4 0 55.2 24.8 55.2 55.2 0 30.5-24.8 55.2-55.2 55.2z m0-103.5c-26.6 0-48.3 21.7-48.3 48.3s21.7 48.3 48.3 48.3 48.3-21.7 48.3-48.3-21.7-48.3-48.3-48.3z\"></path><path fill=\"currentColor\" d=\"M330.9 882.9m-51.8 0a51.8 51.8 0 1 0 103.6 0 51.8 51.8 0 1 0-103.6 0Z\"></path><path fill=\"currentColor\" d=\"M330.9 938.1c-30.4 0-55.2-24.8-55.2-55.2 0-30.4 24.8-55.2 55.2-55.2 30.4 0 55.2 24.8 55.2 55.2 0 30.5-24.8 55.2-55.2 55.2z m0-103.5c-26.6 0-48.3 21.7-48.3 48.3s21.7 48.3 48.3 48.3c26.6 0 48.3-21.7 48.3-48.3s-21.7-48.3-48.3-48.3z\"></path><path fill=\"currentColor\" d=\"M503.4 337.7m-228.9 0a228.9 228.9 0 1 0 457.8 0 228.9 228.9 0 1 0-457.8 0Z\"></path><path fill=\"currentColor\" d=\"M774.2 354.4m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M249.8 354.4m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.2 172.1c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.5 0-166.9 42.8-216.2 108.5-12.1-2.5-24.6-3.9-37.4-3.9C149 172 67.4 253.6 67.4 354.3c0 100.7 81.6 182.3 182.3 182.3 21.1 0 41.3-3.8 60.2-10.4C359 576.7 427.5 608 503.4 608c78.3 0 148.5-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.3-81.6 182.3-182.3-0.1-100.7-81.7-182.3-182.4-182.3z m0 313.1c-29 0-55.7-9.6-77.4-25.5-40.5 64.2-111.9 107-193.5 107-75.3 0-141.9-36.5-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.5 0-138.6-62-138.6-138.6 0-76.5 62-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.7 200-117.7 91.6 0 170.3 53.9 206.9 131.5 18.9-10.6 40.7-16.8 63.9-16.8 72.2 0 130.8 58.5 130.8 130.8 0.2 72.1-58.3 130.7-130.6 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 611.5c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9C147.3 540.2 64 456.8 64 354.4s83.3-185.7 185.7-185.7c12 0 24.1 1.2 36 3.5C338.1 103.4 417.3 64 503.4 64c86.6 0 168.7 41.7 220.3 111.7 16.6-4.7 33.6-7.1 50.5-7.1C876.7 168.7 960 252 960 354.4s-83.3 185.7-185.7 185.7c-24.9 0-49.1-4.9-72.1-14.6-52.4 55.5-122.9 86-198.8 86z m-194.6-88.4l3.6 0.8c50.7 52 118.5 80.6 190.9 80.6 74.8 0 144.1-30.4 195.4-85.5l3.9-0.8c22.8 10 46.8 15 71.6 15 98.6 0 178.8-80.2 178.8-178.8 0-98.6-80.2-178.8-178.8-178.8-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3C669.3 112.4 588.5 71 503.3 71 418.8 70.9 341 110 290 178.1l-3.5 1.3c-12.1-2.5-24.4-3.8-36.7-3.8-98.6 0-178.8 80.2-178.8 178.8 0 98.6 80.2 178.8 178.8 178.8 19.8 0.1 39.7-3.4 59-10.1z m194.6 47c-73 0-140.1-33.4-184.6-91.6-21.2 11.8-44.9 18-69 18-78.3 0-142-63.7-142-142s63.7-142 142-142c18 0 35.5 3.3 52.1 9.9 41.4-72.1 118.4-116.8 201.5-116.8 88.2 0 169.6 51 208.5 130.2 19.2-10.1 40.7-15.4 62.4-15.4 74 0 134.2 60.2 134.2 134.2s-60.2 134.2-134.2 134.2c-27.5 0-53.8-8.3-76.4-24.1-43.3 66-115.7 105.4-194.5 105.4zM318 470.9l4.5 0.9c43.1 58 109 91.3 180.9 91.3 77.7 0 148.9-39.4 190.5-105.4l5-0.9c22.1 16.3 48.1 24.9 75.3 24.9 70.2 0 127.3-57.1 127.3-127.3s-57.1-127.3-127.3-127.3c-21.7 0-43.3 5.6-62.2 16.3l-4.8-1.5c-37.1-78.7-117.1-129.6-203.8-129.6-81.7 0-157.2 44.4-197 116l-4.3 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.1 60.6-135.1 135.1s60.6 135.1 135.1 135.1c23.8 0.1 47.4-6.4 68.2-18.6z\"></path><path fill=\"currentColor\" d=\"M710.3 240.4c-39.9 22.4-66.8 65-66.8 114 0 43.2 21.1 81.4 53.4 105.2 22.3-35.3 35.4-77 35.4-121.9 0-34.8-8.1-67.7-22-97.3z\"></path><path fill=\"currentColor\" d=\"M388.4 354.4c0-57.5-35.1-106.9-85-127.8-18.3 32.9-28.9 70.8-28.9 111.1 0 51.1 16.9 98.1 45.2 136.2 41-24 68.7-68.5 68.7-119.5z\"></path>', 17), _hoisted_1910 = [\n  _hoisted_2656\n];\nfunction _sfc_render656(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock656(), _createElementBlock656(\"svg\", _hoisted_1657, _hoisted_1910);\n}\nvar weather_bingbao_default = /* @__PURE__ */ export_helper_default(weather_bingbao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render656], [\"__file\", \"weather-bingbao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-dabaoxue.vue?vue&type=script&lang.ts\nvar weather_dabaoxue_vue_vue_type_script_lang_default = {\n  name: \"WeatherDabaoxue\"\n};\n\n// src/components/weather-dabaoxue.vue\nimport { openBlock as _openBlock657, createElementBlock as _createElementBlock657, createStaticVNode as _createStaticVNode14 } from \"vue\";\nvar _hoisted_1658 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2657 = /* @__PURE__ */ _createStaticVNode14('<path fill=\"currentColor\" d=\"M774.6 177.3c-18.1 0-35.4 2.7-51.9 7.6C673.6 117 593.9 72.6 503.6 72.6c-88.6 0-166.9 42.8-216.3 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.4 81.6-182.4 182.4 0 100.7 81.6 182.4 182.4 182.4 21.1 0 41.3-3.8 60.2-10.4 49.1 50.4 117.6 81.7 193.5 81.7 78.3 0 148.6-33.5 198-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.4-81.6 182.4-182.4 0-100.7-81.7-182.4-182.4-182.4z\"></path><path fill=\"currentColor\" d=\"M503.6 616.8c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.5-39.3 9.9-59.3 9.9-102.5 0-185.8-83.4-185.8-185.8s83.4-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.8 16.6-4.7 33.6-7.1 50.5-7.1 102.5 0 185.8 83.4 185.8 185.8S877 545.5 774.6 545.5c-24.9 0-49.2-4.9-72.1-14.6-51.7 54.6-124.1 85.9-198.9 85.9z m-192.5-89.1l1.5 1.6c50.7 52 118.6 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l1.7-1.8 2.3 1c22.8 10 46.9 15 71.6 15 98.7 0 178.9-80.3 178.9-178.9s-80.3-178.9-178.9-178.9c-17.1 0-34.2 2.5-50.9 7.5l-2.3 0.7-1.4-2C669.8 117.7 589 76.2 503.7 76.2c-84.6 0-162.4 39.1-213.5 107.2l-1.3 1.8-2.1-0.4c-12.1-2.5-24.5-3.8-36.7-3.8C151.3 180.8 71 261 71 359.7s80.3 178.9 178.9 178.9c19.9 0 39.8-3.4 59.1-10.2l2.1-0.7z\"></path><path fill=\"currentColor\" d=\"M632.2 851.9l-46.8-27 0.2-41.4 47.5-27.4c9.7-5.6 13.1-18.2 7.5-27.9s-18.2-13.1-27.9-7.5l-45.4 24.2-44.3-23.2v-49.6c0-11.2-9.8-20.4-21-20.4s-21 9.2-21 20.4V724l-33.4 21.7-43.7-26.5c-9.7-5.6-21.2-2.3-26.9 7.5-5.6 9.7-1.7 22.3 8 27.9l50.6 29.1c0.4 0.2 0.9 0.3 1.3 0.5l-0.1 36.3c-0.6 0.3-1.2 0.5-1.8 0.8l-50.3 29.1c-9.7 5.6-13.1 18.2-7.5 27.9s18.2 13.1 27.9 7.5l50.3-29.1c1.8-1.1 3.3-2.4 4.7-3.9l25.6 16.5c-0.8 2.2-4.6 4.5-4.6 7v58.1c0 11.2 9.8 20.4 21 20.4s21-9.2 21-20.4v-58.1c0-1.5 2.5-2.9 2.2-4.3l30.8-17c1.2 1.2 3.2 2.3 4.8 3.2l50.7 29.1c9.7 5.6 22.4 2.3 28.1-7.5 5.4-9.8 2.2-22.3-7.5-27.9z\"></path><path fill=\"currentColor\" d=\"M504.9 796.5m-22.9 0a22.9 22.9 0 1 0 45.8 0 22.9 22.9 0 1 0-45.8 0Z\"></path><path fill=\"currentColor\" d=\"M274.5 756.5L250 734l5.7-24.9 32.2-10.1c6.6-2.1 10.3-9.2 8.2-15.8-2.1-6.6-9.2-10.3-15.8-8.2l-28.6 8.9-21.5-19.5 6.7-29.8c1.5-6.8-2.5-13.5-9.3-15-6.8-1.5-13.2 2.8-14.7 9.6l-7 31.2-25.7 8-24.1-22.1c-5.1-4.7-13.1-4.4-17.8 0.7-4.7 5.1-4.4 13.1 0.7 17.8l26.4 24.2c0.2 0.2 0.4 0.3 0.6 0.5l-5 21.8c-0.4 0.1-0.8 0.1-1.2 0.3l-34.2 10.7c-6.6 2.1-10.3 9.2-8.2 15.8 2.1 6.6 9.2 10.3 15.8 8.2l34.2-10.7c1.2-0.4 2.3-1 3.3-1.7l15.8 13.9c-0.8 1.2-0.8 2.7-1.1 4.2l-7.8 35c-1.5 6.8 2.5 13.5 9.3 15s13.2-2.8 14.7-9.6l7.8-35c0.2-0.9-0.1-1.9-0.1-2.7l19.8-6.3c0.6 0.9 1.1 1.7 1.9 2.5l26.3 24.2c5.1 4.7 13.1 4.3 17.8-0.8 4.9-5.1 4.5-13.1-0.6-17.8z\"></path><path fill=\"currentColor\" d=\"M205.4 706.1m-14.1 0a14.1 14.1 0 1 0 28.2 0 14.1 14.1 0 1 0-28.2 0Z\"></path><path fill=\"currentColor\" d=\"M893 788.2l-30.4-13.7-2.4-25.4 27.4-19.7c5.6-4 6.9-12 2.9-17.6-4-5.6-12-6.9-17.6-2.9l-24.3 17.4-26.6-11.7-3.1-30.4c-0.7-6.9-6.6-12-13.5-11.3-6.9 0.7-11.7 6.9-11 13.8l3.2 31.8-21.8 15.6-29.8-13.4c-6.3-2.8-13.8 0-16.7 6.3-2.8 6.3 0 13.8 6.3 16.7l32.6 14.7c0.2 0.1 0.5 0.2 0.7 0.3L771 781c-0.4 0.2-0.8 0.4-1.1 0.6L741 802.5c-5.6 4-6.9 12-2.9 17.6 4 5.6 12 6.9 17.6 2.9l29.1-20.9c1.1-0.8 1.9-1.7 2.6-2.7l19.4 8.3c-0.4 1.4 0.1 2.8 0.3 4.3l3.6 35.6c0.7 6.9 6.6 12 13.5 11.3 6.9-0.7 11.7-6.9 11-13.8l-3.6-35.6c-0.1-0.9-0.7-1.7-0.9-2.6l16.8-12.2c0.8 0.7 1.6 1.3 2.6 1.7l32.6 14.7c6.3 2.8 13.8 0 16.6-6.3 2.9-6.3 0-13.8-6.3-16.6z\"></path><path fill=\"currentColor\" d=\"M811.5 762.1m-14.1 0a14.1 14.1 0 1 0 28.2 0 14.1 14.1 0 1 0-28.2 0Z\"></path>', 8), _hoisted_102 = [\n  _hoisted_2657\n];\nfunction _sfc_render657(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock657(), _createElementBlock657(\"svg\", _hoisted_1658, _hoisted_102);\n}\nvar weather_dabaoxue_default = /* @__PURE__ */ export_helper_default(weather_dabaoxue_vue_vue_type_script_lang_default, [[\"render\", _sfc_render657], [\"__file\", \"weather-dabaoxue.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-dabaoyu.vue?vue&type=script&lang.ts\nvar weather_dabaoyu_vue_vue_type_script_lang_default = {\n  name: \"WeatherDabaoyu\"\n};\n\n// src/components/weather-dabaoyu.vue\nimport { openBlock as _openBlock658, createElementBlock as _createElementBlock658, createStaticVNode as _createStaticVNode15 } from \"vue\";\nvar _hoisted_1659 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2658 = /* @__PURE__ */ _createStaticVNode15('<path fill=\"currentColor\" d=\"M344.9 720.8c0 30.5-24.7 55.2-55.2 55.2s-55.2-24.7-55.2-55.2c0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.8 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M289.7 779.4c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.4-73.8 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0 18.2 27.7 48.6 77.8 48.6 101.6 0.1 32.4-26.2 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-29.7 45.4-47.5 82-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8 28.5 0 51.8-23.2 51.8-51.8 0-22.8-33.2-76-47.5-97.8-1-1.4-2.5-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M568 891.6c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.8 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M512.8 950.2c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.4-73.8 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0 18.2 27.7 48.6 77.8 48.6 101.6 0.1 32.4-26.2 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-29.7 45.4-47.5 82-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8s51.8-23.2 51.8-51.8c0-22.8-33.2-76-47.5-97.8-1-1.4-2.5-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M783.7 834.6c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 15 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M728.5 893.3c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.4-73.8 48.6-101.6 4.4-6.8 15.6-6.8 20.1 0 18.1 27.7 48.6 77.8 48.6 101.6 0.1 32.4-26.2 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8s51.8-23.2 51.8-51.8c0-15.8-17.7-52.4-47.5-97.8-1-1.4-2.5-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M774.3 181.9c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.5 0-166.9 42.8-216.2 108.5-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.3 81.6-182.3 182.3 0 100.7 81.6 182.3 182.3 182.3 21.1 0 41.3-3.8 60.2-10.4 49.1 50.3 117.6 81.7 193.4 81.7 78.3 0 148.5-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.3-81.6 182.3-182.3 0-100.6-81.6-182.2-182.3-182.2z\"></path><path fill=\"currentColor\" d=\"M503.4 621.3c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9C147.4 550 64 466.6 64 364.2s83.3-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.6-108.2 86.6 0 168.8 41.7 220.3 111.7 16.6-4.7 33.6-7.1 50.5-7.1 102.4 0 185.8 83.3 185.8 185.8S876.7 550 774.3 550c-24.9 0-49.1-4.9-72.1-14.6-52.4 55.4-122.9 85.9-198.8 85.9z m-192.5-89.2l1.5 1.6c50.7 52 118.5 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l1.7-1.8 2.3 1c22.8 10 46.8 15 71.6 15 98.6 0 178.9-80.2 178.9-178.9 0-98.6-80.2-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-2.3 0.7-1.4-2c-50.2-69.4-131-110.8-216.2-110.8-84.6 0-162.4 39.1-213.4 107.2l-1.3 1.8-2.1-0.5c-12.1-2.5-24.5-3.8-36.7-3.8-98.6 0-178.9 80.2-178.9 178.9 0 98.6 80.2 178.9 178.9 178.9 19.9 0 39.7-3.4 59.1-10.2l1.7-0.9z\"></path>', 8), _hoisted_103 = [\n  _hoisted_2658\n];\nfunction _sfc_render658(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock658(), _createElementBlock658(\"svg\", _hoisted_1659, _hoisted_103);\n}\nvar weather_dabaoyu_default = /* @__PURE__ */ export_helper_default(weather_dabaoyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render658], [\"__file\", \"weather-dabaoyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-dafeng.vue?vue&type=script&lang.ts\nvar weather_dafeng_vue_vue_type_script_lang_default = {\n  name: \"WeatherDafeng\"\n};\n\n// src/components/weather-dafeng.vue\nimport { openBlock as _openBlock659, createElementBlock as _createElementBlock659, createStaticVNode as _createStaticVNode16 } from \"vue\";\nvar _hoisted_1660 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2659 = /* @__PURE__ */ _createStaticVNode16('<path fill=\"currentColor\" d=\"M627.7 301.9c0-54.4-44.1-98.5-98.5-98.5s-98.5 49.7-98.5 104.1c0 17.4 4.6 35.5 12.5 53.5H101.3C87.4 361 76 372.6 76 386.5S87.4 412 101.3 412H533c1 0 1.9-6 2.9-6.1 51.2-3.4 91.8-51.8 91.8-104z\"></path><path fill=\"currentColor\" d=\"M529.2 411h-428c-18.6 0-33.7-15.4-33.7-34s15.1-34 33.7-34h329.1c-5.6-14-8.1-26.8-8.1-40.3 0-59.5 48-107.8 106.9-107.8s106.9 48 106.9 107c0 56-42.9 102.9-97.9 107.5-1.2 0.7-3 1.5-5.3 1.5l-3.6 0.1z m-427.9-50c-9.3 0-16.8 7.3-16.8 16.6s7.5 16.7 16.8 16.7h429.6c1-0.6 2.3-1.2 3.9-1.4 47.6-3.2 84.5-43.1 84.5-90.9 0-49.7-40.4-90.1-90.1-90.1s-90.1 40.9-90.1 91.1c0 14.6 3.4 28 11.7 45.7l5.6 12.3H101.3z\"></path><path fill=\"currentColor\" d=\"M745.7 722.3c0 54.4-44.1 98.5-98.5 98.5s-98.5-40.3-98.5-94.7c0-17.4 4.6-28.1 12.5-44.1H118.1c-13.9 0-25.3-12.1-25.3-26s11.4-26 25.3-26H650.9c1 0 1.9-2.9 2.9-2.8 51.3 3.4 91.9 42.9 91.9 95.1z\"></path><path fill=\"currentColor\" d=\"M647.2 829.2c-59 0-106.9-47.8-106.9-107.3 0-13.5 2.5-25.9 8.1-39.9H118.1c-18.6 0-33.7-15.4-33.7-34s15.1-34 33.7-34h535.4l2.6 1.1c54.9 4.3 98 51.1 98 107.3 0.1 59-47.9 106.8-106.9 106.8zM118.1 630c-9.3 0-16.8 7.2-16.8 16.5s7.5 16.5 16.8 16.5h456.4l-5.6 12.4c-8.3 17.6-11.7 31-11.7 45.6 0 50.2 40.4 91.2 90.1 91.2 49.7 0 90.1-40.4 90.1-90 0-47.8-36.9-87.7-84.1-90.8l-2.3-0.2-3-1.2H118.1z\"></path><path fill=\"currentColor\" d=\"M948 436.8c0-54.4-44.1-98.5-98.5-98.5S751 387.5 751 441.9c0 17.4 4.6 36.1 12.5 53.1H118.1c-13.9 0-25.3 11.1-25.3 25s11.4 25 25.3 25H853.2c1 0 1.9-5.1 2.9-5.2 51.3-3.4 91.9-50.8 91.9-103z\"></path><path fill=\"currentColor\" d=\"M849.5 545.9H118.1c-18.6 0-33.7-15.3-33.7-33.9s15.1-34 33.7-34h632.5c-5.6-14-8.1-26.9-8.1-40.4 0-59.5 48-107.9 106.9-107.9s106.9 48 106.9 107c0 56-42.9 102.9-97.9 107.5-1.2 0.7-3 1.5-5.3 1.5l-3.6 0.2zM118.1 495c-9.3 0-16.8 7.7-16.8 17s7.5 16.9 16.8 16.9l733 0.1c1-0.6 2.3-1.1 3.9-1.3 47.6-3.2 84.5-43 84.5-90.9 0-49.7-40.4-90.1-90.1-90.1-49.7 0-90.1 40.9-90.1 91.1 0 14.6 3.4 27.6 11.7 45.3l5.6 11.9H118.1z\"></path>', 6), _hoisted_86 = [\n  _hoisted_2659\n];\nfunction _sfc_render659(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock659(), _createElementBlock659(\"svg\", _hoisted_1660, _hoisted_86);\n}\nvar weather_dafeng_default = /* @__PURE__ */ export_helper_default(weather_dafeng_vue_vue_type_script_lang_default, [[\"render\", _sfc_render659], [\"__file\", \"weather-dafeng.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-daxue.vue?vue&type=script&lang.ts\nvar weather_daxue_vue_vue_type_script_lang_default = {\n  name: \"WeatherDaxue\"\n};\n\n// src/components/weather-daxue.vue\nimport { openBlock as _openBlock660, createElementBlock as _createElementBlock660, createStaticVNode as _createStaticVNode17 } from \"vue\";\nvar _hoisted_1661 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2660 = /* @__PURE__ */ _createStaticVNode17('<path fill=\"currentColor\" d=\"M503.6 370m-228.9 0a228.9 228.9 0 1 0 457.8 0 228.9 228.9 0 1 0-457.8 0Z\"></path><path fill=\"currentColor\" d=\"M774.5 386.7m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M250 386.7m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.5 204.4c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.5 0-166.9 42.8-216.2 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.3 81.6-182.3 182.3C67.7 487.4 149.3 569 250 569c21.1 0 41.3-3.8 60.2-10.4 49.1 50.3 117.6 81.7 193.4 81.7 78.3 0 148.5-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.3-81.6 182.3-182.3 0.1-100.7-81.6-182.3-182.3-182.3z m0 313.1c-29 0-55.7-9.6-77.4-25.5-40.5 64.2-111.9 107-193.5 107-75.3 0-142-36.6-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.7 200-117.7 91.6 0 170.3 53.9 207 131.6 18.9-10.6 40.7-16.8 63.9-16.8 72.2 0 130.8 58.6 130.8 130.8 0.1 72.1-58.4 130.6-130.7 130.6z\"></path><path fill=\"currentColor\" d=\"M503.4 643.8c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9C147.3 572.5 64 489.2 64 386.7S147.3 201 249.7 201c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2C590 96.3 672.1 138 723.7 208c16.6-4.7 33.6-7.1 50.5-7.1C876.7 201 960 284.3 960 386.7s-83.3 185.8-185.8 185.8c-24.9 0-49.1-4.9-72.1-14.6-52.3 55.4-122.8 85.9-198.7 85.9z m-192.5-89.1l1.5 1.6c50.7 52 118.5 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l1.7-1.8 2.2 1c22.8 10 46.9 15 71.6 15 98.6 0 178.9-80.2 178.9-178.9 0-98.6-80.2-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-2.4 0.6-1.4-2c-50.2-69.4-131-110.8-216.2-110.8-84.6 0-162.4 39.1-213.5 107.2l-1.3 1.8-2.2-0.5c-12.1-2.5-24.4-3.8-36.7-3.8-98.6 0-178.9 80.2-178.9 178.9 0 98.6 80.2 178.9 178.9 178.9 19.9 0 39.8-3.4 59.1-10.2l2.1-0.8z m192.5 47.7c-73.1 0-140.2-33.4-184.6-91.7-21.2 11.8-45 18-69 18-78.3 0-142.1-63.7-142.1-142.1s63.7-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.5-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.4 62.4-15.4 74 0 134.2 60.2 134.2 134.2S848.3 521 774.3 521c-27.5 0-53.8-8.3-76.5-24.1-43.2 66.1-115.6 105.5-194.4 105.5zM320.6 501.7l1.8 2.5c43.1 58 109 91.3 180.9 91.3 77.7 0 148.9-39.4 190.6-105.4l2-3.1 3 2.2c22.1 16.3 48.1 24.9 75.4 24.9 70.2 0 127.3-57.1 127.3-127.3s-57.1-127.3-127.3-127.3c-21.7 0-43.3 5.6-62.3 16.3l-3.2 1.8-1.6-3.4c-37.1-78.7-117.1-129.6-203.8-129.6-81.7 0-157.2 44.4-197 116l-1.5 2.7-2.8-1.2c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.2 60.6-135.2 135.2 0 74.5 60.6 135.2 135.2 135.2 23.9 0 47.5-6.4 68.2-18.6l2.6-1.7z\"></path><path fill=\"currentColor\" d=\"M710.6 272.7c-39.9 22.4-66.8 65-66.8 114 0 43.2 21.1 81.4 53.4 105.3 22.3-35.3 35.4-77.1 35.4-121.9 0-34.9-8.1-67.8-22-97.4zM388.6 386.7c0-57.5-35.1-106.9-85-127.8-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2 41.1-24.1 68.7-68.6 68.7-119.6z\"></path><path fill=\"currentColor\" d=\"M274.6 783.5L250.1 761l5.7-24.9L288 726c6.6-2.1 10.3-9.2 8.2-15.8-2.1-6.6-9.2-10.3-15.8-8.2l-28.6 8.9-21.5-19.5 6.7-29.8c1.5-6.8-2.5-13.5-9.3-15-6.8-1.5-13.2 2.8-14.7 9.6l-7 31.2-25.6 8-24.1-22.1c-5.1-4.7-13.1-4.4-17.8 0.7-4.7 5.1-4.4 13.1 0.7 17.8l26.4 24.2c0.2 0.2 0.4 0.3 0.6 0.5l-5 21.8c-0.4 0.1-0.8 0.1-1.2 0.3l-34.2 10.7c-6.6 2.1-10.3 9.2-8.2 15.8 2.1 6.6 9.2 10.3 15.8 8.2l34.2-10.7c1.2-0.4 2.3-1 3.3-1.7l15.8 13.9c-0.8 1.2-0.8 2.7-1.1 4.2l-7.8 35c-1.5 6.8 2.5 13.5 9.3 15s13.2-2.8 14.7-9.6l7.8-35c0.2-0.9-0.1-1.9-0.1-2.7l19.8-6.3c0.6 0.9 1.1 1.7 1.9 2.5l26.3 24.2c5.1 4.7 13.1 4.3 17.8-0.8 4.7-5.1 4.4-13.1-0.7-17.8z\"></path><path fill=\"currentColor\" d=\"M205.5 733.1m-14.1 0a14.1 14.1 0 1 0 28.2 0 14.1 14.1 0 1 0-28.2 0Z\"></path><path fill=\"currentColor\" d=\"M892.9 815.1l-30.4-13.7-2.4-25.4 27.4-19.7c5.6-4 6.9-11.9 2.9-17.6-4-5.6-11.9-6.9-17.6-2.9l-24.3 17.4-26.5-11.6-3.1-30.4c-0.7-6.9-6.6-12-13.5-11.3-6.9 0.7-11.7 6.9-11 13.8l3.2 31.8-21.8 15.6-29.8-13.4c-6.3-2.8-13.8 0-16.7 6.3-2.8 6.3 0 13.8 6.3 16.6l32.6 14.7c0.2 0.1 0.5 0.2 0.7 0.3l2.1 22.3c-0.4 0.2-0.7 0.4-1.1 0.6l-28.9 21c-5.6 4-6.9 11.9-2.9 17.6 4 5.6 11.9 6.9 17.6 2.9l29.1-20.9c1.1-0.8 1.9-1.7 2.6-2.7l19.4 8.3c-0.4 1.4 0.1 2.8 0.3 4.3l3.6 35.6c0.7 6.9 6.6 12 13.5 11.3 6.9-0.7 11.7-6.9 11-13.8l-3.6-35.6c-0.1-0.9-0.7-1.7-0.9-2.6l16.8-12.2c0.8 0.7 1.6 1.3 2.6 1.7l32.6 14.7c6.3 2.8 13.8 0 16.6-6.3 2.8-6.4-0.1-13.8-6.4-16.7z\"></path><path fill=\"currentColor\" d=\"M811.5 789m-14.1 0a14.1 14.1 0 1 0 28.2 0 14.1 14.1 0 1 0-28.2 0Z\"></path><path fill=\"currentColor\" d=\"M572.9 864.1L544 847.6l0.1-25.5 29.2-16.9c6-3.5 8-11.2 4.6-17.2-3.5-6-11.2-8-17.2-4.6l-25.9 14.9-25.3-14.3-0.1-30.6c0-6.9-5.4-12.6-12.3-12.6s-12.3 5.7-12.3 12.6l0.1 32-23.3 13.4-28.3-16.3c-6-3.5-13.8-1.4-17.2 4.6-3.5 6-1.4 13.7 4.6 17.2l31 17.9c0.2 0.1 0.5 0.2 0.7 0.3l-0.1 22.4c-0.4 0.2-0.8 0.3-1.2 0.5l-31 18c-6 3.5-8 11.2-4.6 17.2 3.5 6 11.2 8 17.2 4.6l31-18c1.1-0.7 2.1-1.5 2.9-2.4l18.5 10.1c-0.5 1.4-0.1 2.8-0.1 4.3l0.1 35.8c0 6.9 5.4 12.6 12.3 12.6s12.3-5.7 12.3-12.6l-0.1-35.8c0-0.9-0.5-1.8-0.7-2.6l18-10.5c0.7 0.7 1.5 1.4 2.4 2l31 17.9c6 3.5 13.7 1.4 17.2-4.6 3.5-6.1 1.4-13.8-4.6-17.3z\"></path><path fill=\"currentColor\" d=\"M494.4 830.2m-14.1 0a14.1 14.1 0 1 0 28.2 0 14.1 14.1 0 1 0-28.2 0Z\"></path>', 12), _hoisted_14100 = [\n  _hoisted_2660\n];\nfunction _sfc_render660(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock660(), _createElementBlock660(\"svg\", _hoisted_1661, _hoisted_14100);\n}\nvar weather_daxue_default = /* @__PURE__ */ export_helper_default(weather_daxue_vue_vue_type_script_lang_default, [[\"render\", _sfc_render660], [\"__file\", \"weather-daxue.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-dayu.vue?vue&type=script&lang.ts\nvar weather_dayu_vue_vue_type_script_lang_default = {\n  name: \"WeatherDayu\"\n};\n\n// src/components/weather-dayu.vue\nimport { openBlock as _openBlock661, createElementBlock as _createElementBlock661, createStaticVNode as _createStaticVNode18 } from \"vue\";\nvar _hoisted_1662 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2661 = /* @__PURE__ */ _createStaticVNode18('<path fill=\"currentColor\" d=\"M503.5 341.4m-228.9 0a228.9 228.9 0 1 0 457.8 0 228.9 228.9 0 1 0-457.8 0Z\"></path><path fill=\"currentColor\" d=\"M774.4 358.1m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M249.8 358.1m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.4 175.8c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.6 0-166.9 42.8-216.2 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.3 81.6-182.3 182.3 0 100.7 81.6 182.3 182.3 182.3 21.1 0 41.3-3.8 60.2-10.4 49.1 50.4 117.6 81.7 193.5 81.7 78.3 0 148.6-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.3-81.6 182.3-182.3-0.1-100.7-81.7-182.3-182.4-182.3z m0 313.1c-29 0-55.7-9.6-77.4-25.5-40.6 64.2-112 107-193.5 107-75.3 0-142-36.6-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.8 200.1-117.8 91.6 0 170.4 53.9 207 131.6 18.9-10.6 40.7-16.8 64-16.8 72.2 0 130.8 58.6 130.8 130.8-0.1 72.2-58.7 130.7-130.9 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 615.2c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9-102.4 0-185.8-83.3-185.8-185.8s83.3-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5C338.1 107 417.3 67.6 503.4 67.6c86.6 0 168.8 41.7 220.4 111.7 16.6-4.7 33.6-7.1 50.5-7.1 102.4 0 185.8 83.3 185.8 185.8s-83.3 185.8-185.8 185.8c-24.9 0-49.2-4.9-72.1-14.6-52.4 55.5-122.9 86-198.8 86z m-194.6-88.4l3.6 0.8c50.7 52 118.6 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l3.9-0.8c22.8 10 46.9 15 71.6 15 98.6 0 178.9-80.2 178.9-178.9 0-98.6-80.2-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3C669.4 116 588.6 74.6 503.4 74.6c-84.6 0-162.4 39.1-213.5 107.2l-3.5 1.3c-12.1-2.5-24.4-3.8-36.7-3.8-98.6 0-178.9 80.2-178.9 178.9 0 98.6 80.2 178.9 178.9 178.9 19.9-0.1 39.8-3.5 59.1-10.3z m194.6 47c-73.1 0-140.2-33.4-184.6-91.7-21.2 11.8-45 18-69 18-78.3 0-142.1-63.7-142.1-142.1s63.7-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.6-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.4 62.4-15.4 74 0 134.2 60.2 134.2 134.2s-60.2 134.2-134.2 134.2c-27.5 0-53.8-8.3-76.5-24.1-43.3 66.4-115.7 105.7-194.5 105.7z m-185.5-99.1l4.5 0.9c43.1 58 109.1 91.3 180.9 91.3 77.7 0 148.9-39.4 190.6-105.4l5-0.9c22.1 16.3 48.1 24.9 75.4 24.9 70.2 0 127.3-57.1 127.3-127.3s-57.1-127.3-127.3-127.3c-21.7 0-43.3 5.6-62.3 16.3l-4.8-1.5C670.1 166.8 590.1 116 503.4 116c-81.7 0-157.2 44.4-197 116l-4.3 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.2 60.6-135.2 135.2 0 74.5 60.6 135.2 135.2 135.2 23.8-0.1 47.4-6.5 68.1-18.7z\"></path><path fill=\"currentColor\" d=\"M710.4 244.1c-39.9 22.4-66.8 65-66.8 114 0 43.2 21.1 81.4 53.4 105.3 22.3-35.3 35.4-77.1 35.4-121.9 0-34.9-8-67.8-22-97.4z\"></path><path fill=\"currentColor\" d=\"M388.4 358.1c0-57.6-35.1-106.9-85-127.9-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2 41.1-24 68.7-68.5 68.7-119.5z\"></path><path fill=\"currentColor\" d=\"M348.6 726.8c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 15 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M293.4 785.5c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.5-73.8 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0C321.5 652.9 352 703 352 726.8c0.1 32.4-26.2 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8 28.5 0 51.8-23.2 51.8-51.8 0-22.8-33.2-76-47.5-97.8-1-1.4-2.5-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M571.8 897.7c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.8 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M516.6 956.4c-32.3 0-58.7-26.3-58.7-58.7 0-23.7 30.4-73.8 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0 18.1 27.7 48.6 77.8 48.6 101.6 0 32.3-26.3 58.7-58.6 58.7z m0-158.9c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8s51.8-23.2 51.8-51.8c0-22.8-33.2-76-47.5-97.8-1-1.4-2.6-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M787.5 840.7c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M732.3 899.4c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.5-73.8 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0C760.5 766.9 791 817 791 840.7c0 32.4-26.3 58.7-58.7 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8s51.8-23.2 51.8-51.8c0-15.8-17.7-52.4-47.5-97.8-1-1.5-2.5-2.3-4.3-2.3z\"></path>', 13), _hoisted_15100 = [\n  _hoisted_2661\n];\nfunction _sfc_render661(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock661(), _createElementBlock661(\"svg\", _hoisted_1662, _hoisted_15100);\n}\nvar weather_dayu_default = /* @__PURE__ */ export_helper_default(weather_dayu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render661], [\"__file\", \"weather-dayu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-duoyun.vue?vue&type=script&lang.ts\nvar weather_duoyun_vue_vue_type_script_lang_default = {\n  name: \"WeatherDuoyun\"\n};\n\n// src/components/weather-duoyun.vue\nimport { openBlock as _openBlock662, createElementBlock as _createElementBlock662, createStaticVNode as _createStaticVNode19 } from \"vue\";\nvar _hoisted_1663 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2662 = /* @__PURE__ */ _createStaticVNode19('<path fill=\"currentColor\" d=\"M428.9 417.3m-137.2 0a137.2 137.2 0 1 0 274.4 0 137.2 137.2 0 1 0-274.4 0Z\"></path><path fill=\"currentColor\" d=\"M428.9 557.9c-77.6 0-140.7-63.1-140.7-140.7s63.1-140.7 140.7-140.7 140.7 63.1 140.7 140.7-63.2 140.7-140.7 140.7z m0-274.4c-73.8 0-133.8 60-133.8 133.8S355.1 551 428.9 551s133.8-60 133.8-133.8-60.1-133.7-133.8-133.7z\"></path><path fill=\"currentColor\" d=\"M437.8 234.7c-106.8 0-193.3 86.5-193.3 193.3S331 621.3 437.8 621.3 631.1 534.8 631.1 428s-86.6-193.3-193.3-193.3z m0 324.5c-72.4 0-131.2-58.7-131.2-131.2s58.7-131.2 131.2-131.2S569 355.6 569 428s-58.8 131.2-131.2 131.2z\"></path><path fill=\"currentColor\" d=\"M437.8 624.8C329.3 624.8 241 536.5 241 428s88.3-196.8 196.8-196.8S634.5 319.5 634.5 428s-88.2 196.8-196.7 196.8z m0-386.6c-104.7 0-189.9 85.2-189.9 189.9S333.1 618 437.8 618s189.8-85.3 189.8-190-85.1-189.8-189.8-189.8z m0 324.4c-74.2 0-134.6-60.4-134.6-134.6s60.4-134.6 134.6-134.6S572.4 353.8 572.4 428 512 562.6 437.8 562.6z m0-262.3c-70.4 0-127.7 57.3-127.7 127.7s57.3 127.7 127.7 127.7S565.5 498.4 565.5 428s-57.3-127.7-127.7-127.7z\"></path><path fill=\"currentColor\" d=\"M460.1 172.6h-42c-0.9 0-1.6-0.7-1.6-1.6V70.7c0-0.9 0.7-1.6 1.6-1.6h42c0.9 0 1.6 0.7 1.6 1.6V171c0.1 0.8-0.7 1.6-1.6 1.6z\"></path><path fill=\"currentColor\" d=\"M439.1 176c-14.4 0-26.1-11.7-26.1-26.1V91.6c0-14.4 11.7-26.1 26.1-26.1 14.4 0 26.1 11.7 26.1 26.1V150c0 14.3-11.7 26-26.1 26z m0-103.5c-10.6 0-19.2 8.6-19.2 19.2V150c0 10.6 8.6 19.2 19.2 19.2s19.2-8.6 19.2-19.2V91.6c0-10.5-8.6-19.1-19.2-19.1z\"></path><path fill=\"currentColor\" d=\"M273.6 233.2L244 262.9c-0.6 0.6-1.7 0.6-2.3 0l-71-70.9c-0.6-0.6-0.6-1.7 0-2.3l29.7-29.7c0.6-0.6 1.7-0.6 2.3 0l70.9 70.9c0.7 0.6 0.7 1.7 0 2.3z\"></path><path fill=\"currentColor\" d=\"M242.8 258.1c-7 0-13.5-2.7-18.4-7.6l-41.2-41.2c-4.9-4.9-7.6-11.4-7.6-18.4 0-7 2.7-13.5 7.6-18.4 9.8-9.8 27.1-9.8 36.9 0l41.2 41.2c4.9 4.9 7.6 11.4 7.6 18.4 0 7-2.7 13.5-7.6 18.4-5 4.9-11.5 7.6-18.5 7.6z m-41.2-86.4c-5.1 0-10 2-13.6 5.6-3.6 3.6-5.6 8.4-5.6 13.6 0 5.1 2 10 5.6 13.6l41.2 41.2c7.2 7.2 19.9 7.2 27.1 0 3.6-3.6 5.6-8.4 5.6-13.6s-2-10-5.6-13.6l-41.2-41.2c-3.6-3.6-8.4-5.6-13.5-5.6z\"></path><path fill=\"currentColor\" d=\"M184.7 408v42c0 0.9-0.7 1.6-1.6 1.6H82.7c-0.9 0-1.6-0.7-1.6-1.6v-42c0-0.9 0.7-1.6 1.6-1.6H183c0.9-0.1 1.7 0.7 1.7 1.6z\"></path><path fill=\"currentColor\" d=\"M162 455h-58.3c-14.4 0-26.1-11.7-26.1-26.1s11.7-26.1 26.1-26.1H162c14.4 0 26.1 11.7 26.1 26.1S176.4 455 162 455z m-58.3-45.2c-10.6 0-19.2 8.6-19.2 19.2s8.6 19.2 19.2 19.2H162c10.6 0 19.2-8.6 19.2-19.2s-8.6-19.2-19.2-19.2h-58.3z\"></path><path fill=\"currentColor\" d=\"M695.5 448v-42c0-0.9 0.7-1.6 1.6-1.6h100.3c0.9 0 1.6 0.7 1.6 1.6v42c0 0.9-0.7 1.6-1.6 1.6H697.2c-0.9 0.1-1.7-0.7-1.7-1.6z\"></path><path fill=\"currentColor\" d=\"M776.5 453.1h-58.3c-14.4 0-26.1-11.7-26.1-26.1 0-14.4 11.7-26.1 26.1-26.1h58.3c14.4 0 26.1 11.7 26.1 26.1-0.1 14.4-11.8 26.1-26.1 26.1z m-58.4-45.2c-10.6 0-19.2 8.6-19.2 19.2s8.6 19.2 19.2 19.2h58.3c10.6 0 19.2-8.6 19.2-19.2s-8.6-19.2-19.2-19.2h-58.3z\"></path><path fill=\"currentColor\" d=\"M634.9 261.5l-29.7-29.7c-0.6-0.6-0.6-1.7 0-2.3l70.9-70.9c0.6-0.6 1.7-0.6 2.3 0l29.7 29.7c0.6 0.6 0.6 1.7 0 2.3l-70.9 70.9c-0.7 0.7-1.7 0.7-2.3 0z\"></path><path fill=\"currentColor\" d=\"M636 256.8c-7 0-13.5-2.7-18.4-7.6-4.9-4.9-7.6-11.5-7.6-18.4 0-7 2.7-13.5 7.6-18.4l41.2-41.2c9.8-9.8 27-9.8 36.9 0 4.9 4.9 7.6 11.5 7.6 18.4 0 7-2.7 13.5-7.6 18.4l-41.2 41.2c-4.9 4.9-11.5 7.6-18.5 7.6z m41.3-86.5c-5.1 0-10 2-13.6 5.6l-41.2 41.2c-3.6 3.6-5.6 8.4-5.6 13.6 0 5.1 2 10 5.6 13.6 7.2 7.2 19.9 7.2 27.1 0l41.2-41.2c3.6-3.6 5.6-8.4 5.6-13.6 0-5.1-2-10-5.6-13.6s-8.4-5.6-13.5-5.6z\"></path><path fill=\"currentColor\" d=\"M503.4 684.6m-229 0a229 229 0 1 0 458 0 229 229 0 1 0-458 0Z\"></path><path fill=\"currentColor\" d=\"M774.3 701.3m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M249.7 701.3m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.3 518.9c-18.1 0-35.5 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219.1-112.3-88.6 0-166.9 42.8-216.3 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.4 81.7-182.4 182.4s81.7 182.4 182.4 182.4c21.1 0 41.3-3.8 60.2-10.4C359 923.6 427.5 955 503.4 955c78.3 0 148.6-33.5 198-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.4-81.7 182.4-182.4-0.1-100.7-81.7-182.4-182.5-182.4z m0 313.2c-29 0-55.7-9.6-77.4-25.5-40.6 64.2-112 107-193.5 107-75.4 0-142-36.6-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.8 200.1-117.8 91.6 0 170.4 53.9 207 131.6 18.9-10.6 40.7-16.8 64-16.8 72.2 0 130.8 58.6 130.8 130.8 0 72.1-58.6 130.7-130.9 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 958.4c-73.6 0-142.6-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9-102.5 0-185.8-83.4-185.8-185.8s83.4-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.8 16.6-4.7 33.6-7.1 50.6-7.1 102.5 0 185.8 83.4 185.8 185.8s-83.4 185.8-185.8 185.8c-24.9 0-49.2-4.9-72.1-14.6-52.5 55.4-123 85.9-198.9 85.9zM308.7 870l3.6 0.8c50.7 52 118.6 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l3.9-0.8c22.8 10 46.9 15 71.6 15 98.7 0 178.9-80.3 178.9-178.9 0-98.7-80.3-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3c-50.2-69.4-131-110.9-216.3-110.9-84.6 0-162.4 39.1-213.5 107.2l-3.5 1.3c-12.1-2.5-24.5-3.8-36.7-3.8-98.7 0-178.9 80.3-178.9 178.9 0 98.7 80.3 178.9 178.9 178.9 20.1 0 39.9-3.4 59.2-10.2z m194.7 47c-73.1 0-140.2-33.4-184.7-91.7-21.2 11.8-45 18-69.1 18-78.4 0-142.1-63.8-142.1-142.1s63.8-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.6-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.5 62.4-15.5 74 0 134.3 60.2 134.3 134.3s-60.2 134.3-134.3 134.3c-27.5 0-53.9-8.3-76.5-24.1-43 66.2-115.5 105.6-194.3 105.6z m-185.5-99.2l4.5 0.9c43.1 58 109.1 91.3 181 91.3 77.7 0 148.9-39.4 190.6-105.4l5-0.9c22.1 16.3 48.2 24.9 75.4 24.9 70.2 0 127.4-57.1 127.4-127.4s-57.1-127.4-127.4-127.4c-21.7 0-43.3 5.6-62.3 16.3l-4.8-1.5C670.1 510 590.1 459.1 503.4 459.1c-81.7 0-157.2 44.4-197.1 116l-4.3 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.6 0-135.2 60.6-135.2 135.2s60.6 135.2 135.2 135.2c23.8 0 47.4-6.5 68.2-18.7z\"></path><path fill=\"currentColor\" d=\"M710.4 587.2c-39.9 22.4-66.9 65.1-66.9 114.1 0 43.2 21.1 81.5 53.4 105.3 22.3-35.3 35.4-77.1 35.4-122 0-34.9-8-67.8-21.9-97.4z\"></path><path fill=\"currentColor\" d=\"M388.3 701.3c0-57.6-35.1-106.9-85-127.9-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2 41.1-24.1 68.7-68.5 68.7-119.5z\"></path>', 21), _hoisted_23100 = [\n  _hoisted_2662\n];\nfunction _sfc_render662(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock662(), _createElementBlock662(\"svg\", _hoisted_1663, _hoisted_23100);\n}\nvar weather_duoyun_default = /* @__PURE__ */ export_helper_default(weather_duoyun_vue_vue_type_script_lang_default, [[\"render\", _sfc_render662], [\"__file\", \"weather-duoyun.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-duoyunzhuanqing.vue?vue&type=script&lang.ts\nvar weather_duoyunzhuanqing_vue_vue_type_script_lang_default = {\n  name: \"WeatherDuoyunzhuanqing\"\n};\n\n// src/components/weather-duoyunzhuanqing.vue\nimport { openBlock as _openBlock663, createElementBlock as _createElementBlock663, createStaticVNode as _createStaticVNode20 } from \"vue\";\nvar _hoisted_1664 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2663 = /* @__PURE__ */ _createStaticVNode20('<path fill=\"currentColor\" d=\"M633.6 489.7m-162.8 0a162.8 162.8 0 1 0 325.6 0 162.8 162.8 0 1 0-325.6 0Z\"></path><path fill=\"currentColor\" d=\"M826.3 501.6m-93 0a93 93 0 1 0 186 0 93 93 0 1 0-186 0Z\"></path><path fill=\"currentColor\" d=\"M453.3 501.6m-98.6 0a98.6 98.6 0 1 0 197.2 0 98.6 98.6 0 1 0-197.2 0Z\"></path><path fill=\"currentColor\" d=\"M826.3 371.9c-12.8 0-25.2 1.9-36.9 5.4-34.9-48.3-91.6-79.8-155.7-79.8-63 0-118.7 30.4-153.8 77.2-8.6-1.8-17.5-2.8-26.6-2.8-71.6 0-129.7 58.1-129.7 129.7s58.1 129.7 129.7 129.7c15 0 29.4-2.7 42.8-7.4C531 659.7 579.7 682 633.6 682c55.7 0 105.6-23.8 140.7-61.6 15.9 7 33.4 10.9 51.9 10.9 71.6 0 129.7-58.1 129.7-129.7s-58-129.7-129.6-129.7z m0 222.7c-20.6 0-39.6-6.8-55-18.2-28.8 45.7-79.6 76.1-137.6 76.1-53.6 0-101-26-130.6-65.9-14.6 8.6-31.6 13.6-49.8 13.6-54.4 0-98.6-44.1-98.6-98.6 0-54.4 44.1-98.6 98.6-98.6 13.5 0 26.4 2.7 38.1 7.7 27.8-49.9 81.1-83.7 142.3-83.7 65.1 0 121.1 38.3 147.2 93.6 13.5-7.6 28.9-11.9 45.5-11.9 51.4 0 93 41.6 93 93-0.1 51.3-41.7 92.9-93.1 92.9z\"></path><path fill=\"currentColor\" d=\"M633.6 685.5c-52.4 0-101.5-20.4-138.5-57.6-13.7 4.5-27.8 6.9-41.9 6.9-73.4 0-133.2-59.8-133.2-133.2 0-73.5 59.8-133.2 133.2-133.2 8.4 0 16.8 0.8 25.1 2.4 37.5-48.9 93.9-76.8 155.2-76.8 61.7 0 120.2 29.6 157.1 79.3 11.7-3.2 23.6-4.9 35.5-4.9 73.5 0 133.2 59.8 133.2 133.2 0 73.5-59.8 133.2-133.2 133.2-17.6 0-34.8-3.4-51-10.2-36.7 38.8-88.2 60.9-141.5 60.9z m-138.7-65l3.7 0.9c35.9 36.8 83.8 57 135 57 52.9 0 101.9-21.5 138.1-60.5l4-0.8c16 7 33 10.6 50.5 10.6 69.5 0 126.1-56.6 126.1-126.1s-56.6-126.1-126.1-126.1c-12 0-24.1 1.8-35.9 5.3l-3.9-1.3c-35.5-49.1-92.6-78.4-152.9-78.4-59.8 0-114.8 27.6-150.9 75.8l-3.6 1.3c-8.5-1.8-17.3-2.7-25.9-2.7-69.5 0-126.1 56.6-126.1 126.1s56.6 126.1 126.1 126.1c14.2 0 28.2-2.4 41.8-7.2z m138.7 35.6c-52 0-99.8-23.6-131.6-64.9-15 8.2-31.8 12.5-48.8 12.5-56.3 0-102.1-45.8-102.1-102.1s45.8-102.1 102.1-102.1c12.6 0 24.9 2.3 36.6 6.8 29.8-51.2 84.6-82.8 143.8-82.8 62.7 0 120.7 36.1 148.8 92.2 13.6-7 28.6-10.7 43.9-10.7 53.2 0 96.6 43.3 96.6 96.6s-43.3 96.6-96.6 96.6c-19.4 0-38-5.8-54.1-16.7-31 46.8-82.5 74.6-138.6 74.6z m-132.4-72.6l4.7 1c30.4 41 77 64.5 127.8 64.5 54.9 0 105.2-27.8 134.6-74.4l5.1-1c15.5 11.4 33.8 17.5 52.9 17.5 49.3 0 89.5-40.1 89.5-89.5s-40.1-89.5-89.5-89.5c-15.3 0-30.4 4-43.7 11.5l-5-1.6c-26.2-55.6-82.7-91.5-144-91.5-57.7 0-111 31.4-139.1 81.9L490 414c-11.7-4.9-24-7.4-36.8-7.4-52.4 0-95 42.6-95 95s42.6 95 95 95c16.8 0 33.4-4.5 48-13.1z\"></path><path fill=\"currentColor\" d=\"M780.8 420.5c-28.4 15.9-47.5 46.3-47.5 81.1 0 30.7 15 57.9 38 74.8 15.9-25.1 25.2-54.8 25.2-86.7-0.1-24.8-5.8-48.2-15.7-69.2z\"></path><path fill=\"currentColor\" d=\"M551.8 501.6c0-40.9-24.9-76-60.5-90.9-13 23.4-20.5 50.3-20.5 79.1 0 36.3 12 69.8 32.2 96.9 29.2-17.2 48.8-48.8 48.8-85.1z\"></path><path fill=\"currentColor\" d=\"M280.9 473.2c0 9.4-14.2 17.1-31.6 17.1h-94.4c-17.5 0-31.6-7.6-31.6-17.1v-12.8c0-9.4 14.2-17.1 31.6-17.1h94.4c17.5 0 31.6 7.6 31.6 17.1v12.8z m0 0\"></path><path fill=\"currentColor\" d=\"M249.3 497.4H155c-22.1 0-38.7-10.4-38.7-24.2v-12.8c0-13.8 16.7-24.2 38.7-24.2h94.3c22.1 0 38.7 10.4 38.7 24.2v12.8c0 13.8-16.6 24.2-38.7 24.2z m-94.4-47c-15.2 0-24.5 6.4-24.5 10v12.8c0 3.5 9.3 9.9 24.5 9.9h94.3c15.2 0 24.5-6.4 24.5-9.9v-12.8c0-3.5-9.3-10-24.5-10h-94.3z\"></path><path fill=\"currentColor\" d=\"M238.3 582.9c0 9.4-14.2 17.1-31.6 17.1h-94.4c-17.5 0-31.6-7.6-31.6-17.1V570c0-9.4 14.2-17.1 31.6-17.1h94.4c17.5 0 31.6 7.6 31.6 17.1v12.9z m0 0\"></path><path fill=\"currentColor\" d=\"M206.6 607h-94.3c-22.1 0-38.7-10.4-38.7-24.2V570c0-13.8 16.7-24.2 38.7-24.2h94.3c22.1 0 38.7 10.4 38.7 24.2v12.8c0.1 13.8-16.6 24.2-38.7 24.2z m-94.3-46.9c-15.2 0-24.5 6.4-24.5 9.9v12.8c0 3.5 9.3 10 24.5 10h94.3c15.2 0 24.5-6.4 24.5-10V570c0-3.5-9.3-9.9-24.5-9.9h-94.3z\"></path><path fill=\"currentColor\" d=\"M332.6 705.9c0 9.4-7.4 17.1-16.6 17.1H88.2c-9.1 0-16.6-7.6-16.6-17.1v-12.8c0-9.4 7.4-17.1 16.6-17.1h227.9c9.2 0 16.6 7.6 16.6 17.1v12.8z m0 0\"></path><path fill=\"currentColor\" d=\"M316.1 730.1H88.2c-13.1 0-23.7-10.8-23.7-24.2v-12.8c0-13.3 10.6-24.2 23.7-24.2h227.9c13.1 0 23.7 10.8 23.7 24.2v12.8c-0.1 13.3-10.7 24.2-23.7 24.2z m-227.9-47c-5.2 0-9.5 4.5-9.5 9.9v12.8c0 5.5 4.2 9.9 9.5 9.9h227.9c5.2 0 9.5-4.5 9.5-9.9V693c0-5.5-4.2-9.9-9.5-9.9H88.2z\"></path>', 13), _hoisted_15101 = [\n  _hoisted_2663\n];\nfunction _sfc_render663(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock663(), _createElementBlock663(\"svg\", _hoisted_1664, _hoisted_15101);\n}\nvar weather_duoyunzhuanqing_default = /* @__PURE__ */ export_helper_default(weather_duoyunzhuanqing_vue_vue_type_script_lang_default, [[\"render\", _sfc_render663], [\"__file\", \"weather-duoyunzhuanqing.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-leibao.vue?vue&type=script&lang.ts\nvar weather_leibao_vue_vue_type_script_lang_default = {\n  name: \"WeatherLeibao\"\n};\n\n// src/components/weather-leibao.vue\nimport { openBlock as _openBlock664, createElementBlock as _createElementBlock664, createStaticVNode as _createStaticVNode21 } from \"vue\";\nvar _hoisted_1665 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2664 = /* @__PURE__ */ _createStaticVNode21('<path fill=\"currentColor\" d=\"M615.4 276.7m-164.6 0a164.6 164.6 0 1 0 329.2 0 164.6 164.6 0 1 0-329.2 0Z\"></path><path fill=\"currentColor\" d=\"M810.2 288.7m-94.1 0a94.1 94.1 0 1 0 188.2 0 94.1 94.1 0 1 0-188.2 0Z\"></path><path fill=\"currentColor\" d=\"M433 288.7m-99.7 0a99.7 99.7 0 1 0 199.4 0 99.7 99.7 0 1 0-199.4 0Z\"></path><path fill=\"currentColor\" d=\"M810.2 157.6c-13 0-25.5 2-37.3 5.5-35.3-48.8-92.6-80.7-157.5-80.7-63.7 0-120 30.8-155.5 78.1-8.7-1.8-17.7-2.8-26.9-2.8-72.4 0-131.1 58.7-131.1 131.1 0 72.4 58.7 131.1 131.1 131.1 15.2 0 29.7-2.7 43.3-7.5 35.3 36.2 84.5 58.8 139.1 58.8 56.3 0 106.8-24.1 142.3-62.3 16.1 7 33.8 11 52.5 11 72.4 0 131.1-58.7 131.1-131.1 0-72.5-58.7-131.2-131.1-131.2z m0 225.2c-20.9 0-40.1-6.9-55.7-18.4-29.2 46.2-80.5 76.9-139.1 76.9-54.2 0-102.1-26.3-132.1-66.7-14.8 8.7-31.9 13.7-50.3 13.7-55.1 0-99.7-44.6-99.7-99.7s44.6-99.7 99.7-99.7c13.7 0 26.7 2.8 38.6 7.7 28.1-50.5 82-84.7 143.9-84.7 65.8 0 122.5 38.8 148.8 94.6 13.6-7.6 29.3-12.1 46-12.1 51.9 0 94.1 42.1 94.1 94.1-0.1 52.2-42.2 94.3-94.2 94.3z\"></path><path fill=\"currentColor\" d=\"M615.4 474.6c-53 0-102.6-20.7-140-58.2-13.9 4.6-28.1 7-42.4 7-74.2 0-134.6-60.4-134.6-134.6S358.8 154.2 433 154.2c8.5 0 17.1 0.8 25.5 2.4 37.8-49.4 94.9-77.7 156.9-77.7 62.4 0 121.6 29.9 158.8 80.2 11.8-3.3 23.9-4.9 36-4.9 74.2 0 134.6 60.4 134.6 134.6s-60.4 134.6-134.6 134.6c-17.8 0-35.2-3.5-51.6-10.3-37.3 39.1-89.3 61.5-143.2 61.5z m-140.2-65.5l3.6 0.8c36.3 37.2 84.8 57.7 136.6 57.7 53.5 0 103.2-21.7 139.8-61.2l3.9-0.8c16.2 7.1 33.4 10.7 51.1 10.7 70.4 0 127.7-57.3 127.7-127.7s-57.3-127.7-127.7-127.7c-12.2 0-24.4 1.8-36.3 5.3l-3.8-1.3c-35.9-49.7-93.7-79.3-154.7-79.3-60.5 0-116.2 27.9-152.7 76.7l-3.5 1.3c-8.7-1.8-17.5-2.7-26.2-2.7-70.4 0-127.7 57.3-127.7 127.7S362.6 416.4 433 416.4c14.2 0 28.4-2.5 42.2-7.3z m140.2 35.7c-52.6 0-100.9-23.9-133-65.6-15.2 8.3-32.2 12.7-49.4 12.7-56.9 0-103.1-46.3-103.1-103.1S376.1 185.6 433 185.6c12.8 0 25.2 2.3 37 6.9 30.1-51.8 85.5-83.8 145.4-83.8 63.4 0 122.1 36.5 150.4 93.3 13.7-7 29-10.8 44.5-10.8 53.8 0 97.5 43.7 97.5 97.5s-43.7 97.5-97.5 97.5c-19.6 0-38.5-5.8-54.7-16.9-31.4 47.4-83.5 75.5-140.2 75.5z m-133.8-73.1l4.5 0.9c30.8 41.5 77.9 65.3 129.3 65.3 55.5 0 106.4-28.2 136.2-75.3l5-0.9c15.7 11.6 34.3 17.7 53.6 17.7 50 0 90.6-40.6 90.6-90.6s-40.6-90.6-90.6-90.6c-15.5 0-30.8 4-44.3 11.6l-4.8-1.5c-26.5-56.3-83.7-92.6-145.7-92.6-58.4 0-112.3 31.8-140.8 82.9l-4.4 1.5c-11.8-5-24.3-7.5-37.2-7.5-53.1 0-96.2 43.2-96.2 96.2S380 385 433 385c17 0 33.8-4.6 48.6-13.3z\"></path><path fill=\"currentColor\" d=\"M764.2 206.7c-28.7 16.1-48.1 46.8-48.1 82 0 31.1 15.1 58.6 38.4 75.7 16-25.4 25.5-55.4 25.5-87.7 0-25-5.7-48.7-15.8-70z\"></path><path fill=\"currentColor\" d=\"M532.7 288.7c0-41.4-25.2-76.9-61.1-91.9-13.2 23.7-20.8 50.9-20.8 79.9 0 36.7 12.2 70.6 32.5 97.9 29.5-17.2 49.4-49.2 49.4-85.9z\"></path><path fill=\"currentColor\" d=\"M569.9 694.8l-49.7 98.7v0.1l50 39-156.2 109c-0.2 0.1-0.5 0-0.4-0.2l56.5-104.2c0-0.1 0-0.1-0.1-0.2l-56.8-35.7 156.3-106.8c0.2 0 0.5 0.1 0.4 0.3z\"></path><path fill=\"currentColor\" d=\"M413.8 945.1h-1.9l-2.2-3.4 0.9-1.8 55.1-101.5-58.7-36.8 161.5-110.3h3.2l2.2 3.4-0.9 1.8-48.4 96.2 51.5 40.2-161 112.2h-1.3z m5.7-143.8l55 34.5-1.3 3-50 92.2 141.2-98.5-48.6-38 1.4-2.7 43.9-87.2-141.6 96.7z\"></path><path fill=\"currentColor\" d=\"M503.2 505.3m-228.9 0a228.9 228.9 0 1 0 457.8 0 228.9 228.9 0 1 0-457.8 0Z\"></path><path fill=\"currentColor\" d=\"M774.2 522m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M249.6 522m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.2 339.7c-18 0-35.4 2.7-51.9 7.6-49.2-68-128.8-112.3-219.1-112.3-88.6 0-166.9 42.8-216.2 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.4 81.6-182.4 182.4 0 100.7 81.6 182.4 182.4 182.4 21.1 0 41.3-3.8 60.2-10.4 49.1 50.4 117.6 81.7 193.5 81.7 78.3 0 148.6-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.4-81.6 182.4-182.4-0.1-100.8-81.7-182.4-182.4-182.4z m0 313.1c-29 0-55.7-9.6-77.4-25.5-40.6 64.2-112 107-193.5 107-75.3 0-142-36.6-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.8 200.1-117.8 91.6 0 170.4 53.9 207 131.6 18.9-10.6 40.7-16.8 64-16.8 72.2 0 130.8 58.6 130.8 130.8-0.1 72.2-58.7 130.7-130.9 130.7z\"></path><path fill=\"currentColor\" d=\"M503.2 779.1c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9C147 707.8 63.7 624.4 63.7 522s83.4-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.8 16.6-4.7 33.6-7.1 50.5-7.1C876.6 336.2 960 419.6 960 522s-83.4 185.8-185.8 185.8c-24.9 0-49.2-4.9-72.1-14.6-52.4 55.4-122.9 85.9-198.9 85.9z m-194.6-88.4l3.6 0.8c50.7 52 118.6 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l3.9-0.8c22.8 10 46.9 15 71.6 15 98.6 0 178.9-80.3 178.9-178.9 0-98.6-80.3-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3c-50.2-69.4-131-110.9-216.2-110.9-84.6 0-162.4 39.1-213.5 107.2l-3.5 1.3c-12.1-2.5-24.4-3.8-36.7-3.8-98.6 0-178.9 80.3-178.9 178.9 0 98.6 80.3 178.9 178.9 178.9 19.9 0 39.8-3.4 59.1-10.2z m194.6 47c-73.1 0-140.2-33.4-184.6-91.7-21.2 11.8-45 18-69 18-78.3 0-142.1-63.7-142.1-142.1s63.7-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.6-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.5 62.4-15.5 74 0 134.3 60.2 134.3 134.3s-60.2 134.3-134.3 134.3c-27.5 0-53.8-8.3-76.5-24.1-43.2 66.3-115.6 105.6-194.5 105.6z m-185.4-99.1l4.5 0.9c43.1 58 109.1 91.3 180.9 91.3 77.7 0 148.9-39.4 190.6-105.4l5-0.9c22.1 16.3 48.1 24.9 75.4 24.9 70.2 0 127.4-57.1 127.4-127.4s-57.1-127.4-127.4-127.4c-21.7 0-43.3 5.6-62.3 16.3l-4.8-1.5C670 330.7 590 279.8 503.2 279.8c-81.7 0-157.2 44.4-197 116l-4.3 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.2 60.6-135.2 135.2 0 74.5 60.6 135.2 135.2 135.2 23.8 0 47.4-6.4 68.2-18.6z\"></path><path fill=\"currentColor\" d=\"M710.2 408c-39.9 22.4-66.8 65-66.8 114 0 43.2 21.1 81.5 53.4 105.3 22.3-35.3 35.4-77.1 35.4-121.9 0-34.9-8-67.8-22-97.4z\"></path><path fill=\"currentColor\" d=\"M388.2 522c0-57.6-35.1-106.9-85-127.9-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2 41.1-24 68.7-68.5 68.7-119.5z\"></path>', 16), _hoisted_1810 = [\n  _hoisted_2664\n];\nfunction _sfc_render664(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock664(), _createElementBlock664(\"svg\", _hoisted_1665, _hoisted_1810);\n}\nvar weather_leibao_default = /* @__PURE__ */ export_helper_default(weather_leibao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render664], [\"__file\", \"weather-leibao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-leiyu.vue?vue&type=script&lang.ts\nvar weather_leiyu_vue_vue_type_script_lang_default = {\n  name: \"WeatherLeiyu\"\n};\n\n// src/components/weather-leiyu.vue\nimport { openBlock as _openBlock665, createElementBlock as _createElementBlock665, createStaticVNode as _createStaticVNode22 } from \"vue\";\nvar _hoisted_1666 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2665 = /* @__PURE__ */ _createStaticVNode22('<path fill=\"currentColor\" d=\"M615.7 276.7m-164.6 0a164.6 164.6 0 1 0 329.2 0 164.6 164.6 0 1 0-329.2 0Z\"></path><path fill=\"currentColor\" d=\"M810.5 288.7m-94.1 0a94.1 94.1 0 1 0 188.2 0 94.1 94.1 0 1 0-188.2 0Z\"></path><path fill=\"currentColor\" d=\"M433.3 288.7m-99.7 0a99.7 99.7 0 1 0 199.4 0 99.7 99.7 0 1 0-199.4 0Z\"></path><path fill=\"currentColor\" d=\"M810.5 157.6c-13 0-25.5 2-37.3 5.5-35.3-48.8-92.6-80.8-157.5-80.8-63.7 0-120 30.8-155.5 78.1-8.7-1.8-17.7-2.8-26.9-2.8-72.4 0-131.1 58.7-131.1 131.1 0 72.4 58.7 131.1 131.1 131.1 15.2 0 29.7-2.7 43.3-7.5 35.3 36.2 84.6 58.8 139.1 58.8 56.3 0 106.8-24.1 142.3-62.3 16.1 7 33.8 11 52.5 11 72.4 0 131.1-58.7 131.1-131.1 0.1-72.4-58.6-131.1-131.1-131.1z m0 225.2c-20.9 0-40.1-6.9-55.7-18.4-29.2 46.2-80.5 76.9-139.2 76.9-54.2 0-102.1-26.3-132.1-66.7-14.8 8.7-31.9 13.7-50.3 13.7-55.1 0-99.7-44.6-99.7-99.7s44.6-99.7 99.7-99.7c13.7 0 26.7 2.8 38.6 7.7 28.1-50.5 82-84.7 143.9-84.7 65.9 0 122.5 38.8 148.8 94.6 13.6-7.6 29.3-12.1 46-12.1 51.9 0 94.1 42.1 94.1 94.1 0 52.2-42.1 94.3-94.1 94.3z\"></path><path fill=\"currentColor\" d=\"M615.6 474.6c-53 0-102.6-20.7-140.1-58.2-13.9 4.6-28.1 7-42.4 7-74.2 0-134.6-60.4-134.6-134.6s60.4-134.6 134.6-134.6c8.5 0 17.1 0.8 25.5 2.4 37.9-49.4 94.9-77.7 156.9-77.7 62.4 0 121.6 29.9 158.9 80.2 11.8-3.3 23.9-4.9 36-4.9 74.2 0 134.6 60.4 134.6 134.6s-60.4 134.6-134.6 134.6c-17.8 0-35.2-3.5-51.6-10.3-37.3 39-89.4 61.5-143.2 61.5z m-140.3-65.5l3.6 0.8c36.3 37.2 84.8 57.7 136.6 57.7 53.5 0 103.2-21.7 139.8-61.2l3.9-0.8c16.2 7.1 33.4 10.7 51.1 10.7 70.4 0 127.7-57.3 127.7-127.7S880.8 161 810.4 161c-12.2 0-24.4 1.8-36.3 5.3l-3.8-1.3c-35.9-49.7-93.7-79.3-154.7-79.3-60.5 0-116.2 28-152.7 76.7l-3.5 1.3c-8.6-1.8-17.5-2.7-26.2-2.7-70.4 0-127.7 57.3-127.7 127.7s57.3 127.7 127.7 127.7c14.1 0 28.3-2.5 42.1-7.3z m140.3 35.7c-52.6 0-100.9-23.9-133-65.6-15.2 8.3-32.2 12.7-49.4 12.7-56.9 0-103.1-46.3-103.1-103.1s46.3-103.1 103.1-103.1c12.8 0 25.2 2.3 37 6.9 30.1-51.8 85.5-83.8 145.4-83.8 63.4 0 122.1 36.5 150.4 93.3 13.7-7 29-10.8 44.4-10.8 53.8 0 97.5 43.7 97.5 97.5s-43.7 97.5-97.5 97.5c-19.6 0-38.5-5.8-54.7-16.9-31.3 47.2-83.4 75.4-140.1 75.4z m-133.9-73.1l4.5 0.9c30.8 41.5 78 65.3 129.3 65.3 55.5 0 106.5-28.2 136.2-75.3l5-0.9c15.7 11.6 34.3 17.7 53.6 17.7 50 0 90.6-40.6 90.6-90.6s-40.6-90.6-90.6-90.6c-15.5 0-30.8 4-44.3 11.6l-4.8-1.5c-26.5-56.3-83.7-92.6-145.7-92.6-58.4 0-112.4 31.8-140.8 82.9l-4.3 1.5c-11.8-5-24.3-7.5-37.2-7.5-53.1 0-96.2 43.2-96.2 96.2s43.2 96.2 96.2 96.2c16.9-0.1 33.7-4.6 48.5-13.3z\"></path><path fill=\"currentColor\" d=\"M764.6 206.7c-28.7 16.1-48.1 46.8-48.1 82 0 31.1 15.1 58.6 38.4 75.7 16-25.4 25.5-55.4 25.5-87.7 0-25.1-5.8-48.7-15.8-70z\"></path><path fill=\"currentColor\" d=\"M533 288.7c0-41.4-25.2-76.9-61.1-91.9-13.2 23.7-20.8 50.9-20.8 79.9 0 36.7 12.2 70.6 32.5 98 29.5-17.3 49.4-49.3 49.4-86z\"></path><path fill=\"currentColor\" d=\"M570.1 694.8l-49.7 98.7v0.1l50 39-156.3 109c-0.2 0.1-0.5 0-0.4-0.2l56.5-104.2c0-0.1 0-0.1-0.1-0.2l-56.8-35.7 156.3-106.8c0.3 0 0.6 0.1 0.5 0.3z\"></path><path fill=\"currentColor\" d=\"M414 945.2h-2l-2.2-3.4 0.9-1.8 55.1-101.5-58.7-36.8 161.6-110.3h3.1l2.3 3.3-0.8 1.8-48.5 96.3 51.5 40.2-161 112.2H414z m5.7-143.9L475 836l-1.8 3.1-49.9 91.9 141.3-98.5-48.6-38 1.4-2.7 43.9-87.3-141.6 96.8z\"></path><path fill=\"currentColor\" d=\"M503.5 505.3m-229 0a229 229 0 1 0 458 0 229 229 0 1 0-458 0Z\"></path><path fill=\"currentColor\" d=\"M774.5 522m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M249.8 522m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.5 339.7c-18.1 0-35.5 2.7-51.9 7.6-49.1-68-128.8-112.3-219.1-112.3-88.6 0-166.9 42.8-216.3 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.4 81.6-182.4 182.4 0 100.7 81.6 182.4 182.4 182.4 21.1 0 41.3-3.8 60.2-10.4 49.1 50.4 117.6 81.7 193.5 81.7 78.3 0 148.6-33.5 198-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.4-81.6 182.4-182.4 0-100.8-81.7-182.4-182.4-182.4z m0 313.1c-29 0-55.7-9.6-77.4-25.5-40.6 64.2-112 107-193.5 107-75.4 0-142-36.6-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.8 200.1-117.8 91.6 0 170.4 53.9 207 131.6 18.9-10.6 40.7-16.8 64-16.8 72.2 0 130.8 58.6 130.8 130.8-0.1 72.2-58.7 130.7-130.9 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 779.2c-73.6 0-142.6-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9-102.5 0-185.8-83.4-185.8-185.8s83.4-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.8 16.6-4.7 33.6-7.1 50.6-7.1 102.5 0 185.8 83.4 185.8 185.8s-83.4 185.8-185.8 185.8c-24.9 0-49.2-4.9-72.1-14.6-52.5 55.4-123 85.9-198.9 85.9z m-194.7-88.5l3.6 0.8c50.7 52 118.6 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l3.9-0.8c22.8 10 46.9 15 71.6 15 98.7 0 178.9-80.3 178.9-178.9 0-98.7-80.3-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3c-50.2-69.4-131-110.9-216.2-110.9-84.6 0-162.4 39.1-213.5 107.2l-3.5 1.3c-12.1-2.5-24.5-3.8-36.7-3.8-98.6 0-178.8 80.3-178.8 178.9 0 98.7 80.3 178.9 178.9 178.9 19.9 0 39.7-3.4 59-10.2z m194.7 47.1c-73.1 0-140.2-33.4-184.7-91.7-21.2 11.8-45 18-69 18-78.4 0-142.1-63.7-142.1-142.1s63.7-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.6-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.5 62.4-15.5 74 0 134.3 60.2 134.3 134.3s-60.2 134.3-134.3 134.3c-27.5 0-53.9-8.3-76.5-24.1-43.1 66.2-115.6 105.6-194.4 105.6z m-185.5-99.2l4.5 0.9c43.1 58 109.1 91.3 181 91.3 77.7 0 148.9-39.4 190.6-105.4l5-0.9c22.1 16.3 48.1 24.9 75.4 24.9 70.2 0 127.4-57.1 127.4-127.4s-57.1-127.4-127.4-127.4c-21.7 0-43.3 5.6-62.3 16.3l-4.8-1.5c-37.1-78.7-117.1-129.6-203.9-129.6-81.7 0-157.2 44.4-197.1 116l-4.3 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.2 60.6-135.2 135.2 0 74.5 60.6 135.2 135.2 135.2 23.8 0 47.4-6.4 68.2-18.6z\"></path><path fill=\"currentColor\" d=\"M710.5 408c-39.9 22.4-66.9 65.1-66.9 114.1 0 43.2 21.1 81.5 53.4 105.3 22.3-35.3 35.4-77.1 35.4-122 0.1-34.9-7.9-67.8-21.9-97.4z\"></path><path fill=\"currentColor\" d=\"M388.5 522c0-57.6-35.1-106.9-85-127.9-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2 41-24 68.7-68.5 68.7-119.5z\"></path>', 16), _hoisted_1811 = [\n  _hoisted_2665\n];\nfunction _sfc_render665(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock665(), _createElementBlock665(\"svg\", _hoisted_1666, _hoisted_1811);\n}\nvar weather_leiyu_default = /* @__PURE__ */ export_helper_default(weather_leiyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render665], [\"__file\", \"weather-leiyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-leizhenyu.vue?vue&type=script&lang.ts\nvar weather_leizhenyu_vue_vue_type_script_lang_default = {\n  name: \"WeatherLeizhenyu\"\n};\n\n// src/components/weather-leizhenyu.vue\nimport { openBlock as _openBlock666, createElementBlock as _createElementBlock666, createStaticVNode as _createStaticVNode23 } from \"vue\";\nvar _hoisted_1667 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2666 = /* @__PURE__ */ _createStaticVNode23('<path fill=\"currentColor\" d=\"M553.9 534.3l-49.7 152.5v0.2l50 60.3L398 915.5c-0.2 0.2-0.5 0-0.4-0.2l56.5-161c0-0.1 0-0.2-0.1-0.2L397.3 699l156.3-164.9c0.1-0.2 0.4 0 0.3 0.2z\"></path><path fill=\"currentColor\" d=\"M397.8 919.1H396l-2.3-3 0.5-1.9 55.9-159.1-57.8-56.1L552 530.6l3.4-0.1 2.3 3-0.6 1.9L508 686.1l50.8 61.2-2 2.2L399.5 919l-1.7 0.1z m4.3-220.2l55.9 54.2-0.6 2.3L406 901.9l143.7-154.7-49.3-59.4 0.6-2 45.3-138.9-144.2 152z\"></path><path fill=\"currentColor\" d=\"M503.6 378.7m-228.9 0a228.9 228.9 0 1 0 457.8 0 228.9 228.9 0 1 0-457.8 0Z\"></path><path fill=\"currentColor\" d=\"M774.5 395.4m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M250 395.4m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.5 213.1c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.5 0-166.9 42.8-216.2 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.3 81.6-182.3 182.3 0 100.7 81.6 182.3 182.3 182.3 21.1 0 41.3-3.8 60.2-10.4 49.1 50.3 117.6 81.7 193.4 81.7 78.3 0 148.5-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.3-81.6 182.3-182.3 0.1-100.7-81.6-182.3-182.3-182.3z m0 313.1c-29 0-55.7-9.6-77.4-25.5-40.5 64.2-111.9 107-193.5 107-75.3 0-142-36.6-183.7-92.7-20.5 12-44.4 19-69.9 19-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.7 200-117.7 91.6 0 170.3 53.9 207 131.6 18.9-10.6 40.7-16.8 63.9-16.8 72.2 0 130.8 58.6 130.8 130.8 0 72.1-58.5 130.7-130.8 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 652.5c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9C147.3 581.2 64 497.8 64 395.4s83.3-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.7 16.6-4.7 33.6-7.1 50.5-7.1 102.4 0 185.8 83.3 185.8 185.8s-83.3 185.8-185.8 185.8c-24.9 0-49.1-4.9-72.1-14.6-52.5 55.5-123 86-198.9 86z m-194.6-88.4l3.6 0.8c50.7 52 118.5 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l3.9-0.8c22.8 10 46.8 15 71.6 15 98.6 0 178.9-80.2 178.9-178.9 0-98.6-80.2-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3c-50.2-69.4-131-110.8-216.2-110.8-84.6 0-162.4 39.1-213.4 107.2l-3.5 1.3c-12.1-2.5-24.5-3.8-36.7-3.8-98.6 0-178.9 80.2-178.9 178.9 0 98.6 80.2 178.9 178.9 178.9 19.8-0.1 39.7-3.6 59-10.3z m194.6 47c-73 0-140.2-33.4-184.6-91.7-21.2 11.8-45 18-69 18-78.3 0-142.1-63.7-142.1-142.1s63.7-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.5-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.4 62.4-15.4 74 0 134.2 60.2 134.2 134.2s-60.2 134.2-134.2 134.2c-27.5 0-53.8-8.3-76.4-24.1-43.3 66.3-115.7 105.7-194.5 105.7z m-185.5-99.2l4.5 0.9c43.1 58 109 91.3 180.9 91.3 77.7 0 148.9-39.4 190.6-105.4l5-0.9c22.1 16.3 48.1 24.9 75.3 24.9 70.2 0 127.3-57.1 127.3-127.3S844.5 268 774.3 268c-21.7 0-43.2 5.6-62.3 16.3l-4.8-1.5c-37.1-78.7-117.1-129.6-203.8-129.6-81.7 0-157.2 44.4-197 116l-4.4 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.2 60.6-135.2 135.2 0 74.5 60.6 135.2 135.2 135.2 23.9-0.1 47.5-6.5 68.2-18.7z\"></path><path fill=\"currentColor\" d=\"M710.6 281.4c-39.9 22.4-66.8 65-66.8 114 0 43.2 21.1 81.4 53.4 105.3 22.3-35.3 35.4-77.1 35.4-121.9-0.1-35-8.1-67.9-22-97.4z\"></path><path fill=\"currentColor\" d=\"M388.6 395.4c0-57.5-35.1-106.9-85-127.8-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2 41.1-24.2 68.7-68.6 68.7-119.6z\"></path>', 9), _hoisted_11 = [\n  _hoisted_2666\n];\nfunction _sfc_render666(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock666(), _createElementBlock666(\"svg\", _hoisted_1667, _hoisted_11);\n}\nvar weather_leizhenyu_default = /* @__PURE__ */ export_helper_default(weather_leizhenyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render666], [\"__file\", \"weather-leizhenyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-longjuanfeng.vue?vue&type=script&lang.ts\nvar weather_longjuanfeng_vue_vue_type_script_lang_default = {\n  name: \"WeatherLongjuanfeng\"\n};\n\n// src/components/weather-longjuanfeng.vue\nimport { openBlock as _openBlock667, createElementBlock as _createElementBlock667, createStaticVNode as _createStaticVNode24 } from \"vue\";\nvar _hoisted_1668 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2667 = /* @__PURE__ */ _createStaticVNode24('<path fill=\"currentColor\" d=\"M949 219.7c0 11-11.6 20-25.9 20H100.9c-14.3 0-25.9-8.9-25.9-20v-15c0-11 11.6-20 25.9-20H923c14.3 0 25.9 8.9 25.9 20v15z m0 0\"></path><path fill=\"currentColor\" d=\"M100.8 248c-9.9 0-19.2-3-26.2-8.4-6.9-5.3-10.7-12.4-10.7-19.9v-15c0-15.6 16.6-28.3 37-28.3H923c20.4 0 37 12.7 37 28.3v15c0 15.6-16.6 28.3-37 28.3H100.9l-0.1-8.3 0.1-8.3h822.2c8.2 0 14.8-5.2 14.8-11.6v-15c0-6.4-6.6-11.6-14.8-11.6H100.9c-8.2 0-14.8 5.2-14.8 11.6v15c0 3.2 1.6 6.1 4.4 8.3 2.8 2.1 6.4 3.3 10.2 3.3V248z\"></path><path fill=\"currentColor\" d=\"M949 319.6c0 11-11.6 20-25.9 20H230.4c-14.3 0-25.9-8.9-25.9-20v-15c0-11 11.6-20 25.9-20H923c14.3 0 25.9 8.9 25.9 20v15z m0 0\"></path><path fill=\"currentColor\" d=\"M923.1 347.9H230.4c-20.4 0-37-12.7-37-28.3v-15c0-15.6 16.6-28.3 37-28.3H923c20.5 0 37 12.7 37 28.3v15c0.1 15.6-16.5 28.3-36.9 28.3z m0-54.9H230.4c-8.2 0-14.8 5.2-14.8 11.6v15c0 6.4 6.6 11.6 14.8 11.6H923c8.2 0 14.8-5.2 14.8-11.6v-15c0.1-6.3-6.5-11.6-14.7-11.6z\"></path><path fill=\"currentColor\" d=\"M793.6 419.6c0 11-11.6 20-25.9 20h-615c-14.3 0-25.9-8.9-25.9-20v-15c0-11 11.6-20 25.9-20h615c14.3 0 25.9 8.9 25.9 20v15z m0 0\"></path><path fill=\"currentColor\" d=\"M767.7 447.9h-615c-20.4 0-37-12.7-37-28.3v-15c0-15.6 16.6-28.3 37-28.3h615c20.4 0 37 12.7 37 28.3v15c0 15.6-16.6 28.3-37 28.3z m-615-55c-8.2 0-14.8 5.2-14.8 11.6v15c0 6.4 6.6 11.6 14.8 11.6h615c8.2 0 14.8-5.2 14.8-11.6v-15c0-6.4-6.6-11.6-14.8-11.6h-615z\"></path><path fill=\"currentColor\" d=\"M949 519.5c0 11-11.6 20-25.9 20h-615c-14.3 0-25.9-8.9-25.9-20v-15c0-11 11.6-20 25.9-20h615c14.3 0 25.9 8.9 25.9 20v15z m0 0\"></path><path fill=\"currentColor\" d=\"M923.1 547.8h-615c-20.4 0-37-12.7-37-28.3v-15c0-15.6 16.6-28.3 37-28.3h615c20.5 0 37 12.7 37 28.3v15c0 15.6-16.6 28.3-37 28.3z m0.1-54.9H308.1c-8.2 0-14.8 5.2-14.8 11.6v15c0 6.4 6.6 11.6 14.8 11.6h615c8.2 0 14.8-5.2 14.8-11.6v-15c0-6.4-6.6-11.6-14.7-11.6z\"></path><path fill=\"currentColor\" d=\"M819.5 619.4c0 11-11.6 20-25.9 20H437.5c-14.3 0-25.9-8.9-25.9-20v-15c0-11 11.6-20 25.9-20h356.1c14.3 0 25.9 8.9 25.9 20v15z m0 0\"></path><path fill=\"currentColor\" d=\"M793.6 647.7H437.5c-20.4 0-37-12.7-37-28.3v-15c0-15.6 16.6-28.3 37-28.3h356.1c20.4 0 37 12.7 37 28.3v15c0 15.6-16.6 28.3-37 28.3z m-356.1-54.9c-8.2 0-14.8 5.2-14.8 11.6v15c0 6.4 6.6 11.6 14.8 11.6h356.1c8.2 0 14.8-5.2 14.8-11.6v-15c0-6.4-6.6-11.6-14.8-11.6H437.5z\"></path><path fill=\"currentColor\" d=\"M690 719.3c0 11-11.6 20-25.9 20H463.4c-14.3 0-25.9-8.9-25.9-20v-15c0-11 11.6-20 25.9-20h200.7c14.3 0 25.9 8.9 25.9 20v15z m0 0\"></path><path fill=\"currentColor\" d=\"M664.1 747.6H463.4c-20.4 0-37-12.7-37-28.3v-15c0-15.6 16.6-28.3 37-28.3h200.7c20.4 0 37 12.7 37 28.3v15c0 15.6-16.6 28.3-37 28.3z m-200.7-54.9c-8.2 0-14.8 5.2-14.8 11.6v15c0 6.4 6.6 11.6 14.8 11.6h200.7c8.2 0 14.8-5.2 14.8-11.6v-15c0-6.4-6.6-11.6-14.8-11.6H463.4z\"></path><path fill=\"currentColor\" d=\"M560.6 819.3c0 11-11.6 20-25.9 20h-77.3c-14.3 0-25.9-8.9-25.9-20v-15c0-11 11.6-20 25.9-20h77.3c14.3 0 25.9 8.9 25.9 20v15z m0 0\"></path><path fill=\"currentColor\" d=\"M534.7 847.6h-77.3c-20.4 0-37-12.7-37-28.3v-15c0-15.6 16.6-28.3 37-28.3h77.3c20.4 0 37 12.7 37 28.3v15c0 15.6-16.6 28.3-37 28.3z m-77.3-55c-8.2 0-14.8 5.2-14.8 11.6v15c0 6.4 6.6 11.6 14.8 11.6h77.3c8.2 0 14.8-5.2 14.8-11.6v-15c0-6.4-6.6-11.6-14.8-11.6h-77.3z\"></path>', 14), _hoisted_1669 = [\n  _hoisted_2667\n];\nfunction _sfc_render667(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock667(), _createElementBlock667(\"svg\", _hoisted_1668, _hoisted_1669);\n}\nvar weather_longjuanfeng_default = /* @__PURE__ */ export_helper_default(weather_longjuanfeng_vue_vue_type_script_lang_default, [[\"render\", _sfc_render667], [\"__file\", \"weather-longjuanfeng.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-mai.vue?vue&type=script&lang.ts\nvar weather_mai_vue_vue_type_script_lang_default = {\n  name: \"WeatherMai\"\n};\n\n// src/components/weather-mai.vue\nimport { openBlock as _openBlock668, createElementBlock as _createElementBlock668, createStaticVNode as _createStaticVNode25 } from \"vue\";\nvar _hoisted_1670 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2668 = /* @__PURE__ */ _createStaticVNode25('<path fill=\"currentColor\" d=\"M948.9 532.8c-9.6 109-79.1 196.8-226.3 196.8-74 0-131.3-28.5-170.3-72.3-15.9-17.3-28.8-37-38.7-58.3-1.3-1.7-3.9-1.7-5.1 0-0.3 0.5-0.7 0.9-1 1.3-34.1 74.3-104.5 129.3-206.9 129.3-146.9 0-216.1-87.8-225.7-196.8 0 0-1-17.6-1-17.8-0.1-2.2 1.2-24.1 1.2-24.1C84.7 382 154 294.3 300.9 294.3c102.5 0 172.9 54.9 207 129.2 0.3 0.4 0.7 0.9 1 1.4 1.3 1.7 3.9 1.7 5.1 0 9.9-21.3 22.8-41 38.7-58.3 39.1-43.7 96.3-72.2 170.4-72.2 147.3 0 216.7 87.7 226.4 196.6 0 0 1.2 22.8 1.2 27-0.4 4.9-1.8 14.8-1.8 14.8z\"></path><path fill=\"currentColor\" d=\"M722.6 739.5c-72.1 0-133.5-26.1-177.6-75.5-13.3-14.4-24.7-30.6-34.1-48.3C470 694.6 394 739.5 300.5 739.5c-72.1 0-129.7-20.3-171.2-60.3-36.8-35.6-59.1-85.9-64.3-145.5v-0.3c-0.9-14.7-1-17.4-1.1-18.1v-0.2-0.1c0-3 0.7-16.6 1.2-24.6v-0.3c5.3-59.6 27.5-109.8 64.4-145.4 41.5-40 99-60.2 171.2-60.2 93.5 0 169.5 44.9 210.4 123.7 9.4-17.7 20.9-33.9 34.1-48.3 44.1-49.4 105.6-75.4 177.6-75.4 72.3 0 130 20.3 171.6 60.2 37 35.5 59.3 85.8 64.5 145.4v0.4c0.1 2.4 1.2 23.2 1.2 27.5 0 5.2-1.2 14.1-1.5 16-5.3 59.5-27.6 109.7-64.5 145.2-41.5 40-99.2 60.3-171.5 60.3zM521.5 593.3l0.6 0.8 0.4 0.8c9.6 20.8 22 39.5 37 55.8l0.1 0.1c40.3 45.1 96.7 69 163 69 127.1 0 206-68.5 216.6-187.9l0.1-0.5c0.5-3.6 1.3-10.4 1.3-13.5 0-2.9-0.7-17.2-1.2-26.3-10.6-119.2-89.5-187.5-216.6-187.5-66.4 0-122.7 23.8-163.1 68.9l-0.1 0.1c-15 16.2-27.4 35-37 55.7l-0.4 0.9-0.6 0.8c-2.5 3.4-6.4 5.3-10.5 5.3s-8-2-10.4-5.3l-1.6-2.1-0.4-0.9C462.7 349 390.5 304 300.6 304c-126.7 0-205.4 68.4-216 187.5-0.6 10-1.1 21.1-1.1 23.1 0.1 1.8 0.9 15.8 1 17.4 10.6 119.3 89.3 187.7 216 187.7 89.8 0 162-45 198-123.6l0.4-0.9 1.6-2.1c2.4-3.3 6.3-5.3 10.5-5.3 4.1 0 8 2 10.5 5.2v0.3z\"></path><path fill=\"currentColor\" d=\"M296.6 620.2c-1.9 0-3.8 0-5.7-0.1-49.1-1.1-87.4-23.4-105-61.1-2.4-5.2-4.3-10.7-5.8-16.4h0.4l-2-11.5c-1.3-7.1-1.9-14.4-1.9-21.5v-1-1c0.3-5 0.8-10.1 1.7-15l2-11.5h-0.1c1.5-5.7 3.5-11.2 5.9-16.5 17.6-37.6 55.9-59.8 105-60.9 2 0 3.9-0.1 5.8-0.1 33.4 0 59.8 7.6 80.5 23.3 26.6 20.1 41.9 50.9 42 84.6 0.1 33.8-15.2 64.9-41.8 85.2-21 15.8-47.4 23.5-81 23.5z\"></path><path fill=\"currentColor\" d=\"M296.8 413.5c31.7 0 55.4 6.8 74.6 21.3 24.1 18.2 38 46.2 38.1 76.8 0.1 30.7-13.8 58.9-38 77.3-19.3 14.7-43 21.5-74.8 21.5-1.8 0-3.6 0-5.5-0.1-45.2-1-80.3-21.2-96.3-55.3-1.6-3.5-2.9-7-4.1-10.7l-2.6-14.9c-1.2-6.6-1.8-13.2-1.8-19.8v-0.6-1c0.3-4.6 0.8-9.2 1.6-13.7l2.2-12.3c1.3-4.5 2.9-9 4.8-13.2 16-34.1 51.1-54.2 96.4-55.3h5.4m0-19.6c-2 0-4 0-6 0.1-56.7 1.3-95.9 28.8-113.7 66.7-4.3 9.5-7.3 19.7-9 30.3h0.5c-1 5.4-1.6 10.9-1.9 16.4 0 0.8-0.1 1.5-0.1 2.3 0 7.8 0.7 15.5 2.1 23.2h-0.7c1.6 10.6 4.6 20.8 9 30.4 17.7 37.9 57 65.4 113.7 66.7 2 0 4 0.1 6 0.1 39 0 66.1-9.8 86.7-25.5 60.9-46.4 61-139.2-0.2-185.4-20.6-15.7-47.6-25.3-86.4-25.3z\"></path><path fill=\"currentColor\" d=\"M722.4 617.8c-26.2 0-47.7-4.7-65.6-14.3-9.7-5.6-18.5-12.9-26.7-22.1-17.1-19-26.4-43.6-26.4-69.3 0-25.7 9.4-50.4 26.4-69.4 8.3-9.3 17.2-16.6 26.9-22.3 17.9-9.6 39.3-14.3 65.6-14.3 1.8 0 3.7 0 5.6 0.1 30.7 0.7 57.4 9.9 77.1 26.5 14.5 12.2 24.9 27.9 30.4 46h-0.1l2.6 14.4c1.3 7 1.9 14 1.9 20.9 0 1.3 0 2.6-0.1 3.8-0.3 4.4-0.8 8.7-1.6 12.8l-2.1 11.5c-5.3 19.4-15.9 36.2-31.3 49.1-19.8 16.6-46.4 25.8-77.1 26.5-1.8 0.1-3.6 0.1-5.5 0.1z\"></path><path fill=\"currentColor\" d=\"M722.6 418.4c1.7 0 3.5 0 5.4 0.1 27.9 0.6 51.9 8.8 69.5 23.6 12.3 10.3 21.1 23.5 26.1 38.7l2.6 14.6c1.1 6.3 1.7 12.6 1.7 18.8 0 1 0 2.1-0.1 3.2-0.3 3.9-0.8 7.7-1.4 11.2l-2 10.9c-4.7 16.8-13.9 31.3-27.2 42.5-17.6 14.8-41.6 23-69.5 23.6-1.8 0-3.6 0.1-5.3 0.1-24.1 0-43.6-4.2-59.6-12.8-8.5-5-16.3-11.4-23.6-19.6-15-16.7-23.3-38.4-23.3-61.1 0-22.7 8.3-44.4 23.3-61.2 7.4-8.3 15.2-14.7 23.8-19.8 16.1-8.6 35.6-12.8 59.6-12.8m0-24.5c-30.2 0-53.1 5.9-71.6 15.9-11.7 6.7-21.5 15.2-30.1 24.8-39.4 44-39.5 111.2 0 155 8.6 9.5 18.3 17.9 29.9 24.6 18.4 10 41.4 15.9 71.6 15.9 1.9 0 3.9 0 5.9-0.1 70.7-1.6 114.3-44.3 122.6-97.1h-0.4c0.9-4.7 1.4-9.5 1.7-14.3 0.1-1.5 0.1-3 0.1-4.5 0-7.7-0.7-15.5-2.1-23.1h0.8c-8.3-52.8-51.9-95.4-122.6-97-1.8-0.1-3.8-0.1-5.8-0.1z\"></path>', 6), _hoisted_87 = [\n  _hoisted_2668\n];\nfunction _sfc_render668(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock668(), _createElementBlock668(\"svg\", _hoisted_1670, _hoisted_87);\n}\nvar weather_mai_default = /* @__PURE__ */ export_helper_default(weather_mai_vue_vue_type_script_lang_default, [[\"render\", _sfc_render668], [\"__file\", \"weather-mai.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-qingtian.vue?vue&type=script&lang.ts\nvar weather_qingtian_vue_vue_type_script_lang_default = {\n  name: \"WeatherQingtian\"\n};\n\n// src/components/weather-qingtian.vue\nimport { openBlock as _openBlock669, createElementBlock as _createElementBlock669, createStaticVNode as _createStaticVNode26 } from \"vue\";\nvar _hoisted_1671 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2669 = /* @__PURE__ */ _createStaticVNode26('<path fill=\"currentColor\" d=\"M509.6 314.4C400.5 314.4 312 402.9 312 512s88.5 197.6 197.6 197.6S707.2 621.1 707.2 512s-88.4-197.6-197.6-197.6z m0 331.7c-74 0-134.1-60-134.1-134.1s60-134.1 134.1-134.1S643.7 438 643.7 512s-60 134.1-134.1 134.1z\"></path><path fill=\"currentColor\" d=\"M509.7 713.1c-110.9 0-201.1-90.2-201.1-201.1s90.2-201.1 201.1-201.1S710.8 401.1 710.8 512s-90.3 201.1-201.1 201.1z m0-395.2c-107 0-194.1 87.1-194.1 194.1s87.1 194.1 194.1 194.1 194-87.1 194-194.1-87.1-194.1-194-194.1z m0 331.7C433.8 649.6 372 587.9 372 512s61.7-137.6 137.6-137.6S647.3 436.1 647.3 512s-61.8 137.6-137.6 137.6z m0-268.1c-72 0-130.5 58.6-130.5 130.5s58.6 130.5 130.5 130.5S640.2 584 640.2 512s-58.6-130.5-130.5-130.5z\"></path><path fill=\"currentColor\" d=\"M532.5 250.9h-43c-0.9 0-1.6-0.7-1.6-1.6V146.7c0-0.9 0.7-1.6 1.6-1.6h43c0.9 0 1.6 0.7 1.6 1.6v102.6c0 0.9-0.7 1.6-1.6 1.6z\"></path><path fill=\"currentColor\" d=\"M511 254.4c-14.7 0-26.6-12-26.6-26.6v-59.6c0-14.7 12-26.6 26.6-26.6 14.7 0 26.6 12 26.6 26.6v59.6c0.1 14.7-11.9 26.6-26.6 26.6z m0-105.8c-10.8 0-19.6 8.8-19.6 19.6v59.6c0 10.8 8.8 19.6 19.6 19.6s19.6-8.8 19.6-19.6v-59.6c0-10.8-8.8-19.6-19.6-19.6z\"></path><path fill=\"currentColor\" d=\"M341.9 312.9l-30.4 30.4c-0.6 0.6-1.7 0.6-2.3 0l-72.5-72.5c-0.6-0.6-0.6-1.7 0-2.3L267 238c0.6-0.6 1.7-0.6 2.3 0l72.5 72.5c0.7 0.7 0.7 1.7 0.1 2.4z\"></path><path fill=\"currentColor\" d=\"M310.3 338.3c-7.1 0-13.8-2.8-18.8-7.8l-42.2-42.2c-5-5-7.8-11.7-7.8-18.8 0-7.1 2.8-13.8 7.8-18.8 10-10 27.7-10 37.7 0l42.2 42.2c5 5 7.8 11.7 7.8 18.8 0 7.1-2.8 13.8-7.8 18.8-5 5.1-11.7 7.8-18.9 7.8zM268.2 250c-5.3 0-10.2 2-13.9 5.7-3.7 3.7-5.7 8.6-5.7 13.9s2 10.2 5.7 13.9l42.2 42.2c7.4 7.4 20.3 7.4 27.7 0 3.7-3.7 5.7-8.6 5.7-13.9 0-5.3-2-10.2-5.7-13.9L282 255.7c-3.6-3.7-8.6-5.7-13.8-5.7z\"></path><path fill=\"currentColor\" d=\"M250.9 491.5v43c0 0.9-0.7 1.6-1.6 1.6H146.7c-0.9 0-1.6-0.7-1.6-1.6v-43c0-0.9 0.7-1.6 1.6-1.6h102.6c0.9 0 1.6 0.7 1.6 1.6z\"></path><path fill=\"currentColor\" d=\"M227.8 539.6h-59.6c-14.7 0-26.6-12-26.6-26.6 0-14.7 12-26.6 26.6-26.6h59.6c14.7 0 26.6 11.9 26.6 26.6 0 14.7-11.9 26.6-26.6 26.6z m-59.6-46.2c-10.8 0-19.6 8.8-19.6 19.6s8.8 19.6 19.6 19.6h59.6c10.8 0 19.6-8.8 19.6-19.6s-8.8-19.6-19.6-19.6h-59.6z\"></path><path fill=\"currentColor\" d=\"M312.9 682.1l30.4 30.4c0.6 0.6 0.6 1.7 0 2.3l-72.5 72.5c-0.6 0.6-1.7 0.6-2.3 0L238 757c-0.6-0.6-0.6-1.7 0-2.3l72.5-72.5c0.7-0.7 1.7-0.7 2.4-0.1z\"></path><path fill=\"currentColor\" d=\"M269.6 782.4c-7.1 0-13.8-2.8-18.8-7.8s-7.8-11.7-7.8-18.8c0-7.1 2.8-13.8 7.8-18.8l42.2-42.2c10-10 27.6-10 37.7 0 5 5 7.8 11.7 7.8 18.8 0 7.1-2.8 13.8-7.8 18.8l-42.2 42.2c-5.1 5.1-11.8 7.8-18.9 7.8z m42.1-88.3c-5.3 0-10.2 2-13.9 5.7L255.7 742c-3.7 3.7-5.7 8.6-5.7 13.9s2 10.2 5.7 13.9c7.4 7.4 20.3 7.4 27.7 0l42.2-42.2c3.7-3.7 5.7-8.6 5.7-13.9 0-5.3-2-10.2-5.7-13.9-3.7-3.7-8.6-5.7-13.9-5.7z\"></path><path fill=\"currentColor\" d=\"M491.5 773.1h43c0.9 0 1.6 0.7 1.6 1.6v102.6c0 0.9-0.7 1.6-1.6 1.6h-43c-0.9 0-1.6-0.7-1.6-1.6V774.7c0-0.9 0.7-1.6 1.6-1.6z\"></path><path fill=\"currentColor\" d=\"M513 882.5c-14.7 0-26.6-12-26.6-26.6v-59.6c0-14.7 11.9-26.6 26.6-26.6 14.7 0 26.6 12 26.6 26.6v59.6c0 14.6-11.9 26.6-26.6 26.6z m0-105.9c-10.8 0-19.6 8.8-19.6 19.6v59.6c0 10.8 8.8 19.6 19.6 19.6s19.6-8.8 19.6-19.6v-59.6c0-10.8-8.8-19.6-19.6-19.6z\"></path><path fill=\"currentColor\" d=\"M682.1 711.1l30.4-30.4c0.6-0.6 1.7-0.6 2.3 0l72.5 72.5c0.6 0.6 0.6 1.7 0 2.3L757 786c-0.6 0.6-1.7 0.6-2.3 0l-72.5-72.5c-0.7-0.7-0.7-1.7-0.1-2.4z\"></path><path fill=\"currentColor\" d=\"M755.8 781.1c-7.1 0-13.8-2.8-18.8-7.8l-42.2-42.2c-5-5-7.8-11.7-7.8-18.8 0-7.1 2.8-13.8 7.8-18.8 10-10 27.7-10 37.7 0l42.2 42.2c5 5 7.8 11.7 7.8 18.8 0 7.1-2.8 13.8-7.8 18.8-5.1 5-11.8 7.8-18.9 7.8z m-42.1-88.4c-5.3 0-10.2 2-13.9 5.7s-5.7 8.6-5.7 13.9c0 5.3 2 10.2 5.7 13.9l42.2 42.2c7.4 7.4 20.3 7.4 27.7 0 3.7-3.7 5.7-8.6 5.7-13.9s-2-10.2-5.7-13.9l-42.2-42.2c-3.7-3.7-8.6-5.7-13.8-5.7z\"></path><path fill=\"currentColor\" d=\"M773.1 532.5v-43c0-0.9 0.7-1.6 1.6-1.6h102.6c0.9 0 1.6 0.7 1.6 1.6v43c0 0.9-0.7 1.6-1.6 1.6H774.7c-0.9 0-1.6-0.7-1.6-1.6z\"></path><path fill=\"currentColor\" d=\"M855.8 537.7h-59.6c-14.7 0-26.6-11.9-26.6-26.6 0-14.7 12-26.6 26.6-26.6h59.6c14.7 0 26.6 12 26.6 26.6 0.1 14.6-11.9 26.6-26.6 26.6z m-59.6-46.3c-10.8 0-19.6 8.8-19.6 19.6s8.8 19.6 19.6 19.6h59.6c10.8 0 19.6-8.8 19.6-19.6s-8.8-19.6-19.6-19.6h-59.6z\"></path><path fill=\"currentColor\" d=\"M711.1 341.9l-30.4-30.4c-0.6-0.6-0.6-1.7 0-2.3l72.5-72.5c0.6-0.6 1.7-0.6 2.3 0L786 267c0.6 0.6 0.6 1.7 0 2.3l-72.5 72.5c-0.7 0.7-1.7 0.7-2.4 0.1z\"></path><path fill=\"currentColor\" d=\"M712.3 337c-7.1 0-13.8-2.8-18.8-7.8s-7.8-11.7-7.8-18.8c0-7.1 2.8-13.8 7.8-18.8l42.2-42.2c10-10 27.6-10 37.7 0 5 5 7.8 11.7 7.8 18.8 0 7.1-2.8 13.8-7.8 18.8l-42.2 42.2c-5.1 5-11.8 7.8-18.9 7.8z m42.1-88.4c-5.3 0-10.2 2-13.9 5.7l-42.2 42.2c-3.7 3.7-5.7 8.6-5.7 13.9s2 10.2 5.7 13.9c7.4 7.4 20.3 7.4 27.7 0l42.2-42.2c3.7-3.7 5.7-8.6 5.7-13.9s-2-10.2-5.7-13.9c-3.6-3.6-8.5-5.7-13.8-5.7z\"></path>', 18), _hoisted_20 = [\n  _hoisted_2669\n];\nfunction _sfc_render669(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock669(), _createElementBlock669(\"svg\", _hoisted_1671, _hoisted_20);\n}\nvar weather_qingtian_default = /* @__PURE__ */ export_helper_default(weather_qingtian_vue_vue_type_script_lang_default, [[\"render\", _sfc_render669], [\"__file\", \"weather-qingtian.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-shachenbao.vue?vue&type=script&lang.ts\nvar weather_shachenbao_vue_vue_type_script_lang_default = {\n  name: \"WeatherShachenbao\"\n};\n\n// src/components/weather-shachenbao.vue\nimport { openBlock as _openBlock670, createElementBlock as _createElementBlock670, createStaticVNode as _createStaticVNode27 } from \"vue\";\nvar _hoisted_1672 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2670 = /* @__PURE__ */ _createStaticVNode27('<path fill=\"currentColor\" d=\"M423.4 450.6c1.9 0 3.8 0.3 5.7 0 61.5-5.8 109.9-56.4 109.9-119.4 0-66.5-53.8-120.3-120.2-120.9-13.3-0.1-26.2 7.8-30.6 20.4-7.7 21.9 8 42.5 28.8 43 12.5 0.3 25.1 3.6 34.6 11.8 50.1 43 15 110.2-33.8 110.2H100.2c-15.6 0-29.6 12.1-29.4 27.7 0.2 17.1 14.3 26.8 31.6 26.8l321 0.4z\"></path><path fill=\"currentColor\" d=\"M427.2 457.5c-0.8 0-1.5 0-2.3-0.1l-1.5-0.1-321.2-0.5c-22.3 0-38.1-13.8-38.3-33.5-0.1-8.7 3.3-17.1 9.7-23.5 6.9-7 16.6-11 26.5-11h317.6c20.8 0 40.1-14.2 48-35.4 8.2-22.2 1.3-45.7-18.6-62.8-9.3-8-21.6-10-30.3-10.2-12.2-0.3-23.7-6.5-30.6-16.6-7.1-10.3-8.7-23.3-4.4-35.5 5.2-14.9 20-24.9 36.8-24.9 70.3 0.6 127.3 57.9 127.3 127.7 0 65.7-49.9 120-116 126.2-0.6 0.2-1.6 0.2-2.7 0.2zM100 402.4c-6.3 0-12.4 2.5-16.8 7-3.8 3.8-5.8 8.7-5.8 13.8 0.2 14.8 13.5 20.1 24.7 20.1l321.2 0.5c0.8 0 1.6 0 2.3 0.1l1.5 0.1h0.6c59.7-5.6 104.3-54.1 104.3-112.7 0-62.4-50.9-113.5-113.4-114.1-11 0-20.9 6.5-24.2 15.8-2.8 8.1-1.8 16.6 2.8 23.3 4.5 6.5 11.9 10.5 19.7 10.7 15.6 0.4 29 5 38.8 13.4 24.4 20.9 32.8 50 22.5 77.8-9.8 26.5-34.2 44.3-60.7 44.3H100z\"></path><path fill=\"currentColor\" d=\"M433.1 560c-2.6-0.7-5.2 0-8 0l-180.5-1c-16.4 0-29.4 14.9-29.4 31.3v3.6c0 16.4 13 33.7 29.4 33.7l172.1-0.4h1.3c25.2 0 48.5 16.6 53.7 41.2 7.6 35.7-19.4 66.4-53.6 66.7-15.8 0.1-30.1 12-31.8 27.7-2 19.1 12.8 34.9 31.4 34.9 65.3 0 118.4-53.6 118.4-118.9 0-60.1-45-111.2-103-118.8z\"></path><path fill=\"currentColor\" d=\"M417.7 804.4c-10.9 0-21.4-4.6-28.6-12.7-7.3-8.1-10.7-18.7-9.5-29.7 2-18.8 18.9-33.6 38.5-33.8 14.8-0.1 28.5-6.7 37.7-18.1 9.1-11.3 12.4-25.7 9.3-40.4-4.4-20.7-24.2-35.8-47-35.8l-173.4 0.4c-21.4 0-36.2-21.3-36.2-40.5v-3.6c0-20.6 16.6-38.1 36.2-38.1l180.6 1c0.7 0 1.4-0.1 2.1-0.1 2.7-0.2 5.3-0.2 7.6 0.4 61.1 8 107.9 61.9 107.9 125.3 0 69.3-56.2 125.7-125.2 125.7z m-1-184.1c30.6 0 56 19.6 61.7 46.6 3.9 18.5-0.5 37.4-12 51.8-11.7 14.6-29.3 23-48.2 23.2-12.8 0.1-23.8 9.6-25.1 21.6-0.8 7.1 1.4 14 6.1 19.2 4.7 5.2 11.4 8.2 18.5 8.2 61.5 0 111.6-50.3 111.6-112.1 0-56.6-41.7-104.7-97.1-112l-1.7-0.3c-0.7 0-1.3 0.1-2 0.1-1.1 0.1-2.2 0.2-3.4 0.2l-180.6-1c-12 0-22.6 11.4-22.6 24.5v3.6c0 12.4 9.9 26.8 22.6 26.8l172.2-0.4z\"></path><path fill=\"currentColor\" d=\"M587.9 781.8c0 26.7 21.6 48.3 48.3 48.3s48.3-21.6 48.3-48.3c0-26.7-21.6-48.3-48.3-48.3s-48.3 21.6-48.3 48.3z\"></path><path fill=\"currentColor\" d=\"M636.2 836.9c-30.4 0-55.1-24.7-55.1-55.1 0-30.4 24.7-55.1 55.1-55.1 30.4 0 55.1 24.7 55.1 55.1 0 30.4-24.7 55.1-55.1 55.1z m0-96.6c-22.9 0-41.5 18.6-41.5 41.5s18.6 41.5 41.5 41.5 41.5-18.6 41.5-41.5-18.6-41.5-41.5-41.5z\"></path><path fill=\"currentColor\" d=\"M587.9 601.9c0 26.7 21.6 48.3 48.3 48.3s48.3-21.6 48.3-48.3-21.6-48.3-48.3-48.3-48.3 21.6-48.3 48.3z\"></path><path fill=\"currentColor\" d=\"M636.2 657.1c-30.4 0-55.1-24.7-55.1-55.1s24.7-55.1 55.1-55.1c30.4 0 55.1 24.7 55.1 55.1s-24.7 55.1-55.1 55.1z m0-96.7c-22.9 0-41.5 18.6-41.5 41.5s18.6 41.5 41.5 41.5 41.5-18.6 41.5-41.5-18.6-41.5-41.5-41.5z\"></path><path fill=\"currentColor\" d=\"M587.9 422.1c0 26.7 21.6 48.3 48.3 48.3s48.3-21.6 48.3-48.3c0-26.7-21.6-48.3-48.3-48.3s-48.3 21.6-48.3 48.3z\"></path><path fill=\"currentColor\" d=\"M636.2 477.2c-30.4 0-55.1-24.7-55.1-55.1s24.7-55.1 55.1-55.1c30.4 0 55.1 24.7 55.1 55.1s-24.7 55.1-55.1 55.1z m0-96.6c-22.9 0-41.5 18.6-41.5 41.5s18.6 41.5 41.5 41.5 41.5-18.6 41.5-41.5-18.6-41.5-41.5-41.5z\"></path><path fill=\"currentColor\" d=\"M587.9 242.2c0 26.7 21.6 48.3 48.3 48.3s48.3-21.6 48.3-48.3-21.6-48.3-48.3-48.3-48.3 21.6-48.3 48.3z\"></path><path fill=\"currentColor\" d=\"M636.2 297.3c-30.4 0-55.1-24.7-55.1-55.1s24.7-55.1 55.1-55.1c30.4 0 55.1 24.7 55.1 55.1s-24.7 55.1-55.1 55.1z m0-96.6c-22.9 0-41.5 18.6-41.5 41.5s18.6 41.5 41.5 41.5 41.5-18.6 41.5-41.5-18.6-41.5-41.5-41.5z\"></path><path fill=\"currentColor\" d=\"M722.3 687.9c0 26.7 21.6 48.3 48.3 48.3 26.7 0 48.3-21.6 48.3-48.3s-21.6-48.3-48.3-48.3c-26.7 0-48.3 21.6-48.3 48.3z\"></path><path fill=\"currentColor\" d=\"M770.6 743c-30.4 0-55.1-24.7-55.1-55.1 0-30.4 24.7-55.1 55.1-55.1 30.4 0 55.1 24.7 55.1 55.1 0 30.4-24.7 55.1-55.1 55.1z m0-96.6c-22.9 0-41.5 18.6-41.5 41.5s18.6 41.5 41.5 41.5 41.5-18.6 41.5-41.5-18.6-41.5-41.5-41.5z\"></path><path fill=\"currentColor\" d=\"M722.3 508.1c0 26.7 21.6 48.3 48.3 48.3 26.7 0 48.3-21.6 48.3-48.3s-21.6-48.3-48.3-48.3c-26.7-0.1-48.3 21.6-48.3 48.3z\"></path><path fill=\"currentColor\" d=\"M770.6 563.2c-30.4 0-55.1-24.7-55.1-55.1 0-30.4 24.7-55.1 55.1-55.1 30.4 0 55.1 24.7 55.1 55.1 0 30.4-24.7 55.1-55.1 55.1z m0-96.7c-22.9 0-41.5 18.6-41.5 41.5s18.6 41.5 41.5 41.5 41.5-18.6 41.5-41.5c0-22.8-18.6-41.5-41.5-41.5z\"></path><path fill=\"currentColor\" d=\"M722.3 328.2c0 26.7 21.6 48.3 48.3 48.3 26.7 0 48.3-21.6 48.3-48.3 0-26.7-21.6-48.3-48.3-48.3-26.7 0-48.3 21.6-48.3 48.3z\"></path><path fill=\"currentColor\" d=\"M770.6 383.3c-30.4 0-55.1-24.7-55.1-55.1 0-30.4 24.7-55.1 55.1-55.1 30.4 0 55.1 24.7 55.1 55.1 0 30.4-24.7 55.1-55.1 55.1z m0-96.6c-22.9 0-41.5 18.6-41.5 41.5s18.6 41.5 41.5 41.5 41.5-18.6 41.5-41.5-18.6-41.5-41.5-41.5z\"></path><path fill=\"currentColor\" d=\"M856.7 598c0 26.7 21.6 48.3 48.3 48.3s48.3-21.6 48.3-48.3c0-26.7-21.6-48.3-48.3-48.3s-48.3 21.6-48.3 48.3z\"></path><path fill=\"currentColor\" d=\"M905 653.1c-30.4 0-55.1-24.7-55.1-55.1 0-30.4 24.7-55.1 55.1-55.1 30.4 0 55.1 24.7 55.1 55.1 0 30.4-24.7 55.1-55.1 55.1z m0-96.6c-22.9 0-41.5 18.6-41.5 41.5s18.6 41.5 41.5 41.5 41.5-18.6 41.5-41.5-18.6-41.5-41.5-41.5z\"></path><path fill=\"currentColor\" d=\"M856.7 418.1c0 26.7 21.6 48.3 48.3 48.3s48.3-21.6 48.3-48.3c0-26.7-21.6-48.3-48.3-48.3s-48.3 21.6-48.3 48.3z\"></path><path fill=\"currentColor\" d=\"M905 473.3c-30.4 0-55.1-24.7-55.1-55.1 0-30.4 24.7-55.1 55.1-55.1 30.4 0 55.1 24.7 55.1 55.1 0 30.3-24.7 55.1-55.1 55.1z m0-96.7c-22.9 0-41.5 18.6-41.5 41.5s18.6 41.5 41.5 41.5 41.5-18.6 41.5-41.5-18.6-41.5-41.5-41.5z\"></path>', 22), _hoisted_24100 = [\n  _hoisted_2670\n];\nfunction _sfc_render670(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock670(), _createElementBlock670(\"svg\", _hoisted_1672, _hoisted_24100);\n}\nvar weather_shachenbao_default = /* @__PURE__ */ export_helper_default(weather_shachenbao_vue_vue_type_script_lang_default, [[\"render\", _sfc_render670], [\"__file\", \"weather-shachenbao.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-tedabaoyu.vue?vue&type=script&lang.ts\nvar weather_tedabaoyu_vue_vue_type_script_lang_default = {\n  name: \"WeatherTedabaoyu\"\n};\n\n// src/components/weather-tedabaoyu.vue\nimport { openBlock as _openBlock671, createElementBlock as _createElementBlock671, createStaticVNode as _createStaticVNode28 } from \"vue\";\nvar _hoisted_1673 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2671 = /* @__PURE__ */ _createStaticVNode28('<path fill=\"currentColor\" d=\"M503.4 347m-228.9 0a228.9 228.9 0 1 0 457.8 0 228.9 228.9 0 1 0-457.8 0Z\"></path><path fill=\"currentColor\" d=\"M774.3 363.6m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M249.9 363.6m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.3 181.4c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.5 0-166.9 42.8-216.2 108.5-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.3 81.6-182.3 182.3 0 100.7 81.6 182.3 182.3 182.3 21.1 0 41.3-3.8 60.2-10.4 49.1 50.3 117.5 81.7 193.4 81.7 78.2 0 148.5-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.3-81.6 182.3-182.3-0.1-100.6-81.7-182.2-182.3-182.2z m0 313c-29 0-55.7-9.6-77.4-25.5-40.5 64.2-111.9 107-193.4 107-75.3 0-141.9-36.5-183.6-92.7-20.5 12.1-44.4 19.1-69.9 19.1-76.5 0-138.6-62-138.6-138.6 0-76.5 62-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.7 200-117.7 91.5 0 170.3 53.9 206.9 131.5 18.9-10.6 40.7-16.8 63.9-16.8 72.2 0 130.8 58.5 130.8 130.8-0.2 72.2-58.7 130.7-130.9 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 620.7c-73.5 0-142.5-28.8-194.3-81.2-19.4 6.5-39.3 9.9-59.2 9.9-102.4 0-185.7-83.3-185.7-185.7S147.5 178 249.9 178c12 0 24.1 1.2 36 3.5 52.4-68.8 131.5-108.2 217.6-108.2 86.6 0 168.7 41.7 220.3 111.7 16.6-4.7 33.6-7.1 50.5-7.1 102.4 0 185.7 83.3 185.7 185.7s-83.3 185.7-185.7 185.7c-24.9 0-49.1-4.9-72.1-14.6-51.8 54.7-124 86-198.8 86z m-194.6-88.4l3.6 0.8c50.7 52 118.5 80.6 190.9 80.6 74.8 0 144.1-30.4 195.3-85.5l3.9-0.8c22.8 10 46.8 15 71.6 15 98.6 0 178.8-80.2 178.8-178.8s-80.2-178.8-178.8-178.8c-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3c-50.2-69.4-131-110.8-216.1-110.8-84.6 0-162.4 39.1-213.4 107.2l-3.5 1.3c-12.1-2.5-24.5-3.8-36.7-3.8C151.2 184.8 71 265 71 363.7s80.2 178.8 178.8 178.8c19.9 0 39.7-3.4 59-10.2z m194.6 47c-73 0-140.1-33.4-184.6-91.6-21.2 11.8-45 18-69 18-78.3 0-142-63.7-142-142s63.7-142 142-142c18 0 35.5 3.3 52.1 9.9 41.4-72.1 118.3-116.8 201.5-116.8 88.1 0 169.6 51 208.4 130.2 19.2-10.1 40.7-15.4 62.4-15.4 74 0 134.2 60.2 134.2 134.2S848.2 498 774.2 498c-27.5 0-53.8-8.3-76.4-24.1-43.2 66-115.6 105.4-194.4 105.4zM318 480.2l4.5 0.9c43.1 58 109 91.3 180.9 91.3 77.6 0 148.9-39.4 190.5-105.4l5-0.9C721 482.4 747 491 774.2 491c70.2 0 127.3-57.1 127.3-127.3s-57.1-127.3-127.3-127.3c-21.7 0-43.3 5.6-62.2 16.3l-4.8-1.5c-37.1-78.7-117.1-129.6-203.8-129.6-81.7 0-157.1 44.4-197 116l-4.3 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.1 60.6-135.1 135.1s60.6 135.1 135.1 135.1c23.9 0 47.4-6.5 68.2-18.6z\"></path><path fill=\"currentColor\" d=\"M710.3 249.7c-39.9 22.4-66.8 65-66.8 114 0 43.2 21.1 81.4 53.4 105.2 22.3-35.3 35.4-77 35.4-121.9 0-34.9-8-67.8-22-97.3z\"></path><path fill=\"currentColor\" d=\"M388.4 363.6c0-57.5-35.1-106.9-85-127.8-18.3 32.9-28.9 70.8-28.9 111.1 0 51.1 16.9 98.1 45.2 136.2 41.1-24 68.7-68.5 68.7-119.5z\"></path><path fill=\"currentColor\" d=\"M289.5 679.4c0 30.5-24.7 55.2-55.2 55.2s-55.2-24.7-55.2-55.2c0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M234.3 738c-32.3 0-58.7-26.3-58.7-58.7 0-23.7 30.4-73.8 48.6-101.5 4.5-6.8 15.7-6.8 20.1 0 18.1 27.7 48.6 77.8 48.6 101.5 0 32.4-26.3 58.7-58.6 58.7z m0-158.7c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8 28.5 0 51.8-23.2 51.8-51.8 0-22.8-33.2-76-47.5-97.8-1-1.5-2.6-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M565.5 755.2c0 30.5-24.7 55.2-55.2 55.2s-55.2-24.7-55.2-55.2c0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M510.3 813.9c-32.3 0-58.7-26.3-58.7-58.7 0-23.7 30.4-73.8 48.6-101.5 4.5-6.8 15.7-6.8 20.1 0 18.1 27.7 48.6 77.8 48.6 101.5 0 32.4-26.3 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8s51.8-23.2 51.8-51.8c0-22.8-33.2-76-47.5-97.8-1-1.4-2.6-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M841.5 671.3c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M786.3 729.9c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.4-73.8 48.6-101.5 4.5-6.8 15.7-6.8 20.1 0 18.1 27.7 48.6 77.8 48.6 101.5 0 32.4-26.3 58.7-58.6 58.7z m0-158.7c-1.8 0-3.3 0.8-4.3 2.3-29.7 45.4-47.5 81.9-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8s51.8-23.2 51.8-51.8c0-15.8-17.7-52.4-47.5-97.8-1-1.5-2.6-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M386.1 892.1c0 30.5-24.7 55.2-55.2 55.2s-55.2-24.7-55.2-55.2c0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M330.9 950.7c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.4-73.8 48.6-101.5 4.5-6.8 15.7-6.8 20.1 0 18.1 27.7 48.6 77.8 48.6 101.5 0 32.4-26.3 58.7-58.6 58.7z m0-158.7c-1.8 0-3.3 0.8-4.3 2.3-29.7 45.4-47.5 81.9-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8 28.5 0 51.8-23.2 51.8-51.8 0-15.8-17.7-52.4-47.5-97.8-1-1.5-2.6-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M727.6 892.1c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 15 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M672.4 950.7c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.4-73.8 48.6-101.5 4.5-6.8 15.7-6.8 20.1 0C700.5 818.2 731 868.3 731 892c0.1 32.4-26.2 58.7-58.6 58.7z m0-158.7c-1.8 0-3.3 0.8-4.3 2.3-29.7 45.4-47.5 81.9-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8 28.5 0 51.8-23.2 51.8-51.8 0-15.8-17.7-52.4-47.5-97.8-1-1.5-2.5-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M774.3 181.4c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.5 0-166.9 42.8-216.2 108.5-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.3 81.6-182.3 182.3 0 100.7 81.6 182.3 182.3 182.3 21.1 0 41.3-3.8 60.2-10.4 49.1 50.3 117.5 81.7 193.4 81.7 78.2 0 148.5-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.3-81.6 182.3-182.3-0.1-100.6-81.7-182.2-182.3-182.2z\"></path><path fill=\"currentColor\" d=\"M503.4 620.7c-73.5 0-142.5-28.8-194.3-81.2-19.4 6.5-39.3 9.9-59.2 9.9-102.4 0-185.7-83.3-185.7-185.7S147.5 178 249.9 178c12 0 24.1 1.2 36 3.5 52.4-68.8 131.5-108.2 217.6-108.2C590 73.3 672.2 115 723.7 185c16.6-4.7 33.6-7.1 50.5-7.1 102.4 0 185.7 83.3 185.7 185.7s-83.3 185.7-185.7 185.7c-24.9 0-49.1-4.9-72.1-14.6-51.6 54.7-123.9 86-198.7 86zM311 531.6l1.5 1.6c50.7 52 118.5 80.6 190.9 80.6 74.8 0 144.1-30.4 195.3-85.5l1.7-1.8 2.2 1c22.8 10 46.8 15 71.6 15 98.6 0 178.8-80.2 178.8-178.8s-80.2-178.8-178.8-178.8c-17.1 0-34.2 2.5-50.9 7.5l-2.3 0.6-1.4-2c-50.2-69.4-131-110.8-216.1-110.8-84.6 0-162.4 39.1-213.4 107.2l-1.3 1.8-2.1-0.4c-12.1-2.5-24.5-3.8-36.7-3.8-98.7-0.2-179 80-179 178.7s80.2 178.8 178.8 178.8c19.9 0 39.7-3.4 59-10.2l2.2-0.7z\"></path>', 19), _hoisted_21 = [\n  _hoisted_2671\n];\nfunction _sfc_render671(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock671(), _createElementBlock671(\"svg\", _hoisted_1673, _hoisted_21);\n}\nvar weather_tedabaoyu_default = /* @__PURE__ */ export_helper_default(weather_tedabaoyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render671], [\"__file\", \"weather-tedabaoyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-wu.vue?vue&type=script&lang.ts\nvar weather_wu_vue_vue_type_script_lang_default = {\n  name: \"WeatherWu\"\n};\n\n// src/components/weather-wu.vue\nimport { openBlock as _openBlock672, createElementBlock as _createElementBlock672, createStaticVNode as _createStaticVNode29 } from \"vue\";\nvar _hoisted_1674 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2672 = /* @__PURE__ */ _createStaticVNode29('<path fill=\"currentColor\" d=\"M863.9 303.9H160.1c-15 0-27.3-12.3-27.3-27.3s12.3-27.3 27.3-27.3h703.7c15 0 27.3 12.3 27.3 27.3s-12.2 27.3-27.2 27.3z\"></path><path fill=\"currentColor\" d=\"M863.9 308.8H160.1c-17.8 0-32.2-14.5-32.2-32.2s14.5-32.2 32.2-32.2h703.7c17.8 0 32.2 14.5 32.2 32.2s-14.4 32.2-32.1 32.2z m-703.8-54.5c-12.3 0-22.3 10-22.3 22.3s10 22.3 22.3 22.3h703.7c12.3 0 22.3-10 22.3-22.3s-10-22.3-22.3-22.3H160.1z\"></path><path fill=\"currentColor\" d=\"M863.9 460H160.1c-15 0-27.3-12.3-27.3-27.3s12.3-27.3 27.3-27.3h703.7c15 0 27.3 12.3 27.3 27.3S878.9 460 863.9 460z\"></path><path fill=\"currentColor\" d=\"M863.9 464.9H160.1c-17.8 0-32.2-14.5-32.2-32.2 0-17.8 14.5-32.2 32.2-32.2h703.7c17.8 0 32.2 14.5 32.2 32.2 0.1 17.8-14.4 32.2-32.1 32.2z m-703.8-54.5c-12.3 0-22.3 10-22.3 22.3s10 22.3 22.3 22.3h703.7c12.3 0 22.3-10 22.3-22.3s-10-22.3-22.3-22.3H160.1z\"></path><path fill=\"currentColor\" d=\"M863.9 618.6H160.1c-15 0-27.3-12.3-27.3-27.3s12.3-27.3 27.3-27.3h703.7c15 0 27.3 12.3 27.3 27.3s-12.2 27.3-27.2 27.3z\"></path><path fill=\"currentColor\" d=\"M863.9 623.5H160.1c-17.8 0-32.2-14.5-32.2-32.2 0-17.8 14.5-32.2 32.2-32.2h703.7c17.8 0 32.2 14.5 32.2 32.2 0.1 17.8-14.4 32.2-32.1 32.2zM160.1 569c-12.3 0-22.3 10-22.3 22.3s10 22.3 22.3 22.3h703.7c12.3 0 22.3-10 22.3-22.3s-10-22.3-22.3-22.3H160.1z\"></path><path fill=\"currentColor\" d=\"M863.9 774.7H160.1c-15 0-27.3-12.3-27.3-27.3s12.3-27.3 27.3-27.3h703.7c15 0 27.3 12.3 27.3 27.3s-12.2 27.3-27.2 27.3z\"></path><path fill=\"currentColor\" d=\"M863.9 779.6H160.1c-17.8 0-32.2-14.5-32.2-32.2s14.5-32.2 32.2-32.2h703.7c17.8 0 32.2 14.5 32.2 32.2s-14.4 32.2-32.1 32.2z m-703.8-54.5c-12.3 0-22.3 10-22.3 22.3s10 22.3 22.3 22.3h703.7c12.3 0 22.3-10 22.3-22.3s-10-22.3-22.3-22.3H160.1z\"></path>', 8), _hoisted_104 = [\n  _hoisted_2672\n];\nfunction _sfc_render672(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock672(), _createElementBlock672(\"svg\", _hoisted_1674, _hoisted_104);\n}\nvar weather_wu_default = /* @__PURE__ */ export_helper_default(weather_wu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render672], [\"__file\", \"weather-wu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-xiaoxue.vue?vue&type=script&lang.ts\nvar weather_xiaoxue_vue_vue_type_script_lang_default = {\n  name: \"WeatherXiaoxue\"\n};\n\n// src/components/weather-xiaoxue.vue\nimport { openBlock as _openBlock673, createElementBlock as _createElementBlock673, createStaticVNode as _createStaticVNode30 } from \"vue\";\nvar _hoisted_1675 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2673 = /* @__PURE__ */ _createStaticVNode30('<path fill=\"currentColor\" d=\"M503.5 349.9m-229 0a229 229 0 1 0 458 0 229 229 0 1 0-458 0Z\"></path><path fill=\"currentColor\" d=\"M774.4 366.6m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M249.8 366.6m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.4 184.2c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.6 0-166.9 42.8-216.3 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.4 81.6-182.4 182.4C67.4 467.3 149 549 249.8 549c21.1 0 41.3-3.8 60.2-10.4 49.1 50.4 117.6 81.7 193.5 81.7 78.3 0 148.6-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.4-81.6 182.4-182.4 0-100.7-81.7-182.4-182.4-182.4z m0 313.2c-29 0-55.7-9.6-77.4-25.5-40.6 64.2-112 107-193.5 107-75.3 0-142-36.6-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.8 200.1-117.8 91.6 0 170.4 53.9 207 131.6 18.9-10.6 40.7-16.8 64-16.8 72.2 0 130.8 58.6 130.8 130.8-0.1 72.1-58.6 130.7-130.9 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 623.8c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9-102.5 0-185.8-83.4-185.8-185.8s83.4-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.8 16.6-4.7 33.6-7.1 50.6-7.1 102.5 0 185.8 83.4 185.8 185.8s-83.4 185.8-185.8 185.8c-24.9 0-49.2-4.9-72.1-14.6-51.8 54.5-124.1 85.9-198.9 85.9z m-194.6-88.5l3.6 0.8c50.7 52 118.6 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l3.9-0.8c22.8 10 46.9 15 71.6 15 98.6 0 178.9-80.3 178.9-178.9 0-98.6-80.3-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3C669.4 124.4 588.6 83 503.4 83c-84.6 0-162.4 39.1-213.5 107.2l-3.5 1.3c-12.1-2.5-24.5-3.8-36.7-3.8-98.7 0-178.9 80.3-178.9 178.9 0 98.7 80.3 178.9 178.9 178.9 19.9 0 39.7-3.4 59.1-10.2z m194.6 47c-73.1 0-140.2-33.4-184.6-91.7-21.2 11.8-45 18-69 18-78.3 0-142.1-63.7-142.1-142.1s63.7-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.6-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.5 62.4-15.5 74 0 134.3 60.2 134.3 134.3s-60.2 134.3-134.3 134.3c-27.5 0-53.8-8.3-76.5-24.1-43.3 66.2-115.7 105.6-194.5 105.6z m-185.5-99.1l4.5 0.9c43.1 58 109.1 91.3 180.9 91.3 77.7 0 149-39.4 190.7-105.4l5-0.9c22.1 16.3 48.1 24.9 75.4 24.9 70.2 0 127.4-57.1 127.4-127.4s-57.1-127.4-127.4-127.4c-21.7 0-43.3 5.6-62.3 16.3l-4.8-1.5c-37.1-78.7-117.1-129.6-203.9-129.6-81.7 0-157.2 44.4-197.1 116l-4.3 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.2 60.6-135.2 135.2 0 74.5 60.6 135.2 135.2 135.2 23.9 0 47.4-6.4 68.2-18.6z\"></path><path fill=\"currentColor\" d=\"M710.5 252.6c-39.9 22.4-66.9 65-66.9 114 0 43.2 21.1 81.5 53.4 105.3 22.3-35.3 35.4-77.1 35.4-122 0-34.8-8-67.8-21.9-97.3z\"></path><path fill=\"currentColor\" d=\"M388.4 366.6c0-57.6-35.1-106.9-85-127.9-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2 41.1-24 68.7-68.5 68.7-119.5z\"></path><path fill=\"currentColor\" d=\"M632 845l-46.8-27 0.2-41.4 47.5-27.4c9.7-5.6 13.1-18.2 7.5-27.9s-18.2-13.1-27.9-7.5L566.6 738 522 714.8v-49.6c0-11.2-9.3-20.4-20.5-20.4S481 654 481 665.2v51.9l-33.5 21.7-43.8-26.4c-9.7-5.6-21.3-2.3-26.9 7.5-5.6 9.7-1.7 22.3 8 27.9l50.6 29.1c0.4 0.2 0.9 0.3 1.3 0.5l-0.1 36.3c-0.6 0.3-1.2 0.5-1.8 0.8l-50.3 29.1c-9.7 5.6-13.1 18.2-7.5 27.9s18.2 13.1 27.9 7.5l50.3-29.1c1.8-1.1 3.3-2.4 4.7-3.9l25.6 16.5c-0.8 2.2-4.5 4.5-4.5 7v58.1c0 11.2 9.3 20.4 20.5 20.4s20.5-9.2 20.5-20.4v-58.1c0-1.5 2.9-2.9 2.6-4.3l31-17c1.2 1.2 3.3 2.3 4.9 3.2l50.7 29.1c9.7 5.6 22.5 2.3 28.1-7.5 5.6-9.9 2.4-22.4-7.3-28z\"></path><path fill=\"currentColor\" d=\"M504.8 789.6m-22.9 0a22.9 22.9 0 1 0 45.8 0 22.9 22.9 0 1 0-45.8 0Z\"></path>', 9), _hoisted_11100 = [\n  _hoisted_2673\n];\nfunction _sfc_render673(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock673(), _createElementBlock673(\"svg\", _hoisted_1675, _hoisted_11100);\n}\nvar weather_xiaoxue_default = /* @__PURE__ */ export_helper_default(weather_xiaoxue_vue_vue_type_script_lang_default, [[\"render\", _sfc_render673], [\"__file\", \"weather-xiaoxue.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-xiaoyu.vue?vue&type=script&lang.ts\nvar weather_xiaoyu_vue_vue_type_script_lang_default = {\n  name: \"WeatherXiaoyu\"\n};\n\n// src/components/weather-xiaoyu.vue\nimport { openBlock as _openBlock674, createElementBlock as _createElementBlock674, createStaticVNode as _createStaticVNode31 } from \"vue\";\nvar _hoisted_1676 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2674 = /* @__PURE__ */ _createStaticVNode31('<path fill=\"currentColor\" d=\"M503.4 400m-228.6 0a228.6 228.6 0 1 0 457.2 0 228.6 228.6 0 1 0-457.2 0Z\"></path><path fill=\"currentColor\" d=\"M773.9 416.6m-130.6 0a130.6 130.6 0 1 0 261.2 0 130.6 130.6 0 1 0-261.2 0Z\"></path><path fill=\"currentColor\" d=\"M250.1 416.6m-138.4 0a138.4 138.4 0 1 0 276.8 0 138.4 138.4 0 1 0-276.8 0Z\"></path><path fill=\"currentColor\" d=\"M773.9 234.5c-18 0-35.4 2.7-51.8 7.6-49-67.8-128.6-112.1-218.7-112.1-88.4 0-166.7 42.7-215.9 108.4-12.1-2.5-24.6-3.9-37.4-3.9C149.5 234.5 68 316.1 68 416.6c0 100.6 81.5 182.1 182.1 182.1 21.1 0 41.3-3.8 60.1-10.4 49 50.3 117.4 81.6 193.2 81.6 78.2 0 148.4-33.4 197.7-86.5 22.3 9.8 47 15.3 72.9 15.3 100.6 0 182.1-81.5 182.1-182.1-0.1-100.5-81.6-182.1-182.2-182.1z m0 312.7c-29 0-55.6-9.5-77.3-25.5-40.5 64.1-111.8 106.8-193.3 106.8-75.2 0-141.8-36.5-183.4-92.6-20.5 12-44.4 19.1-69.9 19.1-76.5 0-138.4-62-138.4-138.4 0-76.5 62-138.4 138.4-138.4 19 0 37.1 3.8 53.5 10.8 39.1-70.1 113.8-117.6 199.8-117.6 91.5 0 170.1 53.8 206.7 131.4 18.9-10.6 40.7-16.7 63.9-16.7 72.1 0 130.6 58.5 130.6 130.6 0.1 72.1-58.4 130.5-130.6 130.5z\"></path><path fill=\"currentColor\" d=\"M503.4 673.4c-73.5 0-142.3-28.8-194.1-81.1-19.4 6.5-39.3 9.9-59.2 9.9-102.3 0-185.5-83.2-185.5-185.5S147.7 231.1 250 231.1c12 0 24.1 1.2 35.9 3.5 52.3-68.7 131.4-108.1 217.4-108.1 86.5 0 168.6 41.7 220.1 111.6 16.6-4.7 33.5-7 50.5-7 102.3 0 185.6 83.2 185.6 185.5s-83.2 185.5-185.6 185.5c-24.9 0-49.1-4.9-72-14.6-52.3 55.4-122.7 85.9-198.5 85.9zM309 585.1l3.6 0.8c50.7 51.9 118.4 80.6 190.7 80.6 74.7 0 144-30.3 195.1-85.4l3.9-0.8c22.7 9.9 46.8 15 71.5 15 98.5 0 178.7-80.1 178.7-178.7 0-98.5-80.1-178.6-178.7-178.6-17.1 0-34.2 2.5-50.9 7.4l-3.8-1.3C669 174.8 588.2 133.4 503.2 133.4c-84.5 0-162.2 39-213.2 107l-3.5 1.3c-12.1-2.5-24.4-3.8-36.7-3.8-98.5 0-178.6 80.1-178.6 178.6s80.1 178.7 178.6 178.7c20.1 0.1 40-3.3 59.2-10.1zM503.4 632c-73 0-140-33.3-184.4-91.5a141.5 141.5 0 0 1-69 18c-78.2 0-141.9-63.7-141.9-141.9S171.8 274.7 250 274.7c18 0 35.5 3.3 52 9.9 41.4-72.1 118.2-116.7 201.3-116.7 88.1 0 169.4 50.9 208.2 130.1 19.2-10.1 40.7-15.4 62.3-15.4 73.9 0 134.1 60.1 134.1 134.1s-60.1 134.1-134.1 134.1c-27.5 0-53.8-8.3-76.4-24-43 65.9-115.3 105.2-194 105.2z m-185.2-99l4.5 0.9c43 58 108.9 91.2 180.7 91.2 77.6 0 148.7-39.3 190.4-105.2l5-0.9c22 16.2 48.1 24.8 75.2 24.8 70.1 0 127.2-57.1 127.2-127.2s-57-127.2-127.2-127.2c-21.7 0-43.2 5.6-62.2 16.3l-4.8-1.5c-37.1-78.6-117-129.4-203.6-129.4-81.6 0-157 44.4-196.8 115.8l-4.3 1.5c-16.6-7-34.1-10.5-52.2-10.5-74.4 0-135 60.6-135 135s60.6 135 135 135c23.8 0 47.4-6.4 68.1-18.6z\"></path><path fill=\"currentColor\" d=\"M710.1 302.7c-39.8 22.4-66.8 65-66.8 113.9 0 43.2 21 81.3 53.3 105.1 22.3-35.3 35.4-77 35.4-121.8 0-34.7-8-67.6-21.9-97.2z\"></path><path fill=\"currentColor\" d=\"M388.5 416.6c0-57.5-35-106.7-84.9-127.7-18.3 32.9-28.8 70.7-28.8 111 0 51 16.9 98 45.2 136 40.9-23.9 68.5-68.3 68.5-119.3z\"></path><path fill=\"currentColor\" d=\"M557.7 838.9c0 30.5-24.7 55.1-55.1 55.1s-55.1-24.7-55.1-55.1c0-23.6 33-76.7 48-99.6 3.4-5.2 10.9-5.2 14.3 0 14.9 22.8 47.9 76 47.9 99.6z\"></path><path fill=\"currentColor\" d=\"M502.6 897.5c-32.3 0-58.6-26.3-58.6-58.6 0-23.7 30.4-73.7 48.5-101.4 4.4-6.8 15.6-6.8 20.1 0 18.1 27.7 48.5 77.7 48.5 101.5 0.1 32.2-26.2 58.5-58.5 58.5z m0-158.6c-1.8 0-3.3 0.8-4.3 2.3-14.3 21.8-47.4 74.9-47.4 97.7 0 28.5 23.2 51.7 51.7 51.7s51.7-23.2 51.7-51.7c0-22.8-33.1-75.9-47.4-97.7-1-1.5-2.6-2.3-4.3-2.3z\"></path>', 9), _hoisted_11101 = [\n  _hoisted_2674\n];\nfunction _sfc_render674(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock674(), _createElementBlock674(\"svg\", _hoisted_1676, _hoisted_11101);\n}\nvar weather_xiaoyu_default = /* @__PURE__ */ export_helper_default(weather_xiaoyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render674], [\"__file\", \"weather-xiaoyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-yin.vue?vue&type=script&lang.ts\nvar weather_yin_vue_vue_type_script_lang_default = {\n  name: \"WeatherYin\"\n};\n\n// src/components/weather-yin.vue\nimport { openBlock as _openBlock675, createElementBlock as _createElementBlock675, createStaticVNode as _createStaticVNode32 } from \"vue\";\nvar _hoisted_1677 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2675 = /* @__PURE__ */ _createStaticVNode32('<path fill=\"currentColor\" d=\"M504 512.4m-228.9 0a228.9 228.9 0 1 0 457.8 0 228.9 228.9 0 1 0-457.8 0Z\"></path><path fill=\"currentColor\" d=\"M774.9 529m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M250.4 529m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.9 346.7c-18 0-35.4 2.7-51.9 7.6C673.9 286.4 594.2 242 504 242c-88.5 0-166.9 42.8-216.2 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.3 81.6-182.3 182.3 0 100.7 81.6 182.3 182.3 182.3 21.1 0 41.3-3.8 60.2-10.4 49.1 50.3 117.6 81.7 193.4 81.7 78.3 0 148.5-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.3-81.6 182.3-182.3 0.1-100.7-81.6-182.3-182.3-182.3z m0 313.1c-29 0-55.7-9.6-77.4-25.5-40.5 64.2-111.9 107-193.5 107-75.3 0-142-36.6-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.7 200-117.7 91.6 0 170.3 53.9 207 131.6 18.9-10.6 40.7-16.8 63.9-16.8 72.2 0 130.8 58.6 130.8 130.8 0.1 72.1-58.4 130.6-130.7 130.6z\"></path><path fill=\"currentColor\" d=\"M503.4 785.8c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9C147.3 714.5 64 631.1 64 528.7s83.3-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.7 16.6-4.7 33.6-7.1 50.5-7.1 102.4 0 185.8 83.3 185.8 185.8s-83.3 185.8-185.8 185.8c-24.9 0-49.1-4.9-72.1-14.6-52.5 55.5-123 86-198.9 86z m-194.6-88.4l3.6 0.8c50.7 52 118.5 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l3.9-0.8c22.8 10 46.8 15 71.6 15 98.6 0 178.9-80.2 178.9-178.9 0-98.6-80.2-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3c-50.2-69.4-131-110.8-216.2-110.8-84.6 0-162.4 39.1-213.4 107.2l-3.5 1.3c-12.1-2.5-24.5-3.8-36.7-3.8-98.6 0-178.9 80.2-178.9 178.9 0 98.6 80.2 178.9 178.9 178.9 19.8-0.1 39.7-3.6 59-10.3z m194.6 47c-73 0-140.2-33.4-184.6-91.7-21.2 11.8-45 18-69 18-78.3 0-142.1-63.7-142.1-142.1s63.7-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.5-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.4 62.4-15.4 74 0 134.2 60.2 134.2 134.2s-60.2 134.2-134.2 134.2c-27.5 0-53.8-8.3-76.4-24.1-43.3 66.3-115.7 105.7-194.5 105.7z m-185.5-99.2l4.5 0.9c43.1 58 109 91.3 180.9 91.3 77.7 0 148.9-39.4 190.6-105.4l5-0.9C721 647.4 747 656 774.3 656c70.2 0 127.3-57.1 127.3-127.3s-57.1-127.3-127.3-127.3c-21.7 0-43.2 5.6-62.3 16.3l-4.8-1.5c-37.1-78.7-117.1-129.6-203.8-129.6-81.7 0-157.2 44.4-197 116L302 404c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.2 60.6-135.2 135.2 0 74.5 60.6 135.2 135.2 135.2 23.9-0.1 47.5-6.5 68.2-18.7z\"></path><path fill=\"currentColor\" d=\"M711 415c-39.9 22.4-66.8 65-66.8 114 0 43.2 21.1 81.4 53.4 105.3C719.9 599 733 557.2 733 512.4c-0.1-34.9-8.1-67.8-22-97.4z\"></path><path fill=\"currentColor\" d=\"M389 529c0-57.5-35.1-106.9-85-127.8-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2C361.4 624.5 389 580 389 529z\"></path>', 7), _hoisted_93 = [\n  _hoisted_2675\n];\nfunction _sfc_render675(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock675(), _createElementBlock675(\"svg\", _hoisted_1677, _hoisted_93);\n}\nvar weather_yin_default = /* @__PURE__ */ export_helper_default(weather_yin_vue_vue_type_script_lang_default, [[\"render\", _sfc_render675], [\"__file\", \"weather-yin.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-yujiaxue.vue?vue&type=script&lang.ts\nvar weather_yujiaxue_vue_vue_type_script_lang_default = {\n  name: \"WeatherYujiaxue\"\n};\n\n// src/components/weather-yujiaxue.vue\nimport { openBlock as _openBlock676, createElementBlock as _createElementBlock676, createStaticVNode as _createStaticVNode33 } from \"vue\";\nvar _hoisted_1678 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2676 = /* @__PURE__ */ _createStaticVNode33('<path fill=\"currentColor\" d=\"M503.5 342.7m-228.9 0a228.9 228.9 0 1 0 457.8 0 228.9 228.9 0 1 0-457.8 0Z\"></path><path fill=\"currentColor\" d=\"M774.4 359.3m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M249.8 359.3m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.4 177c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.6 0-166.9 42.8-216.2 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.3 81.6-182.3 182.3 0 100.7 81.6 182.3 182.3 182.3 21.1 0 41.3-3.8 60.2-10.4 49.1 50.3 117.6 81.7 193.5 81.7 78.3 0 148.6-33.5 197.9-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.3-81.6 182.3-182.3-0.1-100.7-81.7-182.3-182.4-182.3z m0 313.1c-29 0-55.7-9.6-77.4-25.5-40.6 64.2-112 107-193.5 107-75.3 0-142-36.6-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.8 200-117.8 91.6 0 170.4 53.9 207 131.6 18.9-10.6 40.7-16.8 64-16.8 72.2 0 130.8 58.6 130.8 130.8 0 72.2-58.6 130.7-130.8 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 616.4c-73.6 0-142.5-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9-102.4 0-185.8-83.3-185.8-185.8s83.3-185.8 185.8-185.8c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.7 16.6-4.7 33.6-7.1 50.5-7.1 102.4 0 185.8 83.3 185.8 185.8S876.8 545 774.3 545c-24.9 0-49.2-4.9-72.1-14.6-52.4 55.5-122.9 86-198.8 86zM308.8 528l3.6 0.8c50.7 52 118.5 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l3.9-0.8c22.8 10 46.9 15 71.6 15 98.6 0 178.9-80.2 178.9-178.9 0-98.6-80.2-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3c-50.2-69.4-131-110.9-216.2-110.9-84.6 0-162.4 39.1-213.5 107.2l-3.5 1.3c-12.1-2.5-24.4-3.8-36.7-3.8-98.6 0-178.9 80.2-178.9 178.9 0 98.6 80.2 178.9 178.9 178.9 19.9 0 39.8-3.4 59.1-10.2z m194.6 47c-73.1 0-140.2-33.4-184.6-91.7-21.2 11.8-45 18-69 18-78.3 0-142.1-63.7-142.1-142.1s63.7-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.6-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.4 62.4-15.4 74 0 134.2 60.2 134.2 134.2s-60.2 134.2-134.2 134.2c-27.5 0-53.8-8.3-76.5-24.1C654.6 535.7 582.2 575 503.4 575z m-185.5-99.1l4.5 0.9c43.1 58 109.1 91.3 180.9 91.3 77.7 0 148.9-39.4 190.6-105.4l5-0.9c22.1 16.3 48.1 24.9 75.4 24.9 70.2 0 127.3-57.1 127.3-127.3S844.5 232 774.3 232c-21.7 0-43.3 5.6-62.3 16.3l-4.8-1.5c-37.1-78.7-117.1-129.6-203.8-129.6-81.7 0-157.2 44.4-197 116l-4.3 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.2 60.6-135.2 135.2 0 74.5 60.6 135.2 135.2 135.2 23.8-0.1 47.4-6.5 68.1-18.7z\"></path><path fill=\"currentColor\" d=\"M710.4 245.3c-39.9 22.4-66.8 65-66.8 114 0 43.2 21.1 81.4 53.4 105.3 22.3-35.3 35.4-77.1 35.4-121.9 0-34.9-8-67.8-22-97.4z\"></path><path fill=\"currentColor\" d=\"M388.4 359.3c0-57.5-35.1-106.9-85-127.9-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2 41.1-24 68.7-68.5 68.7-119.5z\"></path><path fill=\"currentColor\" d=\"M348.6 686.6c0 30.5-24.7 55.2-55.2 55.2s-55.2-24.7-55.2-55.2c0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 15 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M293.4 745.3c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.5-73.8 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0 18.1 27.7 48.6 77.8 48.6 101.6 0.1 32.4-26.2 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8s51.8-23.2 51.8-51.8c0-22.8-33.2-76-47.5-97.8-1-1.5-2.5-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M801.3 772.9c0 30.5-24.7 55.2-55.2 55.2-30.5 0-55.2-24.7-55.2-55.2 0-23.6 33.1-76.8 48-99.7 3.4-5.2 11-5.2 14.4 0 14.9 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M746.1 831.6c-32.3 0-58.7-26.3-58.7-58.7 0-23.8 30.5-73.8 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0 18.2 27.7 48.6 77.8 48.6 101.6 0.1 32.4-26.2 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.5 23.2 51.8 51.8 51.8s51.8-23.2 51.8-51.8c0-15.8-17.7-52.4-47.5-97.8-1-1.5-2.5-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M575.3 884.4l-30.4-13.7-2.4-25.4 27.4-19.7c5.6-4 6.9-11.9 2.9-17.6-4-5.6-11.9-6.9-17.6-2.9l-24.3 17.4-26.5-11.7-3.1-30.4c-0.7-6.9-6.6-12-13.5-11.3-6.9 0.7-11.7 6.9-11 13.8l3.2 31.8-21.8 15.6-29.8-13.3c-6.3-2.8-13.8 0-16.7 6.3-2.8 6.3 0 13.8 6.3 16.6l32.6 14.7c0.2 0.1 0.5 0.2 0.7 0.3l2.1 22.3c-0.4 0.2-0.7 0.4-1.1 0.6l-29.1 20.9c-5.6 4-6.9 11.9-2.9 17.6 4 5.6 11.9 6.9 17.6 2.9l29.1-20.9c1.1-0.8 1.9-1.7 2.6-2.7l19.4 8.3c-0.4 1.4 0.1 2.8 0.3 4.3l3.6 35.6c0.7 6.9 6.6 12 13.5 11.3 6.9-0.7 11.7-6.9 11-13.8l-3.6-35.6c-0.1-0.9-0.7-1.7-0.9-2.6l16.8-12.2c0.8 0.7 1.6 1.3 2.6 1.7l32.6 14.7c6.3 2.8 13.8 0 16.6-6.3 2.9-6.3 0.1-13.8-6.2-16.6z\"></path><path fill=\"currentColor\" d=\"M493.8 858.3m-14.1 0a14.1 14.1 0 1 0 28.2 0 14.1 14.1 0 1 0-28.2 0Z\"></path>', 13), _hoisted_15102 = [\n  _hoisted_2676\n];\nfunction _sfc_render676(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock676(), _createElementBlock676(\"svg\", _hoisted_1678, _hoisted_15102);\n}\nvar weather_yujiaxue_default = /* @__PURE__ */ export_helper_default(weather_yujiaxue_vue_vue_type_script_lang_default, [[\"render\", _sfc_render676], [\"__file\", \"weather-yujiaxue.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-zhenxue.vue?vue&type=script&lang.ts\nvar weather_zhenxue_vue_vue_type_script_lang_default = {\n  name: \"WeatherZhenxue\"\n};\n\n// src/components/weather-zhenxue.vue\nimport { openBlock as _openBlock677, createElementBlock as _createElementBlock677, createStaticVNode as _createStaticVNode34 } from \"vue\";\nvar _hoisted_1679 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2677 = /* @__PURE__ */ _createStaticVNode34('<path fill=\"currentColor\" d=\"M290 310.5H128.6c-0.8 0-1.4-0.6-1.4-1.4v-35.9c0-0.8 0.6-1.4 1.4-1.4H290c0.8 0 1.4 0.6 1.4 1.4v35.9c-0.1 0.8-0.7 1.4-1.4 1.4z\"></path><path fill=\"currentColor\" d=\"M272 314H146.6c-12.6 0-22.8-10.2-22.8-22.8s10.2-22.8 22.8-22.8H272c12.6 0 22.8 10.2 22.8 22.8S284.6 314 272 314z m-125.4-38.6c-8.7 0-15.8 7.1-15.8 15.8 0 8.7 7.1 15.8 15.8 15.8H272c8.7 0 15.8-7.1 15.8-15.8 0-8.7-7.1-15.8-15.8-15.8H146.6z\"></path><path fill=\"currentColor\" d=\"M633.5 321.6m-163.1 0a163.1 163.1 0 1 0 326.2 0 163.1 163.1 0 1 0-326.2 0Z\"></path><path fill=\"currentColor\" d=\"M826.5 333.5m-93.2 0a93.2 93.2 0 1 0 186.4 0 93.2 93.2 0 1 0-186.4 0Z\"></path><path fill=\"currentColor\" d=\"M452.8 333.5m-98.7 0a98.7 98.7 0 1 0 197.4 0 98.7 98.7 0 1 0-197.4 0Z\"></path><path fill=\"currentColor\" d=\"M826.5 203.6c-12.9 0-25.2 1.9-37 5.4-35-48.4-91.7-80-156-80-63.1 0-118.9 30.5-154 77.3-8.6-1.8-17.5-2.8-26.7-2.8-71.7 0-129.9 58.2-129.9 129.9s58.2 129.9 129.9 129.9c15.1 0 29.4-2.7 42.9-7.4 35 35.9 83.8 58.2 137.8 58.2 55.8 0 105.8-23.8 141-61.7 15.9 7 33.5 10.9 52 10.9 71.7 0 129.9-58.2 129.9-129.9s-58.2-129.8-129.9-129.8z m0 223c-20.7 0-39.7-6.8-55.1-18.2-28.9 45.7-79.8 76.2-137.9 76.2-53.7 0-101.1-26-130.9-66.1-14.6 8.6-31.6 13.6-49.8 13.6-54.5 0-98.7-44.2-98.7-98.7s44.2-98.7 98.7-98.7c13.5 0 26.4 2.7 38.2 7.7 27.9-50 81.2-83.9 142.5-83.9 65.2 0 121.4 38.4 147.4 93.7 13.5-7.6 29-11.9 45.6-11.9 51.5 0 93.2 41.7 93.2 93.2 0 51.4-41.7 93.1-93.2 93.1z\"></path><path fill=\"currentColor\" d=\"M633.5 517.7c-52.5 0-101.7-20.5-138.8-57.7-13.7 4.6-27.8 6.9-41.9 6.9-73.6 0-133.4-59.8-133.4-133.4s59.8-133.4 133.4-133.4c8.4 0 16.9 0.8 25.2 2.4 37.5-48.9 94.1-77 155.5-77 61.8 0 120.4 29.7 157.4 79.4 11.7-3.2 23.6-4.9 35.6-4.9 73.6 0 133.4 59.8 133.4 133.4s-59.8 133.4-133.4 133.4c-17.6 0-34.8-3.4-51.1-10.2-37.5 39.4-87.7 61.1-141.9 61.1z m-139-65.1l3.7 0.9c35.9 36.8 84 57.1 135.3 57.1 53 0 102.1-21.5 138.4-60.6l4-0.8c16.1 7 33.1 10.6 50.6 10.6 69.7 0 126.4-56.7 126.4-126.4S896.2 207 826.5 207c-12.1 0-24.2 1.8-36 5.3l-3.8-1.3c-35.6-49.2-92.8-78.5-153.2-78.5-60 0-115.1 27.7-151.2 75.9l-3.5 1.3c-8.6-1.8-17.3-2.7-26-2.7-69.7 0-126.4 56.7-126.4 126.4s56.7 126.4 126.4 126.4c14.1 0 28.1-2.4 41.7-7.2z m139 35.6c-52.1 0-99.9-23.6-131.8-65-15 8.2-31.9 12.6-48.9 12.6-56.4 0-102.3-45.9-102.3-102.3s45.9-102.3 102.3-102.3c12.6 0 24.9 2.3 36.7 6.8 29.8-51.3 84.7-83 144-83 62.9 0 120.9 36.2 149 92.4 13.6-7 28.7-10.6 44-10.6 53.3 0 96.7 43.4 96.7 96.7 0 53.3-43.4 96.7-96.7 96.7-19.4 0-38.1-5.8-54.2-16.7-31 46.8-82.6 74.7-138.8 74.7z m-132.6-72.6l4.6 0.9c30.5 41.1 77.2 64.6 128 64.6 55 0 105.4-27.9 134.9-74.6l5-1c15.5 11.4 33.9 17.5 53.1 17.5 49.4 0 89.7-40.2 89.7-89.7 0-49.4-40.2-89.7-89.7-89.7-15.3 0-30.5 4-43.8 11.5l-4.9-1.6C751.5 198 694.9 162 633.5 162c-57.8 0-111.2 31.4-139.4 82.1l-4.4 1.5c-11.7-4.9-24.1-7.4-36.8-7.4-52.5 0-95.2 42.7-95.2 95.2s42.7 95.2 95.2 95.2c16.7 0.1 33.4-4.4 48-13z\"></path><path fill=\"currentColor\" d=\"M781 252.2c-28.4 16-47.6 46.3-47.6 81.2 0 30.8 15 58 38 75 15.9-25.2 25.2-54.9 25.2-86.9 0-24.8-5.7-48.2-15.6-69.3z\"></path><path fill=\"currentColor\" d=\"M551.6 333.5c0-41-25-76.1-60.6-91.1-13.1 23.5-20.6 50.4-20.6 79.2 0 36.4 12.1 69.9 32.2 97 29.3-17.1 49-48.8 49-85.1z\"></path><path fill=\"currentColor\" d=\"M228.5 427.7H69c-0.8 0-1.4-0.6-1.4-1.4v-35.9c0-0.8 0.6-1.4 1.4-1.4h159.6c0.8 0 1.4 0.6 1.4 1.4v35.9c-0.1 0.8-0.7 1.4-1.5 1.4z\"></path><path fill=\"currentColor\" d=\"M210.6 431.3H86.9c-12.6 0-22.8-10.2-22.8-22.8 0-12.6 10.2-22.8 22.8-22.8h123.7c12.6 0 22.8 10.2 22.8 22.8 0 12.5-10.2 22.8-22.8 22.8zM86.9 392.7c-8.7 0-15.8 7.1-15.8 15.8 0 8.7 7.1 15.8 15.8 15.8h123.7c8.7 0 15.8-7.1 15.8-15.8 0-8.7-7.1-15.8-15.8-15.8H86.9z\"></path><path fill=\"currentColor\" d=\"M339.1 533.5H69c-0.8 0-1.4-0.6-1.4-1.4v-35.9c0-0.8 0.6-1.4 1.4-1.4h270.1c0.8 0 1.4 0.6 1.4 1.4v35.9c0 0.7-0.6 1.4-1.4 1.4z\"></path><path fill=\"currentColor\" d=\"M321.2 537H86.9c-12.6 0-22.8-10.2-22.8-22.8 0-12.6 10.2-22.8 22.8-22.8h234.3c12.6 0 22.8 10.2 22.8 22.8 0 12.5-10.2 22.8-22.8 22.8zM86.9 498.4c-8.7 0-15.8 7.1-15.8 15.8 0 8.7 7.1 15.8 15.8 15.8h234.3c8.7 0 15.8-7.1 15.8-15.8 0-8.7-7.1-15.8-15.8-15.8H86.9z\"></path><path fill=\"currentColor\" d=\"M600.7 728.3l-30.9-13.9-2.5-25.8 27.9-20.1c5.7-4.1 7-12.2 2.9-17.9-4.1-5.7-12.2-7-17.9-2.9l-24.8 17.7-27-11.9-3.1-30.9c-0.7-7-6.7-12.2-13.7-11.5-7 0.7-11.9 7-11.2 14l3.3 32.4-22.2 15.9-30.3-13.6c-6.4-2.9-14.1 0-17 6.4-2.9 6.4 0 14 6.4 16.9l33.2 15c0.3 0.1 0.5 0.2 0.8 0.3l2.2 22.7c-0.4 0.2-0.8 0.4-1.1 0.6L446.1 743c-5.7 4.1-7 12.2-2.9 17.9 4.1 5.7 12.2 7 17.9 2.9l29.6-21.3c1.1-0.8 1.9-1.7 2.7-2.7l19.7 8.4c-0.4 1.4 0.1 2.8 0.3 4.4l3.6 36.2c0.7 7 6.7 12.2 13.7 11.5 7-0.7 11.9-7 11.2-14l-3.6-36.2c-0.1-0.9-0.7-1.8-1-2.6l17.1-12.4c0.8 0.7 1.6 1.3 2.7 1.8l33.2 15c6.4 2.9 14 0 16.9-6.4 2.8-6.7-0.1-14.3-6.5-17.2z\"></path><path fill=\"currentColor\" d=\"M517.8 701.7m-14.4 0a14.4 14.4 0 1 0 28.8 0 14.4 14.4 0 1 0-28.8 0Z\"></path><path fill=\"currentColor\" d=\"M853.3 826.6l-30.9-13.9-2.5-25.8 27.9-20.1c5.7-4.1 7-12.2 2.9-17.9-4.1-5.7-12.2-7-17.9-2.9L808 763.7l-27-11.9-3.1-30.9c-0.7-7-6.7-12.2-13.7-11.5-7 0.7-11.9 7-11.2 14l3.3 32.4-22.2 15.9L704 758c-6.4-2.9-14.1 0-17 6.4-2.9 6.4 0 14 6.4 16.9l33.2 15c0.3 0.1 0.5 0.2 0.8 0.3l2.2 22.7c-0.4 0.2-0.8 0.4-1.1 0.6l-29.6 21.3c-5.7 4.1-7 12.2-2.9 17.9 4.1 5.7 12.2 7 17.9 2.9l29.6-21.3c1.1-0.8 1.9-1.7 2.7-2.7l19.7 8.4c-0.4 1.4 0.1 2.8 0.3 4.4l3.6 36.2c0.7 7 6.7 12.2 13.7 11.5 7-0.7 11.9-7 11.2-14l-3.6-36.2c-0.1-0.9-0.7-1.8-1-2.6l17.1-12.4c0.8 0.7 1.6 1.3 2.7 1.8l33.2 15c6.4 2.9 14 0 16.9-6.4 2.7-6.6-0.2-14.2-6.7-17.1z\"></path><path fill=\"currentColor\" d=\"M770.5 800m-14.4 0a14.4 14.4 0 1 0 28.8 0 14.4 14.4 0 1 0-28.8 0Z\"></path>', 17), _hoisted_1911 = [\n  _hoisted_2677\n];\nfunction _sfc_render677(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock677(), _createElementBlock677(\"svg\", _hoisted_1679, _hoisted_1911);\n}\nvar weather_zhenxue_default = /* @__PURE__ */ export_helper_default(weather_zhenxue_vue_vue_type_script_lang_default, [[\"render\", _sfc_render677], [\"__file\", \"weather-zhenxue.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-zhenyu.vue?vue&type=script&lang.ts\nvar weather_zhenyu_vue_vue_type_script_lang_default = {\n  name: \"WeatherZhenyu\"\n};\n\n// src/components/weather-zhenyu.vue\nimport { openBlock as _openBlock678, createElementBlock as _createElementBlock678, createStaticVNode as _createStaticVNode35 } from \"vue\";\nvar _hoisted_1680 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2678 = /* @__PURE__ */ _createStaticVNode35('<path fill=\"currentColor\" d=\"M289.9 314.7H128.5c-0.8 0-1.4-0.6-1.4-1.4v-35.9c0-0.8 0.6-1.4 1.4-1.4h161.4c0.8 0 1.4 0.6 1.4 1.4v35.9c-0.1 0.8-0.7 1.4-1.4 1.4z\"></path><path fill=\"currentColor\" d=\"M271.9 318.2H146.4c-12.6 0-22.8-10.2-22.8-22.8s10.2-22.8 22.8-22.8h125.5c12.6 0 22.8 10.2 22.8 22.8s-10.2 22.8-22.8 22.8z m-125.5-38.6c-8.7 0-15.8 7.1-15.8 15.8 0 8.7 7.1 15.8 15.8 15.8h125.5c8.7 0 15.8-7.1 15.8-15.8 0-8.7-7.1-15.8-15.8-15.8H146.4z\"></path><path fill=\"currentColor\" d=\"M633.7 325.8m-163.2 0a163.2 163.2 0 1 0 326.4 0 163.2 163.2 0 1 0-326.4 0Z\"></path><path fill=\"currentColor\" d=\"M826.8 337.7m-93.2 0a93.2 93.2 0 1 0 186.4 0 93.2 93.2 0 1 0-186.4 0Z\"></path><path fill=\"currentColor\" d=\"M452.9 337.7m-98.8 0a98.8 98.8 0 1 0 197.6 0 98.8 98.8 0 1 0-197.6 0Z\"></path><path fill=\"currentColor\" d=\"M826.8 207.7c-12.9 0-25.3 1.9-37 5.4-35-48.4-91.8-80-156.1-80-63.1 0-119 30.5-154.1 77.4-8.6-1.8-17.5-2.8-26.7-2.8-71.8 0-130 58.2-130 130s58.2 130 130 130c15.1 0 29.5-2.7 42.9-7.4 35 35.9 83.8 58.2 137.9 58.2 55.8 0 105.9-23.8 141.1-61.7 15.9 7 33.5 10.9 52 10.9 71.8 0 130-58.2 130-130-0.1-71.8-58.2-130-130-130z m0 223.2c-20.7 0-39.7-6.8-55.2-18.2-28.9 45.8-79.8 76.3-137.9 76.3-53.7 0-101.2-26.1-130.9-66.1-14.7 8.6-31.7 13.6-49.9 13.6-54.6 0-98.8-44.2-98.8-98.8 0-54.6 44.2-98.8 98.8-98.8 13.5 0 26.5 2.7 38.2 7.7 27.9-50 81.2-83.9 142.6-83.9 65.3 0 121.4 38.4 147.5 93.8 13.5-7.6 29-11.9 45.6-11.9 51.5 0 93.2 41.7 93.2 93.2 0 51.4-41.7 93.1-93.2 93.1z\"></path><path fill=\"currentColor\" d=\"M633.6 522c-52.5 0-101.7-20.5-138.8-57.7-13.7 4.6-27.8 6.9-42 6.9-73.6 0-133.5-59.9-133.5-133.5s59.9-133.5 133.5-133.5c8.4 0 16.9 0.8 25.2 2.4 37.5-49 94.1-77 155.6-77 61.8 0 120.5 29.7 157.5 79.5 11.7-3.2 23.7-4.9 35.6-4.9 73.6 0 133.5 59.9 133.5 133.5s-59.9 133.5-133.5 133.5c-17.7 0-34.8-3.4-51.1-10.2-37.6 39.3-87.9 61-142 61z m-139.1-65.1l3.7 0.9c35.9 36.9 84 57.2 135.4 57.2 53 0 102.2-21.5 138.5-60.6l4-0.8c16.1 7 33.1 10.6 50.6 10.6 69.7 0 126.4-56.7 126.4-126.4s-56.7-126.4-126.4-126.4c-12.1 0-24.2 1.8-36 5.3l-3.8-1.3c-35.6-49.2-92.9-78.6-153.2-78.6-60 0-115.1 27.7-151.3 76l-3.5 1.3c-8.6-1.8-17.3-2.7-26-2.7-69.7 0-126.4 56.7-126.4 126.4s56.7 126.4 126.4 126.4c13.9-0.1 28-2.5 41.6-7.3z m139.1 35.6c-52.1 0-100-23.7-131.9-65-15 8.2-31.9 12.6-48.9 12.6-56.4 0-102.3-45.9-102.3-102.3s45.9-102.3 102.3-102.3c12.6 0 24.9 2.3 36.7 6.8 29.8-51.3 84.7-83 144.1-83 62.9 0 121 36.2 149.1 92.5 13.6-7 28.7-10.6 44-10.6 53.3 0 96.7 43.4 96.7 96.7 0 53.3-43.4 96.7-96.7 96.7-19.4 0-38.1-5.8-54.2-16.7-31.1 46.7-82.7 74.6-138.9 74.6z m-132.7-72.6l4.6 0.9c30.5 41.1 77.2 64.7 128.1 64.7 55 0 105.4-27.9 134.9-74.6l5-1c15.6 11.5 33.9 17.5 53.1 17.5 49.5 0 89.7-40.2 89.7-89.7S876.1 248 826.6 248c-15.3 0-30.5 4-43.9 11.5l-4.9-1.6c-26.3-55.7-82.9-91.8-144.3-91.8-57.9 0-111.3 31.5-139.5 82.1l-4.4 1.5c-11.7-4.9-24.1-7.4-36.9-7.4-52.5 0-95.3 42.7-95.3 95.3 0 52.5 42.7 95.3 95.3 95.3 16.9 0.1 33.5-4.5 48.2-13z\"></path><path fill=\"currentColor\" d=\"M781.2 256.4c-28.4 16-47.6 46.4-47.6 81.3 0 30.8 15 58 38.1 75 15.9-25.2 25.2-54.9 25.2-86.9 0-24.8-5.8-48.3-15.7-69.4z\"></path><path fill=\"currentColor\" d=\"M551.7 337.7c0-41-25-76.2-60.6-91.1-13.1 23.5-20.6 50.5-20.6 79.2 0 36.4 12.1 69.9 32.2 97.1 29.3-17.2 49-48.9 49-85.2z\"></path><path fill=\"currentColor\" d=\"M228.4 432H68.8c-0.8 0-1.4-0.6-1.4-1.4v-35.9c0-0.8 0.6-1.4 1.4-1.4h159.6c0.8 0 1.4 0.6 1.4 1.4v35.9c0 0.8-0.6 1.4-1.4 1.4z\"></path><path fill=\"currentColor\" d=\"M210.5 435.5H86.7c-12.6 0-22.8-10.2-22.8-22.8 0-12.6 10.2-22.8 22.8-22.8h123.8c12.6 0 22.8 10.2 22.8 22.8 0 12.6-10.2 22.8-22.8 22.8zM86.7 396.9c-8.7 0-15.8 7.1-15.8 15.8 0 8.7 7.1 15.8 15.8 15.8h123.8c8.7 0 15.8-7.1 15.8-15.8 0-8.7-7.1-15.8-15.8-15.8H86.7z\"></path><path fill=\"currentColor\" d=\"M339 537.8H68.8c-0.8 0-1.4-0.6-1.4-1.4v-35.9c0-0.8 0.6-1.4 1.4-1.4H339c0.8 0 1.4 0.6 1.4 1.4v35.9c0 0.8-0.6 1.4-1.4 1.4z\"></path><path fill=\"currentColor\" d=\"M321.1 541.3H86.7c-12.6 0-22.8-10.2-22.8-22.8s10.2-22.8 22.8-22.8h234.4c12.6 0 22.8 10.2 22.8 22.8s-10.2 22.8-22.8 22.8zM86.7 502.7c-8.7 0-15.8 7.1-15.8 15.8s7.1 15.8 15.8 15.8h234.4c8.7 0 15.8-7.1 15.8-15.8s-7.1-15.8-15.8-15.8H86.7z\"></path><path fill=\"currentColor\" d=\"M575.6 722.3c0 31-25.2 56.2-56.2 56.2s-56.2-25.2-56.2-56.2c0-24 33.7-78.2 48.9-101.4a8.69 8.69 0 0 1 14.6 0c15.3 23.2 48.9 77.4 48.9 101.4z\"></path><path fill=\"currentColor\" d=\"M519.5 782c-32.9 0-59.7-26.8-59.7-59.7 0-24.2 31-75.1 49.4-103.3 4.6-7 15.9-7 20.5 0 18.5 28.2 49.4 79.2 49.4 103.3 0.1 32.9-26.7 59.7-59.6 59.7z m0-161.6c-1.8 0-3.4 0.9-4.4 2.4-30.2 46.2-48.3 83.4-48.3 99.5 0 29 23.6 52.7 52.7 52.7 29 0 52.7-23.6 52.7-52.7 0-16.1-18-53.3-48.3-99.5-1.1-1.5-2.7-2.4-4.4-2.4z\"></path><path fill=\"currentColor\" d=\"M796.7 834.7c0 31-25.2 56.2-56.2 56.2s-56.2-25.2-56.2-56.2c0-24 33.7-78.2 48.9-101.4a8.69 8.69 0 0 1 14.6 0c15.3 23.2 48.9 77.4 48.9 101.4z\"></path><path fill=\"currentColor\" d=\"M740.5 894.4c-32.9 0-59.7-26.8-59.7-59.7 0-24.2 31-75.1 49.5-103.3 4.5-7 15.9-7 20.5 0 18.5 28.2 49.4 79.2 49.4 103.3 0 32.9-26.7 59.7-59.7 59.7z m0-161.6c-1.8 0-3.4 0.9-4.4 2.4-14.5 22.2-48.3 76.3-48.3 99.5 0 29 23.6 52.7 52.7 52.7s52.7-23.6 52.7-52.7c0-16.1-18-53.3-48.3-99.5-1-1.5-2.6-2.4-4.4-2.4z\"></path>', 17), _hoisted_1912 = [\n  _hoisted_2678\n];\nfunction _sfc_render678(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock678(), _createElementBlock678(\"svg\", _hoisted_1680, _hoisted_1912);\n}\nvar weather_zhenyu_default = /* @__PURE__ */ export_helper_default(weather_zhenyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render678], [\"__file\", \"weather-zhenyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-zhongxue.vue?vue&type=script&lang.ts\nvar weather_zhongxue_vue_vue_type_script_lang_default = {\n  name: \"WeatherZhongxue\"\n};\n\n// src/components/weather-zhongxue.vue\nimport { openBlock as _openBlock679, createElementBlock as _createElementBlock679, createStaticVNode as _createStaticVNode36 } from \"vue\";\nvar _hoisted_1681 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2679 = /* @__PURE__ */ _createStaticVNode36('<path fill=\"currentColor\" d=\"M502.9 391.1m-228.8 0a228.8 228.8 0 1 0 457.6 0 228.8 228.8 0 1 0-457.6 0Z\"></path><path fill=\"currentColor\" d=\"M773.6 407.7m-130.7 0a130.7 130.7 0 1 0 261.4 0 130.7 130.7 0 1 0-261.4 0Z\"></path><path fill=\"currentColor\" d=\"M249.4 407.7m-138.5 0a138.5 138.5 0 1 0 277 0 138.5 138.5 0 1 0-277 0Z\"></path><path fill=\"currentColor\" d=\"M773.6 225.5c-18 0-35.4 2.7-51.9 7.6-49.1-67.9-128.7-112.2-218.9-112.2-88.5 0-166.8 42.7-216.1 108.5-12.1-2.5-24.6-3.9-37.4-3.9-100.6 0-182.2 81.6-182.2 182.2s81.6 182.2 182.2 182.2c21.1 0 41.3-3.8 60.2-10.4 49.1 50.3 117.5 81.7 193.3 81.7 78.2 0 148.5-33.4 197.8-86.6 22.3 9.8 47 15.3 72.9 15.3 100.6 0 182.2-81.6 182.2-182.2 0.1-100.6-81.4-182.2-182.1-182.2z m0 312.9c-29 0-55.7-9.6-77.4-25.5-40.5 64.2-111.9 106.9-193.4 106.9-75.3 0-141.9-36.5-183.6-92.7-20.5 12.1-44.4 19.1-69.9 19.1-76.5 0-138.5-62-138.5-138.5s62-138.5 138.5-138.5c19 0 37.1 3.8 53.6 10.8 39.1-70.2 113.9-117.7 199.9-117.7 91.5 0 170.2 53.9 206.8 131.5 18.9-10.6 40.7-16.8 63.9-16.8 72.2 0 130.7 58.5 130.7 130.7 0.1 72.2-58.4 130.7-130.6 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 664.7c-73.5 0-142.4-28.8-194.3-81.1-19.4 6.5-39.3 9.9-59.2 9.9-102.4 0-185.7-83.3-185.7-185.7s83.3-185.7 185.7-185.7c12 0 24.1 1.2 36 3.5 52.3-68.7 131.5-108.1 217.5-108.1 86.5 0 168.7 41.7 220.2 111.7 16.6-4.7 33.6-7.1 50.5-7.1 102.4 0 185.7 83.3 185.7 185.7s-83.3 185.7-185.7 185.7c-24.9 0-49.1-4.9-72.1-14.6-52.3 55.3-122.8 85.8-198.6 85.8zM311 575.6l1.5 1.6c50.7 52 118.5 80.6 190.9 80.6 74.7 0 144.1-30.4 195.3-85.5l1.7-1.8 2.2 1c22.7 10 46.8 15 71.6 15 98.6 0 178.8-80.2 178.8-178.8 0-98.6-80.2-178.8-178.8-178.8-17.1 0-34.2 2.5-50.9 7.4l-2.3 0.7-1.4-2c-50.2-69.4-130.9-110.8-216.1-110.8-84.5 0-162.3 39-213.3 107.1l-1.3 1.8-2.1-0.5c-12.1-2.5-24.4-3.8-36.7-3.8-98.6 0-178.8 80.2-178.8 178.8 0 98.6 80.2 178.8 178.8 178.8 19.9 0 39.7-3.4 59-10.2l1.9-0.6z m192.4 47.7c-73 0-140.1-33.3-184.5-91.6a141.5 141.5 0 0 1-69 18c-78.3 0-142-63.7-142-142s63.7-142 142-142c18 0 35.5 3.3 52.1 9.9 41.4-72.1 118.3-116.8 201.4-116.8 88.1 0 169.5 51 208.4 130.2 19.2-10.1 40.7-15.4 62.4-15.4 74 0 134.2 60.2 134.2 134.2S848.2 542 774.2 542c-27.5 0-53.8-8.3-76.4-24-43.3 65.9-115.6 105.3-194.4 105.3zM320.7 522.6l1.8 2.5c43.1 58 109 91.3 180.8 91.3 77.6 0 148.8-39.4 190.5-105.3l2-3.1 3 2.2c22.1 16.3 48.1 24.8 75.3 24.8 70.2 0 127.3-57.1 127.3-127.3s-57.1-127.3-127.3-127.3c-21.7 0-43.2 5.6-62.2 16.3l-3.2 1.8-1.6-3.4c-37.1-78.7-117-129.5-203.7-129.5-81.6 0-157.1 44.4-196.9 115.9l-1.5 2.7-2.8-1.2c-16.6-7-34.2-10.5-52.2-10.5-74.5 0-135.1 60.6-135.1 135.1S175.5 542.7 250 542.7c23.9 0 47.4-6.4 68.2-18.6l2.5-1.5z\"></path><path fill=\"currentColor\" d=\"M709.7 293.8c-39.8 22.4-66.8 65-66.8 114 0 43.2 21 81.4 53.4 105.2 22.3-35.3 35.4-77 35.4-121.9 0-34.9-8-67.8-22-97.3zM387.9 407.7c0-57.5-35.1-106.8-85-127.8C284.6 312.8 274 350.7 274 391c0 51.1 16.9 98 45.2 136.1 41.1-24 68.7-68.4 68.7-119.4z\"></path><path fill=\"currentColor\" d=\"M712.6 835.8l-30.3-13.7-2.4-25.4 27.4-19.7c5.6-4 6.9-11.9 2.9-17.6-4-5.6-11.9-6.9-17.6-2.9l-24.3 17.4-26.5-11.7-3.1-30.4c-0.7-6.9-6.6-12-13.5-11.3-6.9 0.7-11.7 6.9-11 13.7l3.2 31.8-21.8 15.6-29.8-13.4c-6.3-2.8-13.8 0-16.7 6.3-2.8 6.3 0 13.8 6.3 16.6l32.6 14.7c0.2 0.1 0.5 0.2 0.7 0.3l2.1 22.3c-0.4 0.2-0.7 0.4-1.1 0.6l-29 20.9c-5.6 4-6.9 11.9-2.9 17.6 4 5.6 11.9 6.9 17.6 2.9l29-20.9c1.1-0.8 1.9-1.7 2.6-2.7l19.3 8.3c-0.4 1.4 0.1 2.8 0.3 4.3l3.6 35.6c0.7 6.9 6.6 12 13.5 11.3 6.9-0.7 11.7-6.9 11-13.7l-3.6-35.6c-0.1-0.9-0.7-1.7-0.9-2.6l16.8-12.2c0.8 0.7 1.6 1.3 2.6 1.7l32.6 14.7c6.3 2.8 13.8 0 16.6-6.3 3-6.1 0.1-13.6-6.2-16.5z\"></path><path fill=\"currentColor\" d=\"M631.2 809.8m-14.1 0a14.1 14.1 0 1 0 28.2 0 14.1 14.1 0 1 0-28.2 0Z\"></path><path fill=\"currentColor\" d=\"M406.5 760.7l-28.8-16.6 0.1-25.5 29.2-16.9c6-3.5 8-11.2 4.6-17.2-3.5-6-11.2-8-17.2-4.6l-25.9 14.9-25.2-14.3-0.1-30.5c0-6.9-5.4-12.6-12.3-12.6s-12.3 5.7-12.3 12.6l0.1 32-23.3 13.4-28.3-16.2c-6-3.4-13.8-1.4-17.2 4.6-3.4 6-1.4 13.7 4.6 17.2l31 17.8c0.2 0.1 0.5 0.2 0.7 0.3l-0.1 22.4c-0.4 0.2-0.8 0.3-1.2 0.5L254 760c-6 3.5-8 11.2-4.6 17.2 3.5 6 11.2 8 17.2 4.6l31-17.9c1.1-0.7 2.1-1.5 2.9-2.4l18.4 10.1c-0.5 1.4-0.1 2.8-0.1 4.3l0.1 35.8c0 6.9 5.4 12.6 12.3 12.6s12.3-5.7 12.3-12.6l-0.1-35.8c0-0.9-0.5-1.8-0.7-2.6l17.9-10.5c0.7 0.7 1.5 1.4 2.4 2l31 17.8c6 3.4 13.7 1.4 17.2-4.6 3.4-6.1 1.3-13.9-4.7-17.3z\"></path><path fill=\"currentColor\" d=\"M328.1 726.7m-14.1 0a14.1 14.1 0 1 0 28.2 0 14.1 14.1 0 1 0-28.2 0Z\"></path>', 10), _hoisted_12100 = [\n  _hoisted_2679\n];\nfunction _sfc_render679(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock679(), _createElementBlock679(\"svg\", _hoisted_1681, _hoisted_12100);\n}\nvar weather_zhongxue_default = /* @__PURE__ */ export_helper_default(weather_zhongxue_vue_vue_type_script_lang_default, [[\"render\", _sfc_render679], [\"__file\", \"weather-zhongxue.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\weather-zhongyu.vue?vue&type=script&lang.ts\nvar weather_zhongyu_vue_vue_type_script_lang_default = {\n  name: \"WeatherZhongyu\"\n};\n\n// src/components/weather-zhongyu.vue\nimport { openBlock as _openBlock680, createElementBlock as _createElementBlock680, createStaticVNode as _createStaticVNode37 } from \"vue\";\nvar _hoisted_1682 = {\n  class: \"icon\",\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, _hoisted_2680 = /* @__PURE__ */ _createStaticVNode37('<path fill=\"currentColor\" d=\"M503.5 381.1m-229 0a229 229 0 1 0 458 0 229 229 0 1 0-458 0Z\"></path><path fill=\"currentColor\" d=\"M774.5 397.8m-130.8 0a130.8 130.8 0 1 0 261.6 0 130.8 130.8 0 1 0-261.6 0Z\"></path><path fill=\"currentColor\" d=\"M249.8 397.8m-138.6 0a138.6 138.6 0 1 0 277.2 0 138.6 138.6 0 1 0-277.2 0Z\"></path><path fill=\"currentColor\" d=\"M774.5 215.5c-18.1 0-35.5 2.7-51.9 7.6-49.1-67.9-128.8-112.3-219-112.3-88.6 0-166.9 42.8-216.3 108.6-12.1-2.5-24.6-3.9-37.4-3.9-100.7 0-182.4 81.6-182.4 182.4 0 100.7 81.6 182.4 182.4 182.4 21.1 0 41.3-3.8 60.2-10.4 49.1 50.4 117.6 81.7 193.5 81.7 78.3 0 148.6-33.5 198-86.6 22.4 9.8 47 15.3 73 15.3 100.7 0 182.4-81.6 182.4-182.4-0.2-100.8-81.8-182.4-182.5-182.4z m0 313.1c-29 0-55.7-9.6-77.4-25.5-40.6 64.2-112 107-193.5 107-75.4 0-142-36.6-183.7-92.7-20.6 12.1-44.4 19.1-70 19.1-76.6 0-138.6-62.1-138.6-138.6 0-76.6 62.1-138.6 138.6-138.6 19 0 37.1 3.8 53.6 10.8 39.1-70.2 114-117.8 200.1-117.8 91.6 0 170.4 53.9 207 131.6 18.9-10.6 40.7-16.8 64-16.8 72.2 0 130.8 58.6 130.8 130.8-0.1 72.2-58.7 130.7-130.9 130.7z\"></path><path fill=\"currentColor\" d=\"M503.4 655c-73.6 0-142.6-28.8-194.4-81.2-19.4 6.6-39.3 9.9-59.3 9.9-102.5 0-185.8-83.4-185.8-185.8S147.2 212 249.7 212c12 0 24.1 1.2 36 3.5 52.4-68.8 131.6-108.2 217.7-108.2 86.6 0 168.8 41.7 220.4 111.8 16.6-4.7 33.6-7.1 50.6-7.1 102.5 0 185.8 83.4 185.8 185.8s-83.4 185.8-185.8 185.8c-24.9 0-49.2-4.9-72.1-14.6-52.5 55.5-123 86-198.9 86z m-194.7-88.5l3.6 0.8c50.7 52 118.6 80.7 191 80.7 74.8 0 144.2-30.4 195.4-85.5l3.9-0.8c22.8 10 46.9 15 71.6 15 98.7 0 178.9-80.3 178.9-178.9 0-98.7-80.3-178.9-178.9-178.9-17.1 0-34.2 2.5-50.9 7.5l-3.8-1.3c-50.2-69.4-131-110.9-216.2-110.9-84.6 0-162.4 39.1-213.5 107.2l-3.5 1.3c-12.1-2.5-24.5-3.8-36.7-3.8-98.7 0-178.9 80.3-178.9 178.9 0 98.7 80.3 178.9 178.9 178.9 20 0 39.8-3.4 59.1-10.2z m194.7 47c-73.1 0-140.2-33.4-184.7-91.7-21.2 11.8-45 18-69 18-78.4 0-142.1-63.7-142.1-142.1s63.7-142.1 142.1-142.1c18 0 35.5 3.3 52.1 9.9 41.4-72.2 118.4-116.9 201.6-116.9 88.2 0 169.6 51 208.5 130.3 19.2-10.1 40.7-15.5 62.4-15.5 74 0 134.3 60.2 134.3 134.3S848.4 532 774.3 532c-27.5 0-53.9-8.3-76.5-24.1-43.1 66.3-115.6 105.6-194.4 105.6z m-185.5-99.1l4.5 0.9c43.1 58 109.1 91.3 181 91.3 77.7 0 148.9-39.4 190.6-105.4l5-0.9c22.1 16.3 48.1 24.9 75.4 24.9 70.2 0 127.4-57.1 127.4-127.4s-57.1-127.4-127.4-127.4c-21.7 0-43.3 5.6-62.3 16.3l-4.8-1.5c-37.1-78.7-117.1-129.6-203.9-129.6-81.7 0-157.2 44.4-197.1 116l-4.3 1.5c-16.6-7-34.2-10.5-52.3-10.5-74.5 0-135.2 60.6-135.2 135.2 0 74.5 60.6 135.2 135.2 135.2 23.8 0 47.4-6.4 68.2-18.6z\"></path><path fill=\"currentColor\" d=\"M710.5 283.8c-39.9 22.4-66.9 65.1-66.9 114.1 0 43.2 21.1 81.5 53.4 105.3 22.3-35.3 35.4-77.1 35.4-122 0.1-34.9-7.9-67.9-21.9-97.4z\"></path><path fill=\"currentColor\" d=\"M388.5 397.8c0-57.6-35.1-106.9-85-127.9-18.3 32.9-28.9 70.8-28.9 111.2 0 51.1 16.9 98.1 45.2 136.2 41-24 68.7-68.5 68.7-119.5z\"></path><path fill=\"currentColor\" d=\"M403.8 752.8c0 30.5-24.7 55.2-55.2 55.2s-55.2-24.7-55.2-55.2c0-23.6 33.1-76.9 48-99.7 3.4-5.2 11-5.2 14.4 0 15 22.8 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M348.6 811.5c-32.4 0-58.7-26.3-58.7-58.7 0-23.8 30.5-73.9 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0 18.1 27.7 48.6 77.8 48.6 101.6 0.1 32.3-26.2 58.7-58.6 58.7z m0-158.9c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.6 23.2 51.8 51.8 51.8 28.6 0 51.8-23.2 51.8-51.8 0-22.8-33.2-76-47.5-97.8-1-1.4-2.5-2.3-4.3-2.3z\"></path><path fill=\"currentColor\" d=\"M698.7 858c0 30.5-24.7 55.2-55.2 55.2s-55.2-24.7-55.2-55.2c0-23.6 33.1-76.9 48-99.7 3.4-5.2 11-5.2 14.4 0 15 22.9 48 76.1 48 99.7z\"></path><path fill=\"currentColor\" d=\"M643.5 916.7c-32.4 0-58.7-26.3-58.7-58.7 0-23.8 30.5-73.9 48.6-101.6 4.5-6.8 15.7-6.8 20.1 0 18.2 27.7 48.6 77.8 48.6 101.6 0.1 32.4-26.2 58.7-58.6 58.7z m0-158.8c-1.8 0-3.3 0.9-4.3 2.3-14.3 21.8-47.5 75-47.5 97.8 0 28.6 23.2 51.8 51.8 51.8 28.6 0 51.8-23.2 51.8-51.8 0-22.8-33.2-76-47.5-97.8-1-1.5-2.5-2.3-4.3-2.3z\"></path>', 11), _hoisted_13100 = [\n  _hoisted_2680\n];\nfunction _sfc_render680(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock680(), _createElementBlock680(\"svg\", _hoisted_1682, _hoisted_13100);\n}\nvar weather_zhongyu_default = /* @__PURE__ */ export_helper_default(weather_zhongyu_vue_vue_type_script_lang_default, [[\"render\", _sfc_render680], [\"__file\", \"weather-zhongyu.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\wind-power.vue?vue&type=script&lang.ts\nvar wind_power_vue_vue_type_script_lang_default = {\n  name: \"WindPower\"\n};\n\n// src/components/wind-power.vue\nimport { createElementVNode as _createElementVNode644, openBlock as _openBlock681, createElementBlock as _createElementBlock681 } from \"vue\";\nvar _hoisted_1683 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2681 = /* @__PURE__ */ _createElementVNode644(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"M160 64q32 0 32 32v832q0 32-32 32t-32-32V96q0-32 32-32zm416 354.624 128-11.584V168.96l-128-11.52v261.12zm-64 5.824V151.552L320 134.08V160h-64V64l616.704 56.064A96 96 0 0 1 960 215.68v144.64a96 96 0 0 1-87.296 95.616L256 512V224h64v217.92l192-17.472zm256-23.232 98.88-8.96A32 32 0 0 0 896 360.32V215.68a32 32 0 0 0-29.12-31.872l-98.88-8.96v226.368z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3644 = [\n  _hoisted_2681\n];\nfunction _sfc_render681(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock681(), _createElementBlock681(\"svg\", _hoisted_1683, _hoisted_3644);\n}\nvar wind_power_default = /* @__PURE__ */ export_helper_default(wind_power_vue_vue_type_script_lang_default, [[\"render\", _sfc_render681], [\"__file\", \"wind-power.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\zoom-in.vue?vue&type=script&lang.ts\nvar zoom_in_vue_vue_type_script_lang_default = {\n  name: \"ZoomIn\"\n};\n\n// src/components/zoom-in.vue\nimport { createElementVNode as _createElementVNode645, openBlock as _openBlock682, createElementBlock as _createElementBlock682 } from \"vue\";\nvar _hoisted_1684 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2682 = /* @__PURE__ */ _createElementVNode645(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zm-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3645 = [\n  _hoisted_2682\n];\nfunction _sfc_render682(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock682(), _createElementBlock682(\"svg\", _hoisted_1684, _hoisted_3645);\n}\nvar zoom_in_default = /* @__PURE__ */ export_helper_default(zoom_in_vue_vue_type_script_lang_default, [[\"render\", _sfc_render682], [\"__file\", \"zoom-in.vue\"]]);\n\n// unplugin-vue:E:\\work\\vue3\\pit-element-plus-icons\\packages\\vue\\src\\components\\zoom-out.vue?vue&type=script&lang.ts\nvar zoom_out_vue_vue_type_script_lang_default = {\n  name: \"ZoomOut\"\n};\n\n// src/components/zoom-out.vue\nimport { createElementVNode as _createElementVNode646, openBlock as _openBlock683, createElementBlock as _createElementBlock683 } from \"vue\";\nvar _hoisted_1685 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 1024 1024\"\n}, _hoisted_2683 = /* @__PURE__ */ _createElementVNode646(\n  \"path\",\n  {\n    fill: \"currentColor\",\n    d: \"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zM352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64z\"\n  },\n  null,\n  -1\n  /* HOISTED */\n), _hoisted_3646 = [\n  _hoisted_2683\n];\nfunction _sfc_render683(_ctx, _cache, $props, $setup, $data, $options) {\n  return _openBlock683(), _createElementBlock683(\"svg\", _hoisted_1685, _hoisted_3646);\n}\nvar zoom_out_default = /* @__PURE__ */ export_helper_default(zoom_out_vue_vue_type_script_lang_default, [[\"render\", _sfc_render683], [\"__file\", \"zoom-out.vue\"]]);\nexport {\n  add_location_default as AddLocation,\n  aim_default as Aim,\n  alarm_clock_default as AlarmClock,\n  apple_default as Apple,\n  arrow_down_default as ArrowDown,\n  arrow_down_bold_default as ArrowDownBold,\n  arrow_left_default as ArrowLeft,\n  arrow_left_bold_default as ArrowLeftBold,\n  arrow_right_default as ArrowRight,\n  arrow_right_bold_default as ArrowRightBold,\n  arrow_up_default as ArrowUp,\n  arrow_up_bold_default as ArrowUpBold,\n  avatar_default as Avatar,\n  back_default as Back,\n  baseball_default as Baseball,\n  basics_aixin_default as BasicsAixin,\n  basics_aliyu_default as BasicsAliyu,\n  basics_anquan_default as BasicsAnquan,\n  basics_bangzhu_default as BasicsBangzhu,\n  basics_bianji_default as BasicsBianji,\n  basics_bianji1_default as BasicsBianji1,\n  basics_bianji2_default as BasicsBianji2,\n  basics_bianji3_default as BasicsBianji3,\n  basics_bianji6_default as BasicsBianji6,\n  basics_bofangjilu_default as BasicsBofangjilu,\n  basics_buganxingqu_default as BasicsBuganxingqu,\n  basics_bumen_default as BasicsBumen,\n  basics_caidan_default as BasicsCaidan,\n  basics_ceshi_default as BasicsCeshi,\n  basics_chanpin_default as BasicsChanpin,\n  basics_chenggong_default as BasicsChenggong,\n  basics_collapse_default as BasicsCollapse,\n  basics_dianhua_default as BasicsDianhua,\n  basics_dianhua1_default as BasicsDianhua1,\n  basics_diantong_guan_default as BasicsDiantongGuan,\n  basics_diantong_kai_default as BasicsDiantongKai,\n  basics_dianying_default as BasicsDianying,\n  basics_dianyingpiao_default as BasicsDianyingpiao,\n  basics_dianzan_default as BasicsDianzan,\n  basics_dingdan_default as BasicsDingdan,\n  basics_dingwei_default as BasicsDingwei,\n  basics_dingwei1_default as BasicsDingwei1,\n  basics_ditu_default as BasicsDitu,\n  basics_duanxin_default as BasicsDuanxin,\n  basics_dyanjing_default as BasicsDyanjing,\n  basics_ertongpiao_default as BasicsErtongpiao,\n  basics_expand_default as BasicsExpand,\n  basics_fanbei_default as BasicsFanbei,\n  basics_faxian_default as BasicsFaxian,\n  basics_fenxiang_default as BasicsFenxiang,\n  basics_fujian_default as BasicsFujian,\n  basics_fuzhi_default as BasicsFuzhi,\n  basics_gengduo_default as BasicsGengduo,\n  basics_gengduoneirong_default as BasicsGengduoneirong,\n  basics_gerenxinxi_default as BasicsGerenxinxi,\n  basics_gongsi_default as BasicsGongsi,\n  basics_gongyi_default as BasicsGongyi,\n  basics_gongzuo_default as BasicsGongzuo,\n  basics_guanyu_default as BasicsGuanyu,\n  basics_guanzhu_default as BasicsGuanzhu,\n  basics_guojihua_default as BasicsGuojihua,\n  basics_hengpai_default as BasicsHengpai,\n  basics_hongbao_default as BasicsHongbao,\n  basics_huati_default as BasicsHuati,\n  basics_huatifuhao_default as BasicsHuatifuhao,\n  basics_huiyuan_default as BasicsHuiyuan,\n  basics_jianshao_default as BasicsJianshao,\n  basics_jianshao1_default as BasicsJianshao1,\n  basics_jichushezhi_default as BasicsJichushezhi,\n  basics_jichushuju_default as BasicsJichushuju,\n  basics_jigou_default as BasicsJigou,\n  basics_jigou2_default as BasicsJigou2,\n  basics_jiju_default as BasicsJiju,\n  basics_jingying_default as BasicsJingying,\n  basics_jisuanqi_default as BasicsJisuanqi,\n  basics_juzhong_default as BasicsJuzhong,\n  basics_juzuo_default as BasicsJuzuo,\n  basics_kabao_default as BasicsKabao,\n  basics_kehu_default as BasicsKehu,\n  basics_kehu2_default as BasicsKehu2,\n  basics_lajitong_default as BasicsLajitong,\n  basics_lianjie_default as BasicsLianjie,\n  basics_lihe_default as BasicsLihe,\n  basics_lipinka_default as BasicsLipinka,\n  basics_maiyizengyi_default as BasicsMaiyizengyi,\n  basics_menhu_default as BasicsMenhu,\n  basics_mima_default as BasicsMima,\n  basics_mingxinghuodong_default as BasicsMingxinghuodong,\n  basics_paihangbang_default as BasicsPaihangbang,\n  basics_pengyouquan_default as BasicsPengyouquan,\n  basics_pinglun_default as BasicsPinglun,\n  basics_qinghuiyuan_default as BasicsQinghuiyuan,\n  basics_qingkong1_default as BasicsQingkong1,\n  basics_qingkong2_default as BasicsQingkong2,\n  basics_qingkong3_default as BasicsQingkong3,\n  basics_quanbu_default as BasicsQuanbu,\n  basics_quanping_default as BasicsQuanping,\n  basics_quanpingzuidahua_default as BasicsQuanpingzuidahua,\n  basics_quanpingzuixiaohua_default as BasicsQuanpingzuixiaohua,\n  basics_qupiao_default as BasicsQupiao,\n  basics_quxiaoquanping_default as BasicsQuxiaoquanping,\n  basics_remen_default as BasicsRemen,\n  basics_rili_default as BasicsRili,\n  basics_rili1_default as BasicsRili1,\n  basics_riqian_default as BasicsRiqian,\n  basics_saomiao_default as BasicsSaomiao,\n  basics_saoyisao_default as BasicsSaoyisao,\n  basics_shaixuan_default as BasicsShaixuan,\n  basics_shaixuan1_default as BasicsShaixuan1,\n  basics_shanchu_default as BasicsShanchu,\n  basics_shandian_default as BasicsShandian,\n  basics_shangchuan_default as BasicsShangchuan,\n  basics_shangquan_default as BasicsShangquan,\n  basics_shangsheng_default as BasicsShangsheng,\n  basics_shezhi_default as BasicsShezhi,\n  basics_shezhi1_default as BasicsShezhi1,\n  basics_shijian_default as BasicsShijian,\n  basics_shoucang_default as BasicsShoucang,\n  basics_shougongshuru_default as BasicsShougongshuru,\n  basics_shouji_default as BasicsShouji,\n  basics_shouqi_default as BasicsShouqi,\n  basics_shouye_default as BasicsShouye,\n  basics_shouye2_default as BasicsShouye2,\n  basics_shuaxin_default as BasicsShuaxin,\n  basics_shuaxin1_default as BasicsShuaxin1,\n  basics_shuju_default as BasicsShuju,\n  basics_size_default as BasicsSize,\n  basics_sousuo_default as BasicsSousuo,\n  basics_sousuo1_default as BasicsSousuo1,\n  basics_sousuo2_default as BasicsSousuo2,\n  basics_tanhao_default as BasicsTanhao,\n  basics_taolunqu_default as BasicsTaolunqu,\n  basics_tianjiayouhuiquan_default as BasicsTianjiayouhuiquan,\n  basics_tishi_default as BasicsTishi,\n  basics_tongxunlu_default as BasicsTongxunlu,\n  basics_tongzhi_default as BasicsTongzhi,\n  basics_tuichu_default as BasicsTuichu,\n  basics_tuichu1_default as BasicsTuichu1,\n  basics_tupian_default as BasicsTupian,\n  basics_tupian1_default as BasicsTupian1,\n  basics_tuzhi_default as BasicsTuzhi,\n  basics_tuzhi2_default as BasicsTuzhi2,\n  basics_wenjuan_default as BasicsWenjuan,\n  basics_WIFI_default as BasicsWifi,\n  basics_wodeguanzhu_default as BasicsWodeguanzhu,\n  basics_xiajiang_default as BasicsXiajiang,\n  basics_xiangji_default as BasicsXiangji,\n  basics_xiangji2_default as BasicsXiangji2,\n  basics_xiangkan_default as BasicsXiangkan,\n  basics_xiaoxi_default as BasicsXiaoxi,\n  basics_xiaoxi1_default as BasicsXiaoxi1,\n  basics_xiaoxi2_default as BasicsXiaoxi2,\n  basics_xiaoxizhongxin_default as BasicsXiaoxizhongxin,\n  basics_xiazai_default as BasicsXiazai,\n  basics_yingyuan_default as BasicsYingyuan,\n  basics_yinhangka_default as BasicsYinhangka,\n  basics_yiwen_default as BasicsYiwen,\n  basics_yixiangkan_default as BasicsYixiangkan,\n  basics_youhuiquan_default as BasicsYouhuiquan,\n  basics_youjian_default as BasicsYoujian,\n  basics_yunshangchuan_default as BasicsYunshangchuan,\n  basics_yunxiazai_default as BasicsYunxiazai,\n  basics_yuyin_default as BasicsYuyin,\n  basics_zengjia_default as BasicsZengjia,\n  basics_zhankai_default as BasicsZhankai,\n  basics_zhiwen_default as BasicsZhiwen,\n  basketball_default as Basketball,\n  bell_default as Bell,\n  bell_filled_default as BellFilled,\n  bicycle_default as Bicycle,\n  bottom_default as Bottom,\n  bottom_left_default as BottomLeft,\n  bottom_right_default as BottomRight,\n  bowl_default as Bowl,\n  box_default as Box,\n  briefcase_default as Briefcase,\n  brush_default as Brush,\n  brush_filled_default as BrushFilled,\n  burger_default as Burger,\n  calendar_default as Calendar,\n  camera_default as Camera,\n  camera_filled_default as CameraFilled,\n  caret_bottom_default as CaretBottom,\n  caret_left_default as CaretLeft,\n  caret_right_default as CaretRight,\n  caret_top_default as CaretTop,\n  cellphone_default as Cellphone,\n  chat_dot_round_default as ChatDotRound,\n  chat_dot_square_default as ChatDotSquare,\n  chat_line_round_default as ChatLineRound,\n  chat_line_square_default as ChatLineSquare,\n  chat_round_default as ChatRound,\n  chat_square_default as ChatSquare,\n  check_default as Check,\n  checked_default as Checked,\n  cherry_default as Cherry,\n  chicken_default as Chicken,\n  chrome_filled_default as ChromeFilled,\n  circle_check_default as CircleCheck,\n  circle_check_filled_default as CircleCheckFilled,\n  circle_close_default as CircleClose,\n  circle_close_filled_default as CircleCloseFilled,\n  circle_plus_default as CirclePlus,\n  circle_plus_filled_default as CirclePlusFilled,\n  clock_default as Clock,\n  close_default as Close,\n  close_bold_default as CloseBold,\n  cloudy_default as Cloudy,\n  coffee_default as Coffee,\n  coffee_cup_default as CoffeeCup,\n  coin_default as Coin,\n  cold_drink_default as ColdDrink,\n  collection_default as Collection,\n  collection_tag_default as CollectionTag,\n  comment_default as Comment,\n  compass_default as Compass,\n  connection_default as Connection,\n  coordinate_default as Coordinate,\n  copy_document_default as CopyDocument,\n  cpu_default as Cpu,\n  credit_card_default as CreditCard,\n  crop_default as Crop,\n  d_arrow_left_default as DArrowLeft,\n  d_arrow_right_default as DArrowRight,\n  d_caret_default as DCaret,\n  data_analysis_default as DataAnalysis,\n  data_board_default as DataBoard,\n  data_line_default as DataLine,\n  delete_default as Delete,\n  delete_filled_default as DeleteFilled,\n  delete_location_default as DeleteLocation,\n  dessert_default as Dessert,\n  discount_default as Discount,\n  dish_default as Dish,\n  dish_dot_default as DishDot,\n  document_default as Document,\n  document_add_default as DocumentAdd,\n  document_checked_default as DocumentChecked,\n  document_copy_default as DocumentCopy,\n  document_delete_default as DocumentDelete,\n  document_remove_default as DocumentRemove,\n  download_default as Download,\n  drizzling_default as Drizzling,\n  edit_default as Edit,\n  edit_pen_default as EditPen,\n  eleme_default as Eleme,\n  eleme_filled_default as ElemeFilled,\n  element_plus_default as ElementPlus,\n  expand_default as Expand,\n  failed_default as Failed,\n  female_default as Female,\n  file_audio_default as FileAudio,\n  file_config_default as FileConfig,\n  file_course_default as FileCourse,\n  file_excel_default as FileExcel,\n  file_exe_default as FileExe,\n  file_gif_default as FileGif,\n  file_img_default as FileImg,\n  file_link_default as FileLink,\n  file_model_default as FileModel,\n  file_pdf_default as FilePdf,\n  file_ppt_default as FilePpt,\n  file_sql_default as FileSql,\n  file_sql2_default as FileSql2,\n  file_txt_default as FileTxt,\n  file_video_default as FileVideo,\n  file_word_default as FileWord,\n  file_wps_default as FileWps,\n  file_zip_default as FileZip,\n  files_default as Files,\n  film_default as Film,\n  filter_default as Filter,\n  finished_default as Finished,\n  first_aid_kit_default as FirstAidKit,\n  flag_default as Flag,\n  fold_default as Fold,\n  folder_default as Folder,\n  folder_add_default as FolderAdd,\n  folder_checked_default as FolderChecked,\n  folder_delete_default as FolderDelete,\n  folder_opened_default as FolderOpened,\n  folder_remove_default as FolderRemove,\n  food_default as Food,\n  football_default as Football,\n  fork_spoon_default as ForkSpoon,\n  fries_default as Fries,\n  full_screen_default as FullScreen,\n  goblet_default as Goblet,\n  goblet_full_default as GobletFull,\n  goblet_square_default as GobletSquare,\n  goblet_square_full_default as GobletSquareFull,\n  gold_medal_default as GoldMedal,\n  goods_default as Goods,\n  goods_filled_default as GoodsFilled,\n  grape_default as Grape,\n  grid_default as Grid,\n  guide_default as Guide,\n  handbag_default as Handbag,\n  headset_default as Headset,\n  help_default as Help,\n  help_filled_default as HelpFilled,\n  hide_default as Hide,\n  histogram_default as Histogram,\n  home_filled_default as HomeFilled,\n  hot_water_default as HotWater,\n  house_default as House,\n  ice_cream_default as IceCream,\n  ice_cream_round_default as IceCreamRound,\n  ice_cream_square_default as IceCreamSquare,\n  ice_drink_default as IceDrink,\n  ice_tea_default as IceTea,\n  info_filled_default as InfoFilled,\n  iphone_default as Iphone,\n  key_default as Key,\n  knife_fork_default as KnifeFork,\n  lightning_default as Lightning,\n  link_default as Link,\n  list_default as List,\n  loading_default as Loading,\n  location_default as Location,\n  location_filled_default as LocationFilled,\n  location_information_default as LocationInformation,\n  lock_default as Lock,\n  login_eye_hide_default as LoginEyeHide,\n  login_eye_hide1_default as LoginEyeHide1,\n  login_eye_hide2_default as LoginEyeHide2,\n  login_eye_show_default as LoginEyeShow,\n  login_eye_show1_default as LoginEyeShow1,\n  login_eye_show2_default as LoginEyeShow2,\n  login_mima12_default as LoginMima12,\n  login_password_default as LoginPassword,\n  login_password2_default as LoginPassword2,\n  login_password3_default as LoginPassword3,\n  login_password4_default as LoginPassword4,\n  login_password5_default as LoginPassword5,\n  login_password6_default as LoginPassword6,\n  login_username_default as LoginUsername,\n  login_username2_default as LoginUsername2,\n  login_username3_default as LoginUsername3,\n  login_username4_default as LoginUsername4,\n  login_username6_default as LoginUsername6,\n  lollipop_default as Lollipop,\n  magic_stick_default as MagicStick,\n  magnet_default as Magnet,\n  male_default as Male,\n  management_default as Management,\n  map_location_default as MapLocation,\n  medal_default as Medal,\n  memo_default as Memo,\n  menu_default as Menu,\n  menu_anquanfeiyong_default as MenuAnquanfeiyong,\n  menu_anquanguanli_default as MenuAnquanguanli,\n  menu_anquanjiaodi_default as MenuAnquanjiaodi,\n  menu_anquantixi_default as MenuAnquantixi,\n  menu_banqianhui_default as MenuBanqianhui,\n  menu_baobiaoguanli_default as MenuBaobiaoguanli,\n  menu_biaoduanguanli_default as MenuBiaoduanguanli,\n  menu_bumenguanli_default as MenuBumenguanli,\n  menu_bz_biaozhunguanli_default as MenuBzBiaozhunguanli,\n  menu_bz_jianmobiaozhun_default as MenuBzJianmobiaozhun,\n  menu_bz_yanshoubiaozhun_default as MenuBzYanshoubiaozhun,\n  menu_caozuorenyuan_default as MenuCaozuorenyuan,\n  menu_cz_banbeng_default as MenuCzBanbeng,\n  menu_daibanshiyi_default as MenuDaibanshiyi,\n  menu_dangjianguanli_default as MenuDangjianguanli,\n  menu_dangzuzhiguanli_default as MenuDangzuzhiguanli,\n  menu_danweianquanguanli_default as MenuDanweianquanguanli,\n  menu_dianziqianming_default as MenuDianziqianming,\n  menu_fangxunguanli_default as MenuFangxunguanli,\n  menu_gangweiguanli_default as MenuGangweiguanli,\n  menu_gerenanquanguanli_default as MenuGerenanquanguanli,\n  menu_gerenxinxi_default as MenuGerenxinxi,\n  menu_gongchengdashiji_default as MenuGongchengdashiji,\n  menu_gongchenghuafen_default as MenuGongchenghuafen,\n  menu_gongchengxinxiguanli_default as MenuGongchengxinxiguanli,\n  menu_gongquguanli_default as MenuGongquguanli,\n  menu_gongtujihua_default as MenuGongtujihua,\n  menu_gongwenguanli_default as MenuGongwenguanli,\n  menu_gongzuolianxidan_default as MenuGongzuolianxidan,\n  menu_gongzuoliucheng_default as MenuGongzuoliucheng,\n  menu_hangzhengquhua_default as MenuHangzhengquhua,\n  menu_hetongfenleiguanli_default as MenuHetongfenleiguanli,\n  menu_hetongguanli_default as MenuHetongguanli,\n  menu_hetongjibenxinxiguanli_default as MenuHetongjibenxinxiguanli,\n  menu_huiyiguanli_default as MenuHuiyiguanli,\n  menu_huiyijiyaoguanli_default as MenuHuiyijiyaoguanli,\n  menu_jc_bumenguanli_default as MenuJcBumenguanli,\n  menu_jc_gongsiguanli_default as MenuJcGongsiguanli,\n  menu_jc_huishouzhan_default as MenuJcHuishouzhan,\n  menu_jc_jichushuju_default as MenuJcJichushuju,\n  menu_jc_quanxianguangli_default as MenuJcQuanxianguangli,\n  menu_jc_shujuzidian_default as MenuJcShujuzidian,\n  menu_jc_wodexiangmu_default as MenuJcWodexiangmu,\n  menu_jc_xiangmuguangli_default as MenuJcXiangmuguangli,\n  menu_jc_xiangmuguanli_default as MenuJcXiangmuguanli,\n  menu_jc_xinxiliebiao_default as MenuJcXinxiliebiao,\n  menu_jc_xitongcaidan_default as MenuJcXitongcaidan,\n  menu_jc_xitonghuancun_default as MenuJcXitonghuancun,\n  menu_jc_xitongrizhi_default as MenuJcXitongrizhi,\n  menu_jc_yonghuguangli_default as MenuJcYonghuguangli,\n  menu_jc_yonghuguanli_default as MenuJcYonghuguanli,\n  menu_jd_jindujihua_default as MenuJdJindujihua,\n  menu_jd_jingduguanli_default as MenuJdJingduguanli,\n  menu_jd_jingdujihua_default as MenuJdJingdujihua,\n  menu_jd_jingdutongji_default as MenuJdJingdutongji,\n  menu_jd_niandufenyue_default as MenuJdNiandufenyue,\n  menu_jd_niandujihua_default as MenuJdNiandujihua,\n  menu_jd_tianbao_default as MenuJdTianbao,\n  menu_jd_yuedujihua_default as MenuJdYuedujihua,\n  menu_jihuatongji_default as MenuJihuatongji,\n  menu_juese_default as MenuJuese,\n  menu_jueseguanli_default as MenuJueseguanli,\n  menu_kaigongcehua_default as MenuKaigongcehua,\n  menu_kaoshiguanli_default as MenuKaoshiguanli,\n  menu_liuchengceshi_default as MenuLiuchengceshi,\n  menu_liuchengweituo_default as MenuLiuchengweituo,\n  menu_moxingliulan_default as MenuMoxingliulan,\n  menu_mx_moxingguangli_default as MenuMxMoxingguangli,\n  menu_mx_moxingguangli2_default as MenuMxMoxingguangli2,\n  menu_peixunguanli_default as MenuPeixunguanli,\n  menu_peixunjilu_default as MenuPeixunjilu,\n  menu_qianqiguanli_default as MenuQianqiguanli,\n  menu_qianqijihuaguanli_default as MenuQianqijihuaguanli,\n  menu_qianqijinzhanguanli_default as MenuQianqijinzhanguanli,\n  menu_quanxianguanli_default as MenuQuanxianguanli,\n  menu_qx_canyu_default as MenuQxCanyu,\n  menu_qx_danwei_default as MenuQxDanwei,\n  menu_renwudiaodu_default as MenuRenwudiaodu,\n  menu_shejiguanli_default as MenuShejiguanli,\n  menu_shiguguanli_default as MenuShiguguanli,\n  menu_shili_default as MenuShili,\n  menu_shili_2_default as MenuShili2,\n  menu_shili3_default as MenuShili3,\n  menu_shuzizidian_default as MenuShuzizidian,\n  menu_sjcg_shejichengguo_default as MenuSjcgShejichengguo,\n  menu_tongzhigonggao_default as MenuTongzhigonggao,\n  menu_tu_shenghe_default as MenuTuShenghe,\n  menu_tu_taizhang_default as MenuTuTaizhang,\n  menu_tuzhibiangeng_default as MenuTuzhibiangeng,\n  menu_tuzhichaxun_default as MenuTuzhichaxun,\n  menu_tuzhifenfaguanli_default as MenuTuzhifenfaguanli,\n  menu_tuzhihuishen_default as MenuTuzhihuishen,\n  menu_tuzhijiaodi_default as MenuTuzhijiaodi,\n  menu_tuzhimulu_default as MenuTuzhimulu,\n  menu_tuzhishencha_default as MenuTuzhishencha,\n  menu_tz_mulu_default as MenuTzMulu,\n  menu_tz_tuchengguangli2_default as MenuTzTuchengguangli2,\n  menu_tz_tuzhiguangli_default as MenuTzTuzhiguangli,\n  menu_wd_anquan_default as MenuWdAnquan,\n  menu_wd_bim_default as MenuWdBim,\n  menu_wd_caigou_default as MenuWdCaigou,\n  menu_wd_dangjian_default as MenuWdDangjian,\n  menu_wd_gongwen_default as MenuWdGongwen,\n  menu_wd_shangjiwenjian_default as MenuWdShangjiwenjian,\n  menu_wd_sheji_default as MenuWdSheji,\n  menu_wd_wendang_default as MenuWdWendang,\n  menu_wd_yanshou_default as MenuWdYanshou,\n  menu_weiguiqingkuang_default as MenuWeiguiqingkuang,\n  menu_weixianyuanguanli_default as MenuWeixianyuanguanli,\n  menu_wenjianbaoshen_default as MenuWenjianbaoshen,\n  menu_wodexiangmu_default as MenuWodexiangmu,\n  menu_wodexiangmu1_default as MenuWodexiangmu1,\n  menu_wodexiangmu2_default as MenuWodexiangmu2,\n  menu_wofaqide_default as MenuWofaqide,\n  menu_xiangmuguanli_default as MenuXiangmuguanli,\n  menu_xiangmuquan_default as MenuXiangmuquan,\n  menu_xiaoxizhongxin1_default as MenuXiaoxizhongxin1,\n  menu_xiaoxizhongxin2_default as MenuXiaoxizhongxin2,\n  menu_xiaoxizhongxin3_default as MenuXiaoxizhongxin3,\n  menu_xinchoufafang_default as MenuXinchoufafang,\n  menu_xinwendongtai_default as MenuXinwendongtai,\n  menu_xitong_default as MenuXitong,\n  menu_xitongcaidan_default as MenuXitongcaidan,\n  menu_xitongdiaodu_default as MenuXitongdiaodu,\n  menu_xitonggonggao_default as MenuXitonggonggao,\n  menu_xitongguanli_default as MenuXitongguanli,\n  menu_xitonghuancun_default as MenuXitonghuancun,\n  menu_xitongjiankong_default as MenuXitongjiankong,\n  menu_xitonglogo_default as MenuXitonglogo,\n  menu_xitongpeizhi_default as MenuXitongpeizhi,\n  menu_xitongquanxian_default as MenuXitongquanxian,\n  menu_xitongrizhi_default as MenuXitongrizhi,\n  menu_xm_bangong_default as MenuXmBangong,\n  menu_xm_biaoduan_default as MenuXmBiaoduan,\n  menu_xm_chakan_default as MenuXmChakan,\n  menu_xm_dongtai_default as MenuXmDongtai,\n  menu_xm_fabu_default as MenuXmFabu,\n  menu_xm_gongchengguanli_default as MenuXmGongchengguanli,\n  menu_xm_guihua_default as MenuXmGuihua,\n  menu_xm_jianjie_default as MenuXmJianjie,\n  menu_xm_jiankong_default as MenuXmJiankong,\n  menu_xm_jianshe_default as MenuXmJianshe,\n  menu_xm_lichengbei_default as MenuXmLichengbei,\n  menu_xm_menghu_default as MenuXmMenghu,\n  menu_xm_quanzi_default as MenuXmQuanzi,\n  menu_xm_shu_default as MenuXmShu,\n  menu_xm_tongzhi_default as MenuXmTongzhi,\n  menu_xm_zhandian_default as MenuXmZhandian,\n  menu_xm_zuzhi_default as MenuXmZuzhi,\n  menu_xmjd_danti_default as MenuXmjdDanti,\n  menu_xmjd_xiangmujindu2_default as MenuXmjdXiangmujindu2,\n  menu_xmjd_xiangmujingdu_default as MenuXmjdXiangmujingdu,\n  menu_xmjd_xingxiangjingdu_default as MenuXmjdXingxiangjingdu,\n  menu_xt_tongjipeizhi_default as MenuXtTongjipeizhi,\n  menu_yewubiaodan_default as MenuYewubiaodan,\n  menu_yibanshiyi_default as MenuYibanshiyi,\n  menu_yingjiyanlian_default as MenuYingjiyanlian,\n  menu_yingjiyuan_default as MenuYingjiyuan,\n  menu_yingjiziyuan_default as MenuYingjiziyuan,\n  menu_yinhuanpaicha_default as MenuYinhuanpaicha,\n  menu_yonghuguanli_default as MenuYonghuguanli,\n  menu_yuebao_default as MenuYuebao,\n  menu_zaixianyonghu_default as MenuZaixianyonghu,\n  menu_zhengcefagui_default as MenuZhengcefagui,\n  menu_zhiduguanli_default as MenuZhiduguanli,\n  menu_zhiliang_default as MenuZhiliang,\n  menu_zhiyejiankang_default as MenuZhiyejiankang,\n  menu_zhoubao_default as MenuZhoubao,\n  menu_zhuanxiangshigongfangan_default as MenuZhuanxiangshigongfangan,\n  menu_zl_fenbu_default as MenuZlFenbu,\n  menu_zl_fenxiang_default as MenuZlFenxiang,\n  menu_zl_jianyan_default as MenuZlJianyan,\n  menu_zl_wentiku_default as MenuZlWentiku,\n  menu_zongheguanli_default as MenuZongheguanli,\n  menu_zuzhiguanli_default as MenuZuzhiguanli,\n  menu_zuzhijiagou_default as MenuZuzhijiagou,\n  message_default as Message,\n  message_box_default as MessageBox,\n  mic_default as Mic,\n  microphone_default as Microphone,\n  milk_tea_default as MilkTea,\n  minus_default as Minus,\n  money_default as Money,\n  monitor_default as Monitor,\n  moon_default as Moon,\n  moon_night_default as MoonNight,\n  more_default as More,\n  more_filled_default as MoreFilled,\n  mostly_cloudy_default as MostlyCloudy,\n  mouse_default as Mouse,\n  mug_default as Mug,\n  mute_default as Mute,\n  mute_notification_default as MuteNotification,\n  no_smoking_default as NoSmoking,\n  notebook_default as Notebook,\n  notification_default as Notification,\n  odometer_default as Odometer,\n  office_building_default as OfficeBuilding,\n  open_default as Open,\n  operation_default as Operation,\n  opportunity_default as Opportunity,\n  orange_default as Orange,\n  paperclip_default as Paperclip,\n  partly_cloudy_default as PartlyCloudy,\n  pear_default as Pear,\n  phone_default as Phone,\n  phone_filled_default as PhoneFilled,\n  picture_default as Picture,\n  picture_filled_default as PictureFilled,\n  picture_rounded_default as PictureRounded,\n  pie_chart_default as PieChart,\n  place_default as Place,\n  platform_default as Platform,\n  plus_default as Plus,\n  pointer_default as Pointer,\n  position_default as Position,\n  postcard_default as Postcard,\n  pouring_default as Pouring,\n  present_default as Present,\n  price_tag_default as PriceTag,\n  printer_default as Printer,\n  promotion_default as Promotion,\n  quartz_watch_default as QuartzWatch,\n  question_filled_default as QuestionFilled,\n  rank_default as Rank,\n  reading_default as Reading,\n  reading_lamp_default as ReadingLamp,\n  refresh_default as Refresh,\n  refresh_left_default as RefreshLeft,\n  refresh_right_default as RefreshRight,\n  refrigerator_default as Refrigerator,\n  remove_default as Remove,\n  remove_filled_default as RemoveFilled,\n  right_default as Right,\n  scale_to_original_default as ScaleToOriginal,\n  school_default as School,\n  scissor_default as Scissor,\n  search_default as Search,\n  select_default as Select,\n  sell_default as Sell,\n  semi_select_default as SemiSelect,\n  service_default as Service,\n  set_up_default as SetUp,\n  setting_default as Setting,\n  share_default as Share,\n  ship_default as Ship,\n  shop_default as Shop,\n  shopping_bag_default as ShoppingBag,\n  shopping_cart_default as ShoppingCart,\n  shopping_cart_full_default as ShoppingCartFull,\n  shopping_trolley_default as ShoppingTrolley,\n  smoking_default as Smoking,\n  soccer_default as Soccer,\n  sold_out_default as SoldOut,\n  sort_default as Sort,\n  sort_down_default as SortDown,\n  sort_up_default as SortUp,\n  stamp_default as Stamp,\n  star_default as Star,\n  star_filled_default as StarFilled,\n  stopwatch_default as Stopwatch,\n  success_filled_default as SuccessFilled,\n  sugar_default as Sugar,\n  suitcase_default as Suitcase,\n  suitcase_line_default as SuitcaseLine,\n  sunny_default as Sunny,\n  sunrise_default as Sunrise,\n  sunset_default as Sunset,\n  switch_default as Switch,\n  switch_button_default as SwitchButton,\n  switch_filled_default as SwitchFilled,\n  takeaway_box_default as TakeawayBox,\n  ticket_default as Ticket,\n  tickets_default as Tickets,\n  timer_default as Timer,\n  toilet_paper_default as ToiletPaper,\n  tools_default as Tools,\n  top_default as Top,\n  top_left_default as TopLeft,\n  top_right_default as TopRight,\n  trend_charts_default as TrendCharts,\n  trophy_default as Trophy,\n  trophy_base_default as TrophyBase,\n  turn_off_default as TurnOff,\n  umbrella_default as Umbrella,\n  unlock_default as Unlock,\n  upload_default as Upload,\n  upload_filled_default as UploadFilled,\n  user_default as User,\n  user_filled_default as UserFilled,\n  van_default as Van,\n  video_camera_default as VideoCamera,\n  video_camera_filled_default as VideoCameraFilled,\n  video_pause_default as VideoPause,\n  video_play_default as VideoPlay,\n  view_default as View,\n  wallet_default as Wallet,\n  wallet_filled_default as WalletFilled,\n  warn_triangle_filled_default as WarnTriangleFilled,\n  warning_default as Warning,\n  warning_filled_default as WarningFilled,\n  watch_default as Watch,\n  watermelon_default as Watermelon,\n  weather_baoxue_default as WeatherBaoxue,\n  weather_baoyu_default as WeatherBaoyu,\n  weather_bingbao_default as WeatherBingbao,\n  weather_dabaoxue_default as WeatherDabaoxue,\n  weather_dabaoyu_default as WeatherDabaoyu,\n  weather_dafeng_default as WeatherDafeng,\n  weather_daxue_default as WeatherDaxue,\n  weather_dayu_default as WeatherDayu,\n  weather_duoyun_default as WeatherDuoyun,\n  weather_duoyunzhuanqing_default as WeatherDuoyunzhuanqing,\n  weather_leibao_default as WeatherLeibao,\n  weather_leiyu_default as WeatherLeiyu,\n  weather_leizhenyu_default as WeatherLeizhenyu,\n  weather_longjuanfeng_default as WeatherLongjuanfeng,\n  weather_mai_default as WeatherMai,\n  weather_qingtian_default as WeatherQingtian,\n  weather_shachenbao_default as WeatherShachenbao,\n  weather_tedabaoyu_default as WeatherTedabaoyu,\n  weather_wu_default as WeatherWu,\n  weather_xiaoxue_default as WeatherXiaoxue,\n  weather_xiaoyu_default as WeatherXiaoyu,\n  weather_yin_default as WeatherYin,\n  weather_yujiaxue_default as WeatherYujiaxue,\n  weather_zhenxue_default as WeatherZhenxue,\n  weather_zhenyu_default as WeatherZhenyu,\n  weather_zhongxue_default as WeatherZhongxue,\n  weather_zhongyu_default as WeatherZhongyu,\n  wind_power_default as WindPower,\n  zoom_in_default as ZoomIn,\n  zoom_out_default as ZoomOut\n};\n","import { warn } from 'vue'\nimport { fromPairs } from 'lodash-unified'\nimport { isObject } from '../../types'\nimport { hasOwn } from '../../objects'\n\nimport type { PropType } from 'vue'\nimport type {\n  EpProp,\n  EpPropConvert,\n  EpPropFinalized,\n  EpPropInput,\n  EpPropMergeType,\n  IfEpProp,\n  IfNativePropType,\n  NativePropType,\n} from './types'\n\nexport const epPropKey = '__epPropKey'\n\nexport const definePropType = <T>(val: any): PropType<T> => val\n\nexport const isEpProp = (val: unknown): val is EpProp<any, any, any> =>\n  isObject(val) && !!(val as any)[epPropKey]\n\n/**\n * @description Build prop. It can better optimize prop types\n * @description 生成 prop，能更好地优化类型\n * @example\n  // limited options\n  // the type will be PropType<'light' | 'dark'>\n  buildProp({\n    type: String,\n    values: ['light', 'dark'],\n  } as const)\n  * @example\n  // limited options and other types\n  // the type will be PropType<'small' | 'large' | number>\n  buildProp({\n    type: [String, Number],\n    values: ['small', 'large'],\n    validator: (val: unknown): val is number => typeof val === 'number',\n  } as const)\n  @link see more: https://github.com/element-plus/element-plus/pull/3341\n */\nexport const buildProp = <\n  Type = never,\n  Value = never,\n  Validator = never,\n  Default extends EpPropMergeType<Type, Value, Validator> = never,\n  Required extends boolean = false,\n>(\n  prop: EpPropInput<Type, Value, Validator, Default, Required>,\n  key?: string\n): EpPropFinalized<Type, Value, Validator, Default, Required> => {\n  // filter native prop type and nested prop, e.g `null`, `undefined` (from `buildProps`)\n  if (!isObject(prop) || isEpProp(prop)) return prop as any\n\n  const { values, required, default: defaultValue, type, validator } = prop\n\n  const _validator =\n    values || validator\n      ? (val: unknown) => {\n          let valid = false\n          let allowedValues: unknown[] = []\n\n          if (values) {\n            allowedValues = Array.from(values)\n            if (hasOwn(prop, 'default')) {\n              allowedValues.push(defaultValue)\n            }\n            valid ||= allowedValues.includes(val)\n          }\n          if (validator) valid ||= validator(val)\n\n          if (!valid && allowedValues.length > 0) {\n            const allowValuesText = [...new Set(allowedValues)]\n              .map((value) => JSON.stringify(value))\n              .join(', ')\n            warn(\n              `Invalid prop: validation failed${\n                key ? ` for prop \"${key}\"` : ''\n              }. Expected one of [${allowValuesText}], got value ${JSON.stringify(\n                val\n              )}.`\n            )\n          }\n          return valid\n        }\n      : undefined\n\n  const epProp: any = {\n    type,\n    required: !!required,\n    validator: _validator,\n    [epPropKey]: true,\n  }\n  if (hasOwn(prop, 'default')) epProp.default = defaultValue\n  return epProp\n}\n\nexport const buildProps = <\n  Props extends Record<\n    string,\n    | { [epPropKey]: true }\n    | NativePropType\n    | EpPropInput<any, any, any, any, any>\n  >,\n>(\n  props: Props\n): {\n  [K in keyof Props]: IfEpProp<\n    Props[K],\n    Props[K],\n    IfNativePropType<Props[K], Props[K], EpPropConvert<Props[K]>>\n  >\n} =>\n  fromPairs(\n    Object.entries(props).map(([key, option]) => [\n      key,\n      buildProp(option as any, key),\n    ])\n  ) as any\n","import {\n  CircleCheck,\n  CircleClose,\n  CircleCloseFilled,\n  Close,\n  InfoFilled,\n  Loading,\n  SuccessFilled,\n  WarningFilled,\n} from 'pit-element-icons'\nimport { definePropType } from './props'\n\nimport type { Component } from 'vue'\n\nexport type IconPropType = string | Component\n\nexport const iconPropType = definePropType<string | Component>([\n  String,\n  Object,\n  Function,\n])\n\nexport const CloseComponents = {\n  Close,\n}\n\nexport const TypeComponents = {\n  Close,\n  SuccessFilled,\n  InfoFilled,\n  WarningFilled,\n  CircleCloseFilled,\n}\n\nexport const TypeComponentsMap = {\n  primary: InfoFilled,\n  success: SuccessFilled,\n  warning: WarningFilled,\n  error: CircleCloseFilled,\n  info: InfoFilled,\n}\n\nexport const ValidateComponentsMap = {\n  validating: Loading,\n  success: CircleCheck,\n  error: CircleClose,\n}\n\n// All icon components have the same type, so we can pick any one of them to get the type\nexport type IconComponent = typeof Loading\n","import { hasOwn, isArray } from '@vue/shared'\nimport { fromPairs, isPlainObject } from 'lodash-unified'\nimport { NOOP } from '../functions'\n\nimport type { App, Directive } from 'vue'\nimport type { SFCInstallWithContext, SFCWithInstall } from './typescript'\n\nexport const withPropsDefaultsSetter = (target: any) => {\n  const _p = target.props\n  const props = isArray(_p) ? fromPairs(_p.map((key) => [key, {}])) : _p\n\n  target.setPropsDefaults = (defaults: Record<string, any>) => {\n    if (!props) {\n      return\n    }\n\n    for (const [key, value] of Object.entries(defaults)) {\n      const prop = props[key]\n\n      if (!hasOwn(props, key)) {\n        continue\n      }\n\n      if (isPlainObject(prop)) {\n        // e.g. { type: String }\n        props[key] = {\n          ...prop,\n          default: value,\n        }\n        continue\n      }\n\n      props[key] = {\n        type: prop,\n        default: value,\n      }\n    }\n\n    target.props = props\n  }\n}\n\nexport const withInstall = <T, E extends Record<string, any>>(\n  main: T,\n  extra?: E\n) => {\n  ;(main as SFCWithInstall<T>).install = (app): void => {\n    for (const comp of [main, ...Object.values(extra ?? {})]) {\n      app.component(comp.name, comp)\n    }\n  }\n\n  if (extra) {\n    for (const [key, comp] of Object.entries(extra)) {\n      ;(main as any)[key] = comp\n    }\n  }\n  withPropsDefaultsSetter(main)\n  return main as SFCWithInstall<T> & E\n}\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n  ;(fn as SFCWithInstall<T>).install = (app: App) => {\n    ;(fn as SFCInstallWithContext<T>)._context = app._context\n    app.config.globalProperties[name] = fn\n  }\n\n  return fn as SFCInstallWithContext<T>\n}\n\nexport const withInstallDirective = <T extends Directive>(\n  directive: T,\n  name: string\n) => {\n  ;(directive as SFCWithInstall<T>).install = (app: App): void => {\n    app.directive(name, directive)\n  }\n\n  return directive as SFCWithInstall<T>\n}\n\nexport const withNoopInstall = <T>(component: T) => {\n  ;(component as SFCWithInstall<T>).install = NOOP\n  withPropsDefaultsSetter(component)\n  return component as SFCWithInstall<T>\n}\n","import type { ComponentPublicInstance, Ref } from 'vue'\n\nexport const composeRefs = (...refs: Ref<HTMLElement | undefined>[]) => {\n  return (el: Element | ComponentPublicInstance | null) => {\n    refs.forEach((ref) => {\n      ref.value = el as HTMLElement | undefined\n    })\n  }\n}\n","import { componentSizes, datePickTypes } from '@pit-element-plus/constants'\n\nimport type { ComponentSize, DatePickType } from '@pit-element-plus/constants'\n\nexport const isValidComponentSize = (val: string): val is ComponentSize | '' =>\n  ['', ...componentSizes].includes(val)\n\nexport const isValidDatePickType = (val: string): val is DatePickType =>\n  ([...datePickTypes] as string[]).includes(val)\n","import {\n  Comment,\n  Fragment,\n  Text,\n  createBlock,\n  createCommentVNode,\n  isVNode,\n  openBlock,\n} from 'vue'\nimport { camelize } from '../strings'\nimport { isArray } from '../types'\nimport { hasOwn } from '../objects'\nimport { debugWarn } from '../error'\n\nimport type { VNode, VNodeChild, VNodeNormalizedChildren } from 'vue'\n\nconst SCOPE = 'utils/vue/vnode'\n\nexport enum PatchFlags {\n  TEXT = 1,\n  CLASS = 2,\n  STYLE = 4,\n  PROPS = 8,\n  FULL_PROPS = 16,\n  HYDRATE_EVENTS = 32,\n  STABLE_FRAGMENT = 64,\n  KEYED_FRAGMENT = 128,\n  UNKEYED_FRAGMENT = 256,\n  NEED_PATCH = 512,\n  DYNAMIC_SLOTS = 1024,\n  HOISTED = -1,\n  BAIL = -2,\n}\n\nexport type VNodeChildAtom = Exclude<VNodeChild, Array<any>>\nexport type RawSlots = Exclude<\n  VNodeNormalizedChildren,\n  Array<any> | null | string\n>\n\nexport function isFragment(node: VNode): boolean\nexport function isFragment(node: unknown): node is VNode\nexport function isFragment(node: unknown): node is VNode {\n  return isVNode(node) && node.type === Fragment\n}\n\nexport function isText(node: VNode): boolean\nexport function isText(node: unknown): node is VNode\nexport function isText(node: unknown): node is VNode {\n  return isVNode(node) && node.type === Text\n}\n\nexport function isComment(node: VNode): boolean\nexport function isComment(node: unknown): node is VNode\nexport function isComment(node: unknown): node is VNode {\n  return isVNode(node) && node.type === Comment\n}\n\nconst TEMPLATE = 'template'\nexport function isTemplate(node: VNode): boolean\nexport function isTemplate(node: unknown): node is VNode\nexport function isTemplate(node: unknown): node is VNode {\n  return isVNode(node) && node.type === TEMPLATE\n}\n\n/**\n * determine if the element is a valid element type rather than fragments and comment e.g. <template> v-if\n * @param node {VNode} node to be tested\n */\nexport function isValidElementNode(node: VNode): boolean\nexport function isValidElementNode(node: unknown): node is VNode\nexport function isValidElementNode(node: unknown): node is VNode {\n  return isVNode(node) && !isFragment(node) && !isComment(node)\n}\n\n/**\n * get a valid child node (not fragment nor comment)\n * @param node {VNode} node to be searched\n * @param depth {number} depth to be searched\n */\nfunction getChildren(\n  node: VNodeNormalizedChildren | VNodeChild,\n  depth: number\n): VNodeNormalizedChildren | VNodeChild {\n  if (isComment(node)) return\n  if (isFragment(node) || isTemplate(node)) {\n    return depth > 0 ? getFirstValidNode(node.children, depth - 1) : undefined\n  }\n  return node\n}\n\nexport const getFirstValidNode = (\n  nodes: VNodeNormalizedChildren,\n  maxDepth = 3\n) => {\n  if (isArray(nodes)) {\n    return getChildren(nodes[0], maxDepth)\n  } else {\n    return getChildren(nodes, maxDepth)\n  }\n}\n\nexport function renderIf(\n  condition: boolean,\n  ...args: Parameters<typeof createBlock>\n) {\n  return condition ? renderBlock(...args) : createCommentVNode('v-if', true)\n}\n\nexport function renderBlock(...args: Parameters<typeof createBlock>) {\n  return (openBlock(), createBlock(...args))\n}\n\nexport const getNormalizedProps = (node: VNode) => {\n  if (!isVNode(node)) {\n    debugWarn(SCOPE, '[getNormalizedProps] must be a VNode')\n    return {}\n  }\n\n  const raw = node.props || {}\n  const type = (isVNode(node.type) ? node.type.props : undefined) || {}\n  const props: Record<string, any> = {}\n\n  Object.keys(type).forEach((key) => {\n    if (hasOwn(type[key], 'default')) {\n      props[key] = type[key].default\n    }\n  })\n\n  Object.keys(raw).forEach((key) => {\n    props[camelize(key)] = raw[key]\n  })\n\n  return props\n}\n\nexport type FlattenVNodes = Array<VNodeChildAtom | RawSlots>\n\nexport const flattedChildren = (\n  children: FlattenVNodes | VNode | VNodeNormalizedChildren\n): FlattenVNodes => {\n  const vNodes = isArray(children) ? children : [children]\n  const result: FlattenVNodes = []\n\n  vNodes.forEach((child) => {\n    if (isArray(child)) {\n      result.push(...flattedChildren(child))\n    } else if (isVNode(child) && child.component?.subTree) {\n      result.push(child, ...flattedChildren(child.component.subTree))\n    } else if (isVNode(child) && isArray(child.children)) {\n      result.push(...flattedChildren(child.children))\n    } else if (isVNode(child) && child.shapeFlag === 2) {\n      // @ts-ignore\n      result.push(...flattedChildren(child.type()))\n    } else {\n      result.push(child)\n    }\n  })\n  return result\n}\n","import { isArray } from './types'\n\nexport const unique = <T>(arr: T[]) => [...new Set(arr)]\n\nexport const extractFirst = <T>(arr: T | T[]): T => {\n  return isArray(arr) ? arr[0] : arr\n}\n\ntype Many<T> = T | ReadonlyArray<T>\n// TODO: rename to `ensureArray`\n/** like `_.castArray`, except falsy value returns empty array. */\nexport const castArray = <T>(arr: Many<T>): T[] => {\n  if (!arr && (arr as any) !== 0) return []\n  return isArray(arr) ? arr : [arr as T]\n}\n\n// TODO: remove import alias\n// avoid naming conflicts\nexport { castArray as ensureArray } from 'lodash-unified'\n","export const isKorean = (text: string) =>\n  /([\\uAC00-\\uD7AF\\u3130-\\u318F])+/gi.test(text)\n","export const mutable = <T extends readonly any[] | Record<string, unknown>>(\n  val: T\n) => val as Mutable<typeof val>\nexport type Mutable<T> = { -readonly [P in keyof T]: T[P] }\n\nexport type HTMLElementCustomized<T> = HTMLElement & T\n\n/**\n * @deprecated stop to use null\n * @see {@link https://github.com/sindresorhus/meta/discussions/7}\n */\nexport type Nullable<T> = T | null\n\nexport type Arrayable<T> = T | T[]\nexport type Awaitable<T> = Promise<T> | T\n\ntype Primitive = null | undefined | string | number | boolean | symbol | bigint\ntype BrowserNativeObject = Date | FileList | File | Blob | RegExp\n\n/**\n * Check whether it is tuple\n *\n * 检查是否为元组\n *\n * @example\n * IsTuple<[1, 2, 3]> => true\n * IsTuple<Array[number]> => false\n */\ntype IsTuple<T extends ReadonlyArray<any>> = number extends T['length']\n  ? false\n  : true\n\n/**\n * Array method key\n *\n * 数组方法键\n */\ntype ArrayMethodKey = keyof any[]\n\n/**\n * Tuple index key\n *\n * 元组下标键\n *\n * @example\n * TupleKey<[1, 2, 3]> => '0' | '1' | '2'\n */\ntype TupleKey<T extends ReadonlyArray<any>> = Exclude<keyof T, ArrayMethodKey>\n\n/**\n * Array index key\n *\n * 数组下标键\n */\ntype ArrayKey = number\n\n/**\n * Helper type for recursively constructing paths through a type\n *\n * 用于通过一个类型递归构建路径的辅助类型\n */\ntype PathImpl<K extends string | number, V> = V extends\n  | Primitive\n  | BrowserNativeObject\n  ? `${K}`\n  : `${K}` | `${K}.${Path<V>}`\n\n/**\n * Type which collects all paths through a type\n *\n * 通过一个类型收集所有路径的类型\n *\n * @see {@link FieldPath}\n */\ntype Path<T> =\n  T extends ReadonlyArray<infer V>\n    ? IsTuple<T> extends true\n      ? {\n          [K in TupleKey<T>]-?: PathImpl<Exclude<K, symbol>, T[K]>\n        }[TupleKey<T>] // tuple\n      : PathImpl<ArrayKey, V> // array\n    : {\n        [K in keyof T]-?: PathImpl<Exclude<K, symbol>, T[K]>\n      }[keyof T] // object\n\n/**\n * Type which collects all paths through a type\n *\n * 通过一个类型收集所有路径的类型\n *\n * @example\n * FieldPath<{ 1: number; a: number; b: string; c: { d: number; e: string }; f: [{ value: string }]; g: { value: string }[]; h: Date; i: FileList; j: File; k: Blob; l: RegExp }> => '1' | 'a' | 'b' | 'c' | 'f' | 'g' | 'c.d' | 'c.e' | 'f.0' | 'f.0.value' | 'g.number' | 'g.number.value' | 'h' | 'i' | 'j' | 'k' | 'l'\n */\nexport type FieldPath<T> = T extends object ? Path<T> : never\n","import { cAF, rAF } from './raf'\n\nexport function throttleByRaf(cb: (...args: any[]) => void) {\n  let timer = 0\n\n  const throttle = (...args: any[]): void => {\n    if (timer) {\n      cAF(timer)\n    }\n    timer = rAF(() => {\n      cb(...args)\n      timer = 0\n    })\n  }\n\n  throttle.cancel = () => {\n    cAF(timer)\n    timer = 0\n  }\n\n  return throttle\n}\n","export const renderTemplate = (template: string, data: any): any => {\n  const reg = /\\{(\\w+)\\}/\n  if (reg.test(template)) {\n    const regArr = reg.exec(template)\n    const name = regArr ? regArr[1] : ''\n    const key = data[name]\n    template = template.replace(reg, key)\n    return renderTemplate(template, data)\n  }\n  return template\n}\n\nexport const getObjectValue = (\n  object: any,\n  path: any,\n  defaultValue: any\n): any => {\n  const arr: string[] = !Array.isArray(path)\n    ? (path as any).replace(/\\[/g, '.').replace(/\\]/g, '').split('.')\n    : (path as any[])\n\n  return arr.reduce((o: any, k: any) => (o || {})[k], object) || defaultValue\n}\n","export const flattenTree = (dataList: Array<any>): Array<any> => {\n  return dataList.reduce((conn, data) => {\n    conn.push(data)\n    if (data.children && data.children.length) {\n      conn.push(...flattenTree(data.children))\n    }\n    return conn\n  }, [])\n}\n","import { computed, getCurrentInstance } from 'vue'\nimport { fromPairs } from 'lodash-unified'\nimport { debugWarn } from '@pit-element-plus/utils'\n\nimport type { ComputedRef } from 'vue'\n\ninterface Params {\n  excludeListeners?: boolean\n  excludeKeys?: ComputedRef<string[]>\n}\n\nconst DEFAULT_EXCLUDE_KEYS = ['class', 'style']\nconst LISTENER_PREFIX = /^on[A-Z]/\n\nexport const useAttrs = (\n  params: Params = {}\n): ComputedRef<Record<string, unknown>> => {\n  const { excludeListeners = false, excludeKeys } = params\n  const allExcludeKeys = computed<string[]>(() => {\n    return (excludeKeys?.value || []).concat(DEFAULT_EXCLUDE_KEYS)\n  })\n\n  const instance = getCurrentInstance()\n  if (!instance) {\n    debugWarn(\n      'use-attrs',\n      'getCurrentInstance() returned null. useAttrs() must be called at the top of a setup function'\n    )\n    return computed(() => ({}))\n  }\n\n  return computed(() =>\n    fromPairs(\n      Object.entries(instance.proxy?.$attrs!).filter(\n        ([key]) =>\n          !allExcludeKeys.value.includes(key) &&\n          !(excludeListeners && LISTENER_PREFIX.test(key))\n      )\n    )\n  )\n}\n","import { computed, ref, shallowRef } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { MINIMUM_INPUT_WIDTH } from '@pit-element-plus/constants'\n\nexport function useCalcInputWidth() {\n  const calculatorRef = shallowRef<HTMLElement>()\n  const calculatorWidth = ref(0)\n\n  const inputStyle = computed(() => ({\n    minWidth: `${Math.max(calculatorWidth.value, MINIMUM_INPUT_WIDTH)}px`,\n  }))\n\n  const resetCalculatorWidth = () => {\n    calculatorWidth.value =\n      calculatorRef.value?.getBoundingClientRect().width ?? 0\n  }\n\n  useResizeObserver(calculatorRef, resetCalculatorWidth)\n\n  return {\n    calculatorRef,\n    calculatorWidth,\n    inputStyle,\n  }\n}\n","import { unref, watch } from 'vue'\nimport { debugWarn } from '@pit-element-plus/utils'\n\nimport type { MaybeRef } from '@vueuse/core'\n\ntype DeprecationParam = {\n  from: string\n  replacement: string\n  scope: string\n  version: string\n  ref: string\n  type?: 'API' | 'Attribute' | 'Event' | 'Slot'\n}\n\nexport const useDeprecated = (\n  { from, replacement, scope, version, ref, type = 'API' }: DeprecationParam,\n  condition: MaybeRef<boolean>\n) => {\n  watch(\n    () => unref(condition),\n    (val) => {\n      if (val) {\n        debugWarn(\n          scope,\n          `[${type}] ${from} is about to be deprecated in version ${version}, please use ${replacement} instead.\nFor more detail, please visit: ${ref}\n`\n        )\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n}\n","import { onBeforeUnmount, onMounted, ref, watchEffect } from 'vue'\nimport { addUnit } from '@pit-element-plus/utils'\n\nimport type { ComputedRef, Ref } from 'vue'\n\nexport const useDraggable = (\n  targetRef: Ref<HTMLElement | undefined>,\n  dragRef: Ref<HTMLElement | undefined>,\n  draggable: ComputedRef<boolean>,\n  overflow?: ComputedRef<boolean>\n) => {\n  const transform = {\n    offsetX: 0,\n    offsetY: 0,\n  }\n\n  const isDragging = ref(false)\n\n  const adjustPosition = (moveX: number, moveY: number) => {\n    if (targetRef.value) {\n      const { offsetX, offsetY } = transform\n      const targetRect = targetRef.value.getBoundingClientRect()\n      const targetLeft = targetRect.left\n      const targetTop = targetRect.top\n      const targetWidth = targetRect.width\n      const targetHeight = targetRect.height\n\n      const clientWidth = document.documentElement.clientWidth\n      const clientHeight = document.documentElement.clientHeight\n\n      const minLeft = -targetLeft + offsetX\n      const minTop = -targetTop + offsetY\n      const maxLeft = clientWidth - targetLeft - targetWidth + offsetX\n      const maxTop =\n        clientHeight -\n        targetTop -\n        (targetHeight < clientHeight ? targetHeight : 0) +\n        offsetY\n\n      if (!overflow?.value) {\n        moveX = Math.min(Math.max(moveX, minLeft), maxLeft)\n        moveY = Math.min(Math.max(moveY, minTop), maxTop)\n      }\n\n      transform.offsetX = moveX\n      transform.offsetY = moveY\n\n      targetRef.value.style.transform = `translate(${addUnit(moveX)}, ${addUnit(\n        moveY\n      )})`\n    }\n  }\n\n  const onMousedown = (e: MouseEvent) => {\n    const downX = e.clientX\n    const downY = e.clientY\n    const { offsetX, offsetY } = transform\n\n    const onMousemove = (e: MouseEvent) => {\n      if (!isDragging.value) {\n        isDragging.value = true\n      }\n      const moveX = offsetX + e.clientX - downX\n      const moveY = offsetY + e.clientY - downY\n\n      adjustPosition(moveX, moveY)\n    }\n\n    const onMouseup = () => {\n      isDragging.value = false\n      document.removeEventListener('mousemove', onMousemove)\n      document.removeEventListener('mouseup', onMouseup)\n    }\n\n    document.addEventListener('mousemove', onMousemove)\n    document.addEventListener('mouseup', onMouseup)\n  }\n\n  const onDraggable = () => {\n    if (dragRef.value && targetRef.value) {\n      dragRef.value.addEventListener('mousedown', onMousedown)\n      window.addEventListener('resize', updatePosition)\n    }\n  }\n\n  const offDraggable = () => {\n    if (dragRef.value && targetRef.value) {\n      dragRef.value.removeEventListener('mousedown', onMousedown)\n      window.removeEventListener('resize', updatePosition)\n    }\n  }\n\n  const resetPosition = () => {\n    transform.offsetX = 0\n    transform.offsetY = 0\n\n    if (targetRef.value) {\n      targetRef.value.style.transform = ''\n    }\n  }\n\n  const updatePosition = () => {\n    const { offsetX, offsetY } = transform\n\n    adjustPosition(offsetX, offsetY)\n  }\n\n  onMounted(() => {\n    watchEffect(() => {\n      if (draggable.value) {\n        onDraggable()\n      } else {\n        offDraggable()\n      }\n    })\n  })\n\n  onBeforeUnmount(() => {\n    offDraggable()\n  })\n\n  return {\n    isDragging,\n    resetPosition,\n    updatePosition,\n  }\n}\n","import type { Ref } from 'vue'\n\nexport const useFocus = (\n  el: Ref<{\n    focus: () => void\n  } | null>\n) => {\n  return {\n    focus: () => {\n      el.value?.focus?.()\n    },\n  }\n}\n","export default {\n  name: 'en',\n  el: {\n    breadcrumb: {\n      label: 'Breadcrumb',\n    },\n    colorpicker: {\n      confirm: 'OK',\n      clear: 'Clear',\n      defaultLabel: 'color picker',\n      description:\n        'current color is {color}. press enter to select a new color.',\n      alphaLabel: 'pick alpha value',\n      alphaDescription: 'alpha {alpha}, current color is {color}',\n      hueLabel: 'pick hue value',\n      hueDescription: 'hue {hue}, current color is {color}',\n      svLabel: 'pick saturation and brightness value',\n      svDescription:\n        'saturation {saturation}, brightness {brightness}, current color is {color}',\n      predefineDescription: 'select {value} as the color',\n    },\n    datepicker: {\n      now: 'Now',\n      today: 'Today',\n      cancel: 'Cancel',\n      clear: 'Clear',\n      confirm: 'OK',\n      dateTablePrompt:\n        'Use the arrow keys and enter to select the day of the month',\n      monthTablePrompt: 'Use the arrow keys and enter to select the month',\n      yearTablePrompt: 'Use the arrow keys and enter to select the year',\n      selectedDate: 'Selected date',\n      selectDate: 'Select date',\n      selectTime: 'Select time',\n      startDate: 'Start Date',\n      startTime: 'Start Time',\n      endDate: 'End Date',\n      endTime: 'End Time',\n      prevYear: 'Previous Year',\n      nextYear: 'Next Year',\n      prevMonth: 'Previous Month',\n      nextMonth: 'Next Month',\n      year: '',\n      month1: 'January',\n      month2: 'February',\n      month3: 'March',\n      month4: 'April',\n      month5: 'May',\n      month6: 'June',\n      month7: 'July',\n      month8: 'August',\n      month9: 'September',\n      month10: 'October',\n      month11: 'November',\n      month12: 'December',\n      weeks: {\n        sun: 'Sun',\n        mon: 'Mon',\n        tue: 'Tue',\n        wed: 'Wed',\n        thu: 'Thu',\n        fri: 'Fri',\n        sat: 'Sat',\n      },\n      weeksFull: {\n        sun: 'Sunday',\n        mon: 'Monday',\n        tue: 'Tuesday',\n        wed: 'Wednesday',\n        thu: 'Thursday',\n        fri: 'Friday',\n        sat: 'Saturday',\n      },\n      months: {\n        jan: 'Jan',\n        feb: 'Feb',\n        mar: 'Mar',\n        apr: 'Apr',\n        may: 'May',\n        jun: 'Jun',\n        jul: 'Jul',\n        aug: 'Aug',\n        sep: 'Sep',\n        oct: 'Oct',\n        nov: 'Nov',\n        dec: 'Dec',\n      },\n    },\n    inputNumber: {\n      decrease: 'decrease number',\n      increase: 'increase number',\n    },\n    select: {\n      loading: 'Loading',\n      noMatch: 'No matching data',\n      noData: 'No data',\n      placeholder: 'Select',\n    },\n    mention: {\n      loading: 'Loading',\n    },\n    dropdown: {\n      toggleDropdown: 'Toggle Dropdown',\n    },\n    cascader: {\n      noMatch: 'No matching data',\n      loading: 'Loading',\n      placeholder: 'Select',\n      noData: 'No data',\n    },\n    pagination: {\n      goto: 'Go to',\n      pagesize: '/page',\n      total: 'Total {total}',\n      pageClassifier: '',\n      page: 'Page',\n      prev: 'Go to previous page',\n      next: 'Go to next page',\n      currentPage: 'page {pager}',\n      prevPages: 'Previous {pager} pages',\n      nextPages: 'Next {pager} pages',\n      deprecationWarning:\n        'Deprecated usages detected, please refer to the el-pagination documentation for more details',\n    },\n    dialog: {\n      close: 'Close this dialog',\n    },\n    drawer: {\n      close: 'Close this dialog',\n    },\n    messagebox: {\n      title: 'Message',\n      confirm: 'OK',\n      cancel: 'Cancel',\n      error: 'Illegal input',\n      close: 'Close this dialog',\n    },\n    upload: {\n      deleteTip: 'press delete to remove',\n      delete: 'Delete',\n      preview: 'Preview',\n      continue: 'Continue',\n    },\n    slider: {\n      defaultLabel: 'slider between {min} and {max}',\n      defaultRangeStartLabel: 'pick start value',\n      defaultRangeEndLabel: 'pick end value',\n    },\n    table: {\n      emptyText: 'No Data',\n      confirmFilter: 'Confirm',\n      resetFilter: 'Reset',\n      clearFilter: 'All',\n      sumText: 'Sum',\n      selectAllLabel: 'Select all rows',\n      selectRowLabel: 'Select this row',\n      expandRowLabel: 'Expand this row',\n      collapseRowLabel: 'Collapse this row',\n      sortLabel: 'Sort by {column}',\n      filterLabel: 'Filter by {column}',\n    },\n    tag: {\n      close: 'Close this tag',\n    },\n    tour: {\n      next: 'Next',\n      previous: 'Previous',\n      finish: 'Finish',\n      close: 'Close this dialog',\n    },\n    tree: {\n      emptyText: 'No Data',\n    },\n    transfer: {\n      noMatch: 'No matching data',\n      noData: 'No data',\n      titles: ['List 1', 'List 2'],\n      filterPlaceholder: 'Enter keyword',\n      noCheckedFormat: '{total} items',\n      hasCheckedFormat: '{checked}/{total} checked',\n    },\n    image: {\n      error: 'FAILED',\n    },\n    pageHeader: {\n      title: 'Back',\n    },\n    popconfirm: {\n      confirmButtonText: 'Yes',\n      cancelButtonText: 'No',\n    },\n    carousel: {\n      leftArrow: 'Carousel arrow left',\n      rightArrow: 'Carousel arrow right',\n      indicator: 'Carousel switch to index {index}',\n    },\n    formBase: {\n      importBtnText: 'Import',\n      exportBtnText: 'Export',\n      batchDownloadBtnText: 'Batch Download',\n      storageBtnText: 'Storage',\n      draftBtnText: 'Save Draft',\n      initiateProcessBtnText: 'Initiate process',\n      textDraftSuccess: 'Process saved successfully',\n      textProcessSuccess: 'Process initiated successfully',\n      addBtnText: 'Add',\n      editBtnText: 'Edit',\n      delBtnText: 'Del',\n      batchBtnText: 'Batch Deletion',\n      infoText: 'Details',\n      searchBtnText: 'Search',\n      clearBtnText: 'Empty',\n      textEmptyOption:\n        'You have not selected any data items, please select and then operate！',\n      textEmptyOptionOne: 'Please select a data！',\n      textAddSuccess: 'Created Successfully！',\n      textEditSuccess: 'Successfully Modified！',\n      textDelSuccess: 'Successfully Deleted！',\n      textDelStr: 'Whether to delete the selected data？',\n      title: 'Tips',\n      confirm: 'Confirm',\n      cancel: 'Reset',\n      noData: 'No data',\n      menuTitle: 'Menu Management',\n      loading: 'Loading',\n      expandBtnText: 'expand',\n      foldBtnText: 'fold',\n    },\n  },\n}\n","import { computed, inject, isRef, ref, unref } from 'vue'\nimport { get } from 'lodash-unified'\nimport English from '@pit-element-plus/locale/lang/en'\n\nimport type { MaybeRef } from '@vueuse/core'\nimport type { InjectionKey, Ref } from 'vue'\nimport type { FieldPath } from '@pit-element-plus/utils'\nimport type { Language } from '@pit-element-plus/locale'\n\nexport type LocaleKeys =\n  | Exclude<FieldPath<typeof English>, 'name' | 'el'>\n  | (string & NonNullable<unknown>)\n\nexport type TranslatorOption = Record<string, string | number>\nexport type Translator = (path: LocaleKeys, option?: TranslatorOption) => string\nexport type LocaleContext = {\n  locale: Ref<Language>\n  lang: Ref<string>\n  t: Translator\n}\n\nexport const buildTranslator =\n  (locale: MaybeRef<Language>): Translator =>\n  (path, option) =>\n    translate(path, option, unref(locale))\n\nexport const translate = (\n  path: LocaleKeys,\n  option: undefined | TranslatorOption,\n  locale: Language\n): string =>\n  (get(locale, path, path) as string).replace(\n    /\\{(\\w+)\\}/g,\n    (_, key) => `${option?.[key] ?? `{${key}}`}`\n  )\n\nexport const buildLocaleContext = (\n  locale: MaybeRef<Language>\n): LocaleContext => {\n  const lang = computed(() => unref(locale).name)\n  const localeRef = isRef(locale) ? locale : ref(locale)\n  return {\n    lang,\n    locale: localeRef,\n    t: buildTranslator(locale),\n  }\n}\n\nexport const localeContextKey: InjectionKey<Ref<Language | undefined>> =\n  Symbol('localeContextKey')\n\nexport const useLocale = (localeOverrides?: Ref<Language | undefined>) => {\n  const locale = localeOverrides || inject(localeContextKey, ref())!\n  return buildLocaleContext(computed(() => locale.value || English))\n}\n","import { computed, getCurrentInstance, inject, ref, unref } from 'vue'\n\nimport type { InjectionKey, Ref } from 'vue'\n\nexport const defaultNamespace = 'el'\nconst statePrefix = 'is-'\n\nconst _bem = (\n  namespace: string,\n  block: string,\n  blockSuffix: string,\n  element: string,\n  modifier: string\n) => {\n  let cls = `${namespace}-${block}`\n  if (blockSuffix) {\n    cls += `-${blockSuffix}`\n  }\n  if (element) {\n    cls += `__${element}`\n  }\n  if (modifier) {\n    cls += `--${modifier}`\n  }\n  return cls\n}\n\nexport const namespaceContextKey: InjectionKey<Ref<string | undefined>> =\n  Symbol('namespaceContextKey')\n\nexport const useGetDerivedNamespace = (\n  namespaceOverrides?: Ref<string | undefined>\n) => {\n  const derivedNamespace =\n    namespaceOverrides ||\n    (getCurrentInstance()\n      ? inject(namespaceContextKey, ref(defaultNamespace))\n      : ref(defaultNamespace))\n  const namespace = computed(() => {\n    return unref(derivedNamespace) || defaultNamespace\n  })\n  return namespace\n}\n\nexport const useNamespace = (\n  block: string,\n  namespaceOverrides?: Ref<string | undefined>\n) => {\n  const namespace = useGetDerivedNamespace(namespaceOverrides)\n  const b = (blockSuffix = '') =>\n    _bem(namespace.value, block, blockSuffix, '', '')\n  const e = (element?: string) =>\n    element ? _bem(namespace.value, block, '', element, '') : ''\n  const m = (modifier?: string) =>\n    modifier ? _bem(namespace.value, block, '', '', modifier) : ''\n  const be = (blockSuffix?: string, element?: string) =>\n    blockSuffix && element\n      ? _bem(namespace.value, block, blockSuffix, element, '')\n      : ''\n  const em = (element?: string, modifier?: string) =>\n    element && modifier\n      ? _bem(namespace.value, block, '', element, modifier)\n      : ''\n  const bm = (blockSuffix?: string, modifier?: string) =>\n    blockSuffix && modifier\n      ? _bem(namespace.value, block, blockSuffix, '', modifier)\n      : ''\n  const bem = (blockSuffix?: string, element?: string, modifier?: string) =>\n    blockSuffix && element && modifier\n      ? _bem(namespace.value, block, blockSuffix, element, modifier)\n      : ''\n  const is: {\n    (name: string, state: boolean | undefined): string\n    (name: string): string\n  } = (name: string, ...args: [boolean | undefined] | []) => {\n    const state = args.length >= 1 ? args[0]! : true\n    return name && state ? `${statePrefix}${name}` : ''\n  }\n\n  // for css var\n  // --el-xxx: value;\n  const cssVar = (object: Record<string, string>) => {\n    const styles: Record<string, string> = {}\n    for (const key in object) {\n      if (object[key]) {\n        styles[`--${namespace.value}-${key}`] = object[key]\n      }\n    }\n    return styles\n  }\n  // with block\n  const cssVarBlock = (object: Record<string, string>) => {\n    const styles: Record<string, string> = {}\n    for (const key in object) {\n      if (object[key]) {\n        styles[`--${namespace.value}-${block}-${key}`] = object[key]\n      }\n    }\n    return styles\n  }\n\n  const cssVarName = (name: string) => `--${namespace.value}-${name}`\n  const cssVarBlockName = (name: string) =>\n    `--${namespace.value}-${block}-${name}`\n\n  return {\n    namespace,\n    b,\n    e,\n    m,\n    be,\n    em,\n    bm,\n    bem,\n    is,\n    // css\n    cssVar,\n    cssVarName,\n    cssVarBlock,\n    cssVarBlockName,\n  }\n}\n\nexport type UseNamespaceReturn = ReturnType<typeof useNamespace>\n","import { computed, isRef, onScopeDispose, watch } from 'vue'\nimport {\n  addClass,\n  getScrollBarWidth,\n  getStyle,\n  hasClass,\n  removeClass,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '../use-namespace'\n\nimport type { Ref } from 'vue'\nimport type { UseNamespaceReturn } from '../use-namespace'\n\nexport type UseLockScreenOptions = {\n  ns?: UseNamespaceReturn\n  // shouldLock?: MaybeRef<boolean>\n}\n\n/**\n * Hook that monitoring the ref value to lock or unlock the screen.\n * When the trigger became true, it assumes modal is now opened and vice versa.\n * @param trigger {Ref<boolean>}\n */\nexport const useLockscreen = (\n  trigger: Ref<boolean>,\n  options: UseLockScreenOptions = {}\n) => {\n  if (!isRef(trigger)) {\n    throwError(\n      '[useLockscreen]',\n      'You need to pass a ref param to this function'\n    )\n  }\n\n  const ns = options.ns || useNamespace('popup')\n\n  const hiddenCls = computed(() => ns.bm('parent', 'hidden'))\n\n  let scrollBarWidth = 0\n  let withoutHiddenClass = false\n  let bodyWidth = '0'\n  let cleaned = false\n\n  const cleanup = () => {\n    if (cleaned) return\n\n    cleaned = true\n    setTimeout(() => {\n      // When the test case is running, the context environment simulated by jsdom may have been destroyed,\n      // and the document does not exist at this time.\n      if (typeof document === 'undefined') return\n      if (withoutHiddenClass && document) {\n        document.body.style.width = bodyWidth\n        removeClass(document.body, hiddenCls.value)\n      }\n    }, 200)\n  }\n  watch(trigger, (val) => {\n    if (!val) {\n      cleanup()\n      return\n    }\n\n    cleaned = false\n    withoutHiddenClass = !hasClass(document.body, hiddenCls.value)\n    if (withoutHiddenClass) {\n      bodyWidth = document.body.style.width\n      addClass(document.body, hiddenCls.value)\n    }\n    scrollBarWidth = getScrollBarWidth(ns.namespace.value)\n    const bodyHasOverflow =\n      document.documentElement.clientHeight < document.body.scrollHeight\n    const bodyOverflowY = getStyle(document.body, 'overflowY')\n    if (\n      scrollBarWidth > 0 &&\n      (bodyHasOverflow || bodyOverflowY === 'scroll') &&\n      withoutHiddenClass\n    ) {\n      document.body.style.width = `calc(100% - ${scrollBarWidth}px)`\n    }\n  })\n  onScopeDispose(() => cleanup())\n}\n","import { watch } from 'vue'\nimport { isClient, useEventListener } from '@vueuse/core'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { getEventCode } from '@pit-element-plus/utils'\n\nimport type { Ref } from 'vue'\n\ntype ModalInstance = {\n  handleClose: () => void\n}\n\nconst modalStack: ModalInstance[] = []\n\nconst closeModal = (e: KeyboardEvent) => {\n  if (modalStack.length === 0) return\n  const code = getEventCode(e)\n  if (code === EVENT_CODE.esc) {\n    e.stopPropagation()\n    const topModal = modalStack[modalStack.length - 1]\n    topModal.handleClose()\n  }\n}\n\nexport const useModal = (instance: ModalInstance, visibleRef: Ref<boolean>) => {\n  watch(visibleRef, (val) => {\n    if (val) {\n      modalStack.push(instance)\n    } else {\n      modalStack.splice(modalStack.indexOf(instance), 1)\n    }\n  })\n}\n\nif (isClient) useEventListener(document, 'keydown', closeModal)\n","import { computed, getCurrentInstance, onMounted, watch } from 'vue'\nimport {\n  buildProp,\n  definePropType,\n  isBoolean,\n  isClient,\n  isFunction,\n} from '@pit-element-plus/utils'\n\nimport type { ExtractPropType } from '@pit-element-plus/utils'\nimport type { RouteLocationNormalizedLoaded } from 'vue-router'\nimport type {\n  ComponentPublicInstance,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n  Ref,\n} from 'vue'\n\nconst _prop = buildProp({\n  type: definePropType<boolean | null>(Boolean),\n  default: null,\n} as const)\nconst _event = buildProp({\n  type: definePropType<(val: boolean) => void>(Function),\n} as const)\n\nexport type UseModelTogglePropsRaw<T extends string> = {\n  [K in T]: typeof _prop\n} & {\n  [K in `onUpdate:${T}`]: typeof _event\n}\n\nexport type UseModelTogglePropsGeneric<T extends string> = {\n  [K in T]: ExtractPropType<typeof _prop>\n} & {\n  [K in `onUpdate:${T}`]: ExtractPropType<typeof _event>\n}\n\nexport const createModelToggleComposable = <T extends string>(name: T) => {\n  const updateEventKey = `update:${name}` as const\n  const updateEventKeyRaw = `onUpdate:${name}` as const\n  const useModelToggleEmits = [updateEventKey]\n\n  const useModelToggleProps = {\n    [name]: _prop,\n    [updateEventKeyRaw]: _event,\n  } as UseModelTogglePropsRaw<T>\n\n  const useModelToggle = ({\n    indicator,\n    toggleReason,\n    shouldHideWhenRouteChanges,\n    shouldProceed,\n    onShow,\n    onHide,\n  }: ModelToggleParams) => {\n    const instance = getCurrentInstance()!\n    const { emit } = instance\n    const props = instance.props as UseModelTogglePropsGeneric<T> & {\n      disabled: boolean\n    }\n    const hasUpdateHandler = computed(() =>\n      isFunction(props[updateEventKeyRaw])\n    )\n    // when it matches the default value we say this is absent\n    // though this could be mistakenly passed from the user but we need to rule out that\n    // condition\n    const isModelBindingAbsent = computed(() => props[name] === null)\n\n    const doShow = (event?: Event) => {\n      if (indicator.value === true) {\n        return\n      }\n\n      indicator.value = true\n      if (toggleReason) {\n        toggleReason.value = event\n      }\n      if (isFunction(onShow)) {\n        onShow(event)\n      }\n    }\n\n    const doHide = (event?: Event) => {\n      if (indicator.value === false) {\n        return\n      }\n\n      indicator.value = false\n      if (toggleReason) {\n        toggleReason.value = event\n      }\n      if (isFunction(onHide)) {\n        onHide(event)\n      }\n    }\n\n    const show = (event?: Event) => {\n      if (\n        props.disabled === true ||\n        (isFunction(shouldProceed) && !shouldProceed())\n      )\n        return\n\n      const shouldEmit = hasUpdateHandler.value && isClient\n\n      if (shouldEmit) {\n        emit(updateEventKey, true)\n      }\n\n      if (isModelBindingAbsent.value || !shouldEmit) {\n        doShow(event)\n      }\n    }\n\n    const hide = (event?: Event) => {\n      if (props.disabled === true || !isClient) return\n\n      const shouldEmit = hasUpdateHandler.value && isClient\n\n      if (shouldEmit) {\n        emit(updateEventKey, false)\n      }\n\n      if (isModelBindingAbsent.value || !shouldEmit) {\n        doHide(event)\n      }\n    }\n\n    const onChange = (val: boolean) => {\n      if (!isBoolean(val)) return\n      if (props.disabled && val) {\n        if (hasUpdateHandler.value) {\n          emit(updateEventKey, false)\n        }\n      } else if (indicator.value !== val) {\n        if (val) {\n          doShow()\n        } else {\n          doHide()\n        }\n      }\n    }\n\n    const toggle = () => {\n      if (indicator.value) {\n        hide()\n      } else {\n        show()\n      }\n    }\n\n    watch(() => props[name], onChange)\n\n    if (\n      shouldHideWhenRouteChanges &&\n      instance.appContext.config.globalProperties.$route !== undefined\n    ) {\n      watch(\n        () => ({\n          ...(\n            instance.proxy as ComponentPublicInstance<{\n              $route: RouteLocationNormalizedLoaded\n            }>\n          ).$route,\n        }),\n        () => {\n          if (shouldHideWhenRouteChanges.value && indicator.value) {\n            hide()\n          }\n        }\n      )\n    }\n\n    onMounted(() => {\n      onChange(props[name])\n    })\n\n    return {\n      hide,\n      show,\n      toggle,\n      hasUpdateHandler,\n    }\n  }\n\n  return {\n    useModelToggle,\n    useModelToggleProps,\n    useModelToggleEmits,\n  }\n}\n\nconst { useModelToggle, useModelToggleProps, useModelToggleEmits } =\n  createModelToggleComposable('modelValue')\n\nexport { useModelToggle, useModelToggleEmits, useModelToggleProps }\n\nexport type UseModelToggleProps = ExtractPropTypes<typeof useModelToggleProps>\nexport type UseModelTogglePropsPublic = ExtractPublicPropTypes<\n  typeof useModelToggleProps\n>\n\nexport type ModelToggleParams = {\n  indicator: Ref<boolean>\n  toggleReason?: Ref<Event | undefined>\n  shouldHideWhenRouteChanges?: Ref<boolean>\n  shouldProceed?: () => boolean\n  onShow?: (event?: Event) => void\n  onHide?: (event?: Event) => void\n}\n","import { watch } from 'vue'\nimport { useEventListener } from '@vueuse/core'\n\nimport type { Ref } from 'vue'\n\nexport const usePreventGlobal = <E extends keyof DocumentEventMap>(\n  indicator: Ref<boolean>,\n  evt: E,\n  cb: (e: DocumentEventMap[E]) => boolean\n) => {\n  const prevent = (e: DocumentEventMap[E]) => {\n    if (cb(e)) e.stopImmediatePropagation()\n  }\n  let stop: (() => void) | undefined = undefined\n  watch(\n    () => indicator.value,\n    (val) => {\n      if (val) {\n        stop = useEventListener(document, evt, prevent, true)\n      } else {\n        stop?.()\n      }\n    },\n    { immediate: true }\n  )\n}\n","import { computed, getCurrentInstance } from 'vue'\n\nimport type { ComputedRef } from 'vue'\n\nexport const useProp = <T>(name: string): ComputedRef<T | undefined> => {\n  const vm = getCurrentInstance()\n  return computed(() => (vm?.proxy?.$props as any)?.[name])\n}\n","var E=\"top\",R=\"bottom\",W=\"right\",P=\"left\",me=\"auto\",G=[E,R,W,P],U=\"start\",J=\"end\",Xe=\"clippingParents\",je=\"viewport\",K=\"popper\",Ye=\"reference\",De=G.reduce(function(t,e){return t.concat([e+\"-\"+U,e+\"-\"+J])},[]),Ee=[].concat(G,[me]).reduce(function(t,e){return t.concat([e,e+\"-\"+U,e+\"-\"+J])},[]),Ge=\"beforeRead\",Je=\"read\",Ke=\"afterRead\",Qe=\"beforeMain\",Ze=\"main\",et=\"afterMain\",tt=\"beforeWrite\",nt=\"write\",rt=\"afterWrite\",ot=[Ge,Je,Ke,Qe,Ze,et,tt,nt,rt];function C(t){return t?(t.nodeName||\"\").toLowerCase():null}function H(t){if(t==null)return window;if(t.toString()!==\"[object Window]\"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Q(t){var e=H(t).Element;return t instanceof e||t instanceof Element}function B(t){var e=H(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function Pe(t){if(typeof ShadowRoot==\"undefined\")return!1;var e=H(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Mt(t){var e=t.state;Object.keys(e.elements).forEach(function(n){var r=e.styles[n]||{},o=e.attributes[n]||{},i=e.elements[n];!B(i)||!C(i)||(Object.assign(i.style,r),Object.keys(o).forEach(function(a){var s=o[a];s===!1?i.removeAttribute(a):i.setAttribute(a,s===!0?\"\":s)}))})}function Rt(t){var e=t.state,n={popper:{position:e.options.strategy,left:\"0\",top:\"0\",margin:\"0\"},arrow:{position:\"absolute\"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(r){var o=e.elements[r],i=e.attributes[r]||{},a=Object.keys(e.styles.hasOwnProperty(r)?e.styles[r]:n[r]),s=a.reduce(function(f,c){return f[c]=\"\",f},{});!B(o)||!C(o)||(Object.assign(o.style,s),Object.keys(i).forEach(function(f){o.removeAttribute(f)}))})}}var Ae={name:\"applyStyles\",enabled:!0,phase:\"write\",fn:Mt,effect:Rt,requires:[\"computeStyles\"]};function q(t){return t.split(\"-\")[0]}var X=Math.max,ve=Math.min,Z=Math.round;function ee(t,e){e===void 0&&(e=!1);var n=t.getBoundingClientRect(),r=1,o=1;if(B(t)&&e){var i=t.offsetHeight,a=t.offsetWidth;a>0&&(r=Z(n.width)/a||1),i>0&&(o=Z(n.height)/i||1)}return{width:n.width/r,height:n.height/o,top:n.top/o,right:n.right/r,bottom:n.bottom/o,left:n.left/r,x:n.left/r,y:n.top/o}}function ke(t){var e=ee(t),n=t.offsetWidth,r=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-r)<=1&&(r=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:r}}function it(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Pe(n)){var r=e;do{if(r&&t.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function N(t){return H(t).getComputedStyle(t)}function Wt(t){return[\"table\",\"td\",\"th\"].indexOf(C(t))>=0}function I(t){return((Q(t)?t.ownerDocument:t.document)||window.document).documentElement}function ge(t){return C(t)===\"html\"?t:t.assignedSlot||t.parentNode||(Pe(t)?t.host:null)||I(t)}function at(t){return!B(t)||N(t).position===\"fixed\"?null:t.offsetParent}function Bt(t){var e=navigator.userAgent.toLowerCase().indexOf(\"firefox\")!==-1,n=navigator.userAgent.indexOf(\"Trident\")!==-1;if(n&&B(t)){var r=N(t);if(r.position===\"fixed\")return null}var o=ge(t);for(Pe(o)&&(o=o.host);B(o)&&[\"html\",\"body\"].indexOf(C(o))<0;){var i=N(o);if(i.transform!==\"none\"||i.perspective!==\"none\"||i.contain===\"paint\"||[\"transform\",\"perspective\"].indexOf(i.willChange)!==-1||e&&i.willChange===\"filter\"||e&&i.filter&&i.filter!==\"none\")return o;o=o.parentNode}return null}function se(t){for(var e=H(t),n=at(t);n&&Wt(n)&&N(n).position===\"static\";)n=at(n);return n&&(C(n)===\"html\"||C(n)===\"body\"&&N(n).position===\"static\")?e:n||Bt(t)||e}function Le(t){return[\"top\",\"bottom\"].indexOf(t)>=0?\"x\":\"y\"}function fe(t,e,n){return X(t,ve(e,n))}function St(t,e,n){var r=fe(t,e,n);return r>n?n:r}function st(){return{top:0,right:0,bottom:0,left:0}}function ft(t){return Object.assign({},st(),t)}function ct(t,e){return e.reduce(function(n,r){return n[r]=t,n},{})}var Tt=function(t,e){return t=typeof t==\"function\"?t(Object.assign({},e.rects,{placement:e.placement})):t,ft(typeof t!=\"number\"?t:ct(t,G))};function Ht(t){var e,n=t.state,r=t.name,o=t.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=q(n.placement),f=Le(s),c=[P,W].indexOf(s)>=0,u=c?\"height\":\"width\";if(!(!i||!a)){var m=Tt(o.padding,n),v=ke(i),l=f===\"y\"?E:P,h=f===\"y\"?R:W,p=n.rects.reference[u]+n.rects.reference[f]-a[f]-n.rects.popper[u],g=a[f]-n.rects.reference[f],x=se(i),y=x?f===\"y\"?x.clientHeight||0:x.clientWidth||0:0,$=p/2-g/2,d=m[l],b=y-v[u]-m[h],w=y/2-v[u]/2+$,O=fe(d,w,b),j=f;n.modifiersData[r]=(e={},e[j]=O,e.centerOffset=O-w,e)}}function Ct(t){var e=t.state,n=t.options,r=n.element,o=r===void 0?\"[data-popper-arrow]\":r;o!=null&&(typeof o==\"string\"&&(o=e.elements.popper.querySelector(o),!o)||!it(e.elements.popper,o)||(e.elements.arrow=o))}var pt={name:\"arrow\",enabled:!0,phase:\"main\",fn:Ht,effect:Ct,requires:[\"popperOffsets\"],requiresIfExists:[\"preventOverflow\"]};function te(t){return t.split(\"-\")[1]}var qt={top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"};function Vt(t){var e=t.x,n=t.y,r=window,o=r.devicePixelRatio||1;return{x:Z(e*o)/o||0,y:Z(n*o)/o||0}}function ut(t){var e,n=t.popper,r=t.popperRect,o=t.placement,i=t.variation,a=t.offsets,s=t.position,f=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,m=t.isFixed,v=a.x,l=v===void 0?0:v,h=a.y,p=h===void 0?0:h,g=typeof u==\"function\"?u({x:l,y:p}):{x:l,y:p};l=g.x,p=g.y;var x=a.hasOwnProperty(\"x\"),y=a.hasOwnProperty(\"y\"),$=P,d=E,b=window;if(c){var w=se(n),O=\"clientHeight\",j=\"clientWidth\";if(w===H(n)&&(w=I(n),N(w).position!==\"static\"&&s===\"absolute\"&&(O=\"scrollHeight\",j=\"scrollWidth\")),w=w,o===E||(o===P||o===W)&&i===J){d=R;var A=m&&w===b&&b.visualViewport?b.visualViewport.height:w[O];p-=A-r.height,p*=f?1:-1}if(o===P||(o===E||o===R)&&i===J){$=W;var k=m&&w===b&&b.visualViewport?b.visualViewport.width:w[j];l-=k-r.width,l*=f?1:-1}}var D=Object.assign({position:s},c&&qt),S=u===!0?Vt({x:l,y:p}):{x:l,y:p};if(l=S.x,p=S.y,f){var L;return Object.assign({},D,(L={},L[d]=y?\"0\":\"\",L[$]=x?\"0\":\"\",L.transform=(b.devicePixelRatio||1)<=1?\"translate(\"+l+\"px, \"+p+\"px)\":\"translate3d(\"+l+\"px, \"+p+\"px, 0)\",L))}return Object.assign({},D,(e={},e[d]=y?p+\"px\":\"\",e[$]=x?l+\"px\":\"\",e.transform=\"\",e))}function Nt(t){var e=t.state,n=t.options,r=n.gpuAcceleration,o=r===void 0?!0:r,i=n.adaptive,a=i===void 0?!0:i,s=n.roundOffsets,f=s===void 0?!0:s,c={placement:q(e.placement),variation:te(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:e.options.strategy===\"fixed\"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,ut(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:f})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,ut(Object.assign({},c,{offsets:e.modifiersData.arrow,position:\"absolute\",adaptive:!1,roundOffsets:f})))),e.attributes.popper=Object.assign({},e.attributes.popper,{\"data-popper-placement\":e.placement})}var Me={name:\"computeStyles\",enabled:!0,phase:\"beforeWrite\",fn:Nt,data:{}},ye={passive:!0};function It(t){var e=t.state,n=t.instance,r=t.options,o=r.scroll,i=o===void 0?!0:o,a=r.resize,s=a===void 0?!0:a,f=H(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return i&&c.forEach(function(u){u.addEventListener(\"scroll\",n.update,ye)}),s&&f.addEventListener(\"resize\",n.update,ye),function(){i&&c.forEach(function(u){u.removeEventListener(\"scroll\",n.update,ye)}),s&&f.removeEventListener(\"resize\",n.update,ye)}}var Re={name:\"eventListeners\",enabled:!0,phase:\"write\",fn:function(){},effect:It,data:{}},_t={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function be(t){return t.replace(/left|right|bottom|top/g,function(e){return _t[e]})}var zt={start:\"end\",end:\"start\"};function lt(t){return t.replace(/start|end/g,function(e){return zt[e]})}function We(t){var e=H(t),n=e.pageXOffset,r=e.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Be(t){return ee(I(t)).left+We(t).scrollLeft}function Ft(t){var e=H(t),n=I(t),r=e.visualViewport,o=n.clientWidth,i=n.clientHeight,a=0,s=0;return r&&(o=r.width,i=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=r.offsetLeft,s=r.offsetTop)),{width:o,height:i,x:a+Be(t),y:s}}function Ut(t){var e,n=I(t),r=We(t),o=(e=t.ownerDocument)==null?void 0:e.body,i=X(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=X(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+Be(t),f=-r.scrollTop;return N(o||n).direction===\"rtl\"&&(s+=X(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:a,x:s,y:f}}function Se(t){var e=N(t),n=e.overflow,r=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function dt(t){return[\"html\",\"body\",\"#document\"].indexOf(C(t))>=0?t.ownerDocument.body:B(t)&&Se(t)?t:dt(ge(t))}function ce(t,e){var n;e===void 0&&(e=[]);var r=dt(t),o=r===((n=t.ownerDocument)==null?void 0:n.body),i=H(r),a=o?[i].concat(i.visualViewport||[],Se(r)?r:[]):r,s=e.concat(a);return o?s:s.concat(ce(ge(a)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Xt(t){var e=ee(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}function ht(t,e){return e===je?Te(Ft(t)):Q(e)?Xt(e):Te(Ut(I(t)))}function Yt(t){var e=ce(ge(t)),n=[\"absolute\",\"fixed\"].indexOf(N(t).position)>=0,r=n&&B(t)?se(t):t;return Q(r)?e.filter(function(o){return Q(o)&&it(o,r)&&C(o)!==\"body\"}):[]}function Gt(t,e,n){var r=e===\"clippingParents\"?Yt(t):[].concat(e),o=[].concat(r,[n]),i=o[0],a=o.reduce(function(s,f){var c=ht(t,f);return s.top=X(c.top,s.top),s.right=ve(c.right,s.right),s.bottom=ve(c.bottom,s.bottom),s.left=X(c.left,s.left),s},ht(t,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function mt(t){var e=t.reference,n=t.element,r=t.placement,o=r?q(r):null,i=r?te(r):null,a=e.x+e.width/2-n.width/2,s=e.y+e.height/2-n.height/2,f;switch(o){case E:f={x:a,y:e.y-n.height};break;case R:f={x:a,y:e.y+e.height};break;case W:f={x:e.x+e.width,y:s};break;case P:f={x:e.x-n.width,y:s};break;default:f={x:e.x,y:e.y}}var c=o?Le(o):null;if(c!=null){var u=c===\"y\"?\"height\":\"width\";switch(i){case U:f[c]=f[c]-(e[u]/2-n[u]/2);break;case J:f[c]=f[c]+(e[u]/2-n[u]/2);break}}return f}function ne(t,e){e===void 0&&(e={});var n=e,r=n.placement,o=r===void 0?t.placement:r,i=n.boundary,a=i===void 0?Xe:i,s=n.rootBoundary,f=s===void 0?je:s,c=n.elementContext,u=c===void 0?K:c,m=n.altBoundary,v=m===void 0?!1:m,l=n.padding,h=l===void 0?0:l,p=ft(typeof h!=\"number\"?h:ct(h,G)),g=u===K?Ye:K,x=t.rects.popper,y=t.elements[v?g:u],$=Gt(Q(y)?y:y.contextElement||I(t.elements.popper),a,f),d=ee(t.elements.reference),b=mt({reference:d,element:x,strategy:\"absolute\",placement:o}),w=Te(Object.assign({},x,b)),O=u===K?w:d,j={top:$.top-O.top+p.top,bottom:O.bottom-$.bottom+p.bottom,left:$.left-O.left+p.left,right:O.right-$.right+p.right},A=t.modifiersData.offset;if(u===K&&A){var k=A[o];Object.keys(j).forEach(function(D){var S=[W,R].indexOf(D)>=0?1:-1,L=[E,R].indexOf(D)>=0?\"y\":\"x\";j[D]+=k[L]*S})}return j}function Jt(t,e){e===void 0&&(e={});var n=e,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=f===void 0?Ee:f,u=te(r),m=u?s?De:De.filter(function(h){return te(h)===u}):G,v=m.filter(function(h){return c.indexOf(h)>=0});v.length===0&&(v=m);var l=v.reduce(function(h,p){return h[p]=ne(t,{placement:p,boundary:o,rootBoundary:i,padding:a})[q(p)],h},{});return Object.keys(l).sort(function(h,p){return l[h]-l[p]})}function Kt(t){if(q(t)===me)return[];var e=be(t);return[lt(t),e,lt(e)]}function Qt(t){var e=t.state,n=t.options,r=t.name;if(!e.modifiersData[r]._skip){for(var o=n.mainAxis,i=o===void 0?!0:o,a=n.altAxis,s=a===void 0?!0:a,f=n.fallbackPlacements,c=n.padding,u=n.boundary,m=n.rootBoundary,v=n.altBoundary,l=n.flipVariations,h=l===void 0?!0:l,p=n.allowedAutoPlacements,g=e.options.placement,x=q(g),y=x===g,$=f||(y||!h?[be(g)]:Kt(g)),d=[g].concat($).reduce(function(z,V){return z.concat(q(V)===me?Jt(e,{placement:V,boundary:u,rootBoundary:m,padding:c,flipVariations:h,allowedAutoPlacements:p}):V)},[]),b=e.rects.reference,w=e.rects.popper,O=new Map,j=!0,A=d[0],k=0;k<d.length;k++){var D=d[k],S=q(D),L=te(D)===U,re=[E,R].indexOf(S)>=0,oe=re?\"width\":\"height\",M=ne(e,{placement:D,boundary:u,rootBoundary:m,altBoundary:v,padding:c}),T=re?L?W:P:L?R:E;b[oe]>w[oe]&&(T=be(T));var pe=be(T),_=[];if(i&&_.push(M[S]<=0),s&&_.push(M[T]<=0,M[pe]<=0),_.every(function(z){return z})){A=D,j=!1;break}O.set(D,_)}if(j)for(var ue=h?3:1,xe=function(z){var V=d.find(function(de){var ae=O.get(de);if(ae)return ae.slice(0,z).every(function(Y){return Y})});if(V)return A=V,\"break\"},ie=ue;ie>0;ie--){var le=xe(ie);if(le===\"break\")break}e.placement!==A&&(e.modifiersData[r]._skip=!0,e.placement=A,e.reset=!0)}}var vt={name:\"flip\",enabled:!0,phase:\"main\",fn:Qt,requiresIfExists:[\"offset\"],data:{_skip:!1}};function gt(t,e,n){return n===void 0&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function yt(t){return[E,W,R,P].some(function(e){return t[e]>=0})}function Zt(t){var e=t.state,n=t.name,r=e.rects.reference,o=e.rects.popper,i=e.modifiersData.preventOverflow,a=ne(e,{elementContext:\"reference\"}),s=ne(e,{altBoundary:!0}),f=gt(a,r),c=gt(s,o,i),u=yt(f),m=yt(c);e.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:m},e.attributes.popper=Object.assign({},e.attributes.popper,{\"data-popper-reference-hidden\":u,\"data-popper-escaped\":m})}var bt={name:\"hide\",enabled:!0,phase:\"main\",requiresIfExists:[\"preventOverflow\"],fn:Zt};function en(t,e,n){var r=q(t),o=[P,E].indexOf(r)>=0?-1:1,i=typeof n==\"function\"?n(Object.assign({},e,{placement:t})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,W].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}function tn(t){var e=t.state,n=t.options,r=t.name,o=n.offset,i=o===void 0?[0,0]:o,a=Ee.reduce(function(u,m){return u[m]=en(m,e.rects,i),u},{}),s=a[e.placement],f=s.x,c=s.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=f,e.modifiersData.popperOffsets.y+=c),e.modifiersData[r]=a}var wt={name:\"offset\",enabled:!0,phase:\"main\",requires:[\"popperOffsets\"],fn:tn};function nn(t){var e=t.state,n=t.name;e.modifiersData[n]=mt({reference:e.rects.reference,element:e.rects.popper,strategy:\"absolute\",placement:e.placement})}var He={name:\"popperOffsets\",enabled:!0,phase:\"read\",fn:nn,data:{}};function rn(t){return t===\"x\"?\"y\":\"x\"}function on(t){var e=t.state,n=t.options,r=t.name,o=n.mainAxis,i=o===void 0?!0:o,a=n.altAxis,s=a===void 0?!1:a,f=n.boundary,c=n.rootBoundary,u=n.altBoundary,m=n.padding,v=n.tether,l=v===void 0?!0:v,h=n.tetherOffset,p=h===void 0?0:h,g=ne(e,{boundary:f,rootBoundary:c,padding:m,altBoundary:u}),x=q(e.placement),y=te(e.placement),$=!y,d=Le(x),b=rn(d),w=e.modifiersData.popperOffsets,O=e.rects.reference,j=e.rects.popper,A=typeof p==\"function\"?p(Object.assign({},e.rects,{placement:e.placement})):p,k=typeof A==\"number\"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),D=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,S={x:0,y:0};if(w){if(i){var L,re=d===\"y\"?E:P,oe=d===\"y\"?R:W,M=d===\"y\"?\"height\":\"width\",T=w[d],pe=T+g[re],_=T-g[oe],ue=l?-j[M]/2:0,xe=y===U?O[M]:j[M],ie=y===U?-j[M]:-O[M],le=e.elements.arrow,z=l&&le?ke(le):{width:0,height:0},V=e.modifiersData[\"arrow#persistent\"]?e.modifiersData[\"arrow#persistent\"].padding:st(),de=V[re],ae=V[oe],Y=fe(0,O[M],z[M]),jt=$?O[M]/2-ue-Y-de-k.mainAxis:xe-Y-de-k.mainAxis,Dt=$?-O[M]/2+ue+Y+ae+k.mainAxis:ie+Y+ae+k.mainAxis,Oe=e.elements.arrow&&se(e.elements.arrow),Et=Oe?d===\"y\"?Oe.clientTop||0:Oe.clientLeft||0:0,Ce=(L=D==null?void 0:D[d])!=null?L:0,Pt=T+jt-Ce-Et,At=T+Dt-Ce,qe=fe(l?ve(pe,Pt):pe,T,l?X(_,At):_);w[d]=qe,S[d]=qe-T}if(s){var Ve,kt=d===\"x\"?E:P,Lt=d===\"x\"?R:W,F=w[b],he=b===\"y\"?\"height\":\"width\",Ne=F+g[kt],Ie=F-g[Lt],$e=[E,P].indexOf(x)!==-1,_e=(Ve=D==null?void 0:D[b])!=null?Ve:0,ze=$e?Ne:F-O[he]-j[he]-_e+k.altAxis,Fe=$e?F+O[he]+j[he]-_e-k.altAxis:Ie,Ue=l&&$e?St(ze,F,Fe):fe(l?ze:Ne,F,l?Fe:Ie);w[b]=Ue,S[b]=Ue-F}e.modifiersData[r]=S}}var xt={name:\"preventOverflow\",enabled:!0,phase:\"main\",fn:on,requiresIfExists:[\"offset\"]};function an(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function sn(t){return t===H(t)||!B(t)?We(t):an(t)}function fn(t){var e=t.getBoundingClientRect(),n=Z(e.width)/t.offsetWidth||1,r=Z(e.height)/t.offsetHeight||1;return n!==1||r!==1}function cn(t,e,n){n===void 0&&(n=!1);var r=B(e),o=B(e)&&fn(e),i=I(e),a=ee(t,o),s={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&((C(e)!==\"body\"||Se(i))&&(s=sn(e)),B(e)?(f=ee(e,!0),f.x+=e.clientLeft,f.y+=e.clientTop):i&&(f.x=Be(i))),{x:a.left+s.scrollLeft-f.x,y:a.top+s.scrollTop-f.y,width:a.width,height:a.height}}function pn(t){var e=new Map,n=new Set,r=[];t.forEach(function(i){e.set(i.name,i)});function o(i){n.add(i.name);var a=[].concat(i.requires||[],i.requiresIfExists||[]);a.forEach(function(s){if(!n.has(s)){var f=e.get(s);f&&o(f)}}),r.push(i)}return t.forEach(function(i){n.has(i.name)||o(i)}),r}function un(t){var e=pn(t);return ot.reduce(function(n,r){return n.concat(e.filter(function(o){return o.phase===r}))},[])}function ln(t){var e;return function(){return e||(e=new Promise(function(n){Promise.resolve().then(function(){e=void 0,n(t())})})),e}}function dn(t){var e=t.reduce(function(n,r){var o=n[r.name];return n[r.name]=o?Object.assign({},o,r,{options:Object.assign({},o.options,r.options),data:Object.assign({},o.data,r.data)}):r,n},{});return Object.keys(e).map(function(n){return e[n]})}var Ot={placement:\"bottom\",modifiers:[],strategy:\"absolute\"};function $t(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return!e.some(function(r){return!(r&&typeof r.getBoundingClientRect==\"function\")})}function we(t){t===void 0&&(t={});var e=t,n=e.defaultModifiers,r=n===void 0?[]:n,o=e.defaultOptions,i=o===void 0?Ot:o;return function(a,s,f){f===void 0&&(f=i);var c={placement:\"bottom\",orderedModifiers:[],options:Object.assign({},Ot,i),modifiersData:{},elements:{reference:a,popper:s},attributes:{},styles:{}},u=[],m=!1,v={state:c,setOptions:function(p){var g=typeof p==\"function\"?p(c.options):p;h(),c.options=Object.assign({},i,c.options,g),c.scrollParents={reference:Q(a)?ce(a):a.contextElement?ce(a.contextElement):[],popper:ce(s)};var x=un(dn([].concat(r,c.options.modifiers)));return c.orderedModifiers=x.filter(function(y){return y.enabled}),l(),v.update()},forceUpdate:function(){if(!m){var p=c.elements,g=p.reference,x=p.popper;if($t(g,x)){c.rects={reference:cn(g,se(x),c.options.strategy===\"fixed\"),popper:ke(x)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(j){return c.modifiersData[j.name]=Object.assign({},j.data)});for(var y=0;y<c.orderedModifiers.length;y++){if(c.reset===!0){c.reset=!1,y=-1;continue}var $=c.orderedModifiers[y],d=$.fn,b=$.options,w=b===void 0?{}:b,O=$.name;typeof d==\"function\"&&(c=d({state:c,options:w,name:O,instance:v})||c)}}}},update:ln(function(){return new Promise(function(p){v.forceUpdate(),p(c)})}),destroy:function(){h(),m=!0}};if(!$t(a,s))return v;v.setOptions(f).then(function(p){!m&&f.onFirstUpdate&&f.onFirstUpdate(p)});function l(){c.orderedModifiers.forEach(function(p){var g=p.name,x=p.options,y=x===void 0?{}:x,$=p.effect;if(typeof $==\"function\"){var d=$({state:c,name:g,instance:v,options:y}),b=function(){};u.push(d||b)}})}function h(){u.forEach(function(p){return p()}),u=[]}return v}}var hn=we(),mn=[Re,He,Me,Ae],vn=we({defaultModifiers:mn}),gn=[Re,He,Me,Ae,wt,vt,xt,pt,bt],yn=we({defaultModifiers:gn});export{et as afterMain,Ke as afterRead,rt as afterWrite,Ae as applyStyles,pt as arrow,me as auto,G as basePlacements,Qe as beforeMain,Ge as beforeRead,tt as beforeWrite,R as bottom,Xe as clippingParents,Me as computeStyles,yn as createPopper,hn as createPopperBase,vn as createPopperLite,ne as detectOverflow,J as end,Re as eventListeners,vt as flip,bt as hide,P as left,Ze as main,ot as modifierPhases,wt as offset,Ee as placements,K as popper,we as popperGenerator,He as popperOffsets,xt as preventOverflow,Je as read,Ye as reference,W as right,U as start,E as top,De as variationPlacements,je as viewport,nt as write};\n","import { computed, onBeforeUnmount, ref, shallowRef, unref, watch } from 'vue'\nimport { createPopper } from '@popperjs/core'\nimport { fromPairs } from 'lodash-unified'\n\nimport type { Ref } from 'vue'\nimport type {\n  Instance,\n  Modifier,\n  Options,\n  State,\n  VirtualElement,\n} from '@popperjs/core'\n\ntype ElementType = HTMLElement | undefined\ntype ReferenceElement = ElementType | VirtualElement\nexport type PartialOptions = Partial<Options>\n\nexport const usePopper = (\n  referenceElementRef: Ref<ReferenceElement>,\n  popperElementRef: Ref<ElementType>,\n  opts: Ref<PartialOptions> | PartialOptions = {} as PartialOptions\n) => {\n  const stateUpdater = {\n    name: 'updateState',\n    enabled: true,\n    phase: 'write',\n    fn: ({ state }) => {\n      const derivedState = deriveState(state)\n\n      Object.assign(states.value, derivedState)\n    },\n    requires: ['computeStyles'],\n  } as Modifier<'updateState', any>\n\n  const options = computed<Options>(() => {\n    const { onFirstUpdate, placement, strategy, modifiers } = unref(opts)\n\n    return {\n      onFirstUpdate,\n      placement: placement || 'bottom',\n      strategy: strategy || 'absolute',\n      modifiers: [\n        ...(modifiers || []),\n        stateUpdater,\n        { name: 'applyStyles', enabled: false },\n      ],\n    }\n  })\n\n  const instanceRef = shallowRef<Instance | undefined>()\n  const states = ref<Pick<State, 'styles' | 'attributes'>>({\n    styles: {\n      popper: {\n        position: unref(options).strategy,\n        left: '0',\n        top: '0',\n      },\n      arrow: {\n        position: 'absolute',\n      },\n    },\n    attributes: {},\n  })\n\n  const destroy = () => {\n    if (!instanceRef.value) return\n\n    instanceRef.value.destroy()\n    instanceRef.value = undefined\n  }\n\n  watch(\n    options,\n    (newOptions) => {\n      const instance = unref(instanceRef)\n      if (instance) {\n        instance.setOptions(newOptions)\n      }\n    },\n    {\n      deep: true,\n    }\n  )\n\n  watch(\n    [referenceElementRef, popperElementRef],\n    ([referenceElement, popperElement]) => {\n      destroy()\n      if (!referenceElement || !popperElement) return\n\n      instanceRef.value = createPopper(\n        referenceElement,\n        popperElement,\n        unref(options)\n      )\n    }\n  )\n\n  onBeforeUnmount(() => {\n    destroy()\n  })\n\n  return {\n    state: computed(() => ({ ...(unref(instanceRef)?.state || {}) })),\n    styles: computed(() => unref(states).styles),\n    attributes: computed(() => unref(states).attributes),\n    update: () => unref(instanceRef)?.update(),\n    forceUpdate: () => unref(instanceRef)?.forceUpdate(),\n    // Preventing end users from modifying the instance.\n    instanceRef: computed(() => unref(instanceRef)),\n  }\n}\n\nfunction deriveState(state: State) {\n  const elements = Object.keys(state.elements) as unknown as Array<\n    keyof State['elements']\n  >\n\n  const styles = fromPairs(\n    elements.map(\n      (element) =>\n        [element, state.styles[element] || {}] as [\n          string,\n          State['styles'][keyof State['styles']],\n        ]\n    )\n  )\n\n  const attributes = fromPairs(\n    elements.map(\n      (element) =>\n        [element, state.attributes[element]] as [\n          string,\n          State['attributes'][keyof State['attributes']],\n        ]\n    )\n  )\n\n  return {\n    styles,\n    attributes,\n  }\n}\n\nexport type UsePopperReturn = ReturnType<typeof usePopper>\n","import { NOOP } from '@pit-element-plus/utils'\n\nexport const useSameTarget = (handleClick?: (e: MouseEvent) => void) => {\n  if (!handleClick) {\n    return { onClick: NOOP, onMousedown: NOOP, onMouseup: NOOP }\n  }\n\n  let mousedownTarget = false\n  let mouseupTarget = false\n  // refer to this https://javascript.info/mouse-events-basics\n  // events fired in the order: mousedown -> mouseup -> click\n  // we need to set the mousedown handle to false after click fired.\n  const onClick = (e: MouseEvent) => {\n    // if and only if\n    if (mousedownTarget && mouseupTarget) {\n      handleClick(e)\n    }\n    mousedownTarget = mouseupTarget = false\n  }\n\n  const onMousedown = (e: MouseEvent) => {\n    // marking current mousedown target.\n    mousedownTarget = e.target === e.currentTarget\n  }\n  const onMouseup = (e: MouseEvent) => {\n    // marking current mouseup target.\n    mouseupTarget = e.target === e.currentTarget\n  }\n\n  return { onClick, onMousedown, onMouseup }\n}\n","import { Teleport, h, onUnmounted, ref } from 'vue'\nimport {\n  NOOP,\n  createGlobalNode,\n  isClient,\n  removeGlobalNode,\n} from '@pit-element-plus/utils'\n\nimport type { Ref, VNode } from 'vue'\n\nexport const useTeleport = (\n  contentRenderer: () => VNode,\n  appendToBody: Ref<boolean>\n) => {\n  const isTeleportVisible = ref(false)\n\n  if (!isClient) {\n    return {\n      isTeleportVisible,\n      showTeleport: NOOP,\n      hideTeleport: NOOP,\n      renderTeleport: NOOP,\n    }\n  }\n\n  let $el: HTMLElement | null = null\n\n  const showTeleport = () => {\n    isTeleportVisible.value = true\n    // this allows the delayed showing strategy since the the content itself could be enterable\n    // e.g. el-popper\n    if ($el !== null) return\n\n    $el = createGlobalNode()\n  }\n\n  const hideTeleport = () => {\n    isTeleportVisible.value = false\n    if ($el !== null) {\n      removeGlobalNode($el)\n      $el = null\n    }\n  }\n\n  const renderTeleport = () => {\n    return appendToBody.value !== true\n      ? contentRenderer()\n      : isTeleportVisible.value\n        ? [h(Teleport, { to: $el }, contentRenderer())]\n        : undefined\n  }\n\n  onUnmounted(hideTeleport)\n\n  return {\n    isTeleportVisible,\n    showTeleport,\n    hideTeleport,\n    renderTeleport,\n  }\n}\n","import { onMounted, ref, watch } from 'vue'\nimport { isNumber, isObject, isUndefined } from '@pit-element-plus/utils'\n\nimport type { Ref } from 'vue'\n\nexport type ThrottleType =\n  | { leading?: number; trailing?: number; initVal?: boolean }\n  | number\n\nexport const useThrottleRender = (\n  loading: Ref<boolean>,\n  throttle: ThrottleType = 0\n) => {\n  if (throttle === 0) return loading\n  const initVal = isObject(throttle) && Boolean(throttle.initVal)\n  const throttled = ref(initVal)\n  let timeoutHandle: ReturnType<typeof setTimeout> | null = null\n\n  const dispatchThrottling = (timer: number | undefined) => {\n    if (isUndefined(timer)) {\n      throttled.value = loading.value\n      return\n    }\n    if (timeoutHandle) {\n      clearTimeout(timeoutHandle)\n    }\n    timeoutHandle = setTimeout(() => {\n      throttled.value = loading.value\n    }, timer)\n  }\n\n  const dispatcher = (type: 'leading' | 'trailing') => {\n    if (type === 'leading') {\n      if (isNumber(throttle)) {\n        dispatchThrottling(throttle)\n      } else {\n        dispatchThrottling(throttle.leading)\n      }\n    } else {\n      if (isObject(throttle)) {\n        dispatchThrottling(throttle.trailing)\n      } else {\n        throttled.value = false\n      }\n    }\n  }\n\n  onMounted(() => dispatcher('leading'))\n\n  watch(\n    () => loading.value,\n    (val) => {\n      dispatcher(val ? 'leading' : 'trailing')\n    }\n  )\n\n  return throttled\n}\n","import { tryOnScopeDispose } from '@vueuse/core'\n\nexport function useTimeout() {\n  let timeoutHandle: number\n\n  const registerTimeout = (fn: (...args: any[]) => any, delay: number) => {\n    cancelTimeout()\n    timeoutHandle = window.setTimeout(fn, delay)\n  }\n  const cancelTimeout = () => window.clearTimeout(timeoutHandle)\n\n  tryOnScopeDispose(() => cancelTimeout())\n\n  return {\n    registerTimeout,\n    cancelTimeout,\n  }\n}\n","/* istanbul ignore file */\nimport { getCurrentInstance } from 'vue'\n\nconst AFTER_APPEAR = 'after-appear'\nconst AFTER_ENTER = 'after-enter'\nconst AFTER_LEAVE = 'after-leave'\nconst APPEAR = 'appear'\nconst APPEAR_CANCELLED = 'appear-cancelled'\nconst BEFORE_ENTER = 'before-enter'\nconst BEFORE_LEAVE = 'before-leave'\nconst ENTER = 'enter'\nconst ENTER_CANCELLED = 'enter-cancelled'\nconst LEAVE = 'leave'\nconst LEAVE_CANCELLED = 'leave-cancelled'\n\nexport const useTransitionFallthroughEmits = [\n  AFTER_APPEAR,\n  AFTER_ENTER,\n  AFTER_LEAVE,\n  APPEAR,\n  APPEAR_CANCELLED,\n  BEFORE_ENTER,\n  BEFORE_LEAVE,\n  ENTER,\n  ENTER_CANCELLED,\n  LEAVE,\n  LEAVE_CANCELLED,\n] as const\n\n// Sometimes we want to delegate the transition emitted event\n// we have to right the function locally, which is not a good\n// approach to this, so we created this hook for the event\n// fallthrough\n\n/**\n * NOTE:\n * This is only a delegator for delegating transition callbacks.\n * Use this at your need.\n */\n\n/**\n * Simple usage\n *\n * In your setups:\n *\n * setup() {\n *   const fallthroughMethods = useTransitionFallthrough()\n *   return fallthrough\n * }\n *\n * In your template:\n *\n * <template>\n *  <transition name=\"whatever\" v-bind=\"fallthrough\">\n *    <slot />\n *  </transition>\n * </template>\n *\n */\n\nexport const useTransitionFallthrough = () => {\n  const { emit } = getCurrentInstance()!\n\n  return {\n    onAfterAppear: () => {\n      emit(AFTER_APPEAR)\n    },\n    onAfterEnter: () => {\n      emit(AFTER_ENTER)\n    },\n    onAfterLeave: () => {\n      emit(AFTER_LEAVE)\n    },\n    onAppearCancelled: () => {\n      emit(APPEAR_CANCELLED)\n    },\n    onBeforeEnter: () => {\n      emit(BEFORE_ENTER)\n    },\n    onBeforeLeave: () => {\n      emit(BEFORE_LEAVE)\n    },\n    onEnter: () => {\n      emit(ENTER)\n    },\n    onEnterCancelled: () => {\n      emit(ENTER_CANCELLED)\n    },\n    onLeave: () => {\n      emit(LEAVE)\n    },\n    onLeaveCancelled: () => {\n      emit(LEAVE_CANCELLED)\n    },\n  }\n}\n","import { getCurrentInstance, inject, unref } from 'vue'\nimport { computedEager } from '@vueuse/core'\nimport { debugWarn, isClient } from '@pit-element-plus/utils'\nimport { useGetDerivedNamespace } from '../use-namespace'\n\nimport type { MaybeRef } from '@vueuse/core'\nimport type { InjectionKey, Ref } from 'vue'\n\nexport type ElIdInjectionContext = {\n  prefix: number\n  current: number\n}\n\nconst defaultIdInjection = {\n  prefix: Math.floor(Math.random() * 10000),\n  current: 0,\n}\n\nexport const ID_INJECTION_KEY: InjectionKey<ElIdInjectionContext> =\n  Symbol('elIdInjection')\n\nexport const useIdInjection = (): ElIdInjectionContext => {\n  return getCurrentInstance()\n    ? inject(ID_INJECTION_KEY, defaultIdInjection)\n    : defaultIdInjection\n}\n\nexport const useId = (deterministicId?: MaybeRef<string>): Ref<string> => {\n  const idInjection = useIdInjection()\n  if (!isClient && idInjection === defaultIdInjection) {\n    debugWarn(\n      'IdInjection',\n      `Looks like you are using server rendering, you must provide a id provider to ensure the hydration process to be succeed\nusage: app.provide(ID_INJECTION_KEY, {\n  prefix: number,\n  current: number,\n})`\n    )\n  }\n\n  const namespace = useGetDerivedNamespace()\n\n  // NOTE: Here we use `computedEager` to calculate the id value immediately, avoiding inconsistent id generation due to the lazy feature of `computed` when server rendering.\n  const idRef = computedEager(\n    () =>\n      unref(deterministicId) ||\n      `${namespace.value}-id-${idInjection.prefix}-${idInjection.current++}`\n  )\n\n  return idRef\n}\n","import { onBeforeUnmount, onMounted } from 'vue'\nimport { getEventCode, isClient } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\n\nlet registeredEscapeHandlers: ((e: KeyboardEvent) => void)[] = []\n\nconst cachedHandler = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n  if (code === EVENT_CODE.esc) {\n    registeredEscapeHandlers.forEach((registeredHandler) =>\n      registeredHandler(event)\n    )\n  }\n}\n\nexport const useEscapeKeydown = (handler: (e: KeyboardEvent) => void) => {\n  onMounted(() => {\n    if (registeredEscapeHandlers.length === 0) {\n      document.addEventListener('keydown', cachedHandler)\n    }\n    if (isClient) registeredEscapeHandlers.push(handler)\n  })\n\n  onBeforeUnmount(() => {\n    registeredEscapeHandlers = registeredEscapeHandlers.filter(\n      (registeredHandler) => registeredHandler !== handler\n    )\n    if (registeredEscapeHandlers.length === 0) {\n      if (isClient) document.removeEventListener('keydown', cachedHandler)\n    }\n  })\n}\n","import { computed, onBeforeMount } from 'vue'\nimport { isClient } from '@pit-element-plus/utils'\nimport { useGetDerivedNamespace } from '../use-namespace'\nimport { useIdInjection } from '../use-id'\n\nexport const usePopperContainerId = () => {\n  const namespace = useGetDerivedNamespace()\n  const idInjection = useIdInjection()\n\n  const id = computed(() => {\n    return `${namespace.value}-popper-container-${idInjection.prefix}`\n  })\n  const selector = computed(() => `#${id.value}`)\n\n  return {\n    id,\n    selector,\n  }\n}\n\nconst createContainer = (id: string) => {\n  const container = document.createElement('div')\n  container.id = id\n  document.body.appendChild(container)\n  return container\n}\n\nexport const usePopperContainer = () => {\n  const { id, selector } = usePopperContainerId()\n  onBeforeMount(() => {\n    if (!isClient) return\n\n    // This is for bypassing the error that when under testing env, we often encounter\n    // document.body.innerHTML = '' situation\n    // for this we need to disable the caching since it's not really needed\n    if (\n      process.env.NODE_ENV === 'test' ||\n      !document.body.querySelector(selector.value)\n    ) {\n      createContainer(id.value)\n    }\n  })\n\n  return {\n    id,\n    selector,\n  }\n}\n","import { nextTick, unref, watch } from 'vue'\n\nimport type { Ref } from 'vue'\n\nexport type UseDelayedRenderProps = {\n  indicator: Ref<boolean>\n  intermediateIndicator: Ref<boolean>\n  shouldSetIntermediate?: (step: 'show' | 'hide') => boolean\n  beforeShow?: () => void\n  beforeHide?: () => void\n  afterShow?: () => void\n  afterHide?: () => void\n}\n\nexport const useDelayedRender = ({\n  indicator,\n  intermediateIndicator,\n  shouldSetIntermediate = () => true,\n  beforeShow,\n  afterShow,\n  afterHide,\n  beforeHide,\n}: UseDelayedRenderProps) => {\n  watch(\n    () => unref(indicator),\n    (val) => {\n      if (val) {\n        beforeShow?.()\n        nextTick(() => {\n          if (!unref(indicator)) return\n          if (shouldSetIntermediate('show')) {\n            intermediateIndicator.value = true\n          }\n        })\n      } else {\n        beforeHide?.()\n        nextTick(() => {\n          if (unref(indicator)) return\n\n          if (shouldSetIntermediate('hide')) {\n            intermediateIndicator.value = false\n          }\n        })\n      }\n    }\n  )\n\n  // because we don't always set the value ourselves, so that we\n  // simply watch the value's state, then invoke the corresponding hook.\n  watch(\n    () => intermediateIndicator.value,\n    (val) => {\n      if (val) {\n        afterShow?.()\n      } else {\n        afterHide?.()\n      }\n    }\n  )\n}\n","import { unref } from 'vue'\nimport { buildProps, isNumber } from '@pit-element-plus/utils'\nimport { useTimeout } from '../use-timeout'\n\nimport type { ToRefs } from 'vue'\n\nexport interface UseDelayedToggleProps {\n  /**\n   * @description delay of appearance, in millisecond, not valid in controlled mode\n   */\n  showAfter?: number\n  /**\n   * @description delay of disappear, in millisecond, not valid in controlled mode\n   */\n  hideAfter?: number\n  /**\n   * @description disappear automatically, in millisecond, not valid in controlled mode\n   */\n  autoClose?: number\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `UseDelayedToggleProps` instead.\n */\nexport const useDelayedToggleProps = buildProps({\n  /**\n   * @description delay of appearance, in millisecond, not valid in controlled mode\n   */\n  showAfter: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description delay of disappear, in millisecond, not valid in controlled mode\n   */\n  hideAfter: {\n    type: Number,\n    default: 200,\n  },\n  /**\n   * @description disappear automatically, in millisecond, not valid in controlled mode\n   */\n  autoClose: {\n    type: Number,\n    default: 0,\n  },\n} as const)\n\nexport type DelayedToggle = {\n  open: (event?: Event) => void\n  close: (event?: Event) => void\n} & ToRefs<Required<UseDelayedToggleProps>>\n\nexport const useDelayedTogglePropsDefaults = {\n  showAfter: 0,\n  hideAfter: 200,\n  autoClose: 0,\n} as const\n\nexport const useDelayedToggle = ({\n  showAfter,\n  hideAfter,\n  autoClose,\n  open,\n  close,\n}: DelayedToggle) => {\n  const { registerTimeout } = useTimeout()\n  const {\n    registerTimeout: registerTimeoutForAutoClose,\n    cancelTimeout: cancelTimeoutForAutoClose,\n  } = useTimeout()\n\n  const onOpen = (event?: Event, delay = unref(showAfter)) => {\n    registerTimeout(() => {\n      open(event)\n\n      const _autoClose = unref(autoClose)\n      if (isNumber(_autoClose) && _autoClose > 0) {\n        registerTimeoutForAutoClose(() => {\n          close(event)\n        }, _autoClose)\n      }\n    }, delay)\n  }\n\n  const onClose = (event?: Event, delay = unref(hideAfter)) => {\n    cancelTimeoutForAutoClose()\n    registerTimeout(() => {\n      close(event)\n    }, delay)\n  }\n\n  return {\n    onOpen,\n    onClose,\n  }\n}\n","import { provide } from 'vue'\n\nimport type { InjectionKey, ObjectDirective, Ref } from 'vue'\n\ntype ForwardRefSetter = <T>(el: T) => void\n\nexport type ForwardRefInjectionContext = {\n  setForwardRef: ForwardRefSetter\n}\n\nexport const FORWARD_REF_INJECTION_KEY: InjectionKey<ForwardRefInjectionContext> =\n  Symbol('elForwardRef')\n\nexport const useForwardRef = <T>(forwardRef: Ref<T | null>) => {\n  const setForwardRef = ((el: T) => {\n    forwardRef.value = el\n  }) as ForwardRefSetter\n\n  provide(FORWARD_REF_INJECTION_KEY, {\n    setForwardRef,\n  })\n}\n\nexport const useForwardRefDirective = (\n  setForwardRef: ForwardRefSetter\n): ObjectDirective => {\n  return {\n    mounted(el) {\n      setForwardRef(el)\n    },\n    updated(el) {\n      setForwardRef(el)\n    },\n    unmounted() {\n      setForwardRef(null)\n    },\n  }\n}\n","import { computed, getCurrentInstance, inject, ref, unref } from 'vue'\nimport { debugWarn, isClient, isNumber } from '@pit-element-plus/utils'\n\nimport type { InjectionKey, Ref } from 'vue'\n\nexport interface ElZIndexInjectionContext {\n  current: number\n}\n\nconst initial: ElZIndexInjectionContext = {\n  current: 0,\n}\n\nconst zIndex = ref(0)\n\nexport const defaultInitialZIndex = 2000\n\n// For SSR\nexport const ZINDEX_INJECTION_KEY: InjectionKey<ElZIndexInjectionContext> =\n  Symbol('elZIndexContextKey')\n\nexport const zIndexContextKey: InjectionKey<Ref<number | undefined>> =\n  Symbol('zIndexContextKey')\n\nexport const useZIndex = (zIndexOverrides?: Ref<number>) => {\n  const increasingInjection = getCurrentInstance()\n    ? inject(ZINDEX_INJECTION_KEY, initial)\n    : initial\n\n  const zIndexInjection =\n    zIndexOverrides ||\n    (getCurrentInstance() ? inject(zIndexContextKey, undefined) : undefined)\n\n  const initialZIndex = computed(() => {\n    const zIndexFromInjection = unref(zIndexInjection)\n    return isNumber(zIndexFromInjection)\n      ? zIndexFromInjection\n      : defaultInitialZIndex\n  })\n\n  const currentZIndex = computed(() => initialZIndex.value + zIndex.value)\n\n  const nextZIndex = () => {\n    increasingInjection.current++\n    zIndex.value = increasingInjection.current\n    return currentZIndex.value\n  }\n\n  if (!isClient && !inject(ZINDEX_INJECTION_KEY)) {\n    debugWarn(\n      'ZIndexInjection',\n      `Looks like you are using server rendering, you must provide a z-index provider to ensure the hydration process to be succeed\nusage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`\n    )\n  }\n\n  return {\n    initialZIndex,\n    currentZIndex,\n    nextZIndex,\n  }\n}\n\nexport type UseZIndexReturn = ReturnType<typeof useZIndex>\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { isRef, onMounted, ref, unref, watchEffect } from 'vue'\nimport { unrefElement } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { arrow as arrowCore, computePosition } from '@floating-ui/dom'\nimport { buildProps, isClient, keysOf } from '@pit-element-plus/utils'\n\nimport type { Ref, ToRefs } from 'vue'\nimport type {\n  ComputePositionReturn,\n  Middleware,\n  Placement,\n  SideObject,\n  Strategy,\n  VirtualElement,\n} from '@floating-ui/dom'\n\nexport const useFloatingProps = buildProps({} as const)\n\nexport type UseFloatingProps = ToRefs<{\n  middleware: Array<Middleware>\n  placement: Placement\n  strategy: Strategy\n}>\n\ntype ElementRef = Parameters<typeof unrefElement>['0']\n\nconst unrefReference = (\n  elRef: ElementRef | Ref<VirtualElement | undefined>\n) => {\n  if (!isClient) return\n  if (!elRef) return elRef\n  const unrefEl = unrefElement(elRef as ElementRef)\n  if (unrefEl) return unrefEl\n  return isRef(elRef) ? unrefEl : (elRef as VirtualElement)\n}\n\nexport const getPositionDataWithUnit = <T extends Record<string, number>>(\n  record: T | undefined,\n  key: keyof T\n) => {\n  const value = record?.[key]\n  return isNil(value) ? '' : `${value}px`\n}\n\nexport const useFloating = ({\n  middleware,\n  placement,\n  strategy,\n}: UseFloatingProps) => {\n  const referenceRef = ref<HTMLElement | VirtualElement>()\n  const contentRef = ref<HTMLElement>()\n  const x = ref<number>()\n  const y = ref<number>()\n  const middlewareData = ref<ComputePositionReturn['middlewareData']>({})\n\n  const states = {\n    x,\n    y,\n    placement,\n    strategy,\n    middlewareData,\n  } as const\n\n  const update = async () => {\n    if (!isClient) return\n\n    const referenceEl = unrefReference(referenceRef)\n    const contentEl = unrefElement(contentRef)\n    if (!referenceEl || !contentEl) return\n\n    const data = await computePosition(referenceEl, contentEl, {\n      placement: unref(placement),\n      strategy: unref(strategy),\n      middleware: unref(middleware),\n    })\n\n    keysOf(states).forEach((key) => {\n      states[key].value = data[key]\n    })\n  }\n\n  onMounted(() => {\n    watchEffect(() => {\n      update()\n    })\n  })\n\n  return {\n    ...states,\n    update,\n    referenceRef,\n    contentRef,\n  }\n}\n\nexport type ArrowMiddlewareProps = {\n  arrowRef: Ref<HTMLElement | null | undefined>\n  padding?: number | SideObject\n}\n\nexport const arrowMiddleware = ({\n  arrowRef,\n  padding,\n}: ArrowMiddlewareProps): Middleware => {\n  return {\n    name: 'arrow',\n    options: {\n      element: arrowRef,\n      padding,\n    },\n\n    fn(args) {\n      const arrowEl = unref(arrowRef)\n      if (!arrowEl) return {}\n\n      return arrowCore({\n        element: arrowEl,\n        padding,\n      }).fn(args)\n    },\n  }\n}\n","import type { ShallowRef } from 'vue'\n\ninterface SelectionInfo {\n  selectionStart?: number\n  selectionEnd?: number\n  value?: string\n  beforeTxt?: string\n  afterTxt?: string\n}\n\n// Keep input cursor in the correct position when we use formatter.\nexport function useCursor(\n  input: ShallowRef<HTMLInputElement | undefined>\n): [() => void, () => void] {\n  let selectionInfo: SelectionInfo\n  function recordCursor() {\n    if (input.value == undefined) return\n\n    const { selectionStart, selectionEnd, value } = input.value\n\n    if (selectionStart == null || selectionEnd == null) return\n\n    const beforeTxt = value.slice(0, Math.max(0, selectionStart))\n    const afterTxt = value.slice(Math.max(0, selectionEnd))\n\n    selectionInfo = {\n      selectionStart,\n      selectionEnd,\n      value,\n      beforeTxt,\n      afterTxt,\n    }\n  }\n  function setCursor() {\n    if (input.value == undefined || selectionInfo == undefined) return\n\n    const { value } = input.value\n    const { beforeTxt, afterTxt, selectionStart } = selectionInfo\n\n    if (\n      beforeTxt == undefined ||\n      afterTxt == undefined ||\n      selectionStart == undefined\n    )\n      return\n\n    let startPos = value.length\n\n    if (value.endsWith(afterTxt)) {\n      startPos = value.length - afterTxt.length\n    } else if (value.startsWith(beforeTxt)) {\n      startPos = beforeTxt.length\n    } else {\n      const beforeLastChar = beforeTxt[selectionStart - 1]\n      const newIndex = value.indexOf(beforeLastChar, selectionStart - 1)\n      if (newIndex !== -1) {\n        startPos = newIndex + 1\n      }\n    }\n\n    input.value.setSelectionRange(startPos, startPos)\n  }\n\n  return [recordCursor, setCursor]\n}\n","import {\n  defineComponent,\n  h,\n  isVNode,\n  onMounted,\n  shallowRef,\n  triggerRef,\n} from 'vue'\nimport { flattedChildren } from '@pit-element-plus/utils'\n\nimport type { Component, ComponentInternalInstance, VNode } from 'vue'\n\ntype ChildEssential = {\n  uid: number\n  getVnode: () => VNode\n}\n\nconst getOrderedChildren = <T>(\n  vm: ComponentInternalInstance,\n  childComponentName: string,\n  children: Record<number, T>\n): T[] => {\n  const nodes = flattedChildren(vm.subTree).filter(\n    (n): n is VNode =>\n      isVNode(n) &&\n      (n.type as Component)?.name === childComponentName &&\n      !!n.component\n  )\n  const uids = nodes.map((n) => n.component!.uid)\n  return uids.map((uid) => children[uid]).filter((p) => !!p)\n}\n\nexport const useOrderedChildren = <T extends ChildEssential>(\n  vm: ComponentInternalInstance,\n  childComponentName: string\n) => {\n  const children = shallowRef<Record<number, T>>({})\n  const orderedChildren = shallowRef<T[]>([])\n  const nodesMap = new WeakMap<ParentNode, Node[]>()\n\n  const addChild = (child: T) => {\n    children.value[child.uid] = child\n    triggerRef(children)\n\n    onMounted(() => {\n      const childNode = child.getVnode().el! as Node\n      const parentNode = childNode.parentNode!\n\n      if (!nodesMap.has(parentNode)) {\n        nodesMap.set(parentNode, [])\n\n        const originalFn = parentNode.insertBefore.bind(parentNode)\n        parentNode.insertBefore = <T extends Node>(\n          node: T,\n          anchor: Node | null\n        ) => {\n          // Schedule a job to update `orderedChildren` if the root element of child components is moved\n          const shouldSortChildren = nodesMap\n            .get(parentNode)!\n            .some((el) => node === el || anchor === el)\n          if (shouldSortChildren) triggerRef(children)\n\n          return originalFn(node, anchor)\n        }\n      }\n\n      nodesMap.get(parentNode)!.push(childNode)\n    })\n  }\n\n  const removeChild = (child: T) => {\n    delete children.value[child.uid]\n    triggerRef(children)\n\n    const childNode = child.getVnode().el! as Node\n    const parentNode = childNode.parentNode!\n    const childNodes = nodesMap.get(parentNode)!\n    const index = childNodes.indexOf(childNode)\n    childNodes.splice(index, 1)\n  }\n\n  const sortChildren = () => {\n    orderedChildren.value = getOrderedChildren(\n      vm,\n      childComponentName,\n      children.value\n    )\n  }\n\n  const IsolatedRenderer = (props: { render: () => VNode[] }) => {\n    return props.render()\n  }\n\n  // TODO: Refactor `el-description` before converting this to a functional component\n  const ChildrenSorter = defineComponent({\n    setup(_, { slots }) {\n      return () => {\n        sortChildren()\n\n        return slots.default\n          ? // Create a new `ReactiveEffect` to ensure `ChildrenSorter` doesn't track any extra dependencies\n            // @ts-ignore TODO: Remove this after Vue is upgraded\n            h(IsolatedRenderer, {\n              render: slots.default,\n            })\n          : null\n      }\n    },\n  })\n\n  return {\n    children: orderedChildren,\n    addChild,\n    removeChild,\n    ChildrenSorter,\n  }\n}\n","import { computed, inject, unref } from 'vue'\nimport { buildProp } from '@pit-element-plus/utils'\nimport { componentSizes } from '@pit-element-plus/constants'\n\nimport type { InjectionKey, Ref } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\n\nexport const useSizeProp = buildProp({\n  type: String,\n  values: componentSizes,\n  required: false,\n} as const)\n\nexport const useSizeProps = {\n  size: useSizeProp,\n}\n\nexport interface SizeContext {\n  size: Ref<ComponentSize>\n}\n\nexport const SIZE_INJECTION_KEY: InjectionKey<SizeContext> = Symbol('size')\n\nexport const useGlobalSize = () => {\n  const injectedSize = inject(SIZE_INJECTION_KEY, {} as SizeContext)\n\n  return computed<ComponentSize>(() => {\n    return unref(injectedSize.size) || ''\n  })\n}\n","import {\n  getCurrentInstance,\n  onMounted,\n  ref,\n  shallowRef,\n  unref,\n  watch,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { isElement, isFocusable, isFunction } from '@pit-element-plus/utils'\n\nimport type { ShallowRef } from 'vue'\nimport type { MaybeRef } from '@vueuse/core'\n\ninterface UseFocusControllerOptions {\n  disabled?: MaybeRef<boolean>\n  /**\n   * return true to cancel focus\n   * @param event FocusEvent\n   */\n  beforeFocus?: (event: FocusEvent) => boolean | undefined\n  afterFocus?: () => void\n  /**\n   * return true to cancel blur\n   * @param event FocusEvent\n   */\n  beforeBlur?: (event: FocusEvent) => boolean | undefined\n  afterBlur?: () => void\n}\n\nexport function useFocusController<T extends { focus: () => void }>(\n  target: ShallowRef<T | undefined>,\n  {\n    disabled,\n    beforeFocus,\n    afterFocus,\n    beforeBlur,\n    afterBlur,\n  }: UseFocusControllerOptions = {}\n) {\n  const instance = getCurrentInstance()!\n  const { emit } = instance\n  const wrapperRef = shallowRef<HTMLElement>()\n  const isFocused = ref(false)\n\n  const handleFocus = (event: FocusEvent) => {\n    const cancelFocus = isFunction(beforeFocus) ? beforeFocus(event) : false\n    if (unref(disabled) || isFocused.value || cancelFocus) return\n\n    isFocused.value = true\n    emit('focus', event)\n    afterFocus?.()\n  }\n\n  const handleBlur = (event: FocusEvent) => {\n    const cancelBlur = isFunction(beforeBlur) ? beforeBlur(event) : false\n    if (\n      unref(disabled) ||\n      (event.relatedTarget &&\n        wrapperRef.value?.contains(event.relatedTarget as Node)) ||\n      cancelBlur\n    )\n      return\n\n    isFocused.value = false\n    emit('blur', event)\n    afterBlur?.()\n  }\n\n  const handleClick = (event: Event) => {\n    if (\n      unref(disabled) ||\n      isFocusable(event.target as HTMLElement) ||\n      (wrapperRef.value?.contains(document.activeElement) &&\n        wrapperRef.value !== document.activeElement)\n    )\n      return\n\n    target.value?.focus()\n  }\n\n  watch([wrapperRef, () => unref(disabled)], ([el, disabled]) => {\n    if (!el) return\n    if (disabled) {\n      el.removeAttribute('tabindex')\n    } else {\n      el.setAttribute('tabindex', '-1')\n    }\n  })\n\n  useEventListener(wrapperRef, 'focus', handleFocus, true)\n  useEventListener(wrapperRef, 'blur', handleBlur, true)\n  useEventListener(wrapperRef, 'click', handleClick, true)\n\n  // only for test\n  if (process.env.NODE_ENV === 'test') {\n    onMounted(() => {\n      const targetEl = isElement(target.value)\n        ? target.value\n        : document.querySelector('input,textarea')\n\n      if (targetEl) {\n        useEventListener(targetEl, 'focus', handleFocus, true)\n        useEventListener(targetEl, 'blur', handleBlur, true)\n      }\n    })\n  }\n\n  return {\n    isFocused,\n    /** Avoid using wrapperRef and handleFocus/handleBlur together */\n    wrapperRef,\n    handleFocus,\n    handleBlur,\n  }\n}\n","import { nextTick, ref } from 'vue'\nimport { isKorean } from '@pit-element-plus/utils'\n\ninterface UseCompositionOptions {\n  afterComposition: (event: CompositionEvent) => void\n  emit?: ((event: 'compositionstart', evt: CompositionEvent) => void) &\n    ((event: 'compositionupdate', evt: CompositionEvent) => void) &\n    ((event: 'compositionend', evt: CompositionEvent) => void)\n}\n\nexport function useComposition({\n  afterComposition,\n  emit,\n}: UseCompositionOptions) {\n  const isComposing = ref(false)\n\n  const handleCompositionStart = (event: CompositionEvent) => {\n    emit?.('compositionstart', event)\n    isComposing.value = true\n  }\n\n  const handleCompositionUpdate = (event: CompositionEvent) => {\n    emit?.('compositionupdate', event)\n    const text = (event.target as HTMLInputElement)?.value\n    const lastCharacter = text[text.length - 1] || ''\n    isComposing.value = !isKorean(lastCharacter)\n  }\n\n  const handleCompositionEnd = (event: CompositionEvent) => {\n    emit?.('compositionend', event)\n    if (isComposing.value) {\n      isComposing.value = false\n      nextTick(() => afterComposition(event))\n    }\n  }\n\n  const handleComposition = (event: CompositionEvent) => {\n    event.type === 'compositionend'\n      ? handleCompositionEnd(event)\n      : handleCompositionUpdate(event)\n  }\n\n  return {\n    isComposing,\n    handleComposition,\n    handleCompositionStart,\n    handleCompositionUpdate,\n    handleCompositionEnd,\n  }\n}\n","import { computed, getCurrentInstance, inject, ref } from 'vue'\nimport {\n  buildProps,\n  debugWarn,\n  definePropType,\n  isArray,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { isEqual } from 'lodash-unified'\n\nimport type { InjectionKey, Ref } from 'vue'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\ntype ValueOnClear = string | number | boolean | Function | null\n\nexport interface UseEmptyValuesProps {\n  /**\n   * @description empty values supported by the component\n   */\n  emptyValues?: unknown[]\n  /**\n   * @description return value when cleared, if you want to set `undefined`, use `() => undefined`\n   */\n  valueOnClear?: ValueOnClear\n}\n\nexport const emptyValuesContextKey: InjectionKey<Ref<UseEmptyValuesProps>> =\n  Symbol('emptyValuesContextKey')\nexport const SCOPE = 'use-empty-values'\nexport const DEFAULT_EMPTY_VALUES = ['', undefined, null]\nexport const DEFAULT_VALUE_ON_CLEAR = undefined\n\n/**\n * @deprecated Removed after 3.0.0, Use `UseEmptyValuesProps` instead.\n */\nexport const useEmptyValuesProps = buildProps({\n  /**\n   * @description empty values supported by the component\n   */\n  emptyValues: Array,\n  /**\n   * @description return value when cleared, if you want to set `undefined`, use `() => undefined`\n   */\n  valueOnClear: {\n    /* eslint-disable-next-line @typescript-eslint/no-unsafe-function-type */\n    type: definePropType<string | number | boolean | Function | null>([\n      String,\n      Number,\n      Boolean,\n      Function,\n    ]),\n    default: undefined,\n    validator: (val: unknown) => {\n      val = isFunction(val) ? val() : val\n      if (isArray(val)) {\n        return val.every((item) => !item)\n      }\n      return !val\n    },\n  },\n} as const)\n\nexport const useEmptyValues = (\n  props: UseEmptyValuesProps,\n  defaultValue?: null | undefined\n) => {\n  const config = getCurrentInstance()\n    ? inject(emptyValuesContextKey, ref<UseEmptyValuesProps>({}))\n    : ref<UseEmptyValuesProps>({})\n\n  const emptyValues = computed(\n    () => props.emptyValues || config.value.emptyValues || DEFAULT_EMPTY_VALUES\n  )\n\n  const valueOnClear = computed(() => {\n    // function is used for undefined cause undefined can't be a value of prop\n    if (isFunction(props.valueOnClear)) {\n      return props.valueOnClear()\n    } else if (props.valueOnClear !== undefined) {\n      return props.valueOnClear\n    } else if (isFunction(config.value.valueOnClear)) {\n      return config.value.valueOnClear()\n    } else if (config.value.valueOnClear !== undefined) {\n      return config.value.valueOnClear\n    }\n    return defaultValue !== undefined ? defaultValue : DEFAULT_VALUE_ON_CLEAR\n  })\n\n  const isEmptyValue = (value: unknown) => {\n    let result = true\n    if (isArray(value)) {\n      result = emptyValues.value.some((emptyValue) => {\n        return isEqual(value, emptyValue)\n      })\n    } else {\n      result = emptyValues.value.includes(value)\n    }\n    return result\n  }\n\n  if (!isEmptyValue(valueOnClear.value)) {\n    debugWarn(SCOPE, 'value-on-clear should be a value of empty-values')\n  }\n\n  return {\n    emptyValues,\n    valueOnClear,\n    isEmptyValue,\n  }\n}\n","import { pick } from 'lodash-unified'\nimport { buildProps } from '@pit-element-plus/utils'\n\nexport interface AriaProps {\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel?: string\n  /**\n   * @description native `aria-orientation` attribute\n   */\n  ariaOrientation?: 'horizontal' | 'vertical' | 'undefined'\n  /**\n   * @description native `aria-controls` attribute\n   */\n  ariaControls?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `AriaProps` instead.\n */\nexport const ariaProps = buildProps({\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel: String,\n  /**\n   * @description native `aria-orientation` attribute\n   */\n  ariaOrientation: {\n    type: String,\n    values: ['horizontal', 'vertical', 'undefined'],\n  },\n  /**\n   * @description native `aria-controls` attribute\n   */\n  ariaControls: String,\n})\n\nexport const useAriaProps = <T extends keyof typeof ariaProps>(\n  arias: Array<T>\n) => {\n  return pick<typeof ariaProps, T>(ariaProps, arias)\n}\n","import { getCurrentInstance } from 'vue'\n\nexport const useGlobalProperties = () => {\n  const vm = getCurrentInstance()\n  const globalProperties = vm?.appContext.config.globalProperties\n\n  return { ...globalProperties }\n}\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type Teleport from './teleport.vue'\n\nexport const teleportProps = buildProps({\n  to: {\n    type: definePropType<string | HTMLElement>([String, Object]),\n    required: true,\n  },\n  disabled: Boolean,\n} as const)\n\nexport type TeleportProps = ExtractPropTypes<typeof teleportProps>\nexport type TeleportPropsPublic = ExtractPublicPropTypes<typeof teleportProps>\nexport type TeleportInstance = InstanceType<typeof Teleport> & unknown\n","<template>\n  <template v-if=\"disabled\">\n    <slot />\n  </template>\n  <teleport v-else :to=\"to\">\n    <slot />\n  </teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { teleportProps } from './teleport'\n\ndefineProps(teleportProps)\n</script>\n","<template>\n  <template v-if=\"disabled\">\n    <slot />\n  </template>\n  <teleport v-else :to=\"to\">\n    <slot />\n  </teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { teleportProps } from './teleport'\n\ndefineProps(teleportProps)\n</script>\n","<template>\n  <template v-if=\"disabled\">\n    <slot />\n  </template>\n  <teleport v-else :to=\"to\">\n    <slot />\n  </teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { teleportProps } from './teleport'\n\ndefineProps(teleportProps)\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Teleport from './src/teleport.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTeleport: SFCWithInstall<typeof Teleport> = withInstall(Teleport)\n\nexport default ElTeleport\n\nexport * from './src/teleport'\n","import {\n  buildProps,\n  definePropType,\n  isBoolean,\n  isNumber,\n} from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { teleportProps } from '@pit-element-plus/components/teleport'\n\nimport type { CSSProperties, ExtractPublicPropTypes } from 'vue'\nimport type Affix from './affix.vue'\n\nexport interface AffixProps {\n  /**\n   * @description affix element zIndex value\n   * */\n  zIndex?: CSSProperties['z-index']\n  /**\n   * @description target container. (CSS selector)\n   */\n  target?: string\n  /**\n   * @description offset distance\n   * */\n  offset?: number\n  /**\n   * @description position of affix\n   * */\n  position?: 'top' | 'bottom'\n  /**\n   * @description whether affix element is teleported, if `true` it will be teleported to where `append-to` sets\n   * */\n  teleported?: boolean\n  /**\n   * @description which element the affix element appends to\n   * */\n  appendTo?: string | HTMLElement\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `AffixProps` instead.\n */\nexport const affixProps = buildProps({\n  /**\n   * @description affix element zIndex value\n   * */\n  zIndex: {\n    type: definePropType<CSSProperties['z-index']>([Number, String]),\n    default: 100,\n  },\n  /**\n   * @description target container. (CSS selector)\n   */\n  target: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description offset distance\n   * */\n  offset: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description position of affix\n   * */\n  position: {\n    type: String,\n    values: ['top', 'bottom'],\n    default: 'top',\n  },\n  /**\n   * @description whether affix element is teleported, if `true` it will be teleported to where `append-to` sets\n   * */\n  teleported: Boolean,\n  /**\n   * @description which element the affix element appends to\n   * */\n  appendTo: {\n    type: teleportProps.to.type,\n    default: 'body',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `AffixProps` instead.\n */\nexport type AffixPropsPublic = ExtractPublicPropTypes<typeof affixProps>\n\nexport const affixEmits = {\n  scroll: ({ scrollTop, fixed }: { scrollTop: number; fixed: boolean }) =>\n    isNumber(scrollTop) && isBoolean(fixed),\n  [CHANGE_EVENT]: (fixed: boolean) => isBoolean(fixed),\n}\nexport type AffixEmits = typeof affixEmits\n\nexport type AffixInstance = InstanceType<typeof Affix> & unknown\n","<template>\n  <div ref=\"root\" :class=\"ns.b()\" :style=\"rootStyle\">\n    <el-teleport :disabled=\"teleportDisabled\" :to=\"appendTo\">\n      <div :class=\"{ [ns.m('fixed')]: fixed }\" :style=\"affixStyle\">\n        <slot />\n      </div>\n    </el-teleport>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onActivated,\n  onDeactivated,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n  watchEffect,\n} from 'vue'\nimport {\n  useElementBounding,\n  useEventListener,\n  useWindowSize,\n} from '@vueuse/core'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport {\n  addUnit,\n  getScrollContainer,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { affixEmits } from './affix'\n\nimport type { CSSProperties } from 'vue'\nimport type { AffixProps } from './affix'\n\nconst COMPONENT_NAME = 'ElAffix'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<AffixProps>(), {\n  zIndex: 100,\n  target: '',\n  offset: 0,\n  position: 'top',\n  appendTo: 'body',\n})\nconst emit = defineEmits(affixEmits)\n\nconst ns = useNamespace('affix')\n\nconst target = shallowRef<HTMLElement>()\nconst root = shallowRef<HTMLDivElement>()\nconst scrollContainer = shallowRef<HTMLElement | Window>()\nconst { height: windowHeight } = useWindowSize()\nconst {\n  height: rootHeight,\n  width: rootWidth,\n  top: rootTop,\n  bottom: rootBottom,\n  left: rootLeft,\n  update: updateRoot,\n} = useElementBounding(root, { windowScroll: false })\nconst targetRect = useElementBounding(target)\n\nconst fixed = ref(false)\nconst scrollTop = ref(0)\nconst transform = ref(0)\n\nconst teleportDisabled = computed(() => {\n  return !props.teleported || !fixed.value\n})\n\nconst rootStyle = computed<CSSProperties>(() => {\n  return {\n    display: 'flow-root', // https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Display/Formatting_contexts#explicitly_creating_a_bfc_using_display_flow-root\n    height: fixed.value ? `${rootHeight.value}px` : '',\n    width: fixed.value ? `${rootWidth.value}px` : '',\n  }\n})\n\nconst affixStyle = computed<CSSProperties>(() => {\n  if (!fixed.value) return {}\n\n  const offset = addUnit(props.offset)\n  return {\n    height: `${rootHeight.value}px`,\n    width: `${rootWidth.value}px`,\n    top: props.position === 'top' ? offset : '',\n    bottom: props.position === 'bottom' ? offset : '',\n    left: props.teleported ? `${rootLeft.value}px` : '',\n    transform: transform.value ? `translateY(${transform.value}px)` : '',\n    zIndex: props.zIndex,\n  }\n})\n\nconst update = () => {\n  if (!scrollContainer.value) return\n\n  scrollTop.value =\n    scrollContainer.value instanceof Window\n      ? document.documentElement.scrollTop\n      : scrollContainer.value.scrollTop || 0\n\n  const { position, target, offset } = props\n  const rootHeightOffset = offset + rootHeight.value\n\n  if (position === 'top') {\n    if (target) {\n      const difference = targetRect.bottom.value - rootHeightOffset\n      fixed.value = offset > rootTop.value && targetRect.bottom.value > 0\n      transform.value = difference < 0 ? difference : 0\n    } else {\n      fixed.value = offset > rootTop.value\n    }\n  } else if (target) {\n    const difference =\n      windowHeight.value - targetRect.top.value - rootHeightOffset\n    fixed.value =\n      windowHeight.value - offset < rootBottom.value &&\n      windowHeight.value > targetRect.top.value\n    transform.value = difference < 0 ? -difference : 0\n  } else {\n    fixed.value = windowHeight.value - offset < rootBottom.value\n  }\n}\n\nconst updateRootRect = async () => {\n  if (!fixed.value) {\n    updateRoot()\n    return\n  }\n\n  fixed.value = false\n  await nextTick()\n  updateRoot()\n  fixed.value = true\n}\n\nconst handleScroll = async () => {\n  updateRoot()\n  await nextTick()\n  emit('scroll', {\n    scrollTop: scrollTop.value,\n    fixed: fixed.value,\n  })\n}\n\nwatch(fixed, (val) => emit(CHANGE_EVENT, val))\n\nonMounted(() => {\n  if (props.target) {\n    target.value =\n      document.querySelector<HTMLElement>(props.target) ?? undefined\n    if (!target.value)\n      throwError(COMPONENT_NAME, `Target does not exist: ${props.target}`)\n  } else {\n    target.value = document.documentElement\n  }\n  scrollContainer.value = getScrollContainer(root.value!, true)\n  updateRoot()\n})\n\nonActivated(() => {\n  nextTick(updateRootRect)\n})\n\nonDeactivated(() => {\n  fixed.value = false\n})\n\nuseEventListener(scrollContainer, 'scroll', handleScroll)\nwatchEffect(update)\n\ndefineExpose({\n  /** @description update affix status */\n  update,\n  /** @description update rootRect info */\n  updateRoot: updateRootRect,\n})\n</script>\n","<template>\n  <div ref=\"root\" :class=\"ns.b()\" :style=\"rootStyle\">\n    <el-teleport :disabled=\"teleportDisabled\" :to=\"appendTo\">\n      <div :class=\"{ [ns.m('fixed')]: fixed }\" :style=\"affixStyle\">\n        <slot />\n      </div>\n    </el-teleport>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onActivated,\n  onDeactivated,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n  watchEffect,\n} from 'vue'\nimport {\n  useElementBounding,\n  useEventListener,\n  useWindowSize,\n} from '@vueuse/core'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport {\n  addUnit,\n  getScrollContainer,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { affixEmits } from './affix'\n\nimport type { CSSProperties } from 'vue'\nimport type { AffixProps } from './affix'\n\nconst COMPONENT_NAME = 'ElAffix'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<AffixProps>(), {\n  zIndex: 100,\n  target: '',\n  offset: 0,\n  position: 'top',\n  appendTo: 'body',\n})\nconst emit = defineEmits(affixEmits)\n\nconst ns = useNamespace('affix')\n\nconst target = shallowRef<HTMLElement>()\nconst root = shallowRef<HTMLDivElement>()\nconst scrollContainer = shallowRef<HTMLElement | Window>()\nconst { height: windowHeight } = useWindowSize()\nconst {\n  height: rootHeight,\n  width: rootWidth,\n  top: rootTop,\n  bottom: rootBottom,\n  left: rootLeft,\n  update: updateRoot,\n} = useElementBounding(root, { windowScroll: false })\nconst targetRect = useElementBounding(target)\n\nconst fixed = ref(false)\nconst scrollTop = ref(0)\nconst transform = ref(0)\n\nconst teleportDisabled = computed(() => {\n  return !props.teleported || !fixed.value\n})\n\nconst rootStyle = computed<CSSProperties>(() => {\n  return {\n    display: 'flow-root', // https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Display/Formatting_contexts#explicitly_creating_a_bfc_using_display_flow-root\n    height: fixed.value ? `${rootHeight.value}px` : '',\n    width: fixed.value ? `${rootWidth.value}px` : '',\n  }\n})\n\nconst affixStyle = computed<CSSProperties>(() => {\n  if (!fixed.value) return {}\n\n  const offset = addUnit(props.offset)\n  return {\n    height: `${rootHeight.value}px`,\n    width: `${rootWidth.value}px`,\n    top: props.position === 'top' ? offset : '',\n    bottom: props.position === 'bottom' ? offset : '',\n    left: props.teleported ? `${rootLeft.value}px` : '',\n    transform: transform.value ? `translateY(${transform.value}px)` : '',\n    zIndex: props.zIndex,\n  }\n})\n\nconst update = () => {\n  if (!scrollContainer.value) return\n\n  scrollTop.value =\n    scrollContainer.value instanceof Window\n      ? document.documentElement.scrollTop\n      : scrollContainer.value.scrollTop || 0\n\n  const { position, target, offset } = props\n  const rootHeightOffset = offset + rootHeight.value\n\n  if (position === 'top') {\n    if (target) {\n      const difference = targetRect.bottom.value - rootHeightOffset\n      fixed.value = offset > rootTop.value && targetRect.bottom.value > 0\n      transform.value = difference < 0 ? difference : 0\n    } else {\n      fixed.value = offset > rootTop.value\n    }\n  } else if (target) {\n    const difference =\n      windowHeight.value - targetRect.top.value - rootHeightOffset\n    fixed.value =\n      windowHeight.value - offset < rootBottom.value &&\n      windowHeight.value > targetRect.top.value\n    transform.value = difference < 0 ? -difference : 0\n  } else {\n    fixed.value = windowHeight.value - offset < rootBottom.value\n  }\n}\n\nconst updateRootRect = async () => {\n  if (!fixed.value) {\n    updateRoot()\n    return\n  }\n\n  fixed.value = false\n  await nextTick()\n  updateRoot()\n  fixed.value = true\n}\n\nconst handleScroll = async () => {\n  updateRoot()\n  await nextTick()\n  emit('scroll', {\n    scrollTop: scrollTop.value,\n    fixed: fixed.value,\n  })\n}\n\nwatch(fixed, (val) => emit(CHANGE_EVENT, val))\n\nonMounted(() => {\n  if (props.target) {\n    target.value =\n      document.querySelector<HTMLElement>(props.target) ?? undefined\n    if (!target.value)\n      throwError(COMPONENT_NAME, `Target does not exist: ${props.target}`)\n  } else {\n    target.value = document.documentElement\n  }\n  scrollContainer.value = getScrollContainer(root.value!, true)\n  updateRoot()\n})\n\nonActivated(() => {\n  nextTick(updateRootRect)\n})\n\nonDeactivated(() => {\n  fixed.value = false\n})\n\nuseEventListener(scrollContainer, 'scroll', handleScroll)\nwatchEffect(update)\n\ndefineExpose({\n  /** @description update affix status */\n  update,\n  /** @description update rootRect info */\n  updateRoot: updateRootRect,\n})\n</script>\n","<template>\n  <div ref=\"root\" :class=\"ns.b()\" :style=\"rootStyle\">\n    <el-teleport :disabled=\"teleportDisabled\" :to=\"appendTo\">\n      <div :class=\"{ [ns.m('fixed')]: fixed }\" :style=\"affixStyle\">\n        <slot />\n      </div>\n    </el-teleport>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onActivated,\n  onDeactivated,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n  watchEffect,\n} from 'vue'\nimport {\n  useElementBounding,\n  useEventListener,\n  useWindowSize,\n} from '@vueuse/core'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport {\n  addUnit,\n  getScrollContainer,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { affixEmits } from './affix'\n\nimport type { CSSProperties } from 'vue'\nimport type { AffixProps } from './affix'\n\nconst COMPONENT_NAME = 'ElAffix'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<AffixProps>(), {\n  zIndex: 100,\n  target: '',\n  offset: 0,\n  position: 'top',\n  appendTo: 'body',\n})\nconst emit = defineEmits(affixEmits)\n\nconst ns = useNamespace('affix')\n\nconst target = shallowRef<HTMLElement>()\nconst root = shallowRef<HTMLDivElement>()\nconst scrollContainer = shallowRef<HTMLElement | Window>()\nconst { height: windowHeight } = useWindowSize()\nconst {\n  height: rootHeight,\n  width: rootWidth,\n  top: rootTop,\n  bottom: rootBottom,\n  left: rootLeft,\n  update: updateRoot,\n} = useElementBounding(root, { windowScroll: false })\nconst targetRect = useElementBounding(target)\n\nconst fixed = ref(false)\nconst scrollTop = ref(0)\nconst transform = ref(0)\n\nconst teleportDisabled = computed(() => {\n  return !props.teleported || !fixed.value\n})\n\nconst rootStyle = computed<CSSProperties>(() => {\n  return {\n    display: 'flow-root', // https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Display/Formatting_contexts#explicitly_creating_a_bfc_using_display_flow-root\n    height: fixed.value ? `${rootHeight.value}px` : '',\n    width: fixed.value ? `${rootWidth.value}px` : '',\n  }\n})\n\nconst affixStyle = computed<CSSProperties>(() => {\n  if (!fixed.value) return {}\n\n  const offset = addUnit(props.offset)\n  return {\n    height: `${rootHeight.value}px`,\n    width: `${rootWidth.value}px`,\n    top: props.position === 'top' ? offset : '',\n    bottom: props.position === 'bottom' ? offset : '',\n    left: props.teleported ? `${rootLeft.value}px` : '',\n    transform: transform.value ? `translateY(${transform.value}px)` : '',\n    zIndex: props.zIndex,\n  }\n})\n\nconst update = () => {\n  if (!scrollContainer.value) return\n\n  scrollTop.value =\n    scrollContainer.value instanceof Window\n      ? document.documentElement.scrollTop\n      : scrollContainer.value.scrollTop || 0\n\n  const { position, target, offset } = props\n  const rootHeightOffset = offset + rootHeight.value\n\n  if (position === 'top') {\n    if (target) {\n      const difference = targetRect.bottom.value - rootHeightOffset\n      fixed.value = offset > rootTop.value && targetRect.bottom.value > 0\n      transform.value = difference < 0 ? difference : 0\n    } else {\n      fixed.value = offset > rootTop.value\n    }\n  } else if (target) {\n    const difference =\n      windowHeight.value - targetRect.top.value - rootHeightOffset\n    fixed.value =\n      windowHeight.value - offset < rootBottom.value &&\n      windowHeight.value > targetRect.top.value\n    transform.value = difference < 0 ? -difference : 0\n  } else {\n    fixed.value = windowHeight.value - offset < rootBottom.value\n  }\n}\n\nconst updateRootRect = async () => {\n  if (!fixed.value) {\n    updateRoot()\n    return\n  }\n\n  fixed.value = false\n  await nextTick()\n  updateRoot()\n  fixed.value = true\n}\n\nconst handleScroll = async () => {\n  updateRoot()\n  await nextTick()\n  emit('scroll', {\n    scrollTop: scrollTop.value,\n    fixed: fixed.value,\n  })\n}\n\nwatch(fixed, (val) => emit(CHANGE_EVENT, val))\n\nonMounted(() => {\n  if (props.target) {\n    target.value =\n      document.querySelector<HTMLElement>(props.target) ?? undefined\n    if (!target.value)\n      throwError(COMPONENT_NAME, `Target does not exist: ${props.target}`)\n  } else {\n    target.value = document.documentElement\n  }\n  scrollContainer.value = getScrollContainer(root.value!, true)\n  updateRoot()\n})\n\nonActivated(() => {\n  nextTick(updateRootRect)\n})\n\nonDeactivated(() => {\n  fixed.value = false\n})\n\nuseEventListener(scrollContainer, 'scroll', handleScroll)\nwatchEffect(update)\n\ndefineExpose({\n  /** @description update affix status */\n  update,\n  /** @description update rootRect info */\n  updateRoot: updateRootRect,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Affix from './src/affix.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElAffix: SFCWithInstall<typeof Affix> = withInstall(Affix)\nexport default ElAffix\n\nexport * from './src/affix'\n","import { TypeComponentsMap, buildProps, keysOf } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport const alertEffects = ['light', 'dark'] as const\n\nexport interface AlertProps {\n  /**\n   * @description alert title.\n   */\n  title?: string\n  /**\n   * @description descriptive text.\n   */\n  description?: string\n  /**\n   * @description alert type.\n   */\n  type?: keyof typeof TypeComponentsMap\n  /**\n   * @description whether alert can be dismissed.\n   */\n  closable?: boolean\n  /**\n   * @description text for replacing x button\n   */\n  closeText?: string\n  /**\n   * @description whether show icon\n   */\n  showIcon?: boolean\n  /**\n   * @description should content be placed in center.\n   */\n  center?: boolean\n  /**\n   * @description theme style\n   */\n  effect?: 'light' | 'dark'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `AlertProps` instead.\n */\nexport const alertProps = buildProps({\n  /**\n   * @description alert title.\n   */\n  title: {\n    type: String,\n    default: '',\n  },\n  description: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description alert type.\n   */\n  type: {\n    type: String,\n    values: keysOf(TypeComponentsMap),\n    default: 'info',\n  },\n  /**\n   * @description whether alert can be dismissed.\n   */\n  closable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description text for replacing x button\n   */\n  closeText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description whether show icon\n   */\n  showIcon: Boolean,\n  /**\n   * @description should content be placed in center.\n   */\n  center: Boolean,\n  effect: {\n    type: String,\n    values: alertEffects,\n    default: 'light',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `AlertProps` instead.\n */\nexport type AlertPropsPublic = ExtractPublicPropTypes<typeof alertProps>\n\nexport const alertEmits = {\n  close: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\nexport type AlertEmits = typeof alertEmits\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Icon from './icon.vue'\n\nexport interface IconProps {\n  /**\n   * @description SVG icon size, size x size\n   */\n  size?: number | string\n  /**\n   * @description SVG tag's fill attribute\n   */\n  color?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `IconProps` instead.\n */\nexport const iconProps = buildProps({\n  /**\n   * @description SVG icon size, size x size\n   */\n  size: {\n    type: definePropType<number | string>([Number, String]),\n  },\n  /**\n   * @description SVG tag's fill attribute\n   */\n  color: {\n    type: String,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `IconProps` instead.\n */\nexport type IconPropsPublic = ExtractPublicPropTypes<typeof iconProps>\nexport type IconInstance = InstanceType<typeof Icon> & unknown\n","<template>\n  <i :class=\"ns.b()\" :style=\"style\" v-bind=\"$attrs\">\n    <slot />\n  </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { IconProps } from './icon'\n\ndefineOptions({\n  name: 'ElIcon',\n  inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<IconProps>(), {\n  size: undefined,\n})\nconst ns = useNamespace('icon')\n\nconst style = computed<CSSProperties>(() => {\n  const { size, color } = props\n  const fontSize = addUnit(size)\n  if (!fontSize && !color) return {}\n\n  return {\n    fontSize,\n    '--color': color,\n  }\n})\n</script>\n","<template>\n  <i :class=\"ns.b()\" :style=\"style\" v-bind=\"$attrs\">\n    <slot />\n  </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { IconProps } from './icon'\n\ndefineOptions({\n  name: 'ElIcon',\n  inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<IconProps>(), {\n  size: undefined,\n})\nconst ns = useNamespace('icon')\n\nconst style = computed<CSSProperties>(() => {\n  const { size, color } = props\n  const fontSize = addUnit(size)\n  if (!fontSize && !color) return {}\n\n  return {\n    fontSize,\n    '--color': color,\n  }\n})\n</script>\n","<template>\n  <i :class=\"ns.b()\" :style=\"style\" v-bind=\"$attrs\">\n    <slot />\n  </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { IconProps } from './icon'\n\ndefineOptions({\n  name: 'ElIcon',\n  inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<IconProps>(), {\n  size: undefined,\n})\nconst ns = useNamespace('icon')\n\nconst style = computed<CSSProperties>(() => {\n  const { size, color } = props\n  const fontSize = addUnit(size)\n  if (!fontSize && !color) return {}\n\n  return {\n    fontSize,\n    '--color': color,\n  }\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Icon from './src/icon.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElIcon: SFCWithInstall<typeof Icon> = withInstall(Icon)\nexport default ElIcon\n\nexport * from './src/icon'\n","<template>\n  <transition :name=\"ns.b('fade')\">\n    <div\n      v-show=\"visible\"\n      :class=\"[ns.b(), ns.m(type), ns.is('center', center), ns.is(effect)]\"\n      role=\"alert\"\n    >\n      <el-icon\n        v-if=\"showIcon && ($slots.icon || iconComponent)\"\n        :class=\"[ns.e('icon'), ns.is('big', hasDesc)]\"\n      >\n        <slot name=\"icon\">\n          <component :is=\"iconComponent\" />\n        </slot>\n      </el-icon>\n\n      <div :class=\"ns.e('content')\">\n        <span\n          v-if=\"title || $slots.title\"\n          :class=\"[ns.e('title'), { 'with-description': hasDesc }]\"\n        >\n          <slot name=\"title\">{{ title }}</slot>\n        </span>\n        <p v-if=\"hasDesc\" :class=\"ns.e('description')\">\n          <slot>\n            {{ description }}\n          </slot>\n        </p>\n        <template v-if=\"closable\">\n          <div\n            v-if=\"closeText\"\n            :class=\"[ns.e('close-btn'), ns.is('customed')]\"\n            @click=\"close\"\n          >\n            {{ closeText }}\n          </div>\n          <el-icon v-else :class=\"ns.e('close-btn')\" @click=\"close\">\n            <Close />\n          </el-icon>\n        </template>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, useSlots } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  TypeComponents,\n  TypeComponentsMap,\n  flattedChildren,\n  isComment,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { alertEmits } from './alert'\n\nimport type { AlertProps } from './alert'\n\nconst { Close } = TypeComponents\n\ndefineOptions({\n  name: 'ElAlert',\n})\n\nconst props = withDefaults(defineProps<AlertProps>(), {\n  title: '',\n  description: '',\n  type: 'info',\n  closable: true,\n  closeText: '',\n  effect: 'light',\n})\nconst emit = defineEmits(alertEmits)\nconst slots = useSlots()\n\nconst ns = useNamespace('alert')\n\nconst visible = ref(true)\n\nconst iconComponent = computed(() => TypeComponentsMap[props.type])\n\nconst hasDesc = computed(() => {\n  if (props.description) return true\n  const slotContent = slots.default?.()\n  if (!slotContent) return false\n\n  const children = flattedChildren(slotContent)\n  return children.some((child) => !isComment(child))\n})\n\nconst close = (evt: MouseEvent) => {\n  visible.value = false\n  emit('close', evt)\n}\n</script>\n","<template>\n  <transition :name=\"ns.b('fade')\">\n    <div\n      v-show=\"visible\"\n      :class=\"[ns.b(), ns.m(type), ns.is('center', center), ns.is(effect)]\"\n      role=\"alert\"\n    >\n      <el-icon\n        v-if=\"showIcon && ($slots.icon || iconComponent)\"\n        :class=\"[ns.e('icon'), ns.is('big', hasDesc)]\"\n      >\n        <slot name=\"icon\">\n          <component :is=\"iconComponent\" />\n        </slot>\n      </el-icon>\n\n      <div :class=\"ns.e('content')\">\n        <span\n          v-if=\"title || $slots.title\"\n          :class=\"[ns.e('title'), { 'with-description': hasDesc }]\"\n        >\n          <slot name=\"title\">{{ title }}</slot>\n        </span>\n        <p v-if=\"hasDesc\" :class=\"ns.e('description')\">\n          <slot>\n            {{ description }}\n          </slot>\n        </p>\n        <template v-if=\"closable\">\n          <div\n            v-if=\"closeText\"\n            :class=\"[ns.e('close-btn'), ns.is('customed')]\"\n            @click=\"close\"\n          >\n            {{ closeText }}\n          </div>\n          <el-icon v-else :class=\"ns.e('close-btn')\" @click=\"close\">\n            <Close />\n          </el-icon>\n        </template>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, useSlots } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  TypeComponents,\n  TypeComponentsMap,\n  flattedChildren,\n  isComment,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { alertEmits } from './alert'\n\nimport type { AlertProps } from './alert'\n\nconst { Close } = TypeComponents\n\ndefineOptions({\n  name: 'ElAlert',\n})\n\nconst props = withDefaults(defineProps<AlertProps>(), {\n  title: '',\n  description: '',\n  type: 'info',\n  closable: true,\n  closeText: '',\n  effect: 'light',\n})\nconst emit = defineEmits(alertEmits)\nconst slots = useSlots()\n\nconst ns = useNamespace('alert')\n\nconst visible = ref(true)\n\nconst iconComponent = computed(() => TypeComponentsMap[props.type])\n\nconst hasDesc = computed(() => {\n  if (props.description) return true\n  const slotContent = slots.default?.()\n  if (!slotContent) return false\n\n  const children = flattedChildren(slotContent)\n  return children.some((child) => !isComment(child))\n})\n\nconst close = (evt: MouseEvent) => {\n  visible.value = false\n  emit('close', evt)\n}\n</script>\n","<template>\n  <transition :name=\"ns.b('fade')\">\n    <div\n      v-show=\"visible\"\n      :class=\"[ns.b(), ns.m(type), ns.is('center', center), ns.is(effect)]\"\n      role=\"alert\"\n    >\n      <el-icon\n        v-if=\"showIcon && ($slots.icon || iconComponent)\"\n        :class=\"[ns.e('icon'), ns.is('big', hasDesc)]\"\n      >\n        <slot name=\"icon\">\n          <component :is=\"iconComponent\" />\n        </slot>\n      </el-icon>\n\n      <div :class=\"ns.e('content')\">\n        <span\n          v-if=\"title || $slots.title\"\n          :class=\"[ns.e('title'), { 'with-description': hasDesc }]\"\n        >\n          <slot name=\"title\">{{ title }}</slot>\n        </span>\n        <p v-if=\"hasDesc\" :class=\"ns.e('description')\">\n          <slot>\n            {{ description }}\n          </slot>\n        </p>\n        <template v-if=\"closable\">\n          <div\n            v-if=\"closeText\"\n            :class=\"[ns.e('close-btn'), ns.is('customed')]\"\n            @click=\"close\"\n          >\n            {{ closeText }}\n          </div>\n          <el-icon v-else :class=\"ns.e('close-btn')\" @click=\"close\">\n            <Close />\n          </el-icon>\n        </template>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, useSlots } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  TypeComponents,\n  TypeComponentsMap,\n  flattedChildren,\n  isComment,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { alertEmits } from './alert'\n\nimport type { AlertProps } from './alert'\n\nconst { Close } = TypeComponents\n\ndefineOptions({\n  name: 'ElAlert',\n})\n\nconst props = withDefaults(defineProps<AlertProps>(), {\n  title: '',\n  description: '',\n  type: 'info',\n  closable: true,\n  closeText: '',\n  effect: 'light',\n})\nconst emit = defineEmits(alertEmits)\nconst slots = useSlots()\n\nconst ns = useNamespace('alert')\n\nconst visible = ref(true)\n\nconst iconComponent = computed(() => TypeComponentsMap[props.type])\n\nconst hasDesc = computed(() => {\n  if (props.description) return true\n  const slotContent = slots.default?.()\n  if (!slotContent) return false\n\n  const children = flattedChildren(slotContent)\n  return children.some((child) => !isComment(child))\n})\n\nconst close = (evt: MouseEvent) => {\n  visible.value = false\n  emit('close', evt)\n}\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Alert from './src/alert.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElAlert: SFCWithInstall<typeof Alert> = withInstall(Alert)\nexport default ElAlert\n\nexport * from './src/alert'\nexport type { AlertInstance } from './src/instance'\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Popper from './popper.vue'\n\nconst effects = ['light', 'dark'] as const\nconst triggers = ['click', 'contextmenu', 'hover', 'focus'] as const\n\nexport const Effect = {\n  LIGHT: 'light',\n  DARK: 'dark',\n} as const\n\nexport const roleTypes = [\n  'dialog',\n  'grid',\n  'group',\n  'listbox',\n  'menu',\n  'navigation',\n  'tooltip',\n  'tree',\n] as const\n\nexport type PopperEffect =\n  | (typeof effects)[number]\n  | (string & NonNullable<unknown>)\nexport type PopperTrigger = (typeof triggers)[number]\n\nexport interface PopperProps {\n  /**\n   * @description role determines how aria attributes are distributed\n   */\n  role?: (typeof roleTypes)[number]\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopperProps` instead.\n */\nexport const popperProps = buildProps({\n  role: {\n    type: String,\n    values: roleTypes,\n    default: 'tooltip',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopperProps` instead.\n */\nexport type PopperPropsPublic = ExtractPublicPropTypes<typeof popperProps>\n\nexport type PopperInstance = InstanceType<typeof Popper> & unknown\n\n/** @deprecated use `popperProps` instead, and it will be deprecated in the next major version */\nexport const usePopperProps = popperProps\n\n/** @deprecated use `PopperProps` instead, and it will be deprecated in the next major version */\nexport type UsePopperProps = PopperProps\n","import type { CSSProperties, ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { Instance } from '@popperjs/core'\n\nexport type Measurable = {\n  getBoundingClientRect: () => DOMRect\n}\n\n/**\n * triggerRef indicates the element that triggers popper\n * contentRef indicates the element of popper content\n * referenceRef indicates the element that popper content relative with\n */\nexport type ElPopperInjectionContext = {\n  triggerRef: Ref<Measurable | undefined>\n  contentRef: Ref<HTMLElement | undefined>\n  popperInstanceRef: Ref<Instance | undefined>\n  referenceRef: Ref<Measurable | undefined>\n  role: ComputedRef<string>\n}\n\nexport type ElPopperContentInjectionContext = {\n  arrowRef: Ref<HTMLElement | undefined>\n  arrowStyle: ComputedRef<CSSProperties>\n}\n\nexport const POPPER_INJECTION_KEY: InjectionKey<ElPopperInjectionContext> =\n  Symbol('popper')\n\nexport const POPPER_CONTENT_INJECTION_KEY: InjectionKey<ElPopperContentInjectionContext> =\n  Symbol('popperContent')\n","<template>\n  <slot />\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref } from 'vue'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { Instance as PopperInstance } from '@popperjs/core'\nimport type { ElPopperInjectionContext } from './constants'\nimport type { PopperProps } from './popper'\n\ndefineOptions({\n  name: 'ElPopper',\n  inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<PopperProps>(), {\n  role: 'tooltip',\n})\n\nconst triggerRef = ref<HTMLElement>()\nconst popperInstanceRef = ref<PopperInstance>()\nconst contentRef = ref<HTMLElement>()\nconst referenceRef = ref<HTMLElement>()\nconst role = computed(() => props.role)\n\nconst popperProvides = {\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n  /**\n   * @description popperjs instance\n   */\n  popperInstanceRef,\n  /**\n   * @description popper content element\n   */\n  contentRef,\n  /**\n   * @description popper reference element\n   */\n  referenceRef,\n  /**\n   * @description role determines how aria attributes are distributed\n   */\n  role,\n} as ElPopperInjectionContext\n\ndefineExpose(popperProvides)\n\nprovide(POPPER_INJECTION_KEY, popperProvides)\n</script>\n","<template>\n  <slot />\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref } from 'vue'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { Instance as PopperInstance } from '@popperjs/core'\nimport type { ElPopperInjectionContext } from './constants'\nimport type { PopperProps } from './popper'\n\ndefineOptions({\n  name: 'ElPopper',\n  inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<PopperProps>(), {\n  role: 'tooltip',\n})\n\nconst triggerRef = ref<HTMLElement>()\nconst popperInstanceRef = ref<PopperInstance>()\nconst contentRef = ref<HTMLElement>()\nconst referenceRef = ref<HTMLElement>()\nconst role = computed(() => props.role)\n\nconst popperProvides = {\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n  /**\n   * @description popperjs instance\n   */\n  popperInstanceRef,\n  /**\n   * @description popper content element\n   */\n  contentRef,\n  /**\n   * @description popper reference element\n   */\n  referenceRef,\n  /**\n   * @description role determines how aria attributes are distributed\n   */\n  role,\n} as ElPopperInjectionContext\n\ndefineExpose(popperProvides)\n\nprovide(POPPER_INJECTION_KEY, popperProvides)\n</script>\n","<template>\n  <slot />\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref } from 'vue'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { Instance as PopperInstance } from '@popperjs/core'\nimport type { ElPopperInjectionContext } from './constants'\nimport type { PopperProps } from './popper'\n\ndefineOptions({\n  name: 'ElPopper',\n  inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<PopperProps>(), {\n  role: 'tooltip',\n})\n\nconst triggerRef = ref<HTMLElement>()\nconst popperInstanceRef = ref<PopperInstance>()\nconst contentRef = ref<HTMLElement>()\nconst referenceRef = ref<HTMLElement>()\nconst role = computed(() => props.role)\n\nconst popperProvides = {\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n  /**\n   * @description popperjs instance\n   */\n  popperInstanceRef,\n  /**\n   * @description popper content element\n   */\n  contentRef,\n  /**\n   * @description popper reference element\n   */\n  referenceRef,\n  /**\n   * @description role determines how aria attributes are distributed\n   */\n  role,\n} as ElPopperInjectionContext\n\ndefineExpose(popperProvides)\n\nprovide(POPPER_INJECTION_KEY, popperProvides)\n</script>\n","<template>\n  <span\n    ref=\"arrowRef\"\n    :class=\"ns.e('arrow')\"\n    :style=\"arrowStyle\"\n    data-popper-arrow\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, onBeforeUnmount } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants'\n\ndefineOptions({\n  name: 'ElPopperArrow',\n  inheritAttrs: false,\n})\n\nconst ns = useNamespace('popper')\nconst { arrowRef, arrowStyle } = inject(\n  POPPER_CONTENT_INJECTION_KEY,\n  undefined\n)!\n\nonBeforeUnmount(() => {\n  arrowRef.value = undefined\n})\n\ndefineExpose({\n  /**\n   * @description Arrow element\n   */\n  arrowRef,\n})\n</script>\n","<template>\n  <span\n    ref=\"arrowRef\"\n    :class=\"ns.e('arrow')\"\n    :style=\"arrowStyle\"\n    data-popper-arrow\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, onBeforeUnmount } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants'\n\ndefineOptions({\n  name: 'ElPopperArrow',\n  inheritAttrs: false,\n})\n\nconst ns = useNamespace('popper')\nconst { arrowRef, arrowStyle } = inject(\n  POPPER_CONTENT_INJECTION_KEY,\n  undefined\n)!\n\nonBeforeUnmount(() => {\n  arrowRef.value = undefined\n})\n\ndefineExpose({\n  /**\n   * @description Arrow element\n   */\n  arrowRef,\n})\n</script>\n","<template>\n  <span\n    ref=\"arrowRef\"\n    :class=\"ns.e('arrow')\"\n    :style=\"arrowStyle\"\n    data-popper-arrow\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, onBeforeUnmount } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants'\n\ndefineOptions({\n  name: 'ElPopperArrow',\n  inheritAttrs: false,\n})\n\nconst ns = useNamespace('popper')\nconst { arrowRef, arrowStyle } = inject(\n  POPPER_CONTENT_INJECTION_KEY,\n  undefined\n)!\n\nonBeforeUnmount(() => {\n  arrowRef.value = undefined\n})\n\ndefineExpose({\n  /**\n   * @description Arrow element\n   */\n  arrowRef,\n})\n</script>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { Measurable } from './constants'\nimport type Trigger from './trigger.vue'\n\nexport interface PopperTriggerProps {\n  /** @description Indicates the reference element to which the popper is attached */\n  virtualRef?: Measurable\n  /** @description Indicates whether virtual triggering is enabled */\n  virtualTriggering?: boolean\n  onMouseenter?: (e: MouseEvent) => void\n  onMouseleave?: (e: MouseEvent) => void\n  onClick?: (e: PointerEvent) => void\n  onKeydown?: (e: KeyboardEvent) => void\n  onFocus?: (e: FocusEvent) => void\n  onBlur?: (e: FocusEvent) => void\n  onContextmenu?: (e: PointerEvent) => void\n  id?: string\n  open?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopperTriggerProps` instead.\n */\nexport const popperTriggerProps = buildProps({\n  /** @description Indicates the reference element to which the popper is attached */\n  virtualRef: {\n    type: definePropType<Measurable>(Object),\n  },\n  /** @description Indicates whether virtual triggering is enabled */\n  virtualTriggering: Boolean,\n  onMouseenter: {\n    type: definePropType<(e: MouseEvent) => void>(Function),\n  },\n  onMouseleave: {\n    type: definePropType<(e: MouseEvent) => void>(Function),\n  },\n  onClick: {\n    type: definePropType<(e: PointerEvent) => void>(Function),\n  },\n  onKeydown: {\n    type: definePropType<(e: KeyboardEvent) => void>(Function),\n  },\n  onFocus: {\n    type: definePropType<(e: FocusEvent) => void>(Function),\n  },\n  onBlur: {\n    type: definePropType<(e: FocusEvent) => void>(Function),\n  },\n  onContextmenu: {\n    type: definePropType<(e: PointerEvent) => void>(Function),\n  },\n  id: String,\n  open: Boolean,\n} as const)\n\nexport type PopperTriggerInstance = InstanceType<typeof Trigger> & unknown\n\n/** @deprecated use `popperTriggerProps` instead, and it will be deprecated in the next major version */\nexport const usePopperTriggerProps = popperTriggerProps\n\n/** @deprecated use `PopperTriggerInstance` instead, and it will be deprecated in the next major version */\nexport type ElPopperArrowTrigger = PopperTriggerInstance\n","import {\n  Comment,\n  Fragment,\n  Text,\n  cloneVNode,\n  defineComponent,\n  inject,\n  withDirectives,\n} from 'vue'\nimport { NOOP, debugWarn, isObject } from '@pit-element-plus/utils'\nimport {\n  FORWARD_REF_INJECTION_KEY,\n  useForwardRefDirective,\n  useNamespace,\n} from '@pit-element-plus/hooks'\n\nimport type { Ref, VNode } from 'vue'\n\nconst NAME = 'ElOnlyChild'\n\nexport const OnlyChild = defineComponent({\n  name: NAME,\n  setup(_, { slots, attrs }) {\n    const forwardRefInjection = inject(FORWARD_REF_INJECTION_KEY)\n    const forwardRefDirective = useForwardRefDirective(\n      forwardRefInjection?.setForwardRef ?? NOOP\n    )\n    return () => {\n      const defaultSlot = slots.default?.(attrs)\n      if (!defaultSlot) return null\n      const [firstLegitNode, length] = findFirstLegitChild(defaultSlot)\n\n      if (!firstLegitNode) {\n        debugWarn(NAME, 'no valid child node found')\n        return null\n      }\n      if (length > 1) {\n        debugWarn(NAME, 'requires exact only one valid child.')\n      }\n\n      return withDirectives(cloneVNode(firstLegitNode!, attrs), [\n        [forwardRefDirective],\n      ])\n    }\n  },\n})\n\nfunction findFirstLegitChild(\n  node: VNode[] | undefined\n): [VNode | null, number] {\n  if (!node) return [null, 0]\n  const children = node as VNode[]\n  const len = children.filter((c) => c.type !== Comment).length\n\n  for (const child of children) {\n    /**\n     * when user uses h(Fragment, [text]) to render plain string,\n     * this switch case just cannot handle, when the value is primitives\n     * we should just return the wrapped string\n     */\n    if (isObject(child)) {\n      switch (child.type) {\n        case Comment:\n          continue\n        case Text:\n        case 'svg':\n          return [wrapTextContent(child), len]\n        case Fragment:\n          return findFirstLegitChild(child.children as VNode[])\n        default:\n          return [child, len]\n      }\n    }\n    return [wrapTextContent(child), len]\n  }\n  return [null, 0]\n}\n\nfunction wrapTextContent(s: string | VNode) {\n  const ns = useNamespace('only-child')\n  return <span class={ns.e('content')}>{s}</span>\n}\n\nexport type OnlyChildExpose = {\n  forwardRef: Ref<HTMLElement>\n}\n","<template>\n  <el-only-child\n    v-if=\"!virtualTriggering\"\n    v-bind=\"$attrs\"\n    :aria-controls=\"ariaControls\"\n    :aria-describedby=\"ariaDescribedby\"\n    :aria-expanded=\"ariaExpanded\"\n    :aria-haspopup=\"ariaHaspopup\"\n  >\n    <slot />\n  </el-only-child>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { unrefElement } from '@vueuse/core'\nimport { ElOnlyChild } from '@pit-element-plus/components/slot'\nimport { useForwardRef } from '@pit-element-plus/hooks'\nimport { isElement, isFocusable } from '@pit-element-plus/utils'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperTriggerProps } from './trigger'\n\ndefineOptions({\n  name: 'ElPopperTrigger',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PopperTriggerProps>(), {})\n\nconst { role, triggerRef } = inject(POPPER_INJECTION_KEY, undefined)!\n\nuseForwardRef(triggerRef)\n\nconst ariaControls = computed<string | undefined>(() => {\n  return ariaHaspopup.value ? props.id : undefined\n})\n\nconst ariaDescribedby = computed<string | undefined>(() => {\n  if (role && role.value === 'tooltip') {\n    return props.open && props.id ? props.id : undefined\n  }\n  return undefined\n})\n\nconst ariaHaspopup = computed<string | undefined>(() => {\n  if (role && role.value !== 'tooltip') {\n    return role.value\n  }\n  return undefined\n})\n\nconst ariaExpanded = computed<string | undefined>(() => {\n  return ariaHaspopup.value ? `${props.open}` : undefined\n})\n\nlet virtualTriggerAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst TRIGGER_ELE_EVENTS = [\n  'onMouseenter',\n  'onMouseleave',\n  'onClick',\n  'onKeydown',\n  'onFocus',\n  'onBlur',\n  'onContextmenu',\n] as const\n\nonMounted(() => {\n  watch(\n    () => props.virtualRef,\n    (virtualEl) => {\n      if (virtualEl) {\n        triggerRef.value = unrefElement(virtualEl as HTMLElement)\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  watch(\n    triggerRef,\n    (el, prevEl) => {\n      virtualTriggerAriaStopWatch?.()\n      virtualTriggerAriaStopWatch = undefined\n\n      if (isElement(prevEl)) {\n        TRIGGER_ELE_EVENTS.forEach((eventName) => {\n          const handler = props[eventName]\n          if (handler) {\n            // @ts-ignore\n            ;(prevEl as HTMLElement).removeEventListener(\n              eventName.slice(2).toLowerCase(),\n              handler,\n              ['onFocus', 'onBlur'].includes(eventName)\n            )\n          }\n        })\n      }\n      if (isElement(el)) {\n        TRIGGER_ELE_EVENTS.forEach((eventName) => {\n          const handler = props[eventName]\n          if (handler) {\n            // It's not worth doing type gymnastics here\n            // @ts-ignore\n            ;(el as HTMLElement).addEventListener(\n              eventName.slice(2).toLowerCase(),\n              handler,\n              ['onFocus', 'onBlur'].includes(eventName)\n            )\n          }\n        })\n        if (isFocusable(el as HTMLElement)) {\n          virtualTriggerAriaStopWatch = watch(\n            [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],\n            (watches) => {\n              ;[\n                'aria-controls',\n                'aria-describedby',\n                'aria-haspopup',\n                'aria-expanded',\n              ].forEach((key, idx) => {\n                isNil(watches[idx])\n                  ? el.removeAttribute(key)\n                  : el.setAttribute(key, watches[idx]!)\n              })\n            },\n            { immediate: true }\n          )\n        }\n      }\n      if (isElement(prevEl) && isFocusable(prevEl as HTMLElement)) {\n        ;[\n          'aria-controls',\n          'aria-describedby',\n          'aria-haspopup',\n          'aria-expanded',\n        ].forEach((key) => prevEl.removeAttribute(key))\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n})\n\nonBeforeUnmount(() => {\n  virtualTriggerAriaStopWatch?.()\n  virtualTriggerAriaStopWatch = undefined\n  if (triggerRef.value && isElement(triggerRef.value)) {\n    const el = triggerRef.value as HTMLElement\n    TRIGGER_ELE_EVENTS.forEach((eventName) => {\n      const handler = props[eventName]\n      if (handler) {\n        // @ts-ignore\n        el.removeEventListener(\n          eventName.slice(2).toLowerCase(),\n          handler,\n          ['onFocus', 'onBlur'].includes(eventName)\n        )\n      }\n    })\n    triggerRef.value = undefined\n  }\n})\n\ndefineExpose({\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n})\n</script>\n","<template>\n  <el-only-child\n    v-if=\"!virtualTriggering\"\n    v-bind=\"$attrs\"\n    :aria-controls=\"ariaControls\"\n    :aria-describedby=\"ariaDescribedby\"\n    :aria-expanded=\"ariaExpanded\"\n    :aria-haspopup=\"ariaHaspopup\"\n  >\n    <slot />\n  </el-only-child>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { unrefElement } from '@vueuse/core'\nimport { ElOnlyChild } from '@pit-element-plus/components/slot'\nimport { useForwardRef } from '@pit-element-plus/hooks'\nimport { isElement, isFocusable } from '@pit-element-plus/utils'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperTriggerProps } from './trigger'\n\ndefineOptions({\n  name: 'ElPopperTrigger',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PopperTriggerProps>(), {})\n\nconst { role, triggerRef } = inject(POPPER_INJECTION_KEY, undefined)!\n\nuseForwardRef(triggerRef)\n\nconst ariaControls = computed<string | undefined>(() => {\n  return ariaHaspopup.value ? props.id : undefined\n})\n\nconst ariaDescribedby = computed<string | undefined>(() => {\n  if (role && role.value === 'tooltip') {\n    return props.open && props.id ? props.id : undefined\n  }\n  return undefined\n})\n\nconst ariaHaspopup = computed<string | undefined>(() => {\n  if (role && role.value !== 'tooltip') {\n    return role.value\n  }\n  return undefined\n})\n\nconst ariaExpanded = computed<string | undefined>(() => {\n  return ariaHaspopup.value ? `${props.open}` : undefined\n})\n\nlet virtualTriggerAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst TRIGGER_ELE_EVENTS = [\n  'onMouseenter',\n  'onMouseleave',\n  'onClick',\n  'onKeydown',\n  'onFocus',\n  'onBlur',\n  'onContextmenu',\n] as const\n\nonMounted(() => {\n  watch(\n    () => props.virtualRef,\n    (virtualEl) => {\n      if (virtualEl) {\n        triggerRef.value = unrefElement(virtualEl as HTMLElement)\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  watch(\n    triggerRef,\n    (el, prevEl) => {\n      virtualTriggerAriaStopWatch?.()\n      virtualTriggerAriaStopWatch = undefined\n\n      if (isElement(prevEl)) {\n        TRIGGER_ELE_EVENTS.forEach((eventName) => {\n          const handler = props[eventName]\n          if (handler) {\n            // @ts-ignore\n            ;(prevEl as HTMLElement).removeEventListener(\n              eventName.slice(2).toLowerCase(),\n              handler,\n              ['onFocus', 'onBlur'].includes(eventName)\n            )\n          }\n        })\n      }\n      if (isElement(el)) {\n        TRIGGER_ELE_EVENTS.forEach((eventName) => {\n          const handler = props[eventName]\n          if (handler) {\n            // It's not worth doing type gymnastics here\n            // @ts-ignore\n            ;(el as HTMLElement).addEventListener(\n              eventName.slice(2).toLowerCase(),\n              handler,\n              ['onFocus', 'onBlur'].includes(eventName)\n            )\n          }\n        })\n        if (isFocusable(el as HTMLElement)) {\n          virtualTriggerAriaStopWatch = watch(\n            [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],\n            (watches) => {\n              ;[\n                'aria-controls',\n                'aria-describedby',\n                'aria-haspopup',\n                'aria-expanded',\n              ].forEach((key, idx) => {\n                isNil(watches[idx])\n                  ? el.removeAttribute(key)\n                  : el.setAttribute(key, watches[idx]!)\n              })\n            },\n            { immediate: true }\n          )\n        }\n      }\n      if (isElement(prevEl) && isFocusable(prevEl as HTMLElement)) {\n        ;[\n          'aria-controls',\n          'aria-describedby',\n          'aria-haspopup',\n          'aria-expanded',\n        ].forEach((key) => prevEl.removeAttribute(key))\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n})\n\nonBeforeUnmount(() => {\n  virtualTriggerAriaStopWatch?.()\n  virtualTriggerAriaStopWatch = undefined\n  if (triggerRef.value && isElement(triggerRef.value)) {\n    const el = triggerRef.value as HTMLElement\n    TRIGGER_ELE_EVENTS.forEach((eventName) => {\n      const handler = props[eventName]\n      if (handler) {\n        // @ts-ignore\n        el.removeEventListener(\n          eventName.slice(2).toLowerCase(),\n          handler,\n          ['onFocus', 'onBlur'].includes(eventName)\n        )\n      }\n    })\n    triggerRef.value = undefined\n  }\n})\n\ndefineExpose({\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n})\n</script>\n","<template>\n  <el-only-child\n    v-if=\"!virtualTriggering\"\n    v-bind=\"$attrs\"\n    :aria-controls=\"ariaControls\"\n    :aria-describedby=\"ariaDescribedby\"\n    :aria-expanded=\"ariaExpanded\"\n    :aria-haspopup=\"ariaHaspopup\"\n  >\n    <slot />\n  </el-only-child>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { unrefElement } from '@vueuse/core'\nimport { ElOnlyChild } from '@pit-element-plus/components/slot'\nimport { useForwardRef } from '@pit-element-plus/hooks'\nimport { isElement, isFocusable } from '@pit-element-plus/utils'\nimport { POPPER_INJECTION_KEY } from './constants'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperTriggerProps } from './trigger'\n\ndefineOptions({\n  name: 'ElPopperTrigger',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<PopperTriggerProps>(), {})\n\nconst { role, triggerRef } = inject(POPPER_INJECTION_KEY, undefined)!\n\nuseForwardRef(triggerRef)\n\nconst ariaControls = computed<string | undefined>(() => {\n  return ariaHaspopup.value ? props.id : undefined\n})\n\nconst ariaDescribedby = computed<string | undefined>(() => {\n  if (role && role.value === 'tooltip') {\n    return props.open && props.id ? props.id : undefined\n  }\n  return undefined\n})\n\nconst ariaHaspopup = computed<string | undefined>(() => {\n  if (role && role.value !== 'tooltip') {\n    return role.value\n  }\n  return undefined\n})\n\nconst ariaExpanded = computed<string | undefined>(() => {\n  return ariaHaspopup.value ? `${props.open}` : undefined\n})\n\nlet virtualTriggerAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst TRIGGER_ELE_EVENTS = [\n  'onMouseenter',\n  'onMouseleave',\n  'onClick',\n  'onKeydown',\n  'onFocus',\n  'onBlur',\n  'onContextmenu',\n] as const\n\nonMounted(() => {\n  watch(\n    () => props.virtualRef,\n    (virtualEl) => {\n      if (virtualEl) {\n        triggerRef.value = unrefElement(virtualEl as HTMLElement)\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  watch(\n    triggerRef,\n    (el, prevEl) => {\n      virtualTriggerAriaStopWatch?.()\n      virtualTriggerAriaStopWatch = undefined\n\n      if (isElement(prevEl)) {\n        TRIGGER_ELE_EVENTS.forEach((eventName) => {\n          const handler = props[eventName]\n          if (handler) {\n            // @ts-ignore\n            ;(prevEl as HTMLElement).removeEventListener(\n              eventName.slice(2).toLowerCase(),\n              handler,\n              ['onFocus', 'onBlur'].includes(eventName)\n            )\n          }\n        })\n      }\n      if (isElement(el)) {\n        TRIGGER_ELE_EVENTS.forEach((eventName) => {\n          const handler = props[eventName]\n          if (handler) {\n            // It's not worth doing type gymnastics here\n            // @ts-ignore\n            ;(el as HTMLElement).addEventListener(\n              eventName.slice(2).toLowerCase(),\n              handler,\n              ['onFocus', 'onBlur'].includes(eventName)\n            )\n          }\n        })\n        if (isFocusable(el as HTMLElement)) {\n          virtualTriggerAriaStopWatch = watch(\n            [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],\n            (watches) => {\n              ;[\n                'aria-controls',\n                'aria-describedby',\n                'aria-haspopup',\n                'aria-expanded',\n              ].forEach((key, idx) => {\n                isNil(watches[idx])\n                  ? el.removeAttribute(key)\n                  : el.setAttribute(key, watches[idx]!)\n              })\n            },\n            { immediate: true }\n          )\n        }\n      }\n      if (isElement(prevEl) && isFocusable(prevEl as HTMLElement)) {\n        ;[\n          'aria-controls',\n          'aria-describedby',\n          'aria-haspopup',\n          'aria-expanded',\n        ].forEach((key) => prevEl.removeAttribute(key))\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n})\n\nonBeforeUnmount(() => {\n  virtualTriggerAriaStopWatch?.()\n  virtualTriggerAriaStopWatch = undefined\n  if (triggerRef.value && isElement(triggerRef.value)) {\n    const el = triggerRef.value as HTMLElement\n    TRIGGER_ELE_EVENTS.forEach((eventName) => {\n      const handler = props[eventName]\n      if (handler) {\n        // @ts-ignore\n        el.removeEventListener(\n          eventName.slice(2).toLowerCase(),\n          handler,\n          ['onFocus', 'onBlur'].includes(eventName)\n        )\n      }\n    })\n    triggerRef.value = undefined\n  }\n})\n\ndefineExpose({\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n})\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Arrow from './arrow.vue'\n\nexport interface PopperArrowProps {\n  /**\n   * @description arrow offset\n   */\n  arrowOffset?: number\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopperArrowProps` instead.\n */\nexport const popperArrowProps = buildProps({\n  arrowOffset: {\n    type: Number,\n    default: 5,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopperArrowProps` instead.\n */\nexport type PopperArrowPropsPublic = ExtractPublicPropTypes<\n  typeof popperArrowProps\n>\n\nexport const popperArrowPropsDefaults = {\n  arrowOffset: 5,\n} as const\n\nexport type PopperArrowInstance = InstanceType<typeof Arrow> & unknown\n\n/** @deprecated use `popperArrowProps` instead, and it will be deprecated in the next major version */\nexport const usePopperArrowProps = popperArrowProps\n\n/** @deprecated use `PopperArrowProps` instead, and it will be deprecated in the next major version */\nexport type UsePopperArrowProps = PopperArrowProps\n\n/** @deprecated use `PopperArrowInstance` instead, and it will be deprecated in the next major version */\nexport type ElPopperArrowInstance = PopperArrowInstance\n","import { placements } from '@popperjs/core'\nimport { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { useAriaProps } from '@pit-element-plus/hooks'\nimport { popperArrowProps, popperArrowPropsDefaults } from './arrow'\n\nimport type { PopperEffect } from './popper'\nimport type { ExtractPublicPropTypes, StyleValue } from 'vue'\nimport type { Options, Placement } from '@popperjs/core'\nimport type { Measurable } from './constants'\nimport type Content from './content.vue'\nimport type { PopperArrowProps } from './arrow'\n\ntype ClassObjectType = Record<string, boolean>\ntype ClassType = string | ClassObjectType | ClassType[]\n\nconst POSITIONING_STRATEGIES = ['fixed', 'absolute'] as const\n\nexport interface CreatePopperInstanceParams {\n  referenceEl: Measurable\n  popperContentEl: HTMLElement\n  arrowEl: HTMLElement | undefined\n}\n\nexport interface PopperCoreConfigProps {\n  boundariesPadding?: number\n  fallbackPlacements?: Placement[]\n  gpuAcceleration?: boolean\n  /**\n   * @description offset of the Tooltip\n   */\n  offset?: number\n  /**\n   * @description position of Tooltip\n   */\n  placement?: Placement\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions?: Partial<Options>\n  strategy?: (typeof POSITIONING_STRATEGIES)[number]\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopperCoreConfigProps` instead.\n */\nexport const popperCoreConfigProps = buildProps({\n  boundariesPadding: {\n    type: Number,\n    default: 0,\n  },\n  fallbackPlacements: {\n    type: definePropType<Placement[]>(Array),\n    default: undefined,\n  },\n  gpuAcceleration: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description offset of the Tooltip\n   */\n  offset: {\n    type: Number,\n    default: 12,\n  },\n  /**\n   * @description position of Tooltip\n   */\n  placement: {\n    type: String,\n    values: placements,\n    default: 'bottom',\n  },\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions: {\n    type: definePropType<Partial<Options>>(Object),\n    default: () => ({}),\n  },\n  strategy: {\n    type: String,\n    values: POSITIONING_STRATEGIES,\n    default: 'absolute',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopperCoreConfigProps` instead.\n */\nexport type PopperCoreConfigPropsPublic = ExtractPublicPropTypes<\n  typeof popperCoreConfigProps\n>\n\nexport interface PopperContentProps\n  extends PopperCoreConfigProps, PopperArrowProps {\n  id?: string\n  style?: StyleValue\n  className?: ClassType\n  effect?: PopperEffect\n  visible?: boolean\n  enterable?: boolean\n  pure?: boolean\n  focusOnShow?: boolean\n  trapping?: boolean\n  popperClass?: ClassType\n  popperStyle?: StyleValue\n  referenceEl?: HTMLElement\n  triggerTargetEl?: HTMLElement\n  stopPopperMouseEvent?: boolean\n  virtualTriggering?: boolean\n  zIndex?: number\n  ariaLabel?: string\n  loop?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopperContentProps` instead.\n */\nexport const popperContentProps = buildProps({\n  ...popperCoreConfigProps,\n  ...popperArrowProps,\n  id: String,\n  style: {\n    type: definePropType<StyleValue>([String, Array, Object]),\n  },\n  className: {\n    type: definePropType<ClassType>([String, Array, Object]),\n  },\n  effect: {\n    type: definePropType<PopperEffect>(String),\n    default: 'dark',\n  },\n  visible: Boolean,\n  enterable: {\n    type: Boolean,\n    default: true,\n  },\n  pure: Boolean,\n  focusOnShow: Boolean,\n  trapping: Boolean,\n  popperClass: {\n    type: definePropType<ClassType>([String, Array, Object]),\n  },\n  popperStyle: {\n    type: definePropType<StyleValue>([String, Array, Object]),\n  },\n  referenceEl: {\n    type: definePropType<HTMLElement>(Object),\n  },\n  triggerTargetEl: {\n    type: definePropType<HTMLElement>(Object),\n  },\n  stopPopperMouseEvent: {\n    type: Boolean,\n    default: true,\n  },\n  virtualTriggering: Boolean,\n  zIndex: Number,\n  ...useAriaProps(['ariaLabel']),\n  loop: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopperContentProps` instead.\n */\nexport type PopperContentPropsPublic = ExtractPublicPropTypes<\n  typeof popperContentProps\n>\n\nexport const popperCoreConfigPropsDefaults = {\n  boundariesPadding: 0,\n  gpuAcceleration: true,\n  offset: 12,\n  placement: 'bottom',\n  popperOptions: () => ({}),\n  strategy: 'absolute',\n} as const\n\nexport const popperContentPropsDefaults = {\n  ...popperCoreConfigPropsDefaults,\n  ...popperArrowPropsDefaults,\n  effect: 'dark',\n  enterable: true,\n  stopPopperMouseEvent: true,\n  visible: false,\n  pure: false,\n  focusOnShow: false,\n  trapping: false,\n  virtualTriggering: false,\n  loop: false,\n  style: undefined,\n  popperStyle: undefined,\n} as const\n\nexport const popperContentEmits = {\n  mouseenter: (evt: MouseEvent) => evt instanceof MouseEvent,\n  mouseleave: (evt: MouseEvent) => evt instanceof MouseEvent,\n  focus: () => true,\n  blur: () => true,\n  close: () => true,\n}\nexport type PopperContentEmits = typeof popperContentEmits\n\nexport type PopperContentInstance = InstanceType<typeof Content> & unknown\n\n/** @deprecated use `popperCoreConfigProps` instead, and it will be deprecated in the next major version */\nexport const usePopperCoreConfigProps = popperCoreConfigProps\n\n/** @deprecated use `popperContentProps` instead, and it will be deprecated in the next major version */\nexport const usePopperContentProps = popperContentProps\n\n/** @deprecated use `popperContentEmits` instead, and it will be deprecated in the next major version */\nexport const usePopperContentEmits = popperContentEmits\n\n/** @deprecated use `PopperCoreConfigProps` instead, and it will be deprecated in the next major version */\nexport type UsePopperCoreConfigProps = PopperCoreConfigProps\n\n/** @deprecated use `PopperContentProps` instead, and it will be deprecated in the next major version */\nexport type UsePopperContentProps = PopperContentProps\n\n/** @deprecated use `PopperContentInstance` instead, and it will be deprecated in the next major version */\nexport type ElPopperArrowContent = PopperContentInstance\n","import type { InjectionKey, Ref } from 'vue'\n\nexport const FOCUS_AFTER_TRAPPED = 'focus-trap.focus-after-trapped'\nexport const FOCUS_AFTER_RELEASED = 'focus-trap.focus-after-released'\nexport const FOCUSOUT_PREVENTED = 'focus-trap.focusout-prevented'\nexport const FOCUS_AFTER_TRAPPED_OPTS: EventInit = {\n  cancelable: true,\n  bubbles: false,\n}\nexport const FOCUSOUT_PREVENTED_OPTS: EventInit = {\n  cancelable: true,\n  bubbles: false,\n}\n\nexport const ON_TRAP_FOCUS_EVT = 'focusAfterTrapped'\nexport const ON_RELEASE_FOCUS_EVT = 'focusAfterReleased'\n\nexport type FocusTrapInjectionContext = {\n  focusTrapRef: Ref<HTMLElement | undefined>\n  onKeydown: (e: KeyboardEvent) => void\n}\n\nexport const FOCUS_TRAP_INJECTION_KEY: InjectionKey<FocusTrapInjectionContext> =\n  Symbol('elFocusTrap')\n","import { onBeforeUnmount, onMounted, ref } from 'vue'\nimport { focusElement } from '@pit-element-plus/utils'\nimport { FOCUSOUT_PREVENTED, FOCUSOUT_PREVENTED_OPTS } from './tokens'\n\nconst focusReason = ref<'pointer' | 'keyboard'>()\nconst lastUserFocusTimestamp = ref<number>(0)\nconst lastAutomatedFocusTimestamp = ref<number>(0)\nlet focusReasonUserCount = 0\n\nexport type FocusLayer = {\n  paused: boolean\n  pause: () => void\n  resume: () => void\n}\n\nexport type FocusStack = FocusLayer[]\n\nexport const obtainAllFocusableElements = (\n  element: HTMLElement\n): HTMLElement[] => {\n  const nodes: HTMLElement[] = []\n  const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT, {\n    acceptNode: (\n      node: Element & {\n        disabled: boolean\n        hidden: boolean\n        type: string\n        tabIndex: number\n      }\n    ) => {\n      const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden'\n      if (node.disabled || node.hidden || isHiddenInput)\n        return NodeFilter.FILTER_SKIP\n      return node.tabIndex >= 0 || node === document.activeElement\n        ? NodeFilter.FILTER_ACCEPT\n        : NodeFilter.FILTER_SKIP\n    },\n  })\n  while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement)\n\n  return nodes\n}\n\nexport const getVisibleElement = (\n  elements: HTMLElement[],\n  container: HTMLElement\n) => {\n  for (const element of elements) {\n    if (!isHidden(element, container)) return element\n  }\n}\n\nexport const isHidden = (element: HTMLElement, container: HTMLElement) => {\n  if (process.env.NODE_ENV === 'test') return false\n  if (getComputedStyle(element).visibility === 'hidden') return true\n\n  while (element) {\n    if (container && element === container) return false\n    if (getComputedStyle(element).display === 'none') return true\n    element = element.parentElement as HTMLElement\n  }\n\n  return false\n}\n\nexport const getEdges = (container: HTMLElement) => {\n  const focusable = obtainAllFocusableElements(container)\n  const first = getVisibleElement(focusable, container)\n  const last = getVisibleElement(focusable.reverse(), container)\n  return [first, last]\n}\n\nconst isSelectable = (\n  element: any\n): element is HTMLInputElement & { select: () => void } => {\n  return element instanceof HTMLInputElement && 'select' in element\n}\n\nexport const tryFocus = (\n  element?: HTMLElement | { focus: () => void } | null,\n  shouldSelect?: boolean\n) => {\n  if (element) {\n    const prevFocusedElement = document.activeElement\n\n    focusElement(element, { preventScroll: true })\n    lastAutomatedFocusTimestamp.value = window.performance.now()\n\n    if (\n      element !== prevFocusedElement &&\n      isSelectable(element) &&\n      shouldSelect\n    ) {\n      element.select()\n    }\n  }\n}\n\nfunction removeFromStack<T>(list: T[], item: T) {\n  const copy = [...list]\n\n  const idx = list.indexOf(item)\n\n  if (idx !== -1) {\n    copy.splice(idx, 1)\n  }\n  return copy\n}\n\nconst createFocusableStack = () => {\n  let stack = [] as FocusStack\n\n  const push = (layer: FocusLayer) => {\n    const currentLayer = stack[0]\n\n    if (currentLayer && layer !== currentLayer) {\n      currentLayer.pause()\n    }\n\n    stack = removeFromStack(stack, layer)\n    stack.unshift(layer)\n  }\n\n  const remove = (layer: FocusLayer) => {\n    stack = removeFromStack(stack, layer)\n    stack[0]?.resume?.()\n  }\n\n  return {\n    push,\n    remove,\n  }\n}\n\nexport const focusFirstDescendant = (\n  elements: HTMLElement[],\n  shouldSelect = false\n) => {\n  const prevFocusedElement = document.activeElement\n  for (const element of elements) {\n    tryFocus(element, shouldSelect)\n    if (document.activeElement !== prevFocusedElement) return\n  }\n}\n\nexport const focusableStack = createFocusableStack()\n\nexport const isFocusCausedByUserEvent = (): boolean => {\n  return lastUserFocusTimestamp.value > lastAutomatedFocusTimestamp.value\n}\n\nconst notifyFocusReasonPointer = () => {\n  focusReason.value = 'pointer'\n  lastUserFocusTimestamp.value = window.performance.now()\n}\n\nconst notifyFocusReasonKeydown = () => {\n  focusReason.value = 'keyboard'\n  lastUserFocusTimestamp.value = window.performance.now()\n}\n\nexport const useFocusReason = (): {\n  focusReason: typeof focusReason\n  lastUserFocusTimestamp: typeof lastUserFocusTimestamp\n  lastAutomatedFocusTimestamp: typeof lastAutomatedFocusTimestamp\n} => {\n  onMounted(() => {\n    if (focusReasonUserCount === 0) {\n      document.addEventListener('mousedown', notifyFocusReasonPointer)\n      document.addEventListener('touchstart', notifyFocusReasonPointer)\n      document.addEventListener('keydown', notifyFocusReasonKeydown)\n    }\n    focusReasonUserCount++\n  })\n\n  onBeforeUnmount(() => {\n    focusReasonUserCount--\n    if (focusReasonUserCount <= 0) {\n      document.removeEventListener('mousedown', notifyFocusReasonPointer)\n      document.removeEventListener('touchstart', notifyFocusReasonPointer)\n      document.removeEventListener('keydown', notifyFocusReasonKeydown)\n    }\n  })\n\n  return {\n    focusReason,\n    lastUserFocusTimestamp,\n    lastAutomatedFocusTimestamp,\n  }\n}\n\nexport const createFocusOutPreventedEvent = (\n  detail: CustomEventInit['detail']\n) => {\n  return new CustomEvent(FOCUSOUT_PREVENTED, {\n    ...FOCUSOUT_PREVENTED_OPTS,\n    detail,\n  })\n}\n","<template>\n  <slot :handle-keydown=\"onKeydown\" />\n</template>\n\n<script lang=\"ts\">\nimport {\n  defineComponent,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  ref,\n  unref,\n  watch,\n} from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { useEscapeKeydown } from '@pit-element-plus/hooks'\nimport { getEventCode, isString } from '@pit-element-plus/utils'\nimport {\n  createFocusOutPreventedEvent,\n  focusFirstDescendant,\n  focusableStack,\n  getEdges,\n  isFocusCausedByUserEvent,\n  obtainAllFocusableElements,\n  tryFocus,\n  useFocusReason,\n} from './utils'\nimport {\n  FOCUS_AFTER_RELEASED,\n  FOCUS_AFTER_TRAPPED,\n  FOCUS_AFTER_TRAPPED_OPTS,\n  FOCUS_TRAP_INJECTION_KEY,\n  ON_RELEASE_FOCUS_EVT,\n  ON_TRAP_FOCUS_EVT,\n} from './tokens'\n\nimport type { PropType } from 'vue'\nimport type { FocusLayer } from './utils'\n\nexport default defineComponent({\n  name: 'ElFocusTrap',\n  inheritAttrs: false,\n  props: {\n    loop: Boolean,\n    trapped: Boolean,\n    focusTrapEl: Object as PropType<HTMLElement>,\n    focusStartEl: {\n      type: [Object, String] as PropType<'container' | 'first' | HTMLElement>,\n      default: 'first',\n    },\n  },\n  emits: [\n    ON_TRAP_FOCUS_EVT,\n    ON_RELEASE_FOCUS_EVT,\n    'focusin',\n    'focusout',\n    'focusout-prevented',\n    'release-requested',\n  ],\n  setup(props, { emit }) {\n    const forwardRef = ref<HTMLElement | undefined>()\n    let lastFocusBeforeTrapped: HTMLElement | null\n    let lastFocusAfterTrapped: HTMLElement | null\n\n    const { focusReason } = useFocusReason()\n\n    useEscapeKeydown((event) => {\n      if (props.trapped && !focusLayer.paused) {\n        emit('release-requested', event)\n      }\n    })\n\n    const focusLayer: FocusLayer = {\n      paused: false,\n      pause() {\n        this.paused = true\n      },\n      resume() {\n        this.paused = false\n      },\n    }\n\n    const onKeydown = (e: KeyboardEvent) => {\n      if (!props.loop && !props.trapped) return\n      if (focusLayer.paused) return\n\n      const { altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e\n      const { loop } = props\n      const code = getEventCode(e)\n      const isTabbing =\n        code === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey\n\n      const currentFocusingEl = document.activeElement\n      if (isTabbing && currentFocusingEl) {\n        const container = currentTarget as HTMLElement\n        const [first, last] = getEdges(container)\n        const isTabbable = first && last\n        if (!isTabbable) {\n          if (currentFocusingEl === container) {\n            const focusoutPreventedEvent = createFocusOutPreventedEvent({\n              focusReason: focusReason.value,\n            })\n            emit('focusout-prevented', focusoutPreventedEvent)\n            if (!focusoutPreventedEvent.defaultPrevented) {\n              e.preventDefault()\n            }\n          }\n        } else {\n          if (!shiftKey && currentFocusingEl === last) {\n            const focusoutPreventedEvent = createFocusOutPreventedEvent({\n              focusReason: focusReason.value,\n            })\n            emit('focusout-prevented', focusoutPreventedEvent)\n            if (!focusoutPreventedEvent.defaultPrevented) {\n              e.preventDefault()\n              if (loop) tryFocus(first, true)\n            }\n          } else if (\n            shiftKey &&\n            [first, container].includes(currentFocusingEl as HTMLElement)\n          ) {\n            const focusoutPreventedEvent = createFocusOutPreventedEvent({\n              focusReason: focusReason.value,\n            })\n            emit('focusout-prevented', focusoutPreventedEvent)\n            if (!focusoutPreventedEvent.defaultPrevented) {\n              e.preventDefault()\n              if (loop) tryFocus(last, true)\n            }\n          }\n        }\n      }\n    }\n\n    provide(FOCUS_TRAP_INJECTION_KEY, {\n      focusTrapRef: forwardRef,\n      onKeydown,\n    })\n\n    watch(\n      () => props.focusTrapEl,\n      (focusTrapEl) => {\n        if (focusTrapEl) {\n          forwardRef.value = focusTrapEl\n        }\n      },\n      { immediate: true }\n    )\n\n    watch([forwardRef], ([forwardRef], [oldForwardRef]) => {\n      if (forwardRef) {\n        forwardRef.addEventListener('keydown', onKeydown)\n        forwardRef.addEventListener('focusin', onFocusIn)\n        forwardRef.addEventListener('focusout', onFocusOut)\n      }\n      if (oldForwardRef) {\n        oldForwardRef.removeEventListener('keydown', onKeydown)\n        oldForwardRef.removeEventListener('focusin', onFocusIn)\n        oldForwardRef.removeEventListener('focusout', onFocusOut)\n      }\n    })\n\n    const trapOnFocus = (e: Event) => {\n      emit(ON_TRAP_FOCUS_EVT, e)\n    }\n    const releaseOnFocus = (e: Event) => emit(ON_RELEASE_FOCUS_EVT, e)\n\n    const onFocusIn = (e: FocusEvent) => {\n      const trapContainer = unref(forwardRef)\n      if (!trapContainer) return\n\n      const target = e.target as HTMLElement | null\n      const relatedTarget = e.relatedTarget as HTMLElement | null\n      const isFocusedInTrap = target && trapContainer.contains(target)\n\n      if (!props.trapped) {\n        const isPrevFocusedInTrap =\n          relatedTarget && trapContainer.contains(relatedTarget)\n        if (!isPrevFocusedInTrap) {\n          lastFocusBeforeTrapped = relatedTarget\n        }\n      }\n\n      if (isFocusedInTrap) emit('focusin', e)\n\n      if (focusLayer.paused) return\n\n      if (props.trapped) {\n        if (isFocusedInTrap) {\n          lastFocusAfterTrapped = target\n        } else {\n          tryFocus(lastFocusAfterTrapped, true)\n        }\n      }\n    }\n\n    const onFocusOut = (e: Event) => {\n      const trapContainer = unref(forwardRef)\n      if (focusLayer.paused || !trapContainer) return\n\n      if (props.trapped) {\n        const relatedTarget = (e as FocusEvent)\n          .relatedTarget as HTMLElement | null\n        if (!isNil(relatedTarget) && !trapContainer.contains(relatedTarget)) {\n          // Give embedded focus layer time to pause this layer before reclaiming focus\n          // And only reclaim focus if it should currently be trapping\n          setTimeout(() => {\n            if (!focusLayer.paused && props.trapped) {\n              const focusoutPreventedEvent = createFocusOutPreventedEvent({\n                focusReason: focusReason.value,\n              })\n              emit('focusout-prevented', focusoutPreventedEvent)\n              if (!focusoutPreventedEvent.defaultPrevented) {\n                tryFocus(lastFocusAfterTrapped, true)\n              }\n            }\n          }, 0)\n        }\n      } else {\n        const target = e.target as HTMLElement | null\n        const isFocusedInTrap = target && trapContainer.contains(target)\n        if (!isFocusedInTrap) emit('focusout', e)\n      }\n    }\n\n    async function startTrap() {\n      // Wait for forwardRef to resolve\n      await nextTick()\n      const trapContainer = unref(forwardRef)\n      if (trapContainer) {\n        focusableStack.push(focusLayer)\n        const prevFocusedElement = trapContainer.contains(\n          document.activeElement\n        )\n          ? lastFocusBeforeTrapped\n          : document.activeElement\n        lastFocusBeforeTrapped = prevFocusedElement as HTMLElement | null\n        const isPrevFocusContained = trapContainer.contains(prevFocusedElement)\n        if (!isPrevFocusContained) {\n          const focusEvent = new Event(\n            FOCUS_AFTER_TRAPPED,\n            FOCUS_AFTER_TRAPPED_OPTS\n          )\n          trapContainer.addEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus)\n          trapContainer.dispatchEvent(focusEvent)\n          if (!focusEvent.defaultPrevented) {\n            nextTick(() => {\n              let focusStartEl = props.focusStartEl\n              if (!isString(focusStartEl)) {\n                tryFocus(focusStartEl)\n                if (document.activeElement !== focusStartEl) {\n                  focusStartEl = 'first'\n                }\n              }\n              if (focusStartEl === 'first') {\n                focusFirstDescendant(\n                  obtainAllFocusableElements(trapContainer),\n                  true\n                )\n              }\n              if (\n                document.activeElement === prevFocusedElement ||\n                focusStartEl === 'container'\n              ) {\n                tryFocus(trapContainer)\n              }\n            })\n          }\n        }\n      }\n    }\n\n    function stopTrap() {\n      const trapContainer = unref(forwardRef)\n\n      if (trapContainer) {\n        trapContainer.removeEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus)\n\n        const releasedEvent = new CustomEvent(FOCUS_AFTER_RELEASED, {\n          ...FOCUS_AFTER_TRAPPED_OPTS,\n          detail: {\n            focusReason: focusReason.value,\n          },\n        })\n        trapContainer.addEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus)\n        trapContainer.dispatchEvent(releasedEvent)\n        if (\n          !releasedEvent.defaultPrevented &&\n          (focusReason.value == 'keyboard' ||\n            !isFocusCausedByUserEvent() ||\n            trapContainer.contains(document.activeElement))\n        ) {\n          tryFocus(lastFocusBeforeTrapped ?? document.body)\n        }\n\n        trapContainer.removeEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus)\n        focusableStack.remove(focusLayer)\n        lastFocusBeforeTrapped = null\n        lastFocusAfterTrapped = null\n      }\n    }\n\n    onMounted(() => {\n      if (props.trapped) {\n        startTrap()\n      }\n\n      watch(\n        () => props.trapped,\n        (trapped) => {\n          if (trapped) {\n            startTrap()\n          } else {\n            stopTrap()\n          }\n        }\n      )\n    })\n\n    onBeforeUnmount(() => {\n      if (props.trapped) {\n        stopTrap()\n      }\n\n      if (forwardRef.value) {\n        forwardRef.value.removeEventListener('keydown', onKeydown)\n        forwardRef.value.removeEventListener('focusin', onFocusIn)\n        forwardRef.value.removeEventListener('focusout', onFocusOut)\n        forwardRef.value = undefined\n      }\n\n      lastFocusBeforeTrapped = null\n      lastFocusAfterTrapped = null\n    })\n\n    return {\n      onKeydown,\n    }\n  },\n})\n</script>\n","<template>\n  <slot :handle-keydown=\"onKeydown\" />\n</template>\n\n<script lang=\"ts\">\nimport {\n  defineComponent,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  ref,\n  unref,\n  watch,\n} from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { useEscapeKeydown } from '@pit-element-plus/hooks'\nimport { getEventCode, isString } from '@pit-element-plus/utils'\nimport {\n  createFocusOutPreventedEvent,\n  focusFirstDescendant,\n  focusableStack,\n  getEdges,\n  isFocusCausedByUserEvent,\n  obtainAllFocusableElements,\n  tryFocus,\n  useFocusReason,\n} from './utils'\nimport {\n  FOCUS_AFTER_RELEASED,\n  FOCUS_AFTER_TRAPPED,\n  FOCUS_AFTER_TRAPPED_OPTS,\n  FOCUS_TRAP_INJECTION_KEY,\n  ON_RELEASE_FOCUS_EVT,\n  ON_TRAP_FOCUS_EVT,\n} from './tokens'\n\nimport type { PropType } from 'vue'\nimport type { FocusLayer } from './utils'\n\nexport default defineComponent({\n  name: 'ElFocusTrap',\n  inheritAttrs: false,\n  props: {\n    loop: Boolean,\n    trapped: Boolean,\n    focusTrapEl: Object as PropType<HTMLElement>,\n    focusStartEl: {\n      type: [Object, String] as PropType<'container' | 'first' | HTMLElement>,\n      default: 'first',\n    },\n  },\n  emits: [\n    ON_TRAP_FOCUS_EVT,\n    ON_RELEASE_FOCUS_EVT,\n    'focusin',\n    'focusout',\n    'focusout-prevented',\n    'release-requested',\n  ],\n  setup(props, { emit }) {\n    const forwardRef = ref<HTMLElement | undefined>()\n    let lastFocusBeforeTrapped: HTMLElement | null\n    let lastFocusAfterTrapped: HTMLElement | null\n\n    const { focusReason } = useFocusReason()\n\n    useEscapeKeydown((event) => {\n      if (props.trapped && !focusLayer.paused) {\n        emit('release-requested', event)\n      }\n    })\n\n    const focusLayer: FocusLayer = {\n      paused: false,\n      pause() {\n        this.paused = true\n      },\n      resume() {\n        this.paused = false\n      },\n    }\n\n    const onKeydown = (e: KeyboardEvent) => {\n      if (!props.loop && !props.trapped) return\n      if (focusLayer.paused) return\n\n      const { altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e\n      const { loop } = props\n      const code = getEventCode(e)\n      const isTabbing =\n        code === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey\n\n      const currentFocusingEl = document.activeElement\n      if (isTabbing && currentFocusingEl) {\n        const container = currentTarget as HTMLElement\n        const [first, last] = getEdges(container)\n        const isTabbable = first && last\n        if (!isTabbable) {\n          if (currentFocusingEl === container) {\n            const focusoutPreventedEvent = createFocusOutPreventedEvent({\n              focusReason: focusReason.value,\n            })\n            emit('focusout-prevented', focusoutPreventedEvent)\n            if (!focusoutPreventedEvent.defaultPrevented) {\n              e.preventDefault()\n            }\n          }\n        } else {\n          if (!shiftKey && currentFocusingEl === last) {\n            const focusoutPreventedEvent = createFocusOutPreventedEvent({\n              focusReason: focusReason.value,\n            })\n            emit('focusout-prevented', focusoutPreventedEvent)\n            if (!focusoutPreventedEvent.defaultPrevented) {\n              e.preventDefault()\n              if (loop) tryFocus(first, true)\n            }\n          } else if (\n            shiftKey &&\n            [first, container].includes(currentFocusingEl as HTMLElement)\n          ) {\n            const focusoutPreventedEvent = createFocusOutPreventedEvent({\n              focusReason: focusReason.value,\n            })\n            emit('focusout-prevented', focusoutPreventedEvent)\n            if (!focusoutPreventedEvent.defaultPrevented) {\n              e.preventDefault()\n              if (loop) tryFocus(last, true)\n            }\n          }\n        }\n      }\n    }\n\n    provide(FOCUS_TRAP_INJECTION_KEY, {\n      focusTrapRef: forwardRef,\n      onKeydown,\n    })\n\n    watch(\n      () => props.focusTrapEl,\n      (focusTrapEl) => {\n        if (focusTrapEl) {\n          forwardRef.value = focusTrapEl\n        }\n      },\n      { immediate: true }\n    )\n\n    watch([forwardRef], ([forwardRef], [oldForwardRef]) => {\n      if (forwardRef) {\n        forwardRef.addEventListener('keydown', onKeydown)\n        forwardRef.addEventListener('focusin', onFocusIn)\n        forwardRef.addEventListener('focusout', onFocusOut)\n      }\n      if (oldForwardRef) {\n        oldForwardRef.removeEventListener('keydown', onKeydown)\n        oldForwardRef.removeEventListener('focusin', onFocusIn)\n        oldForwardRef.removeEventListener('focusout', onFocusOut)\n      }\n    })\n\n    const trapOnFocus = (e: Event) => {\n      emit(ON_TRAP_FOCUS_EVT, e)\n    }\n    const releaseOnFocus = (e: Event) => emit(ON_RELEASE_FOCUS_EVT, e)\n\n    const onFocusIn = (e: FocusEvent) => {\n      const trapContainer = unref(forwardRef)\n      if (!trapContainer) return\n\n      const target = e.target as HTMLElement | null\n      const relatedTarget = e.relatedTarget as HTMLElement | null\n      const isFocusedInTrap = target && trapContainer.contains(target)\n\n      if (!props.trapped) {\n        const isPrevFocusedInTrap =\n          relatedTarget && trapContainer.contains(relatedTarget)\n        if (!isPrevFocusedInTrap) {\n          lastFocusBeforeTrapped = relatedTarget\n        }\n      }\n\n      if (isFocusedInTrap) emit('focusin', e)\n\n      if (focusLayer.paused) return\n\n      if (props.trapped) {\n        if (isFocusedInTrap) {\n          lastFocusAfterTrapped = target\n        } else {\n          tryFocus(lastFocusAfterTrapped, true)\n        }\n      }\n    }\n\n    const onFocusOut = (e: Event) => {\n      const trapContainer = unref(forwardRef)\n      if (focusLayer.paused || !trapContainer) return\n\n      if (props.trapped) {\n        const relatedTarget = (e as FocusEvent)\n          .relatedTarget as HTMLElement | null\n        if (!isNil(relatedTarget) && !trapContainer.contains(relatedTarget)) {\n          // Give embedded focus layer time to pause this layer before reclaiming focus\n          // And only reclaim focus if it should currently be trapping\n          setTimeout(() => {\n            if (!focusLayer.paused && props.trapped) {\n              const focusoutPreventedEvent = createFocusOutPreventedEvent({\n                focusReason: focusReason.value,\n              })\n              emit('focusout-prevented', focusoutPreventedEvent)\n              if (!focusoutPreventedEvent.defaultPrevented) {\n                tryFocus(lastFocusAfterTrapped, true)\n              }\n            }\n          }, 0)\n        }\n      } else {\n        const target = e.target as HTMLElement | null\n        const isFocusedInTrap = target && trapContainer.contains(target)\n        if (!isFocusedInTrap) emit('focusout', e)\n      }\n    }\n\n    async function startTrap() {\n      // Wait for forwardRef to resolve\n      await nextTick()\n      const trapContainer = unref(forwardRef)\n      if (trapContainer) {\n        focusableStack.push(focusLayer)\n        const prevFocusedElement = trapContainer.contains(\n          document.activeElement\n        )\n          ? lastFocusBeforeTrapped\n          : document.activeElement\n        lastFocusBeforeTrapped = prevFocusedElement as HTMLElement | null\n        const isPrevFocusContained = trapContainer.contains(prevFocusedElement)\n        if (!isPrevFocusContained) {\n          const focusEvent = new Event(\n            FOCUS_AFTER_TRAPPED,\n            FOCUS_AFTER_TRAPPED_OPTS\n          )\n          trapContainer.addEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus)\n          trapContainer.dispatchEvent(focusEvent)\n          if (!focusEvent.defaultPrevented) {\n            nextTick(() => {\n              let focusStartEl = props.focusStartEl\n              if (!isString(focusStartEl)) {\n                tryFocus(focusStartEl)\n                if (document.activeElement !== focusStartEl) {\n                  focusStartEl = 'first'\n                }\n              }\n              if (focusStartEl === 'first') {\n                focusFirstDescendant(\n                  obtainAllFocusableElements(trapContainer),\n                  true\n                )\n              }\n              if (\n                document.activeElement === prevFocusedElement ||\n                focusStartEl === 'container'\n              ) {\n                tryFocus(trapContainer)\n              }\n            })\n          }\n        }\n      }\n    }\n\n    function stopTrap() {\n      const trapContainer = unref(forwardRef)\n\n      if (trapContainer) {\n        trapContainer.removeEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus)\n\n        const releasedEvent = new CustomEvent(FOCUS_AFTER_RELEASED, {\n          ...FOCUS_AFTER_TRAPPED_OPTS,\n          detail: {\n            focusReason: focusReason.value,\n          },\n        })\n        trapContainer.addEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus)\n        trapContainer.dispatchEvent(releasedEvent)\n        if (\n          !releasedEvent.defaultPrevented &&\n          (focusReason.value == 'keyboard' ||\n            !isFocusCausedByUserEvent() ||\n            trapContainer.contains(document.activeElement))\n        ) {\n          tryFocus(lastFocusBeforeTrapped ?? document.body)\n        }\n\n        trapContainer.removeEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus)\n        focusableStack.remove(focusLayer)\n        lastFocusBeforeTrapped = null\n        lastFocusAfterTrapped = null\n      }\n    }\n\n    onMounted(() => {\n      if (props.trapped) {\n        startTrap()\n      }\n\n      watch(\n        () => props.trapped,\n        (trapped) => {\n          if (trapped) {\n            startTrap()\n          } else {\n            stopTrap()\n          }\n        }\n      )\n    })\n\n    onBeforeUnmount(() => {\n      if (props.trapped) {\n        stopTrap()\n      }\n\n      if (forwardRef.value) {\n        forwardRef.value.removeEventListener('keydown', onKeydown)\n        forwardRef.value.removeEventListener('focusin', onFocusIn)\n        forwardRef.value.removeEventListener('focusout', onFocusOut)\n        forwardRef.value = undefined\n      }\n\n      lastFocusBeforeTrapped = null\n      lastFocusAfterTrapped = null\n    })\n\n    return {\n      onKeydown,\n    }\n  },\n})\n</script>\n","import ElFocusTrap from './src/focus-trap.vue'\n\nexport { ElFocusTrap }\n\nexport default ElFocusTrap\nexport * from './src/tokens'\nexport * from './src/utils'\n","import { componentSizes } from '@pit-element-plus/constants'\nimport {\n  buildProps,\n  definePropType,\n  isArray,\n  isBoolean,\n  isString,\n} from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { FormItemProp } from './form-item'\nimport type { FormRules } from './types'\n\nexport interface FormMetaProps {\n  /**\n   * @description Control the size of components in this form.\n   */\n  size?: ComponentSize\n  /**\n   * @description Whether to disable all components in this form. If set to `true`, it will override the `disabled` prop of the inner component.\n   */\n  disabled?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `FormMetaProps` instead.\n */\nexport const formMetaProps = buildProps({\n  /**\n   * @description Control the size of components in this form.\n   */\n  size: {\n    type: String,\n    values: componentSizes,\n  },\n  /**\n   * @description Whether to disable all components in this form. If set to `true`, it will override the `disabled` prop of the inner component.\n   */\n  disabled: Boolean,\n} as const)\n\nexport interface FormProps extends FormMetaProps {\n  /**\n   * @description Data of form component.\n   */\n  model?: Record<string, any>\n  /**\n   * @description Validation rules of form.\n   */\n  rules?: FormRules\n  /**\n   * @description Position of label. If set to `'left'` or `'right'`, `label-width` prop is also required.\n   */\n  labelPosition?: 'left' | 'right' | 'top'\n  /**\n   * @description Position of asterisk.\n   */\n  requireAsteriskPosition?: 'left' | 'right'\n  /**\n   * @description Width of label, e.g. `'50px'`. All its direct child form items will inherit this value. `auto` is supported.\n   */\n  labelWidth?: string | number\n  /**\n   * @description Suffix of the label.\n   */\n  labelSuffix?: string\n  /**\n   * @description Whether the form is inline.\n   */\n  inline?: boolean\n  /**\n   * @description Whether to display the error message inline with the form item.\n   */\n  inlineMessage?: boolean\n  /**\n   * @description Whether to display an icon indicating the validation result.\n   */\n  statusIcon?: boolean\n  /**\n   * @description Whether to show the error message.\n   */\n  showMessage?: boolean\n  /**\n   * @description Whether to trigger validation when the `rules` prop is changed.\n   */\n  validateOnRuleChange?: boolean\n  /**\n   * @description Whether to hide required fields should have a red asterisk (star) beside their labels.\n   */\n  hideRequiredAsterisk?: boolean\n  /**\n   * @description When validation fails, scroll to the first error form entry.\n   */\n  scrollToError?: boolean\n  /**\n   * @description When validation fails, it scrolls to the first error item based on the scrollIntoView option.\n   */\n  scrollIntoViewOptions?: ScrollIntoViewOptions | boolean\n  /**\n   * @description Whether to hide error messages. If set to `true`, it will override the `showMessage` prop.\n   */\n  hiddenMessage?: boolean\n  /**\n   * @description Whether to show error messages as a tooltip. If set to `true`, it will override the `showMessage` prop.\n   */\n  messageType?: boolean\n  /**\n   * @description Whether the form is used for search. If set to `true`, it will apply specific styles for search forms.\n   */\n  isSearch?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `FormProps` instead.\n */\nexport const formProps = buildProps({\n  ...formMetaProps,\n  /**\n   * @description Data of form component.\n   */\n  model: Object,\n  /**\n   * @description Validation rules of form.\n   */\n  rules: {\n    type: definePropType<FormRules>(Object),\n  },\n  /**\n   * @description Position of label. If set to `'left'` or `'right'`, `label-width` prop is also required.\n   */\n  labelPosition: {\n    type: String,\n    values: ['left', 'right', 'top'],\n    default: 'right',\n  },\n  /**\n   * @description Position of asterisk.\n   */\n  requireAsteriskPosition: {\n    type: String,\n    values: ['left', 'right'],\n    default: 'left',\n  },\n  /**\n   * @description Width of label, e.g. `'50px'`. All its direct child form items will inherit this value. `auto` is supported.\n   */\n  labelWidth: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description Suffix of the label.\n   */\n  labelSuffix: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description Whether the form is inline.\n   */\n  inline: Boolean,\n  /**\n   * @description Whether to display the error message inline with the form item.\n   */\n  inlineMessage: Boolean,\n  /**\n   * @description Whether to display an icon indicating the validation result.\n   */\n  statusIcon: Boolean,\n  /**\n   * @description Whether to show the error message.\n   */\n  showMessage: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Whether to trigger validation when the `rules` prop is changed.\n   */\n  validateOnRuleChange: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Whether to hide required fields should have a red asterisk (star) beside their labels.\n   */\n  hideRequiredAsterisk: Boolean,\n  /**\n   * @description When validation fails, scroll to the first error form entry.\n   */\n  scrollToError: Boolean,\n  /**\n   * @description When validation fails, it scrolls to the first error item based on the scrollIntoView option.\n   */\n  scrollIntoViewOptions: {\n    type: definePropType<ScrollIntoViewOptions | boolean>([Object, Boolean]),\n    default: true,\n  },\n  hiddenMessage: {\n    type: Boolean,\n    default: true,\n  },\n  messageType: {\n    type: Boolean,\n    default: true,\n  },\n  isSearch: {\n    type: Boolean,\n    default: false,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `FormProps` instead.\n */\nexport type FormPropsPublic = ExtractPublicPropTypes<typeof formProps>\n\n/**\n * @deprecated Removed after 3.0.0, Use `FormMetaProps` instead.\n */\nexport type FormMetaPropsPublic = ExtractPublicPropTypes<typeof formMetaProps>\n\nexport const formEmits = {\n  validate: (prop: FormItemProp, isValid: boolean, message: string) =>\n    (isArray(prop) || isString(prop)) &&\n    isBoolean(isValid) &&\n    isString(message),\n}\nexport type FormEmits = typeof formEmits\n","import type { InjectionKey } from 'vue'\nimport type { FormContext, FormItemContext } from './types'\n\nexport const formContextKey: InjectionKey<FormContext> =\n  Symbol('formContextKey')\nexport const formItemContextKey: InjectionKey<FormItemContext | undefined> =\n  Symbol('formItemContextKey')\n","import { computed, inject, ref, unref } from 'vue'\nimport { useGlobalSize } from '@pit-element-plus/hooks/use-size'\nimport { useProp } from '@pit-element-plus/hooks/use-prop'\nimport { formContextKey, formItemContextKey } from '../constants'\n\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { MaybeRef } from '@vueuse/core'\n\nexport const useFormSize = (\n  fallback?: MaybeRef<ComponentSize | undefined>,\n  ignore: Partial<Record<'prop' | 'form' | 'formItem' | 'global', boolean>> = {}\n) => {\n  const emptyRef = ref(undefined)\n\n  const size = ignore.prop ? emptyRef : useProp<ComponentSize>('size')\n  const globalConfig = ignore.global ? emptyRef : useGlobalSize()\n  const form = ignore.form\n    ? { size: undefined }\n    : inject(formContextKey, undefined)\n  const formItem = ignore.formItem\n    ? { size: undefined }\n    : inject(formItemContextKey, undefined)\n\n  return computed(\n    (): ComponentSize =>\n      size.value ||\n      unref(fallback) ||\n      formItem?.size ||\n      form?.size ||\n      globalConfig.value ||\n      ''\n  )\n}\n\nexport const useFormDisabled = (fallback?: MaybeRef<boolean | undefined>) => {\n  const disabled = useProp<boolean>('disabled')\n  const form = inject(formContextKey, undefined)\n\n  return computed(() => {\n    return disabled.value ?? unref(fallback) ?? form?.disabled ?? false\n  })\n}\n\n// These exports are used for preventing breaking changes\nexport const useSize = useFormSize\nexport const useDisabled = useFormDisabled\n","import {\n  computed,\n  getCurrentInstance,\n  inject,\n  onMounted,\n  onUnmounted,\n  ref,\n  toRef,\n  watch,\n} from 'vue'\nimport { useId } from '@pit-element-plus/hooks/use-id'\nimport { formContextKey, formItemContextKey } from '../constants'\n\nimport type { ComputedRef, Ref, WatchStopHandle } from 'vue'\nimport type { FormItemContext } from '../types'\n\nexport const useFormItem = () => {\n  const form = inject(formContextKey, undefined)\n  const formItem = inject(formItemContextKey, undefined)\n  return {\n    form,\n    formItem,\n  }\n}\n\nexport type IUseFormItemInputCommonProps = {\n  id?: string\n  label?: string | number | boolean | Record<string, any>\n  ariaLabel?: string | number | boolean | Record<string, any>\n}\n\nexport const useFormItemInputId = (\n  props: Partial<IUseFormItemInputCommonProps>,\n  {\n    formItemContext,\n    disableIdGeneration,\n    disableIdManagement,\n  }: {\n    formItemContext?: FormItemContext\n    disableIdGeneration?: ComputedRef<boolean> | Ref<boolean>\n    disableIdManagement?: ComputedRef<boolean> | Ref<boolean>\n  }\n) => {\n  if (!disableIdGeneration) {\n    disableIdGeneration = ref<boolean>(false)\n  }\n  if (!disableIdManagement) {\n    disableIdManagement = ref<boolean>(false)\n  }\n\n  const instance = getCurrentInstance()\n\n  const inLabel = () => {\n    let parent = instance?.parent\n    while (parent) {\n      if (parent.type.name === 'ElFormItem') {\n        return false\n      }\n      if (parent.type.name === 'ElLabelWrap') {\n        return true\n      }\n      parent = parent.parent\n    }\n    return false\n  }\n\n  const inputId = ref<string>()\n  let idUnwatch: WatchStopHandle | undefined = undefined\n\n  const isLabeledByFormItem = computed<boolean>(() => {\n    return !!(\n      !(props.label || props.ariaLabel) &&\n      formItemContext &&\n      formItemContext.inputIds &&\n      formItemContext.inputIds?.length <= 1\n    )\n  })\n\n  // Generate id for ElFormItem label if not provided as prop\n  onMounted(() => {\n    idUnwatch = watch(\n      [toRef(props, 'id'), disableIdGeneration] as any,\n      ([id, disableIdGeneration]: [string, boolean]) => {\n        const newId = id ?? (!disableIdGeneration ? useId().value : undefined)\n        if (newId !== inputId.value) {\n          if (formItemContext?.removeInputId && !inLabel()) {\n            inputId.value && formItemContext.removeInputId(inputId.value)\n            if (!disableIdManagement?.value && !disableIdGeneration && newId) {\n              formItemContext.addInputId(newId)\n            }\n          }\n          inputId.value = newId\n        }\n      },\n      { immediate: true }\n    )\n  })\n\n  onUnmounted(() => {\n    idUnwatch && idUnwatch()\n    if (formItemContext?.removeInputId) {\n      inputId.value && formItemContext.removeInputId(inputId.value)\n    }\n  })\n\n  return {\n    isLabeledByFormItem,\n    inputId,\n  }\n}\n","import { computed, ref } from 'vue'\nimport { debugWarn, ensureArray, isArray } from '@pit-element-plus/utils'\n\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { FormItemContext } from './types'\nimport type { FormItemProp } from './form-item'\n\nconst SCOPE = 'ElForm'\n\nexport function useFormLabelWidth() {\n  const potentialLabelWidthArr = ref<number[]>([])\n\n  const autoLabelWidth = computed(() => {\n    if (!potentialLabelWidthArr.value.length) return '0'\n    const max = Math.max(...potentialLabelWidthArr.value)\n    return max ? `${max}px` : ''\n  })\n\n  function getLabelWidthIndex(width: number) {\n    const index = potentialLabelWidthArr.value.indexOf(width)\n    if (index === -1 && autoLabelWidth.value === '0') {\n      debugWarn(SCOPE, `unexpected width ${width}`)\n    }\n    return index\n  }\n\n  function registerLabelWidth(val: number, oldVal: number) {\n    if (val && oldVal) {\n      const index = getLabelWidthIndex(oldVal)\n      potentialLabelWidthArr.value.splice(index, 1, val)\n    } else if (val) {\n      potentialLabelWidthArr.value.push(val)\n    }\n  }\n\n  function deregisterLabelWidth(val: number) {\n    const index = getLabelWidthIndex(val)\n    if (index > -1) {\n      potentialLabelWidthArr.value.splice(index, 1)\n    }\n  }\n\n  return {\n    autoLabelWidth,\n    registerLabelWidth,\n    deregisterLabelWidth,\n  }\n}\n\nexport const filterFields = (\n  fields: FormItemContext[],\n  props: Arrayable<FormItemProp>\n) => {\n  const normalized = ensureArray(props).map((prop) =>\n    isArray(prop) ? prop.join('.') : prop\n  )\n  return normalized.length > 0\n    ? fields.filter(\n        (field) => field.propString && normalized.includes(field.propString)\n      )\n    : fields\n}\n","<template>\n  <form ref=\"formRef\" :class=\"formClasses\">\n    <slot />\n  </form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, ref, toRefs, watch } from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n  debugWarn,\n  ensureArray,\n  getProp,\n  isArray,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ElMessage } from '@pit-element-plus/components'\nimport { useFormSize } from './hooks'\nimport { formContextKey } from './constants'\nimport { formEmits } from './form'\nimport { filterFields, useFormLabelWidth } from './utils'\n\nimport type { ValidateFieldsError } from 'async-validator'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { FormProps } from './form'\nimport type {\n  FormContext,\n  FormItemContext,\n  FormValidateCallback,\n  FormValidationResult,\n} from './types'\nimport type { FormItemProp } from './form-item'\n\nconst COMPONENT_NAME = 'ElForm'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<FormProps>(), {\n  labelPosition: 'right',\n  requireAsteriskPosition: 'left',\n  labelWidth: '',\n  labelSuffix: '',\n  showMessage: true,\n  validateOnRuleChange: true,\n  scrollIntoViewOptions: true,\n  hiddenMessage: true,\n  messageType: true,\n  isSearch: false,\n})\nconst emit = defineEmits(formEmits)\n\nconst formRef = ref<HTMLElement>()\nconst fields = reactive<FormItemContext[]>([])\nconst initialValues = new Map<string, any>()\n\nconst formSize = useFormSize()\nconst ns = useNamespace('form')\nconst formClasses = computed(() => {\n  const { labelPosition, inline } = props\n  return [\n    ns.b(),\n    ns.m(formSize.value || 'default'),\n    {\n      [ns.m(`label-${labelPosition}`)]: labelPosition,\n      [ns.m('inline')]: inline,\n    },\n  ]\n})\n\nconst getMessageType = computed(() => {\n  return props.messageType\n})\n\nconst getField: FormContext['getField'] = (prop) => {\n  return filterFields(fields, [prop])[0]\n}\n\nconst addField: FormContext['addField'] = (field) => {\n  fields.push(field)\n  if (field.propString) {\n    if (initialValues.has(field.propString)) {\n      field.setInitialValue(initialValues.get(field.propString))\n    } else {\n      initialValues.set(field.propString, cloneDeep(field.fieldValue))\n    }\n  }\n}\n\nconst removeField: FormContext['removeField'] = (field) => {\n  if (field.prop) {\n    fields.splice(fields.indexOf(field), 1)\n  }\n}\n\nconst setInitialValues: FormContext['setInitialValues'] = (initModel) => {\n  if (!props.model) {\n    debugWarn(COMPONENT_NAME, 'model is required for setInitialValues to work.')\n    return\n  }\n  if (!initModel) {\n    debugWarn(\n      COMPONENT_NAME,\n      'initModel is required for setInitialValues to work.'\n    )\n    return\n  }\n\n  for (const key of initialValues.keys()) {\n    initialValues.set(key, cloneDeep(getProp(initModel, key).value))\n  }\n  fields.forEach((field) => {\n    if (field.prop) {\n      field.setInitialValue(getProp(initModel, field.prop).value)\n    }\n  })\n}\n\nconst resetFields: FormContext['resetFields'] = (properties = []) => {\n  if (!props.model) {\n    debugWarn(COMPONENT_NAME, 'model is required for resetFields to work.')\n    return\n  }\n\n  filterFields(fields, properties).forEach((field) => field.resetField())\n\n  const activePropStrings = new Set(\n    fields.map((f) => f.propString).filter(Boolean)\n  )\n  const propsToCheck =\n    properties.length > 0\n      ? ensureArray(properties).map((p) => (isArray(p) ? p.join('.') : p))\n      : [...initialValues.keys()]\n\n  for (const propString of propsToCheck) {\n    if (!activePropStrings.has(propString) && initialValues.has(propString)) {\n      getProp(props.model, propString).value = cloneDeep(\n        initialValues.get(propString)\n      )\n    }\n  }\n}\n\nconst clearValidate: FormContext['clearValidate'] = (props = []) => {\n  filterFields(fields, props).forEach((field) => field.clearValidate())\n}\n\nconst isValidatable = computed(() => {\n  const hasModel = !!props.model\n  if (!hasModel) {\n    debugWarn(COMPONENT_NAME, 'model is required for validate to work.')\n  }\n  return hasModel\n})\n\nconst obtainValidateFields = (props: Arrayable<FormItemProp>) => {\n  if (fields.length === 0) return []\n\n  const filteredFields = filterFields(fields, props)\n  if (!filteredFields.length) {\n    debugWarn(COMPONENT_NAME, 'please pass correct props!')\n    return []\n  }\n  return filteredFields\n}\n\nconst validate = async (\n  callback?: FormValidateCallback\n): FormValidationResult => validateField(undefined, callback)\n\nconst doValidateField = async (\n  props: Arrayable<FormItemProp> = []\n): Promise<boolean> => {\n  if (!isValidatable.value) return false\n\n  const fields = obtainValidateFields(props)\n  if (fields.length === 0) return true\n\n  let validationErrors: ValidateFieldsError = {}\n  const validationData: any = []\n  for (const field of fields) {\n    try {\n      await field.validate('')\n      if (field.validateState === 'error' && !field.error) field.resetField()\n    } catch (fields) {\n      const fieldsData = fields as any\n      const prop = field.prop as any\n      const errorFields = fieldsData[prop] as any\n      validationData.push(errorFields)\n      validationErrors = {\n        ...validationErrors,\n        ...(fields as ValidateFieldsError),\n      }\n    }\n  }\n\n  if (getMessageType.value) {\n    if (validationData.length > 0) {\n      const message = validationData[0][0].message as string\n      ElMessage({\n        message,\n        type: 'error',\n      })\n    }\n  }\n\n  if (Object.keys(validationErrors).length === 0) return true\n  return Promise.reject(validationErrors)\n}\n\nconst validateField: FormContext['validateField'] = async (\n  modelProps = [],\n  callback\n) => {\n  let result = false\n  const shouldThrow = !isFunction(callback)\n  try {\n    result = await doValidateField(modelProps)\n    // When result is false meaning that the fields are not validatable\n    if (result === true) {\n      await callback?.(result)\n    }\n    return result\n  } catch (e) {\n    if (e instanceof Error) throw e\n\n    const invalidFields = e as ValidateFieldsError\n\n    if (props.scrollToError) {\n      // form-item may be dynamically rendered based on the judgment conditions, and the order in invalidFields is uncertain.\n      // Therefore, the first form field with an error is determined by directly looking for the rendered element.\n      if (formRef.value) {\n        const formItem = formRef.value.querySelector(`.${ns.b()}-item.is-error`)\n        formItem?.scrollIntoView(props.scrollIntoViewOptions)\n      }\n    }\n    !result && (await callback?.(false, invalidFields))\n    return shouldThrow && Promise.reject(invalidFields)\n  }\n}\n\nconst scrollToField = (prop: FormItemProp) => {\n  const field = getField(prop)\n  if (field) {\n    field.$el?.scrollIntoView(props.scrollIntoViewOptions)\n  }\n}\n\nwatch(\n  () => props.rules,\n  () => {\n    if (props.validateOnRuleChange) {\n      validate().catch((err) => debugWarn(err))\n    }\n  },\n  { deep: true, flush: 'post' }\n)\n\nprovide(\n  formContextKey,\n  reactive({\n    ...toRefs(props),\n    emit,\n\n    resetFields,\n    clearValidate,\n    validateField,\n    getField,\n    addField,\n    removeField,\n    setInitialValues,\n\n    ...useFormLabelWidth(),\n  })\n)\n\ndefineExpose({\n  /**\n   * @description Validate the whole form. Receives a callback or returns `Promise`.\n   */\n  validate,\n  /**\n   * @description Validate specified fields.\n   */\n  validateField,\n  /**\n   * @description Reset specified fields and remove validation result.\n   */\n  resetFields,\n  /**\n   * @description Clear validation message for specified fields.\n   */\n  clearValidate,\n  /**\n   * @description Scroll to the specified fields.\n   */\n  scrollToField,\n  /**\n   * @description Get a field context.\n   */\n  getField,\n  /**\n   * @description All fields context.\n   */\n  fields,\n  /**\n   * @description Set initial values for form fields. When `resetFields` is called, fields will reset to these values.\n   */\n  setInitialValues,\n})\n</script>\n","<template>\n  <form ref=\"formRef\" :class=\"formClasses\">\n    <slot />\n  </form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, ref, toRefs, watch } from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n  debugWarn,\n  ensureArray,\n  getProp,\n  isArray,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ElMessage } from '@pit-element-plus/components'\nimport { useFormSize } from './hooks'\nimport { formContextKey } from './constants'\nimport { formEmits } from './form'\nimport { filterFields, useFormLabelWidth } from './utils'\n\nimport type { ValidateFieldsError } from 'async-validator'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { FormProps } from './form'\nimport type {\n  FormContext,\n  FormItemContext,\n  FormValidateCallback,\n  FormValidationResult,\n} from './types'\nimport type { FormItemProp } from './form-item'\n\nconst COMPONENT_NAME = 'ElForm'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<FormProps>(), {\n  labelPosition: 'right',\n  requireAsteriskPosition: 'left',\n  labelWidth: '',\n  labelSuffix: '',\n  showMessage: true,\n  validateOnRuleChange: true,\n  scrollIntoViewOptions: true,\n  hiddenMessage: true,\n  messageType: true,\n  isSearch: false,\n})\nconst emit = defineEmits(formEmits)\n\nconst formRef = ref<HTMLElement>()\nconst fields = reactive<FormItemContext[]>([])\nconst initialValues = new Map<string, any>()\n\nconst formSize = useFormSize()\nconst ns = useNamespace('form')\nconst formClasses = computed(() => {\n  const { labelPosition, inline } = props\n  return [\n    ns.b(),\n    ns.m(formSize.value || 'default'),\n    {\n      [ns.m(`label-${labelPosition}`)]: labelPosition,\n      [ns.m('inline')]: inline,\n    },\n  ]\n})\n\nconst getMessageType = computed(() => {\n  return props.messageType\n})\n\nconst getField: FormContext['getField'] = (prop) => {\n  return filterFields(fields, [prop])[0]\n}\n\nconst addField: FormContext['addField'] = (field) => {\n  fields.push(field)\n  if (field.propString) {\n    if (initialValues.has(field.propString)) {\n      field.setInitialValue(initialValues.get(field.propString))\n    } else {\n      initialValues.set(field.propString, cloneDeep(field.fieldValue))\n    }\n  }\n}\n\nconst removeField: FormContext['removeField'] = (field) => {\n  if (field.prop) {\n    fields.splice(fields.indexOf(field), 1)\n  }\n}\n\nconst setInitialValues: FormContext['setInitialValues'] = (initModel) => {\n  if (!props.model) {\n    debugWarn(COMPONENT_NAME, 'model is required for setInitialValues to work.')\n    return\n  }\n  if (!initModel) {\n    debugWarn(\n      COMPONENT_NAME,\n      'initModel is required for setInitialValues to work.'\n    )\n    return\n  }\n\n  for (const key of initialValues.keys()) {\n    initialValues.set(key, cloneDeep(getProp(initModel, key).value))\n  }\n  fields.forEach((field) => {\n    if (field.prop) {\n      field.setInitialValue(getProp(initModel, field.prop).value)\n    }\n  })\n}\n\nconst resetFields: FormContext['resetFields'] = (properties = []) => {\n  if (!props.model) {\n    debugWarn(COMPONENT_NAME, 'model is required for resetFields to work.')\n    return\n  }\n\n  filterFields(fields, properties).forEach((field) => field.resetField())\n\n  const activePropStrings = new Set(\n    fields.map((f) => f.propString).filter(Boolean)\n  )\n  const propsToCheck =\n    properties.length > 0\n      ? ensureArray(properties).map((p) => (isArray(p) ? p.join('.') : p))\n      : [...initialValues.keys()]\n\n  for (const propString of propsToCheck) {\n    if (!activePropStrings.has(propString) && initialValues.has(propString)) {\n      getProp(props.model, propString).value = cloneDeep(\n        initialValues.get(propString)\n      )\n    }\n  }\n}\n\nconst clearValidate: FormContext['clearValidate'] = (props = []) => {\n  filterFields(fields, props).forEach((field) => field.clearValidate())\n}\n\nconst isValidatable = computed(() => {\n  const hasModel = !!props.model\n  if (!hasModel) {\n    debugWarn(COMPONENT_NAME, 'model is required for validate to work.')\n  }\n  return hasModel\n})\n\nconst obtainValidateFields = (props: Arrayable<FormItemProp>) => {\n  if (fields.length === 0) return []\n\n  const filteredFields = filterFields(fields, props)\n  if (!filteredFields.length) {\n    debugWarn(COMPONENT_NAME, 'please pass correct props!')\n    return []\n  }\n  return filteredFields\n}\n\nconst validate = async (\n  callback?: FormValidateCallback\n): FormValidationResult => validateField(undefined, callback)\n\nconst doValidateField = async (\n  props: Arrayable<FormItemProp> = []\n): Promise<boolean> => {\n  if (!isValidatable.value) return false\n\n  const fields = obtainValidateFields(props)\n  if (fields.length === 0) return true\n\n  let validationErrors: ValidateFieldsError = {}\n  const validationData: any = []\n  for (const field of fields) {\n    try {\n      await field.validate('')\n      if (field.validateState === 'error' && !field.error) field.resetField()\n    } catch (fields) {\n      const fieldsData = fields as any\n      const prop = field.prop as any\n      const errorFields = fieldsData[prop] as any\n      validationData.push(errorFields)\n      validationErrors = {\n        ...validationErrors,\n        ...(fields as ValidateFieldsError),\n      }\n    }\n  }\n\n  if (getMessageType.value) {\n    if (validationData.length > 0) {\n      const message = validationData[0][0].message as string\n      ElMessage({\n        message,\n        type: 'error',\n      })\n    }\n  }\n\n  if (Object.keys(validationErrors).length === 0) return true\n  return Promise.reject(validationErrors)\n}\n\nconst validateField: FormContext['validateField'] = async (\n  modelProps = [],\n  callback\n) => {\n  let result = false\n  const shouldThrow = !isFunction(callback)\n  try {\n    result = await doValidateField(modelProps)\n    // When result is false meaning that the fields are not validatable\n    if (result === true) {\n      await callback?.(result)\n    }\n    return result\n  } catch (e) {\n    if (e instanceof Error) throw e\n\n    const invalidFields = e as ValidateFieldsError\n\n    if (props.scrollToError) {\n      // form-item may be dynamically rendered based on the judgment conditions, and the order in invalidFields is uncertain.\n      // Therefore, the first form field with an error is determined by directly looking for the rendered element.\n      if (formRef.value) {\n        const formItem = formRef.value.querySelector(`.${ns.b()}-item.is-error`)\n        formItem?.scrollIntoView(props.scrollIntoViewOptions)\n      }\n    }\n    !result && (await callback?.(false, invalidFields))\n    return shouldThrow && Promise.reject(invalidFields)\n  }\n}\n\nconst scrollToField = (prop: FormItemProp) => {\n  const field = getField(prop)\n  if (field) {\n    field.$el?.scrollIntoView(props.scrollIntoViewOptions)\n  }\n}\n\nwatch(\n  () => props.rules,\n  () => {\n    if (props.validateOnRuleChange) {\n      validate().catch((err) => debugWarn(err))\n    }\n  },\n  { deep: true, flush: 'post' }\n)\n\nprovide(\n  formContextKey,\n  reactive({\n    ...toRefs(props),\n    emit,\n\n    resetFields,\n    clearValidate,\n    validateField,\n    getField,\n    addField,\n    removeField,\n    setInitialValues,\n\n    ...useFormLabelWidth(),\n  })\n)\n\ndefineExpose({\n  /**\n   * @description Validate the whole form. Receives a callback or returns `Promise`.\n   */\n  validate,\n  /**\n   * @description Validate specified fields.\n   */\n  validateField,\n  /**\n   * @description Reset specified fields and remove validation result.\n   */\n  resetFields,\n  /**\n   * @description Clear validation message for specified fields.\n   */\n  clearValidate,\n  /**\n   * @description Scroll to the specified fields.\n   */\n  scrollToField,\n  /**\n   * @description Get a field context.\n   */\n  getField,\n  /**\n   * @description All fields context.\n   */\n  fields,\n  /**\n   * @description Set initial values for form fields. When `resetFields` is called, fields will reset to these values.\n   */\n  setInitialValues,\n})\n</script>\n","<template>\n  <form ref=\"formRef\" :class=\"formClasses\">\n    <slot />\n  </form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, ref, toRefs, watch } from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n  debugWarn,\n  ensureArray,\n  getProp,\n  isArray,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ElMessage } from '@pit-element-plus/components'\nimport { useFormSize } from './hooks'\nimport { formContextKey } from './constants'\nimport { formEmits } from './form'\nimport { filterFields, useFormLabelWidth } from './utils'\n\nimport type { ValidateFieldsError } from 'async-validator'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { FormProps } from './form'\nimport type {\n  FormContext,\n  FormItemContext,\n  FormValidateCallback,\n  FormValidationResult,\n} from './types'\nimport type { FormItemProp } from './form-item'\n\nconst COMPONENT_NAME = 'ElForm'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<FormProps>(), {\n  labelPosition: 'right',\n  requireAsteriskPosition: 'left',\n  labelWidth: '',\n  labelSuffix: '',\n  showMessage: true,\n  validateOnRuleChange: true,\n  scrollIntoViewOptions: true,\n  hiddenMessage: true,\n  messageType: true,\n  isSearch: false,\n})\nconst emit = defineEmits(formEmits)\n\nconst formRef = ref<HTMLElement>()\nconst fields = reactive<FormItemContext[]>([])\nconst initialValues = new Map<string, any>()\n\nconst formSize = useFormSize()\nconst ns = useNamespace('form')\nconst formClasses = computed(() => {\n  const { labelPosition, inline } = props\n  return [\n    ns.b(),\n    ns.m(formSize.value || 'default'),\n    {\n      [ns.m(`label-${labelPosition}`)]: labelPosition,\n      [ns.m('inline')]: inline,\n    },\n  ]\n})\n\nconst getMessageType = computed(() => {\n  return props.messageType\n})\n\nconst getField: FormContext['getField'] = (prop) => {\n  return filterFields(fields, [prop])[0]\n}\n\nconst addField: FormContext['addField'] = (field) => {\n  fields.push(field)\n  if (field.propString) {\n    if (initialValues.has(field.propString)) {\n      field.setInitialValue(initialValues.get(field.propString))\n    } else {\n      initialValues.set(field.propString, cloneDeep(field.fieldValue))\n    }\n  }\n}\n\nconst removeField: FormContext['removeField'] = (field) => {\n  if (field.prop) {\n    fields.splice(fields.indexOf(field), 1)\n  }\n}\n\nconst setInitialValues: FormContext['setInitialValues'] = (initModel) => {\n  if (!props.model) {\n    debugWarn(COMPONENT_NAME, 'model is required for setInitialValues to work.')\n    return\n  }\n  if (!initModel) {\n    debugWarn(\n      COMPONENT_NAME,\n      'initModel is required for setInitialValues to work.'\n    )\n    return\n  }\n\n  for (const key of initialValues.keys()) {\n    initialValues.set(key, cloneDeep(getProp(initModel, key).value))\n  }\n  fields.forEach((field) => {\n    if (field.prop) {\n      field.setInitialValue(getProp(initModel, field.prop).value)\n    }\n  })\n}\n\nconst resetFields: FormContext['resetFields'] = (properties = []) => {\n  if (!props.model) {\n    debugWarn(COMPONENT_NAME, 'model is required for resetFields to work.')\n    return\n  }\n\n  filterFields(fields, properties).forEach((field) => field.resetField())\n\n  const activePropStrings = new Set(\n    fields.map((f) => f.propString).filter(Boolean)\n  )\n  const propsToCheck =\n    properties.length > 0\n      ? ensureArray(properties).map((p) => (isArray(p) ? p.join('.') : p))\n      : [...initialValues.keys()]\n\n  for (const propString of propsToCheck) {\n    if (!activePropStrings.has(propString) && initialValues.has(propString)) {\n      getProp(props.model, propString).value = cloneDeep(\n        initialValues.get(propString)\n      )\n    }\n  }\n}\n\nconst clearValidate: FormContext['clearValidate'] = (props = []) => {\n  filterFields(fields, props).forEach((field) => field.clearValidate())\n}\n\nconst isValidatable = computed(() => {\n  const hasModel = !!props.model\n  if (!hasModel) {\n    debugWarn(COMPONENT_NAME, 'model is required for validate to work.')\n  }\n  return hasModel\n})\n\nconst obtainValidateFields = (props: Arrayable<FormItemProp>) => {\n  if (fields.length === 0) return []\n\n  const filteredFields = filterFields(fields, props)\n  if (!filteredFields.length) {\n    debugWarn(COMPONENT_NAME, 'please pass correct props!')\n    return []\n  }\n  return filteredFields\n}\n\nconst validate = async (\n  callback?: FormValidateCallback\n): FormValidationResult => validateField(undefined, callback)\n\nconst doValidateField = async (\n  props: Arrayable<FormItemProp> = []\n): Promise<boolean> => {\n  if (!isValidatable.value) return false\n\n  const fields = obtainValidateFields(props)\n  if (fields.length === 0) return true\n\n  let validationErrors: ValidateFieldsError = {}\n  const validationData: any = []\n  for (const field of fields) {\n    try {\n      await field.validate('')\n      if (field.validateState === 'error' && !field.error) field.resetField()\n    } catch (fields) {\n      const fieldsData = fields as any\n      const prop = field.prop as any\n      const errorFields = fieldsData[prop] as any\n      validationData.push(errorFields)\n      validationErrors = {\n        ...validationErrors,\n        ...(fields as ValidateFieldsError),\n      }\n    }\n  }\n\n  if (getMessageType.value) {\n    if (validationData.length > 0) {\n      const message = validationData[0][0].message as string\n      ElMessage({\n        message,\n        type: 'error',\n      })\n    }\n  }\n\n  if (Object.keys(validationErrors).length === 0) return true\n  return Promise.reject(validationErrors)\n}\n\nconst validateField: FormContext['validateField'] = async (\n  modelProps = [],\n  callback\n) => {\n  let result = false\n  const shouldThrow = !isFunction(callback)\n  try {\n    result = await doValidateField(modelProps)\n    // When result is false meaning that the fields are not validatable\n    if (result === true) {\n      await callback?.(result)\n    }\n    return result\n  } catch (e) {\n    if (e instanceof Error) throw e\n\n    const invalidFields = e as ValidateFieldsError\n\n    if (props.scrollToError) {\n      // form-item may be dynamically rendered based on the judgment conditions, and the order in invalidFields is uncertain.\n      // Therefore, the first form field with an error is determined by directly looking for the rendered element.\n      if (formRef.value) {\n        const formItem = formRef.value.querySelector(`.${ns.b()}-item.is-error`)\n        formItem?.scrollIntoView(props.scrollIntoViewOptions)\n      }\n    }\n    !result && (await callback?.(false, invalidFields))\n    return shouldThrow && Promise.reject(invalidFields)\n  }\n}\n\nconst scrollToField = (prop: FormItemProp) => {\n  const field = getField(prop)\n  if (field) {\n    field.$el?.scrollIntoView(props.scrollIntoViewOptions)\n  }\n}\n\nwatch(\n  () => props.rules,\n  () => {\n    if (props.validateOnRuleChange) {\n      validate().catch((err) => debugWarn(err))\n    }\n  },\n  { deep: true, flush: 'post' }\n)\n\nprovide(\n  formContextKey,\n  reactive({\n    ...toRefs(props),\n    emit,\n\n    resetFields,\n    clearValidate,\n    validateField,\n    getField,\n    addField,\n    removeField,\n    setInitialValues,\n\n    ...useFormLabelWidth(),\n  })\n)\n\ndefineExpose({\n  /**\n   * @description Validate the whole form. Receives a callback or returns `Promise`.\n   */\n  validate,\n  /**\n   * @description Validate specified fields.\n   */\n  validateField,\n  /**\n   * @description Reset specified fields and remove validation result.\n   */\n  resetFields,\n  /**\n   * @description Clear validation message for specified fields.\n   */\n  clearValidate,\n  /**\n   * @description Scroll to the specified fields.\n   */\n  scrollToField,\n  /**\n   * @description Get a field context.\n   */\n  getField,\n  /**\n   * @description All fields context.\n   */\n  fields,\n  /**\n   * @description Set initial values for form fields. When `resetFields` is called, fields will reset to these values.\n   */\n  setInitialValues,\n})\n</script>\n","import { componentSizes } from '@pit-element-plus/constants'\nimport { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { FormItemRule } from './types'\n\nexport const formItemValidateStates = [\n  '',\n  'error',\n  'validating',\n  'success',\n] as const\nexport type FormItemValidateState = (typeof formItemValidateStates)[number]\n\nexport type FormItemProp = Arrayable<string>\n\nexport interface FormItemProps {\n  /**\n   * @description Label text.\n   */\n  label?: string\n  /**\n   * @description Width of label, e.g. `'50px'`. `'auto'` is supported.\n   */\n  labelWidth?: string | number\n  /**\n   * @description Position of label. If set to `'left'` or `'right'`, `label-width` prop is also required. The default is extend from `form label-position`.\n   */\n  labelPosition?: 'left' | 'right' | 'top' | ''\n  /**\n   * @description  A key of `model`. It could be an array of property paths (e.g `['a', 'b', '0']`). In the use of `validate` and `resetFields` method, the attribute is required.\n   */\n  prop?: FormItemProp\n  /**\n   * @description Whether the field is required or not, will be determined by validation rules if omitted.\n   */\n  required?: boolean\n  /**\n   * @description Validation rules of form, see the [following table](#formitemrule), more advanced usage at [async-validator](https://github.com/yiminghe/async-validator).\n   */\n  rules?: Arrayable<FormItemRule>\n  /**\n   * @description Field error message, set its value and the field will validate error and show this message immediately.\n   */\n  error?: string\n  /**\n   * @description Validation state of formItem.\n   */\n  validateStatus?: FormItemValidateState\n  /**\n   * @description Same as for in native label.\n   */\n  for?: string\n  /**\n   * @description Inline style validate message.\n   */\n  inlineMessage?: boolean\n  /**\n   * @description Whether to show the error message.\n   */\n  showMessage?: boolean\n  /**\n   * @description Control the size of components in this form-item.\n   */\n  size?: ComponentSize\n  /**\n   * @description Pipe-separated validation rule DSL string, e.g. `\"required|email\"` or `\"min:2|max:20\"`.\n   * When set to `true`, it is equivalent to `\"required\"`.\n   * Error messages are auto-generated from the `label` prop.\n   */\n  rule?: string | boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `FormItemProps` instead.\n */\nexport const formItemProps = buildProps({\n  /**\n   * @description Label text.\n   */\n  label: String,\n  /**\n   * @description Width of label, e.g. `'50px'`. `'auto'` is supported.\n   */\n  labelWidth: {\n    type: [String, Number],\n  },\n  /**\n   * @description Position of label. If set to `'left'` or `'right'`, `label-width` prop is also required. The default is extend from `form label-position`.\n   */\n  labelPosition: {\n    type: String,\n    values: ['left', 'right', 'top', ''],\n    default: '',\n  },\n  /**\n   * @description  A key of `model`. It could be an array of property paths (e.g `['a', 'b', '0']`). In the use of `validate` and `resetFields` method, the attribute is required.\n   */\n  prop: {\n    type: definePropType<FormItemProp>([String, Array]),\n  },\n  /**\n   * @description Whether the field is required or not, will be determined by validation rules if omitted.\n   */\n  required: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description Validation rules of form, see the [following table](#formitemrule), more advanced usage at [async-validator](https://github.com/yiminghe/async-validator).\n   */\n  rules: {\n    type: definePropType<Arrayable<FormItemRule>>([Object, Array]),\n  },\n  /**\n   * @description Field error message, set its value and the field will validate error and show this message immediately.\n   */\n  error: String,\n  /**\n   * @description Validation state of formItem.\n   */\n  validateStatus: {\n    type: String,\n    values: formItemValidateStates,\n  },\n  /**\n   * @description Same as for in native label.\n   */\n  for: String,\n  /**\n   * @description Inline style validate message.\n   */\n  inlineMessage: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description Whether to show the error message.\n   */\n  showMessage: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Control the size of components in this form-item.\n   */\n  size: {\n    type: String,\n    values: componentSizes,\n  },\n  /**\n   * @description Pipe-separated validation rule DSL string, e.g. `\"required|email\"` or `\"min:2|max:20\"`.\n   * When set to `true`, it is equivalent to `\"required\"`.\n   * Error messages are auto-generated from the `label` prop.\n   */\n  rule: {\n    type: definePropType<string | boolean>([String, Boolean]),\n    default: undefined,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `FormItemProps` instead.\n */\nexport type FormItemPropsPublic = ExtractPublicPropTypes<typeof formItemProps>\n","function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n\n  _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _construct(Parent, args, Class) {\n  if (_isNativeReflectConstruct()) {\n    _construct = Reflect.construct.bind();\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !_isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return _setPrototypeOf(Wrapper, Class);\n  };\n\n  return _wrapNativeSuper(Class);\n}\n\n/* eslint no-console:0 */\nvar formatRegExp = /%[sdj%]/g;\nvar warning = function warning() {}; // don't print warning message when in production env or node runtime\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n  warning = function warning(type, errors) {\n    if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n      if (errors.every(function (e) {\n        return typeof e === 'string';\n      })) {\n        console.warn(type, errors);\n      }\n    }\n  };\n}\n\nfunction convertFieldsError(errors) {\n  if (!errors || !errors.length) return null;\n  var fields = {};\n  errors.forEach(function (error) {\n    var field = error.field;\n    fields[field] = fields[field] || [];\n    fields[field].push(error);\n  });\n  return fields;\n}\nfunction format(template) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  var i = 0;\n  var len = args.length;\n\n  if (typeof template === 'function') {\n    return template.apply(null, args);\n  }\n\n  if (typeof template === 'string') {\n    var str = template.replace(formatRegExp, function (x) {\n      if (x === '%%') {\n        return '%';\n      }\n\n      if (i >= len) {\n        return x;\n      }\n\n      switch (x) {\n        case '%s':\n          return String(args[i++]);\n\n        case '%d':\n          return Number(args[i++]);\n\n        case '%j':\n          try {\n            return JSON.stringify(args[i++]);\n          } catch (_) {\n            return '[Circular]';\n          }\n\n          break;\n\n        default:\n          return x;\n      }\n    });\n    return str;\n  }\n\n  return template;\n}\n\nfunction isNativeStringType(type) {\n  return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\n\nfunction isEmptyValue(value, type) {\n  if (value === undefined || value === null) {\n    return true;\n  }\n\n  if (type === 'array' && Array.isArray(value) && !value.length) {\n    return true;\n  }\n\n  if (isNativeStringType(type) && typeof value === 'string' && !value) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n  var results = [];\n  var total = 0;\n  var arrLength = arr.length;\n\n  function count(errors) {\n    results.push.apply(results, errors || []);\n    total++;\n\n    if (total === arrLength) {\n      callback(results);\n    }\n  }\n\n  arr.forEach(function (a) {\n    func(a, count);\n  });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n  var index = 0;\n  var arrLength = arr.length;\n\n  function next(errors) {\n    if (errors && errors.length) {\n      callback(errors);\n      return;\n    }\n\n    var original = index;\n    index = index + 1;\n\n    if (original < arrLength) {\n      func(arr[original], next);\n    } else {\n      callback([]);\n    }\n  }\n\n  next([]);\n}\n\nfunction flattenObjArr(objArr) {\n  var ret = [];\n  Object.keys(objArr).forEach(function (k) {\n    ret.push.apply(ret, objArr[k] || []);\n  });\n  return ret;\n}\n\nvar AsyncValidationError = /*#__PURE__*/function (_Error) {\n  _inheritsLoose(AsyncValidationError, _Error);\n\n  function AsyncValidationError(errors, fields) {\n    var _this;\n\n    _this = _Error.call(this, 'Async Validation Error') || this;\n    _this.errors = errors;\n    _this.fields = fields;\n    return _this;\n  }\n\n  return AsyncValidationError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction asyncMap(objArr, option, func, callback, source) {\n  if (option.first) {\n    var _pending = new Promise(function (resolve, reject) {\n      var next = function next(errors) {\n        callback(errors);\n        return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n      };\n\n      var flattenArr = flattenObjArr(objArr);\n      asyncSerialArray(flattenArr, func, next);\n    });\n\n    _pending[\"catch\"](function (e) {\n      return e;\n    });\n\n    return _pending;\n  }\n\n  var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n  var objArrKeys = Object.keys(objArr);\n  var objArrLength = objArrKeys.length;\n  var total = 0;\n  var results = [];\n  var pending = new Promise(function (resolve, reject) {\n    var next = function next(errors) {\n      results.push.apply(results, errors);\n      total++;\n\n      if (total === objArrLength) {\n        callback(results);\n        return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n      }\n    };\n\n    if (!objArrKeys.length) {\n      callback(results);\n      resolve(source);\n    }\n\n    objArrKeys.forEach(function (key) {\n      var arr = objArr[key];\n\n      if (firstFields.indexOf(key) !== -1) {\n        asyncSerialArray(arr, func, next);\n      } else {\n        asyncParallelArray(arr, func, next);\n      }\n    });\n  });\n  pending[\"catch\"](function (e) {\n    return e;\n  });\n  return pending;\n}\n\nfunction isErrorObj(obj) {\n  return !!(obj && obj.message !== undefined);\n}\n\nfunction getValue(value, path) {\n  var v = value;\n\n  for (var i = 0; i < path.length; i++) {\n    if (v == undefined) {\n      return v;\n    }\n\n    v = v[path[i]];\n  }\n\n  return v;\n}\n\nfunction complementError(rule, source) {\n  return function (oe) {\n    var fieldValue;\n\n    if (rule.fullFields) {\n      fieldValue = getValue(source, rule.fullFields);\n    } else {\n      fieldValue = source[oe.field || rule.fullField];\n    }\n\n    if (isErrorObj(oe)) {\n      oe.field = oe.field || rule.fullField;\n      oe.fieldValue = fieldValue;\n      return oe;\n    }\n\n    return {\n      message: typeof oe === 'function' ? oe() : oe,\n      fieldValue: fieldValue,\n      field: oe.field || rule.fullField\n    };\n  };\n}\nfunction deepMerge(target, source) {\n  if (source) {\n    for (var s in source) {\n      if (source.hasOwnProperty(s)) {\n        var value = source[s];\n\n        if (typeof value === 'object' && typeof target[s] === 'object') {\n          target[s] = _extends({}, target[s], value);\n        } else {\n          target[s] = value;\n        }\n      }\n    }\n  }\n\n  return target;\n}\n\nvar required$1 = function required(rule, value, source, errors, options, type) {\n  if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n    errors.push(format(options.messages.required, rule.fullField));\n  }\n};\n\n/**\n *  Rule for validating whitespace.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\n\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n  if (/^\\s+$/.test(value) || value === '') {\n    errors.push(format(options.messages.whitespace, rule.fullField));\n  }\n};\n\n// https://github.com/kevva/url-regex/blob/master/index.js\nvar urlReg;\nvar getUrlRegex = (function () {\n  if (urlReg) {\n    return urlReg;\n  }\n\n  var word = '[a-fA-F\\\\d:]';\n\n  var b = function b(options) {\n    return options && options.includeBoundaries ? \"(?:(?<=\\\\s|^)(?=\" + word + \")|(?<=\" + word + \")(?=\\\\s|$))\" : '';\n  };\n\n  var v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n  var v6seg = '[a-fA-F\\\\d]{1,4}';\n  var v6 = (\"\\n(?:\\n(?:\" + v6seg + \":){7}(?:\" + v6seg + \"|:)|                                    // 1:2:3:4:5:6:7::  1:2:3:4:5:6:7:8\\n(?:\" + v6seg + \":){6}(?:\" + v4 + \"|:\" + v6seg + \"|:)|                             // 1:2:3:4:5:6::    1:2:3:4:5:6::8   1:2:3:4:5:6::8  1:2:3:4:5:6::1.2.3.4\\n(?:\" + v6seg + \":){5}(?::\" + v4 + \"|(?::\" + v6seg + \"){1,2}|:)|                   // 1:2:3:4:5::      1:2:3:4:5::7:8   1:2:3:4:5::8    1:2:3:4:5::7:1.2.3.4\\n(?:\" + v6seg + \":){4}(?:(?::\" + v6seg + \"){0,1}:\" + v4 + \"|(?::\" + v6seg + \"){1,3}|:)| // 1:2:3:4::        1:2:3:4::6:7:8   1:2:3:4::8      1:2:3:4::6:7:1.2.3.4\\n(?:\" + v6seg + \":){3}(?:(?::\" + v6seg + \"){0,2}:\" + v4 + \"|(?::\" + v6seg + \"){1,4}|:)| // 1:2:3::          1:2:3::5:6:7:8   1:2:3::8        1:2:3::5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){2}(?:(?::\" + v6seg + \"){0,3}:\" + v4 + \"|(?::\" + v6seg + \"){1,5}|:)| // 1:2::            1:2::4:5:6:7:8   1:2::8          1:2::4:5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){1}(?:(?::\" + v6seg + \"){0,4}:\" + v4 + \"|(?::\" + v6seg + \"){1,6}|:)| // 1::              1::3:4:5:6:7:8   1::8            1::3:4:5:6:7:1.2.3.4\\n(?::(?:(?::\" + v6seg + \"){0,5}:\" + v4 + \"|(?::\" + v6seg + \"){1,7}|:))             // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8  ::8             ::1.2.3.4\\n)(?:%[0-9a-zA-Z]{1,})?                                             // %eth0            %1\\n\").replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim(); // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n\n  var v46Exact = new RegExp(\"(?:^\" + v4 + \"$)|(?:^\" + v6 + \"$)\");\n  var v4exact = new RegExp(\"^\" + v4 + \"$\");\n  var v6exact = new RegExp(\"^\" + v6 + \"$\");\n\n  var ip = function ip(options) {\n    return options && options.exact ? v46Exact : new RegExp(\"(?:\" + b(options) + v4 + b(options) + \")|(?:\" + b(options) + v6 + b(options) + \")\", 'g');\n  };\n\n  ip.v4 = function (options) {\n    return options && options.exact ? v4exact : new RegExp(\"\" + b(options) + v4 + b(options), 'g');\n  };\n\n  ip.v6 = function (options) {\n    return options && options.exact ? v6exact : new RegExp(\"\" + b(options) + v6 + b(options), 'g');\n  };\n\n  var protocol = \"(?:(?:[a-z]+:)?//)\";\n  var auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n  var ipv4 = ip.v4().source;\n  var ipv6 = ip.v6().source;\n  var host = \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\";\n  var domain = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\";\n  var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n  var port = '(?::\\\\d{2,5})?';\n  var path = '(?:[/?#][^\\\\s\"]*)?';\n  var regex = \"(?:\" + protocol + \"|www\\\\.)\" + auth + \"(?:localhost|\" + ipv4 + \"|\" + ipv6 + \"|\" + host + domain + tld + \")\" + port + path;\n  urlReg = new RegExp(\"(?:^\" + regex + \"$)\", 'i');\n  return urlReg;\n});\n\n/* eslint max-len:0 */\n\nvar pattern$2 = {\n  // http://emailregex.com/\n  email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n  // url: new RegExp(\n  //   '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n  //   'i',\n  // ),\n  hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n  integer: function integer(value) {\n    return types.number(value) && parseInt(value, 10) === value;\n  },\n  \"float\": function float(value) {\n    return types.number(value) && !types.integer(value);\n  },\n  array: function array(value) {\n    return Array.isArray(value);\n  },\n  regexp: function regexp(value) {\n    if (value instanceof RegExp) {\n      return true;\n    }\n\n    try {\n      return !!new RegExp(value);\n    } catch (e) {\n      return false;\n    }\n  },\n  date: function date(value) {\n    return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n  },\n  number: function number(value) {\n    if (isNaN(value)) {\n      return false;\n    }\n\n    return typeof value === 'number';\n  },\n  object: function object(value) {\n    return typeof value === 'object' && !types.array(value);\n  },\n  method: function method(value) {\n    return typeof value === 'function';\n  },\n  email: function email(value) {\n    return typeof value === 'string' && value.length <= 320 && !!value.match(pattern$2.email);\n  },\n  url: function url(value) {\n    return typeof value === 'string' && value.length <= 2048 && !!value.match(getUrlRegex());\n  },\n  hex: function hex(value) {\n    return typeof value === 'string' && !!value.match(pattern$2.hex);\n  }\n};\n\nvar type$1 = function type(rule, value, source, errors, options) {\n  if (rule.required && value === undefined) {\n    required$1(rule, value, source, errors, options);\n    return;\n  }\n\n  var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n  var ruleType = rule.type;\n\n  if (custom.indexOf(ruleType) > -1) {\n    if (!types[ruleType](value)) {\n      errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n    } // straight typeof check\n\n  } else if (ruleType && typeof value !== rule.type) {\n    errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n  }\n};\n\nvar range = function range(rule, value, source, errors, options) {\n  var len = typeof rule.len === 'number';\n  var min = typeof rule.min === 'number';\n  var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字（补充平面Supplementary Plane）\n\n  var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n  var val = value;\n  var key = null;\n  var num = typeof value === 'number';\n  var str = typeof value === 'string';\n  var arr = Array.isArray(value);\n\n  if (num) {\n    key = 'number';\n  } else if (str) {\n    key = 'string';\n  } else if (arr) {\n    key = 'array';\n  } // if the value is not of a supported type for range validation\n  // the validation rule rule should use the\n  // type property to also test for a particular type\n\n\n  if (!key) {\n    return false;\n  }\n\n  if (arr) {\n    val = value.length;\n  }\n\n  if (str) {\n    // 处理码点大于U+010000的文字length属性不准确的bug，如\"𠮷𠮷𠮷\".lenght !== 3\n    // val = value.replace(spRegexp, '_').length;\n    val = value.length;\n  }\n\n  if (len) {\n    if (val !== rule.len) {\n      errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n    }\n  } else if (min && !max && val < rule.min) {\n    errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n  } else if (max && !min && val > rule.max) {\n    errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n  } else if (min && max && (val < rule.min || val > rule.max)) {\n    errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n  }\n};\n\nvar ENUM$1 = 'enum';\n\nvar enumerable$1 = function enumerable(rule, value, source, errors, options) {\n  rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];\n\n  if (rule[ENUM$1].indexOf(value) === -1) {\n    errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(', ')));\n  }\n};\n\nvar pattern$1 = function pattern(rule, value, source, errors, options) {\n  if (rule.pattern) {\n    if (rule.pattern instanceof RegExp) {\n      // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n      // flag is accidentally set to `true`, which in a validation scenario\n      // is not necessary and the result might be misleading\n      rule.pattern.lastIndex = 0;\n\n      if (!rule.pattern.test(value)) {\n        errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    } else if (typeof rule.pattern === 'string') {\n      var _pattern = new RegExp(rule.pattern);\n\n      if (!_pattern.test(value)) {\n        errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    }\n  }\n};\n\nvar rules = {\n  required: required$1,\n  whitespace: whitespace,\n  type: type$1,\n  range: range,\n  \"enum\": enumerable$1,\n  pattern: pattern$1\n};\n\nvar string = function string(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options, 'string');\n\n    if (!isEmptyValue(value, 'string')) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n      rules.pattern(rule, value, source, errors, options);\n\n      if (rule.whitespace === true) {\n        rules.whitespace(rule, value, source, errors, options);\n      }\n    }\n  }\n\n  callback(errors);\n};\n\nvar method = function method(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar number = function number(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (value === '') {\n      value = undefined;\n    }\n\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar _boolean = function _boolean(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar regexp = function regexp(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (!isEmptyValue(value)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar integer = function integer(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar array = function array(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if ((value === undefined || value === null) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options, 'array');\n\n    if (value !== undefined && value !== null) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar object = function object(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar ENUM = 'enum';\n\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules[ENUM](rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar pattern = function pattern(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (!isEmptyValue(value, 'string')) {\n      rules.pattern(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar date = function date(rule, value, callback, source, options) {\n  // console.log('integer rule called %j', rule);\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value);\n\n  if (validate) {\n    if (isEmptyValue(value, 'date') && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (!isEmptyValue(value, 'date')) {\n      var dateObject;\n\n      if (value instanceof Date) {\n        dateObject = value;\n      } else {\n        dateObject = new Date(value);\n      }\n\n      rules.type(rule, dateObject, source, errors, options);\n\n      if (dateObject) {\n        rules.range(rule, dateObject.getTime(), source, errors, options);\n      }\n    }\n  }\n\n  callback(errors);\n};\n\nvar required = function required(rule, value, callback, source, options) {\n  var errors = [];\n  var type = Array.isArray(value) ? 'array' : typeof value;\n  rules.required(rule, value, source, errors, options, type);\n  callback(errors);\n};\n\nvar type = function type(rule, value, callback, source, options) {\n  var ruleType = rule.type;\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value, ruleType) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options, ruleType);\n\n    if (!isEmptyValue(value, ruleType)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar any = function any(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n  }\n\n  callback(errors);\n};\n\nvar validators = {\n  string: string,\n  method: method,\n  number: number,\n  \"boolean\": _boolean,\n  regexp: regexp,\n  integer: integer,\n  \"float\": floatFn,\n  array: array,\n  object: object,\n  \"enum\": enumerable,\n  pattern: pattern,\n  date: date,\n  url: type,\n  hex: type,\n  email: type,\n  required: required,\n  any: any\n};\n\nfunction newMessages() {\n  return {\n    \"default\": 'Validation error on field %s',\n    required: '%s is required',\n    \"enum\": '%s must be one of %s',\n    whitespace: '%s cannot be empty',\n    date: {\n      format: '%s date %s is invalid for format %s',\n      parse: '%s date could not be parsed, %s is invalid ',\n      invalid: '%s date %s is invalid'\n    },\n    types: {\n      string: '%s is not a %s',\n      method: '%s is not a %s (function)',\n      array: '%s is not an %s',\n      object: '%s is not an %s',\n      number: '%s is not a %s',\n      date: '%s is not a %s',\n      \"boolean\": '%s is not a %s',\n      integer: '%s is not an %s',\n      \"float\": '%s is not a %s',\n      regexp: '%s is not a valid %s',\n      email: '%s is not a valid %s',\n      url: '%s is not a valid %s',\n      hex: '%s is not a valid %s'\n    },\n    string: {\n      len: '%s must be exactly %s characters',\n      min: '%s must be at least %s characters',\n      max: '%s cannot be longer than %s characters',\n      range: '%s must be between %s and %s characters'\n    },\n    number: {\n      len: '%s must equal %s',\n      min: '%s cannot be less than %s',\n      max: '%s cannot be greater than %s',\n      range: '%s must be between %s and %s'\n    },\n    array: {\n      len: '%s must be exactly %s in length',\n      min: '%s cannot be less than %s in length',\n      max: '%s cannot be greater than %s in length',\n      range: '%s must be between %s and %s in length'\n    },\n    pattern: {\n      mismatch: '%s value %s does not match pattern %s'\n    },\n    clone: function clone() {\n      var cloned = JSON.parse(JSON.stringify(this));\n      cloned.clone = this.clone;\n      return cloned;\n    }\n  };\n}\nvar messages = newMessages();\n\n/**\n *  Encapsulates a validation schema.\n *\n *  @param descriptor An object declaring validation rules\n *  for this schema.\n */\n\nvar Schema = /*#__PURE__*/function () {\n  // ========================= Static =========================\n  // ======================== Instance ========================\n  function Schema(descriptor) {\n    this.rules = null;\n    this._messages = messages;\n    this.define(descriptor);\n  }\n\n  var _proto = Schema.prototype;\n\n  _proto.define = function define(rules) {\n    var _this = this;\n\n    if (!rules) {\n      throw new Error('Cannot configure a schema with no rules');\n    }\n\n    if (typeof rules !== 'object' || Array.isArray(rules)) {\n      throw new Error('Rules must be an object');\n    }\n\n    this.rules = {};\n    Object.keys(rules).forEach(function (name) {\n      var item = rules[name];\n      _this.rules[name] = Array.isArray(item) ? item : [item];\n    });\n  };\n\n  _proto.messages = function messages(_messages) {\n    if (_messages) {\n      this._messages = deepMerge(newMessages(), _messages);\n    }\n\n    return this._messages;\n  };\n\n  _proto.validate = function validate(source_, o, oc) {\n    var _this2 = this;\n\n    if (o === void 0) {\n      o = {};\n    }\n\n    if (oc === void 0) {\n      oc = function oc() {};\n    }\n\n    var source = source_;\n    var options = o;\n    var callback = oc;\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    if (!this.rules || Object.keys(this.rules).length === 0) {\n      if (callback) {\n        callback(null, source);\n      }\n\n      return Promise.resolve(source);\n    }\n\n    function complete(results) {\n      var errors = [];\n      var fields = {};\n\n      function add(e) {\n        if (Array.isArray(e)) {\n          var _errors;\n\n          errors = (_errors = errors).concat.apply(_errors, e);\n        } else {\n          errors.push(e);\n        }\n      }\n\n      for (var i = 0; i < results.length; i++) {\n        add(results[i]);\n      }\n\n      if (!errors.length) {\n        callback(null, source);\n      } else {\n        fields = convertFieldsError(errors);\n        callback(errors, fields);\n      }\n    }\n\n    if (options.messages) {\n      var messages$1 = this.messages();\n\n      if (messages$1 === messages) {\n        messages$1 = newMessages();\n      }\n\n      deepMerge(messages$1, options.messages);\n      options.messages = messages$1;\n    } else {\n      options.messages = this.messages();\n    }\n\n    var series = {};\n    var keys = options.keys || Object.keys(this.rules);\n    keys.forEach(function (z) {\n      var arr = _this2.rules[z];\n      var value = source[z];\n      arr.forEach(function (r) {\n        var rule = r;\n\n        if (typeof rule.transform === 'function') {\n          if (source === source_) {\n            source = _extends({}, source);\n          }\n\n          value = source[z] = rule.transform(value);\n        }\n\n        if (typeof rule === 'function') {\n          rule = {\n            validator: rule\n          };\n        } else {\n          rule = _extends({}, rule);\n        } // Fill validator. Skip if nothing need to validate\n\n\n        rule.validator = _this2.getValidationMethod(rule);\n\n        if (!rule.validator) {\n          return;\n        }\n\n        rule.field = z;\n        rule.fullField = rule.fullField || z;\n        rule.type = _this2.getType(rule);\n        series[z] = series[z] || [];\n        series[z].push({\n          rule: rule,\n          value: value,\n          source: source,\n          field: z\n        });\n      });\n    });\n    var errorFields = {};\n    return asyncMap(series, options, function (data, doIt) {\n      var rule = data.rule;\n      var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object');\n      deep = deep && (rule.required || !rule.required && data.value);\n      rule.field = data.field;\n\n      function addFullField(key, schema) {\n        return _extends({}, schema, {\n          fullField: rule.fullField + \".\" + key,\n          fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]\n        });\n      }\n\n      function cb(e) {\n        if (e === void 0) {\n          e = [];\n        }\n\n        var errorList = Array.isArray(e) ? e : [e];\n\n        if (!options.suppressWarning && errorList.length) {\n          Schema.warning('async-validator:', errorList);\n        }\n\n        if (errorList.length && rule.message !== undefined) {\n          errorList = [].concat(rule.message);\n        } // Fill error info\n\n\n        var filledErrors = errorList.map(complementError(rule, source));\n\n        if (options.first && filledErrors.length) {\n          errorFields[rule.field] = 1;\n          return doIt(filledErrors);\n        }\n\n        if (!deep) {\n          doIt(filledErrors);\n        } else {\n          // if rule is required but the target object\n          // does not exist fail at the rule level and don't\n          // go deeper\n          if (rule.required && !data.value) {\n            if (rule.message !== undefined) {\n              filledErrors = [].concat(rule.message).map(complementError(rule, source));\n            } else if (options.error) {\n              filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n            }\n\n            return doIt(filledErrors);\n          }\n\n          var fieldsSchema = {};\n\n          if (rule.defaultField) {\n            Object.keys(data.value).map(function (key) {\n              fieldsSchema[key] = rule.defaultField;\n            });\n          }\n\n          fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n          var paredFieldsSchema = {};\n          Object.keys(fieldsSchema).forEach(function (field) {\n            var fieldSchema = fieldsSchema[field];\n            var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n            paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n          });\n          var schema = new Schema(paredFieldsSchema);\n          schema.messages(options.messages);\n\n          if (data.rule.options) {\n            data.rule.options.messages = options.messages;\n            data.rule.options.error = options.error;\n          }\n\n          schema.validate(data.value, data.rule.options || options, function (errs) {\n            var finalErrors = [];\n\n            if (filledErrors && filledErrors.length) {\n              finalErrors.push.apply(finalErrors, filledErrors);\n            }\n\n            if (errs && errs.length) {\n              finalErrors.push.apply(finalErrors, errs);\n            }\n\n            doIt(finalErrors.length ? finalErrors : null);\n          });\n        }\n      }\n\n      var res;\n\n      if (rule.asyncValidator) {\n        res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n      } else if (rule.validator) {\n        try {\n          res = rule.validator(rule, data.value, cb, data.source, options);\n        } catch (error) {\n          console.error == null ? void 0 : console.error(error); // rethrow to report error\n\n          if (!options.suppressValidatorError) {\n            setTimeout(function () {\n              throw error;\n            }, 0);\n          }\n\n          cb(error.message);\n        }\n\n        if (res === true) {\n          cb();\n        } else if (res === false) {\n          cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + \" fails\");\n        } else if (res instanceof Array) {\n          cb(res);\n        } else if (res instanceof Error) {\n          cb(res.message);\n        }\n      }\n\n      if (res && res.then) {\n        res.then(function () {\n          return cb();\n        }, function (e) {\n          return cb(e);\n        });\n      }\n    }, function (results) {\n      complete(results);\n    }, source);\n  };\n\n  _proto.getType = function getType(rule) {\n    if (rule.type === undefined && rule.pattern instanceof RegExp) {\n      rule.type = 'pattern';\n    }\n\n    if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n      throw new Error(format('Unknown rule type %s', rule.type));\n    }\n\n    return rule.type || 'string';\n  };\n\n  _proto.getValidationMethod = function getValidationMethod(rule) {\n    if (typeof rule.validator === 'function') {\n      return rule.validator;\n    }\n\n    var keys = Object.keys(rule);\n    var messageIndex = keys.indexOf('message');\n\n    if (messageIndex !== -1) {\n      keys.splice(messageIndex, 1);\n    }\n\n    if (keys.length === 1 && keys[0] === 'required') {\n      return validators.required;\n    }\n\n    return validators[this.getType(rule)] || undefined;\n  };\n\n  return Schema;\n}();\n\nSchema.register = function register(type, validator) {\n  if (typeof validator !== 'function') {\n    throw new Error('Cannot register a validator by type, validator is not a function');\n  }\n\n  validators[type] = validator;\n};\n\nSchema.warning = warning;\nSchema.messages = messages;\nSchema.validators = validators;\n\nexport { Schema as default };\n//# sourceMappingURL=index.js.map\n","import {\n  Fragment,\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  onUpdated,\n  ref,\n  watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { formContextKey, formItemContextKey } from './constants'\n\nimport type { CSSProperties } from 'vue'\n\nconst COMPONENT_NAME = 'ElLabelWrap'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  props: {\n    isAutoWidth: Boolean,\n    updateAll: Boolean,\n  },\n\n  setup(props, { slots }) {\n    const formContext = inject(formContextKey, undefined)\n    const formItemContext = inject(formItemContextKey)\n    if (!formItemContext)\n      throwError(\n        COMPONENT_NAME,\n        'usage: <el-form-item><label-wrap /></el-form-item>'\n      )\n\n    const ns = useNamespace('form')\n\n    const el = ref<HTMLElement>()\n    const computedWidth = ref(0)\n\n    const getLabelWidth = () => {\n      if (el.value?.firstElementChild) {\n        const width = window.getComputedStyle(el.value.firstElementChild).width\n        return Math.ceil(Number.parseFloat(width))\n      } else {\n        return 0\n      }\n    }\n\n    const updateLabelWidth = (action: 'update' | 'remove' = 'update') => {\n      nextTick(() => {\n        if (slots.default && props.isAutoWidth) {\n          if (action === 'update') {\n            computedWidth.value = getLabelWidth()\n          } else if (action === 'remove') {\n            formContext?.deregisterLabelWidth(computedWidth.value)\n          }\n        }\n      })\n    }\n    const updateLabelWidthFn = () => updateLabelWidth('update')\n\n    onMounted(() => {\n      updateLabelWidthFn()\n    })\n    onBeforeUnmount(() => {\n      updateLabelWidth('remove')\n    })\n    onUpdated(() => updateLabelWidthFn())\n\n    watch(computedWidth, (val, oldVal) => {\n      if (props.updateAll) {\n        formContext?.registerLabelWidth(val, oldVal)\n      }\n    })\n\n    useResizeObserver(\n      computed(\n        () => (el.value?.firstElementChild ?? null) as HTMLElement | null\n      ),\n      updateLabelWidthFn\n    )\n\n    return () => {\n      if (!slots) return null\n\n      const { isAutoWidth } = props\n      if (isAutoWidth) {\n        const autoLabelWidth = formContext?.autoLabelWidth\n        const hasLabel = formItemContext?.hasLabel\n        const style: CSSProperties = {}\n        if (hasLabel && autoLabelWidth && autoLabelWidth !== 'auto') {\n          const marginWidth = Math.max(\n            0,\n            Number.parseInt(autoLabelWidth, 10) - computedWidth.value\n          )\n          const labelPosition =\n            formItemContext.labelPosition || formContext.labelPosition\n\n          const marginPosition =\n            labelPosition === 'left' ? 'marginRight' : 'marginLeft'\n\n          if (marginWidth) {\n            style[marginPosition] = `${marginWidth}px`\n          }\n        }\n        return (\n          <div ref={el} class={[ns.be('item', 'label-wrap')]} style={style}>\n            {slots.default?.()}\n          </div>\n        )\n      } else {\n        return <Fragment ref={el}>{slots.default?.()}</Fragment>\n      }\n    }\n  },\n})\n","<template>\n  <div\n    ref=\"formItemRef\"\n    :class=\"formItemClasses\"\n    :role=\"isGroup ? 'group' : undefined\"\n    :aria-labelledby=\"isGroup ? labelId : undefined\"\n  >\n    <form-label-wrap\n      :is-auto-width=\"labelStyle.width === 'auto'\"\n      :update-all=\"formContext?.labelWidth === 'auto'\"\n    >\n      <component\n        :is=\"labelFor ? 'label' : 'div'\"\n        v-if=\"!!(label || $slots.label)\"\n        :id=\"labelId\"\n        :for=\"labelFor\"\n        :class=\"ns.e('label')\"\n        :style=\"labelStyle\"\n      >\n        <slot name=\"label\" :label=\"currentLabel\">\n          {{ currentLabel }}\n        </slot>\n      </component>\n    </form-label-wrap>\n\n    <div :class=\"ns.e('content')\" :style=\"contentStyle\">\n      <slot />\n      <transition-group :name=\"`${ns.namespace.value}-zoom-in-top`\">\n        <slot v-if=\"shouldShowError\" name=\"error\" :error=\"validateMessage\">\n          <div v-if=\"!getHiddenMessage\" :class=\"validateClasses\">\n            {{ validateMessage }}\n          </div>\n        </slot>\n      </transition-group>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  useSlots,\n  watch,\n} from 'vue'\nimport AsyncValidator from 'async-validator'\nimport { refDebounced } from '@vueuse/core'\nimport {\n  addUnit,\n  ensureArray,\n  getProp,\n  isArray,\n  isBoolean,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport { ElMessage } from '@pit-element-plus/components'\nimport { useFormSize } from './hooks'\nimport FormLabelWrap from './form-label-wrap'\nimport { formContextKey, formItemContextKey } from './constants'\nimport { cloneDeep } from 'lodash-unified'\n\nimport type { CSSProperties } from 'vue'\nimport type { RuleItem } from 'async-validator'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type {\n  FormItemContext,\n  FormItemRule,\n  FormValidateFailure,\n} from './types'\nimport type { FormItemProps, FormItemValidateState } from './form-item'\n\ndefineOptions({\n  name: 'ElFormItem',\n})\nconst props = withDefaults(defineProps<FormItemProps>(), {\n  labelPosition: '',\n  showMessage: true,\n  required: undefined,\n  inlineMessage: undefined,\n})\nconst slots = useSlots()\n\nconst formContext = inject(formContextKey, undefined)\nconst parentFormItemContext = inject(formItemContextKey, undefined)\n\nconst _size = useFormSize(undefined, { formItem: false })\nconst ns = useNamespace('form-item')\n\nconst labelId = useId().value\nconst inputIds = ref<string[]>([])\n\nconst validateState = ref<FormItemValidateState>('')\nconst validateStateDebounced = refDebounced(validateState, 100)\nconst validateMessage = ref('')\nconst formItemRef = ref<HTMLDivElement>()\n// special inline value.\nlet initialValue: any = undefined\nlet isResettingField = false\n\nconst labelPosition = computed(\n  () => props.labelPosition || formContext?.labelPosition\n)\n\nconst labelStyle = computed<CSSProperties>(() => {\n  if (labelPosition.value === 'top') {\n    return {}\n  }\n\n  const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n  return { width: labelWidth }\n})\n\nconst getHiddenMessage = computed(() => {\n  return formContext?.hiddenMessage\n})\n\nconst contentStyle = computed<CSSProperties>(() => {\n  if (labelPosition.value === 'top' || formContext?.inline) {\n    return {}\n  }\n  if (!props.label && !props.labelWidth && isNested) {\n    return {}\n  }\n  const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n  if (!props.label && !slots.label) {\n    return { marginLeft: labelWidth }\n  }\n  return {}\n})\n\nconst formItemClasses = computed(() => [\n  ns.b(),\n  ns.m(_size.value),\n  ns.is('error', validateState.value === 'error'),\n  ns.is('validating', validateState.value === 'validating'),\n  ns.is('success', validateState.value === 'success'),\n  ns.is('required', isRequired.value || props.required),\n  ns.is('no-asterisk', formContext?.hideRequiredAsterisk),\n  formContext?.requireAsteriskPosition === 'right'\n    ? 'asterisk-right'\n    : 'asterisk-left',\n  {\n    [ns.m('feedback')]: formContext?.statusIcon,\n    [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\n  },\n])\n\nconst _inlineMessage = computed(() =>\n  isBoolean(props.inlineMessage)\n    ? props.inlineMessage\n    : formContext?.inlineMessage || false\n)\n\nconst validateClasses = computed(() => [\n  ns.e('error'),\n  { [ns.em('error', 'inline')]: _inlineMessage.value },\n])\n\nconst propString = computed(() => {\n  if (!props.prop) return ''\n  return isArray(props.prop) ? props.prop.join('.') : props.prop\n})\n\nconst hasLabel = computed<boolean>(() => {\n  return !!(props.label || slots.label)\n})\n\nconst labelFor = computed<string | undefined>(() => {\n  return (\n    props.for ?? (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\n  )\n})\n\nconst isGroup = computed<boolean>(() => {\n  return !labelFor.value && hasLabel.value\n})\n\nconst isNested = !!parentFormItemContext\n\nconst fieldValue = computed(() => {\n  const model = formContext?.model\n  if (!model || !props.prop) {\n    return\n  }\n  return getProp(model, props.prop).value\n})\n\nfunction buildRule(\n  key: string,\n  args: string[],\n  label: string,\n  trigger: string[]\n): FormItemRule[] {\n  switch (key) {\n    case 'required':\n      return [{ required: true, message: `${label}不能为空`, trigger }]\n    case 'email':\n      return [\n        {\n          type: 'email',\n          message: `${label}格式不正确，请输入有效的邮箱`,\n          trigger,\n        },\n      ]\n    case 'url':\n      return [\n        {\n          type: 'url',\n          message: `${label}格式不正确，请输入有效的 URL`,\n          trigger,\n        },\n      ]\n    case 'numeric':\n      return [\n        {\n          pattern: /^\\d+(\\.\\d+)?$/,\n          message: `${label}只能输入数字`,\n          trigger,\n        },\n      ]\n    case 'alpha':\n      return [\n        {\n          pattern: /^[a-zA-Z]+$/,\n          message: `${label}只能输入英文字母`,\n          trigger,\n        },\n      ]\n    case 'alpha_num':\n      return [\n        {\n          pattern: /^[a-zA-Z0-9]+$/,\n          message: `${label}只能输入字母或数字`,\n          trigger,\n        },\n      ]\n    case 'min':\n      return [\n        {\n          min: Number(args[0]),\n          message: `${label}最少需要 ${args[0]} 个字符`,\n          trigger,\n        },\n      ]\n    case 'max':\n      return [\n        {\n          max: Number(args[0]),\n          message: `${label}最多允许 ${args[0]} 个字符`,\n          trigger,\n        },\n      ]\n    case 'length':\n      return [\n        {\n          len: Number(args[0]),\n          message: `${label}长度必须为 ${args[0]} 个字符`,\n          trigger,\n        },\n      ]\n    case 'min_value':\n      return [\n        {\n          min: Number(args[0]),\n          type: 'number',\n          message: `${label}最小值为 ${args[0]}`,\n          trigger,\n        },\n      ]\n    case 'max_value':\n      return [\n        {\n          max: Number(args[0]),\n          type: 'number',\n          message: `${label}最大值为 ${args[0]}`,\n          trigger,\n        },\n      ]\n    case 'between': {\n      const [min, max] = args\n      return [\n        {\n          min: Number(min),\n          max: Number(max),\n          type: 'number',\n          message: `${label}必须在 ${min} 到 ${max} 之间`,\n          trigger,\n        },\n      ]\n    }\n    default:\n      return []\n  }\n}\n\nfunction parseRuleString(\n  ruleStr: string,\n  label: string,\n  trigger: string[]\n): FormItemRule[] {\n  return ruleStr.split('|').flatMap((segment) => {\n    const [key, argStr] = segment.trim().split(':')\n    const args = argStr ? argStr.split(',') : []\n    return buildRule(key, args, label, trigger)\n  })\n}\n\nconst normalizedRules = computed(() => {\n  const { required } = props\n\n  const rules: FormItemRule[] = []\n\n  // ① rule DSL 解析（true / \"\" / 裸属性 均等价于 \"required\"）\n  if (props.rule !== undefined && props.rule !== false) {\n    const label = props.label || '该字段'\n    const trigger = ['input']\n    const ruleStr =\n      props.rule === true || props.rule === '' ? 'required' : props.rule\n    rules.push(...parseRuleString(ruleStr, label, trigger))\n  }\n\n  if (props.rules) {\n    rules.push(...ensureArray(props.rules))\n  }\n\n  const formRules = formContext?.rules\n  if (formRules && props.prop) {\n    const _rules = getProp<Arrayable<FormItemRule> | undefined>(\n      formRules,\n      props.prop\n    ).value\n    if (_rules) {\n      rules.push(...ensureArray(_rules))\n    }\n  }\n\n  if (required !== undefined) {\n    const requiredRules = rules\n      .map((rule, i) => [rule, i] as const)\n      .filter(([rule]) => 'required' in rule)\n\n    if (requiredRules.length > 0) {\n      for (const [rule, i] of requiredRules) {\n        if (rule.required === required) continue\n        rules[i] = { ...rule, required }\n      }\n    } else {\n      rules.push({ required })\n    }\n  }\n\n  return rules\n})\n\nconst validateEnabled = computed(() => normalizedRules.value.length > 0)\n\nconst getFilteredRule = (trigger: string) => {\n  const rules = normalizedRules.value\n  return (\n    rules\n      .filter((rule) => {\n        if (!rule.trigger || !trigger) return true\n        if (isArray(rule.trigger)) {\n          return rule.trigger.includes(trigger)\n        } else {\n          return rule.trigger === trigger\n        }\n      })\n      // exclude trigger\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      .map(({ trigger, ...rule }): RuleItem => rule)\n  )\n}\n\nconst isRequired = computed(() =>\n  normalizedRules.value.some((rule) => rule.required)\n)\n\nconst shouldShowError = computed(\n  () =>\n    validateStateDebounced.value === 'error' &&\n    props.showMessage &&\n    (formContext?.showMessage ?? true)\n)\n\nconst currentLabel = computed(\n  () => `${props.label || ''}${formContext?.labelSuffix || ''}`\n)\n\nconst setValidationState = (state: FormItemValidateState) => {\n  validateState.value = state\n}\n\nconst onValidationFailed = (error: FormValidateFailure) => {\n  const { errors, fields } = error\n  if (!errors || !fields) {\n    console.error(error)\n  }\n\n  setValidationState('error')\n  validateMessage.value = errors\n    ? (errors?.[0]?.message ?? `${props.prop} is required`)\n    : ''\n\n  formContext?.emit('validate', props.prop!, false, validateMessage.value)\n}\n\nconst onValidationSucceeded = () => {\n  setValidationState('success')\n  formContext?.emit('validate', props.prop!, true, '')\n}\n\nconst doValidate = async (rules: RuleItem[]): Promise<true> => {\n  const modelName = propString.value\n  const validator = new AsyncValidator({\n    [modelName]: rules,\n  })\n  return validator\n    .validate({ [modelName]: fieldValue.value }, { firstFields: true })\n    .then(() => {\n      onValidationSucceeded()\n      return true as const\n    })\n    .catch((err: FormValidateFailure) => {\n      onValidationFailed(err)\n      return Promise.reject(err)\n    })\n}\n\nconst validate: FormItemContext['validate'] = async (trigger, callback) => {\n  // skip validation if its resetting\n  if (isResettingField || !props.prop) {\n    return false\n  }\n\n  const hasCallback = isFunction(callback)\n  if (!validateEnabled.value) {\n    callback?.(false)\n    return false\n  }\n\n  const rules = getFilteredRule(trigger)\n  if (rules.length === 0) {\n    callback?.(true)\n    return true\n  }\n\n  setValidationState('validating')\n\n  return doValidate(rules)\n    .then(() => {\n      callback?.(true)\n      return true as const\n    })\n    .catch((err: FormValidateFailure) => {\n      const { fields } = err\n      // 字段级触发（blur/change）且 messageType 开启时弹出 ElMessage\n      // trigger 为空字符串代表 form.validate() 触发，由 form.vue 统一弹出，此处跳过\n      if (trigger && formContext?.messageType && validateMessage.value) {\n        ElMessage({ message: validateMessage.value, type: 'error' })\n      }\n      callback?.(false, fields)\n      return hasCallback ? false : Promise.reject(fields)\n    })\n}\n\nconst clearValidate: FormItemContext['clearValidate'] = () => {\n  setValidationState('')\n  validateMessage.value = ''\n  isResettingField = false\n}\n\nconst resetField: FormItemContext['resetField'] = async () => {\n  const model = formContext?.model\n  if (!model || !props.prop) return\n\n  const computedValue = getProp(model, props.prop)\n\n  // prevent validation from being triggered\n  isResettingField = true\n\n  computedValue.value = cloneDeep(initialValue)\n\n  await nextTick()\n  clearValidate()\n\n  isResettingField = false\n}\n\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\n  if (!inputIds.value.includes(id)) {\n    inputIds.value.push(id)\n  }\n}\n\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\n  inputIds.value = inputIds.value.filter((listId) => listId !== id)\n}\n\nconst setInitialValue: FormItemContext['setInitialValue'] = (value: any) => {\n  initialValue = cloneDeep(value)\n}\n\nwatch(\n  () => props.error,\n  (val) => {\n    validateMessage.value = val || ''\n    setValidationState(val ? 'error' : '')\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => props.validateStatus,\n  (val) => setValidationState(val || '')\n)\n\nconst context: FormItemContext = reactive({\n  ...toRefs(props),\n  $el: formItemRef,\n  size: _size,\n  validateMessage,\n  validateState,\n  labelId,\n  inputIds,\n  isGroup,\n  hasLabel,\n  fieldValue,\n  addInputId,\n  removeInputId,\n  resetField,\n  clearValidate,\n  validate,\n  propString,\n  setInitialValue,\n})\n\nprovide(formItemContextKey, context)\n\nonMounted(() => {\n  if (props.prop) {\n    setInitialValue(fieldValue.value)\n    formContext?.addField(context)\n  }\n})\n\nonBeforeUnmount(() => {\n  formContext?.removeField(context)\n})\n\ndefineExpose({\n  /**\n   * @description Form item size.\n   */\n  size: _size,\n  /**\n   * @description Validation message.\n   */\n  validateMessage,\n  /**\n   * @description Validation state.\n   */\n  validateState,\n  /**\n   * @description Validate form item.\n   */\n  validate,\n  /**\n   * @description Remove validation status of the field.\n   */\n  clearValidate,\n  /**\n   * @description Reset current field and remove validation result.\n   */\n  resetField,\n  /**\n   * @description Set initial value for this field. When `resetField` is called, the field will reset to this value.\n   */\n  setInitialValue,\n})\n</script>\n","<template>\n  <div\n    ref=\"formItemRef\"\n    :class=\"formItemClasses\"\n    :role=\"isGroup ? 'group' : undefined\"\n    :aria-labelledby=\"isGroup ? labelId : undefined\"\n  >\n    <form-label-wrap\n      :is-auto-width=\"labelStyle.width === 'auto'\"\n      :update-all=\"formContext?.labelWidth === 'auto'\"\n    >\n      <component\n        :is=\"labelFor ? 'label' : 'div'\"\n        v-if=\"!!(label || $slots.label)\"\n        :id=\"labelId\"\n        :for=\"labelFor\"\n        :class=\"ns.e('label')\"\n        :style=\"labelStyle\"\n      >\n        <slot name=\"label\" :label=\"currentLabel\">\n          {{ currentLabel }}\n        </slot>\n      </component>\n    </form-label-wrap>\n\n    <div :class=\"ns.e('content')\" :style=\"contentStyle\">\n      <slot />\n      <transition-group :name=\"`${ns.namespace.value}-zoom-in-top`\">\n        <slot v-if=\"shouldShowError\" name=\"error\" :error=\"validateMessage\">\n          <div v-if=\"!getHiddenMessage\" :class=\"validateClasses\">\n            {{ validateMessage }}\n          </div>\n        </slot>\n      </transition-group>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  useSlots,\n  watch,\n} from 'vue'\nimport AsyncValidator from 'async-validator'\nimport { refDebounced } from '@vueuse/core'\nimport {\n  addUnit,\n  ensureArray,\n  getProp,\n  isArray,\n  isBoolean,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport { ElMessage } from '@pit-element-plus/components'\nimport { useFormSize } from './hooks'\nimport FormLabelWrap from './form-label-wrap'\nimport { formContextKey, formItemContextKey } from './constants'\nimport { cloneDeep } from 'lodash-unified'\n\nimport type { CSSProperties } from 'vue'\nimport type { RuleItem } from 'async-validator'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type {\n  FormItemContext,\n  FormItemRule,\n  FormValidateFailure,\n} from './types'\nimport type { FormItemProps, FormItemValidateState } from './form-item'\n\ndefineOptions({\n  name: 'ElFormItem',\n})\nconst props = withDefaults(defineProps<FormItemProps>(), {\n  labelPosition: '',\n  showMessage: true,\n  required: undefined,\n  inlineMessage: undefined,\n})\nconst slots = useSlots()\n\nconst formContext = inject(formContextKey, undefined)\nconst parentFormItemContext = inject(formItemContextKey, undefined)\n\nconst _size = useFormSize(undefined, { formItem: false })\nconst ns = useNamespace('form-item')\n\nconst labelId = useId().value\nconst inputIds = ref<string[]>([])\n\nconst validateState = ref<FormItemValidateState>('')\nconst validateStateDebounced = refDebounced(validateState, 100)\nconst validateMessage = ref('')\nconst formItemRef = ref<HTMLDivElement>()\n// special inline value.\nlet initialValue: any = undefined\nlet isResettingField = false\n\nconst labelPosition = computed(\n  () => props.labelPosition || formContext?.labelPosition\n)\n\nconst labelStyle = computed<CSSProperties>(() => {\n  if (labelPosition.value === 'top') {\n    return {}\n  }\n\n  const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n  return { width: labelWidth }\n})\n\nconst getHiddenMessage = computed(() => {\n  return formContext?.hiddenMessage\n})\n\nconst contentStyle = computed<CSSProperties>(() => {\n  if (labelPosition.value === 'top' || formContext?.inline) {\n    return {}\n  }\n  if (!props.label && !props.labelWidth && isNested) {\n    return {}\n  }\n  const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n  if (!props.label && !slots.label) {\n    return { marginLeft: labelWidth }\n  }\n  return {}\n})\n\nconst formItemClasses = computed(() => [\n  ns.b(),\n  ns.m(_size.value),\n  ns.is('error', validateState.value === 'error'),\n  ns.is('validating', validateState.value === 'validating'),\n  ns.is('success', validateState.value === 'success'),\n  ns.is('required', isRequired.value || props.required),\n  ns.is('no-asterisk', formContext?.hideRequiredAsterisk),\n  formContext?.requireAsteriskPosition === 'right'\n    ? 'asterisk-right'\n    : 'asterisk-left',\n  {\n    [ns.m('feedback')]: formContext?.statusIcon,\n    [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\n  },\n])\n\nconst _inlineMessage = computed(() =>\n  isBoolean(props.inlineMessage)\n    ? props.inlineMessage\n    : formContext?.inlineMessage || false\n)\n\nconst validateClasses = computed(() => [\n  ns.e('error'),\n  { [ns.em('error', 'inline')]: _inlineMessage.value },\n])\n\nconst propString = computed(() => {\n  if (!props.prop) return ''\n  return isArray(props.prop) ? props.prop.join('.') : props.prop\n})\n\nconst hasLabel = computed<boolean>(() => {\n  return !!(props.label || slots.label)\n})\n\nconst labelFor = computed<string | undefined>(() => {\n  return (\n    props.for ?? (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\n  )\n})\n\nconst isGroup = computed<boolean>(() => {\n  return !labelFor.value && hasLabel.value\n})\n\nconst isNested = !!parentFormItemContext\n\nconst fieldValue = computed(() => {\n  const model = formContext?.model\n  if (!model || !props.prop) {\n    return\n  }\n  return getProp(model, props.prop).value\n})\n\nfunction buildRule(\n  key: string,\n  args: string[],\n  label: string,\n  trigger: string[]\n): FormItemRule[] {\n  switch (key) {\n    case 'required':\n      return [{ required: true, message: `${label}不能为空`, trigger }]\n    case 'email':\n      return [\n        {\n          type: 'email',\n          message: `${label}格式不正确，请输入有效的邮箱`,\n          trigger,\n        },\n      ]\n    case 'url':\n      return [\n        {\n          type: 'url',\n          message: `${label}格式不正确，请输入有效的 URL`,\n          trigger,\n        },\n      ]\n    case 'numeric':\n      return [\n        {\n          pattern: /^\\d+(\\.\\d+)?$/,\n          message: `${label}只能输入数字`,\n          trigger,\n        },\n      ]\n    case 'alpha':\n      return [\n        {\n          pattern: /^[a-zA-Z]+$/,\n          message: `${label}只能输入英文字母`,\n          trigger,\n        },\n      ]\n    case 'alpha_num':\n      return [\n        {\n          pattern: /^[a-zA-Z0-9]+$/,\n          message: `${label}只能输入字母或数字`,\n          trigger,\n        },\n      ]\n    case 'min':\n      return [\n        {\n          min: Number(args[0]),\n          message: `${label}最少需要 ${args[0]} 个字符`,\n          trigger,\n        },\n      ]\n    case 'max':\n      return [\n        {\n          max: Number(args[0]),\n          message: `${label}最多允许 ${args[0]} 个字符`,\n          trigger,\n        },\n      ]\n    case 'length':\n      return [\n        {\n          len: Number(args[0]),\n          message: `${label}长度必须为 ${args[0]} 个字符`,\n          trigger,\n        },\n      ]\n    case 'min_value':\n      return [\n        {\n          min: Number(args[0]),\n          type: 'number',\n          message: `${label}最小值为 ${args[0]}`,\n          trigger,\n        },\n      ]\n    case 'max_value':\n      return [\n        {\n          max: Number(args[0]),\n          type: 'number',\n          message: `${label}最大值为 ${args[0]}`,\n          trigger,\n        },\n      ]\n    case 'between': {\n      const [min, max] = args\n      return [\n        {\n          min: Number(min),\n          max: Number(max),\n          type: 'number',\n          message: `${label}必须在 ${min} 到 ${max} 之间`,\n          trigger,\n        },\n      ]\n    }\n    default:\n      return []\n  }\n}\n\nfunction parseRuleString(\n  ruleStr: string,\n  label: string,\n  trigger: string[]\n): FormItemRule[] {\n  return ruleStr.split('|').flatMap((segment) => {\n    const [key, argStr] = segment.trim().split(':')\n    const args = argStr ? argStr.split(',') : []\n    return buildRule(key, args, label, trigger)\n  })\n}\n\nconst normalizedRules = computed(() => {\n  const { required } = props\n\n  const rules: FormItemRule[] = []\n\n  // ① rule DSL 解析（true / \"\" / 裸属性 均等价于 \"required\"）\n  if (props.rule !== undefined && props.rule !== false) {\n    const label = props.label || '该字段'\n    const trigger = ['input']\n    const ruleStr =\n      props.rule === true || props.rule === '' ? 'required' : props.rule\n    rules.push(...parseRuleString(ruleStr, label, trigger))\n  }\n\n  if (props.rules) {\n    rules.push(...ensureArray(props.rules))\n  }\n\n  const formRules = formContext?.rules\n  if (formRules && props.prop) {\n    const _rules = getProp<Arrayable<FormItemRule> | undefined>(\n      formRules,\n      props.prop\n    ).value\n    if (_rules) {\n      rules.push(...ensureArray(_rules))\n    }\n  }\n\n  if (required !== undefined) {\n    const requiredRules = rules\n      .map((rule, i) => [rule, i] as const)\n      .filter(([rule]) => 'required' in rule)\n\n    if (requiredRules.length > 0) {\n      for (const [rule, i] of requiredRules) {\n        if (rule.required === required) continue\n        rules[i] = { ...rule, required }\n      }\n    } else {\n      rules.push({ required })\n    }\n  }\n\n  return rules\n})\n\nconst validateEnabled = computed(() => normalizedRules.value.length > 0)\n\nconst getFilteredRule = (trigger: string) => {\n  const rules = normalizedRules.value\n  return (\n    rules\n      .filter((rule) => {\n        if (!rule.trigger || !trigger) return true\n        if (isArray(rule.trigger)) {\n          return rule.trigger.includes(trigger)\n        } else {\n          return rule.trigger === trigger\n        }\n      })\n      // exclude trigger\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      .map(({ trigger, ...rule }): RuleItem => rule)\n  )\n}\n\nconst isRequired = computed(() =>\n  normalizedRules.value.some((rule) => rule.required)\n)\n\nconst shouldShowError = computed(\n  () =>\n    validateStateDebounced.value === 'error' &&\n    props.showMessage &&\n    (formContext?.showMessage ?? true)\n)\n\nconst currentLabel = computed(\n  () => `${props.label || ''}${formContext?.labelSuffix || ''}`\n)\n\nconst setValidationState = (state: FormItemValidateState) => {\n  validateState.value = state\n}\n\nconst onValidationFailed = (error: FormValidateFailure) => {\n  const { errors, fields } = error\n  if (!errors || !fields) {\n    console.error(error)\n  }\n\n  setValidationState('error')\n  validateMessage.value = errors\n    ? (errors?.[0]?.message ?? `${props.prop} is required`)\n    : ''\n\n  formContext?.emit('validate', props.prop!, false, validateMessage.value)\n}\n\nconst onValidationSucceeded = () => {\n  setValidationState('success')\n  formContext?.emit('validate', props.prop!, true, '')\n}\n\nconst doValidate = async (rules: RuleItem[]): Promise<true> => {\n  const modelName = propString.value\n  const validator = new AsyncValidator({\n    [modelName]: rules,\n  })\n  return validator\n    .validate({ [modelName]: fieldValue.value }, { firstFields: true })\n    .then(() => {\n      onValidationSucceeded()\n      return true as const\n    })\n    .catch((err: FormValidateFailure) => {\n      onValidationFailed(err)\n      return Promise.reject(err)\n    })\n}\n\nconst validate: FormItemContext['validate'] = async (trigger, callback) => {\n  // skip validation if its resetting\n  if (isResettingField || !props.prop) {\n    return false\n  }\n\n  const hasCallback = isFunction(callback)\n  if (!validateEnabled.value) {\n    callback?.(false)\n    return false\n  }\n\n  const rules = getFilteredRule(trigger)\n  if (rules.length === 0) {\n    callback?.(true)\n    return true\n  }\n\n  setValidationState('validating')\n\n  return doValidate(rules)\n    .then(() => {\n      callback?.(true)\n      return true as const\n    })\n    .catch((err: FormValidateFailure) => {\n      const { fields } = err\n      // 字段级触发（blur/change）且 messageType 开启时弹出 ElMessage\n      // trigger 为空字符串代表 form.validate() 触发，由 form.vue 统一弹出，此处跳过\n      if (trigger && formContext?.messageType && validateMessage.value) {\n        ElMessage({ message: validateMessage.value, type: 'error' })\n      }\n      callback?.(false, fields)\n      return hasCallback ? false : Promise.reject(fields)\n    })\n}\n\nconst clearValidate: FormItemContext['clearValidate'] = () => {\n  setValidationState('')\n  validateMessage.value = ''\n  isResettingField = false\n}\n\nconst resetField: FormItemContext['resetField'] = async () => {\n  const model = formContext?.model\n  if (!model || !props.prop) return\n\n  const computedValue = getProp(model, props.prop)\n\n  // prevent validation from being triggered\n  isResettingField = true\n\n  computedValue.value = cloneDeep(initialValue)\n\n  await nextTick()\n  clearValidate()\n\n  isResettingField = false\n}\n\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\n  if (!inputIds.value.includes(id)) {\n    inputIds.value.push(id)\n  }\n}\n\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\n  inputIds.value = inputIds.value.filter((listId) => listId !== id)\n}\n\nconst setInitialValue: FormItemContext['setInitialValue'] = (value: any) => {\n  initialValue = cloneDeep(value)\n}\n\nwatch(\n  () => props.error,\n  (val) => {\n    validateMessage.value = val || ''\n    setValidationState(val ? 'error' : '')\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => props.validateStatus,\n  (val) => setValidationState(val || '')\n)\n\nconst context: FormItemContext = reactive({\n  ...toRefs(props),\n  $el: formItemRef,\n  size: _size,\n  validateMessage,\n  validateState,\n  labelId,\n  inputIds,\n  isGroup,\n  hasLabel,\n  fieldValue,\n  addInputId,\n  removeInputId,\n  resetField,\n  clearValidate,\n  validate,\n  propString,\n  setInitialValue,\n})\n\nprovide(formItemContextKey, context)\n\nonMounted(() => {\n  if (props.prop) {\n    setInitialValue(fieldValue.value)\n    formContext?.addField(context)\n  }\n})\n\nonBeforeUnmount(() => {\n  formContext?.removeField(context)\n})\n\ndefineExpose({\n  /**\n   * @description Form item size.\n   */\n  size: _size,\n  /**\n   * @description Validation message.\n   */\n  validateMessage,\n  /**\n   * @description Validation state.\n   */\n  validateState,\n  /**\n   * @description Validate form item.\n   */\n  validate,\n  /**\n   * @description Remove validation status of the field.\n   */\n  clearValidate,\n  /**\n   * @description Reset current field and remove validation result.\n   */\n  resetField,\n  /**\n   * @description Set initial value for this field. When `resetField` is called, the field will reset to this value.\n   */\n  setInitialValue,\n})\n</script>\n","<template>\n  <div\n    ref=\"formItemRef\"\n    :class=\"formItemClasses\"\n    :role=\"isGroup ? 'group' : undefined\"\n    :aria-labelledby=\"isGroup ? labelId : undefined\"\n  >\n    <form-label-wrap\n      :is-auto-width=\"labelStyle.width === 'auto'\"\n      :update-all=\"formContext?.labelWidth === 'auto'\"\n    >\n      <component\n        :is=\"labelFor ? 'label' : 'div'\"\n        v-if=\"!!(label || $slots.label)\"\n        :id=\"labelId\"\n        :for=\"labelFor\"\n        :class=\"ns.e('label')\"\n        :style=\"labelStyle\"\n      >\n        <slot name=\"label\" :label=\"currentLabel\">\n          {{ currentLabel }}\n        </slot>\n      </component>\n    </form-label-wrap>\n\n    <div :class=\"ns.e('content')\" :style=\"contentStyle\">\n      <slot />\n      <transition-group :name=\"`${ns.namespace.value}-zoom-in-top`\">\n        <slot v-if=\"shouldShowError\" name=\"error\" :error=\"validateMessage\">\n          <div v-if=\"!getHiddenMessage\" :class=\"validateClasses\">\n            {{ validateMessage }}\n          </div>\n        </slot>\n      </transition-group>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  useSlots,\n  watch,\n} from 'vue'\nimport AsyncValidator from 'async-validator'\nimport { refDebounced } from '@vueuse/core'\nimport {\n  addUnit,\n  ensureArray,\n  getProp,\n  isArray,\n  isBoolean,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport { ElMessage } from '@pit-element-plus/components'\nimport { useFormSize } from './hooks'\nimport FormLabelWrap from './form-label-wrap'\nimport { formContextKey, formItemContextKey } from './constants'\nimport { cloneDeep } from 'lodash-unified'\n\nimport type { CSSProperties } from 'vue'\nimport type { RuleItem } from 'async-validator'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type {\n  FormItemContext,\n  FormItemRule,\n  FormValidateFailure,\n} from './types'\nimport type { FormItemProps, FormItemValidateState } from './form-item'\n\ndefineOptions({\n  name: 'ElFormItem',\n})\nconst props = withDefaults(defineProps<FormItemProps>(), {\n  labelPosition: '',\n  showMessage: true,\n  required: undefined,\n  inlineMessage: undefined,\n})\nconst slots = useSlots()\n\nconst formContext = inject(formContextKey, undefined)\nconst parentFormItemContext = inject(formItemContextKey, undefined)\n\nconst _size = useFormSize(undefined, { formItem: false })\nconst ns = useNamespace('form-item')\n\nconst labelId = useId().value\nconst inputIds = ref<string[]>([])\n\nconst validateState = ref<FormItemValidateState>('')\nconst validateStateDebounced = refDebounced(validateState, 100)\nconst validateMessage = ref('')\nconst formItemRef = ref<HTMLDivElement>()\n// special inline value.\nlet initialValue: any = undefined\nlet isResettingField = false\n\nconst labelPosition = computed(\n  () => props.labelPosition || formContext?.labelPosition\n)\n\nconst labelStyle = computed<CSSProperties>(() => {\n  if (labelPosition.value === 'top') {\n    return {}\n  }\n\n  const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n  return { width: labelWidth }\n})\n\nconst getHiddenMessage = computed(() => {\n  return formContext?.hiddenMessage\n})\n\nconst contentStyle = computed<CSSProperties>(() => {\n  if (labelPosition.value === 'top' || formContext?.inline) {\n    return {}\n  }\n  if (!props.label && !props.labelWidth && isNested) {\n    return {}\n  }\n  const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth)\n  if (!props.label && !slots.label) {\n    return { marginLeft: labelWidth }\n  }\n  return {}\n})\n\nconst formItemClasses = computed(() => [\n  ns.b(),\n  ns.m(_size.value),\n  ns.is('error', validateState.value === 'error'),\n  ns.is('validating', validateState.value === 'validating'),\n  ns.is('success', validateState.value === 'success'),\n  ns.is('required', isRequired.value || props.required),\n  ns.is('no-asterisk', formContext?.hideRequiredAsterisk),\n  formContext?.requireAsteriskPosition === 'right'\n    ? 'asterisk-right'\n    : 'asterisk-left',\n  {\n    [ns.m('feedback')]: formContext?.statusIcon,\n    [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\n  },\n])\n\nconst _inlineMessage = computed(() =>\n  isBoolean(props.inlineMessage)\n    ? props.inlineMessage\n    : formContext?.inlineMessage || false\n)\n\nconst validateClasses = computed(() => [\n  ns.e('error'),\n  { [ns.em('error', 'inline')]: _inlineMessage.value },\n])\n\nconst propString = computed(() => {\n  if (!props.prop) return ''\n  return isArray(props.prop) ? props.prop.join('.') : props.prop\n})\n\nconst hasLabel = computed<boolean>(() => {\n  return !!(props.label || slots.label)\n})\n\nconst labelFor = computed<string | undefined>(() => {\n  return (\n    props.for ?? (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\n  )\n})\n\nconst isGroup = computed<boolean>(() => {\n  return !labelFor.value && hasLabel.value\n})\n\nconst isNested = !!parentFormItemContext\n\nconst fieldValue = computed(() => {\n  const model = formContext?.model\n  if (!model || !props.prop) {\n    return\n  }\n  return getProp(model, props.prop).value\n})\n\nfunction buildRule(\n  key: string,\n  args: string[],\n  label: string,\n  trigger: string[]\n): FormItemRule[] {\n  switch (key) {\n    case 'required':\n      return [{ required: true, message: `${label}不能为空`, trigger }]\n    case 'email':\n      return [\n        {\n          type: 'email',\n          message: `${label}格式不正确，请输入有效的邮箱`,\n          trigger,\n        },\n      ]\n    case 'url':\n      return [\n        {\n          type: 'url',\n          message: `${label}格式不正确，请输入有效的 URL`,\n          trigger,\n        },\n      ]\n    case 'numeric':\n      return [\n        {\n          pattern: /^\\d+(\\.\\d+)?$/,\n          message: `${label}只能输入数字`,\n          trigger,\n        },\n      ]\n    case 'alpha':\n      return [\n        {\n          pattern: /^[a-zA-Z]+$/,\n          message: `${label}只能输入英文字母`,\n          trigger,\n        },\n      ]\n    case 'alpha_num':\n      return [\n        {\n          pattern: /^[a-zA-Z0-9]+$/,\n          message: `${label}只能输入字母或数字`,\n          trigger,\n        },\n      ]\n    case 'min':\n      return [\n        {\n          min: Number(args[0]),\n          message: `${label}最少需要 ${args[0]} 个字符`,\n          trigger,\n        },\n      ]\n    case 'max':\n      return [\n        {\n          max: Number(args[0]),\n          message: `${label}最多允许 ${args[0]} 个字符`,\n          trigger,\n        },\n      ]\n    case 'length':\n      return [\n        {\n          len: Number(args[0]),\n          message: `${label}长度必须为 ${args[0]} 个字符`,\n          trigger,\n        },\n      ]\n    case 'min_value':\n      return [\n        {\n          min: Number(args[0]),\n          type: 'number',\n          message: `${label}最小值为 ${args[0]}`,\n          trigger,\n        },\n      ]\n    case 'max_value':\n      return [\n        {\n          max: Number(args[0]),\n          type: 'number',\n          message: `${label}最大值为 ${args[0]}`,\n          trigger,\n        },\n      ]\n    case 'between': {\n      const [min, max] = args\n      return [\n        {\n          min: Number(min),\n          max: Number(max),\n          type: 'number',\n          message: `${label}必须在 ${min} 到 ${max} 之间`,\n          trigger,\n        },\n      ]\n    }\n    default:\n      return []\n  }\n}\n\nfunction parseRuleString(\n  ruleStr: string,\n  label: string,\n  trigger: string[]\n): FormItemRule[] {\n  return ruleStr.split('|').flatMap((segment) => {\n    const [key, argStr] = segment.trim().split(':')\n    const args = argStr ? argStr.split(',') : []\n    return buildRule(key, args, label, trigger)\n  })\n}\n\nconst normalizedRules = computed(() => {\n  const { required } = props\n\n  const rules: FormItemRule[] = []\n\n  // ① rule DSL 解析（true / \"\" / 裸属性 均等价于 \"required\"）\n  if (props.rule !== undefined && props.rule !== false) {\n    const label = props.label || '该字段'\n    const trigger = ['input']\n    const ruleStr =\n      props.rule === true || props.rule === '' ? 'required' : props.rule\n    rules.push(...parseRuleString(ruleStr, label, trigger))\n  }\n\n  if (props.rules) {\n    rules.push(...ensureArray(props.rules))\n  }\n\n  const formRules = formContext?.rules\n  if (formRules && props.prop) {\n    const _rules = getProp<Arrayable<FormItemRule> | undefined>(\n      formRules,\n      props.prop\n    ).value\n    if (_rules) {\n      rules.push(...ensureArray(_rules))\n    }\n  }\n\n  if (required !== undefined) {\n    const requiredRules = rules\n      .map((rule, i) => [rule, i] as const)\n      .filter(([rule]) => 'required' in rule)\n\n    if (requiredRules.length > 0) {\n      for (const [rule, i] of requiredRules) {\n        if (rule.required === required) continue\n        rules[i] = { ...rule, required }\n      }\n    } else {\n      rules.push({ required })\n    }\n  }\n\n  return rules\n})\n\nconst validateEnabled = computed(() => normalizedRules.value.length > 0)\n\nconst getFilteredRule = (trigger: string) => {\n  const rules = normalizedRules.value\n  return (\n    rules\n      .filter((rule) => {\n        if (!rule.trigger || !trigger) return true\n        if (isArray(rule.trigger)) {\n          return rule.trigger.includes(trigger)\n        } else {\n          return rule.trigger === trigger\n        }\n      })\n      // exclude trigger\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      .map(({ trigger, ...rule }): RuleItem => rule)\n  )\n}\n\nconst isRequired = computed(() =>\n  normalizedRules.value.some((rule) => rule.required)\n)\n\nconst shouldShowError = computed(\n  () =>\n    validateStateDebounced.value === 'error' &&\n    props.showMessage &&\n    (formContext?.showMessage ?? true)\n)\n\nconst currentLabel = computed(\n  () => `${props.label || ''}${formContext?.labelSuffix || ''}`\n)\n\nconst setValidationState = (state: FormItemValidateState) => {\n  validateState.value = state\n}\n\nconst onValidationFailed = (error: FormValidateFailure) => {\n  const { errors, fields } = error\n  if (!errors || !fields) {\n    console.error(error)\n  }\n\n  setValidationState('error')\n  validateMessage.value = errors\n    ? (errors?.[0]?.message ?? `${props.prop} is required`)\n    : ''\n\n  formContext?.emit('validate', props.prop!, false, validateMessage.value)\n}\n\nconst onValidationSucceeded = () => {\n  setValidationState('success')\n  formContext?.emit('validate', props.prop!, true, '')\n}\n\nconst doValidate = async (rules: RuleItem[]): Promise<true> => {\n  const modelName = propString.value\n  const validator = new AsyncValidator({\n    [modelName]: rules,\n  })\n  return validator\n    .validate({ [modelName]: fieldValue.value }, { firstFields: true })\n    .then(() => {\n      onValidationSucceeded()\n      return true as const\n    })\n    .catch((err: FormValidateFailure) => {\n      onValidationFailed(err)\n      return Promise.reject(err)\n    })\n}\n\nconst validate: FormItemContext['validate'] = async (trigger, callback) => {\n  // skip validation if its resetting\n  if (isResettingField || !props.prop) {\n    return false\n  }\n\n  const hasCallback = isFunction(callback)\n  if (!validateEnabled.value) {\n    callback?.(false)\n    return false\n  }\n\n  const rules = getFilteredRule(trigger)\n  if (rules.length === 0) {\n    callback?.(true)\n    return true\n  }\n\n  setValidationState('validating')\n\n  return doValidate(rules)\n    .then(() => {\n      callback?.(true)\n      return true as const\n    })\n    .catch((err: FormValidateFailure) => {\n      const { fields } = err\n      // 字段级触发（blur/change）且 messageType 开启时弹出 ElMessage\n      // trigger 为空字符串代表 form.validate() 触发，由 form.vue 统一弹出，此处跳过\n      if (trigger && formContext?.messageType && validateMessage.value) {\n        ElMessage({ message: validateMessage.value, type: 'error' })\n      }\n      callback?.(false, fields)\n      return hasCallback ? false : Promise.reject(fields)\n    })\n}\n\nconst clearValidate: FormItemContext['clearValidate'] = () => {\n  setValidationState('')\n  validateMessage.value = ''\n  isResettingField = false\n}\n\nconst resetField: FormItemContext['resetField'] = async () => {\n  const model = formContext?.model\n  if (!model || !props.prop) return\n\n  const computedValue = getProp(model, props.prop)\n\n  // prevent validation from being triggered\n  isResettingField = true\n\n  computedValue.value = cloneDeep(initialValue)\n\n  await nextTick()\n  clearValidate()\n\n  isResettingField = false\n}\n\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\n  if (!inputIds.value.includes(id)) {\n    inputIds.value.push(id)\n  }\n}\n\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\n  inputIds.value = inputIds.value.filter((listId) => listId !== id)\n}\n\nconst setInitialValue: FormItemContext['setInitialValue'] = (value: any) => {\n  initialValue = cloneDeep(value)\n}\n\nwatch(\n  () => props.error,\n  (val) => {\n    validateMessage.value = val || ''\n    setValidationState(val ? 'error' : '')\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => props.validateStatus,\n  (val) => setValidationState(val || '')\n)\n\nconst context: FormItemContext = reactive({\n  ...toRefs(props),\n  $el: formItemRef,\n  size: _size,\n  validateMessage,\n  validateState,\n  labelId,\n  inputIds,\n  isGroup,\n  hasLabel,\n  fieldValue,\n  addInputId,\n  removeInputId,\n  resetField,\n  clearValidate,\n  validate,\n  propString,\n  setInitialValue,\n})\n\nprovide(formItemContextKey, context)\n\nonMounted(() => {\n  if (props.prop) {\n    setInitialValue(fieldValue.value)\n    formContext?.addField(context)\n  }\n})\n\nonBeforeUnmount(() => {\n  formContext?.removeField(context)\n})\n\ndefineExpose({\n  /**\n   * @description Form item size.\n   */\n  size: _size,\n  /**\n   * @description Validation message.\n   */\n  validateMessage,\n  /**\n   * @description Validation state.\n   */\n  validateState,\n  /**\n   * @description Validate form item.\n   */\n  validate,\n  /**\n   * @description Remove validation status of the field.\n   */\n  clearValidate,\n  /**\n   * @description Reset current field and remove validation result.\n   */\n  resetField,\n  /**\n   * @description Set initial value for this field. When `resetField` is called, the field will reset to this value.\n   */\n  setInitialValue,\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Form from './src/form.vue'\nimport FormItem from './src/form-item.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElForm: SFCWithInstall<typeof Form> & {\n  FormItem: typeof FormItem\n} = withInstall(Form, {\n  FormItem,\n})\nexport default ElForm\nexport const ElFormItem: SFCWithInstall<typeof FormItem> =\n  withNoopInstall(FormItem)\n\nexport * from './src/form'\nexport * from './src/form-item'\nexport * from './src/types'\nexport * from './src/constants'\nexport * from './src/hooks'\n\nexport type FormInstance = InstanceType<typeof Form> & unknown\nexport type FormItemInstance = InstanceType<typeof FormItem> & unknown\n","import { unrefElement } from '@vueuse/core'\nimport { isClient } from '@pit-element-plus/utils'\n\nimport type { ComponentPublicInstance } from 'vue'\nimport type { MaybeRef } from '@vueuse/core'\nimport type { Modifier } from '@popperjs/core'\nimport type { Measurable } from './constants'\nimport type { PopperCoreConfigProps } from './content'\n\nexport const buildPopperOptions = (\n  props: PopperCoreConfigProps,\n  modifiers: Modifier<any, any>[] = []\n) => {\n  const { placement, strategy, popperOptions } = props\n  const options = {\n    placement,\n    strategy,\n    ...popperOptions,\n    modifiers: [...genModifiers(props), ...modifiers],\n  }\n\n  deriveExtraModifiers(options, popperOptions?.modifiers)\n  return options\n}\n\nexport const unwrapMeasurableEl = (\n  $el: MaybeRef<Measurable | undefined | ComponentPublicInstance>\n) => {\n  if (!isClient) return\n  return unrefElement($el as HTMLElement)\n}\n\nfunction genModifiers(options: PopperCoreConfigProps) {\n  const { offset, gpuAcceleration, fallbackPlacements } = options\n  return [\n    {\n      name: 'offset',\n      options: {\n        offset: [0, offset ?? 12],\n      },\n    },\n    {\n      name: 'preventOverflow',\n      options: {\n        padding: {\n          top: 0,\n          bottom: 0,\n          left: 0,\n          right: 0,\n        },\n      },\n    },\n    {\n      name: 'flip',\n      options: {\n        padding: 5,\n        fallbackPlacements,\n      },\n    },\n    {\n      name: 'computeStyles',\n      options: {\n        gpuAcceleration,\n      },\n    },\n  ]\n}\n\nfunction deriveExtraModifiers(\n  options: any,\n  modifiers: NonNullable<PopperCoreConfigProps['popperOptions']>['modifiers']\n) {\n  if (modifiers) {\n    options.modifiers = [...options.modifiers, ...(modifiers ?? [])]\n  }\n}\n","import {\n  computed,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  unref,\n  watch,\n} from 'vue'\nimport { isUndefined } from 'lodash-unified'\nimport { usePopper } from '@pit-element-plus/hooks'\nimport { POPPER_INJECTION_KEY } from '../constants'\nimport { buildPopperOptions, unwrapMeasurableEl } from '../utils'\n\nimport type { Modifier } from '@popperjs/core'\nimport type { PartialOptions } from '@pit-element-plus/hooks'\nimport type { PopperContentProps } from '../content'\n\nconst DEFAULT_ARROW_OFFSET = 0\n\nexport const usePopperContent = (props: PopperContentProps) => {\n  const { popperInstanceRef, contentRef, triggerRef, role } = inject(\n    POPPER_INJECTION_KEY,\n    undefined\n  )!\n\n  const arrowRef = ref<HTMLElement>()\n  const arrowOffset = computed(() => props.arrowOffset)\n\n  const eventListenerModifier = computed(() => {\n    return {\n      name: 'eventListeners',\n      enabled: !!props.visible,\n    } as Modifier<'eventListeners', any>\n  })\n\n  const arrowModifier = computed(() => {\n    const arrowEl = unref(arrowRef)\n    const offset = unref(arrowOffset) ?? DEFAULT_ARROW_OFFSET\n    // Seems like the `phase` and `fn` is required by Modifier type\n    // But on its documentation they didn't specify that.\n    // Refer to https://popper.js.org/docs/v2/modifiers/arrow/\n    return {\n      name: 'arrow',\n      enabled: !isUndefined(arrowEl),\n      options: {\n        element: arrowEl,\n        padding: offset,\n      },\n    } as any\n  })\n\n  const options = computed<PartialOptions>(() => {\n    return {\n      onFirstUpdate: () => {\n        update()\n      },\n      ...buildPopperOptions(props, [\n        unref(arrowModifier),\n        unref(eventListenerModifier),\n      ]),\n    }\n  })\n\n  const computedReference = computed(\n    () => unwrapMeasurableEl(props.referenceEl) || unref(triggerRef)\n  )\n\n  const { attributes, state, styles, update, forceUpdate, instanceRef } =\n    usePopper(computedReference, contentRef, options)\n\n  watch(instanceRef, (instance) => (popperInstanceRef.value = instance), {\n    flush: 'sync',\n  })\n\n  onMounted(() => {\n    watch(\n      () => unref(computedReference)?.getBoundingClientRect?.(),\n      () => {\n        update()\n      }\n    )\n  })\n\n  onBeforeUnmount(() => {\n    popperInstanceRef.value = undefined\n  })\n\n  return {\n    attributes,\n    arrowRef,\n    contentRef,\n    instanceRef,\n    state,\n    styles,\n    role,\n\n    forceUpdate,\n    update,\n  }\n}\n\nexport type UsePopperContentReturn = ReturnType<typeof usePopperContent>\n","import { computed, ref, unref } from 'vue'\nimport { useNamespace, useZIndex } from '@pit-element-plus/hooks'\nimport { isNumber } from '@pit-element-plus/utils'\n\nimport type { CSSProperties, StyleValue } from 'vue'\nimport type { UsePopperReturn } from '@pit-element-plus/hooks'\nimport type { UsePopperContentReturn } from './use-content'\nimport type { PopperContentProps } from '../content'\n\nexport const usePopperContentDOM = (\n  props: PopperContentProps,\n  {\n    attributes,\n    styles,\n    role,\n  }: Pick<UsePopperReturn, 'attributes' | 'styles'> &\n    Pick<UsePopperContentReturn, 'role'>\n) => {\n  const { nextZIndex } = useZIndex()\n  const ns = useNamespace('popper')\n\n  const contentAttrs = computed(() => unref(attributes).popper)\n  const contentZIndex = ref<number>(\n    isNumber(props.zIndex) ? props.zIndex : nextZIndex()\n  )\n  const contentClass = computed(() => [\n    ns.b(),\n    ns.is('pure', props.pure),\n    ns.is(props.effect!),\n    props.popperClass,\n  ])\n  const contentStyle = computed<StyleValue[]>(() => {\n    return [\n      { zIndex: unref(contentZIndex) } as CSSProperties,\n      unref(styles).popper as CSSProperties,\n      props.popperStyle || {},\n    ]\n  })\n  const ariaModal = computed<string | undefined>(() =>\n    role.value === 'dialog' ? 'false' : undefined\n  )\n  const arrowStyle = computed(\n    () => (unref(styles).arrow || {}) as CSSProperties\n  )\n\n  const updateZIndex = () => {\n    contentZIndex.value = isNumber(props.zIndex) ? props.zIndex : nextZIndex()\n  }\n\n  return {\n    ariaModal,\n    arrowStyle,\n    contentAttrs,\n    contentClass,\n    contentStyle,\n    contentZIndex,\n\n    updateZIndex,\n  }\n}\n\nexport type UsePopperContentDOMReturn = ReturnType<typeof usePopperContentDOM>\n","import { onBeforeUnmount, ref } from 'vue'\n\nimport type { SetupContext } from 'vue'\nimport type { PopperContentEmits, PopperContentProps } from '../content'\n\nexport const usePopperContentFocusTrap = (\n  props: PopperContentProps,\n  emit: SetupContext<PopperContentEmits>['emit']\n) => {\n  const trapped = ref(false)\n  const focusStartRef = ref<'container' | 'first' | HTMLElement>()\n\n  const onFocusAfterTrapped = () => {\n    emit('focus')\n  }\n\n  const onFocusAfterReleased = (event: CustomEvent) => {\n    if (event.detail?.focusReason !== 'pointer') {\n      focusStartRef.value = 'first'\n      emit('blur')\n    }\n  }\n\n  const onFocusInTrap = (event: FocusEvent) => {\n    if (props.visible && !trapped.value) {\n      if (event.target) {\n        focusStartRef.value = event.target as typeof focusStartRef.value\n      }\n      trapped.value = true\n    }\n  }\n\n  const onFocusoutPrevented = (event: CustomEvent) => {\n    if (!props.trapping) {\n      if (event.detail.focusReason === 'pointer') {\n        event.preventDefault()\n      }\n      trapped.value = false\n    }\n  }\n\n  const onReleaseRequested = () => {\n    trapped.value = false\n    emit('close')\n  }\n\n  onBeforeUnmount(() => {\n    focusStartRef.value = undefined\n  })\n\n  return {\n    focusStartRef,\n    trapped,\n\n    onFocusAfterReleased,\n    onFocusAfterTrapped,\n    onFocusInTrap,\n    onFocusoutPrevented,\n    onReleaseRequested,\n  }\n}\n\nexport type UsePopperContentFocusTrapReturn = ReturnType<\n  typeof usePopperContentFocusTrap\n>\n","<template>\n  <div\n    ref=\"contentRef\"\n    v-bind=\"contentAttrs\"\n    :style=\"contentStyle\"\n    :class=\"contentClass\"\n    tabindex=\"-1\"\n    @mouseenter=\"(e) => $emit('mouseenter', e)\"\n    @mouseleave=\"(e) => $emit('mouseleave', e)\"\n  >\n    <el-focus-trap\n      :loop=\"loop\"\n      :trapped=\"trapped\"\n      :trap-on-focus-in=\"true\"\n      :focus-trap-el=\"contentRef\"\n      :focus-start-el=\"focusStartRef\"\n      @focus-after-trapped=\"onFocusAfterTrapped\"\n      @focus-after-released=\"onFocusAfterReleased\"\n      @focusin=\"onFocusInTrap\"\n      @focusout-prevented=\"onFocusoutPrevented\"\n      @release-requested=\"onReleaseRequested\"\n    >\n      <slot />\n    </el-focus-trap>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, onBeforeUnmount, onMounted, provide, unref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { NOOP, isElement } from '@pit-element-plus/utils'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport { formItemContextKey } from '@pit-element-plus/components/form'\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants'\nimport { popperContentEmits, popperContentPropsDefaults } from './content'\nimport {\n  usePopperContent,\n  usePopperContentDOM,\n  usePopperContentFocusTrap,\n} from './composables'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperContentProps } from './content'\n\ndefineOptions({\n  name: 'ElPopperContent',\n})\n\nconst emit = defineEmits(popperContentEmits)\n\nconst props = withDefaults(\n  defineProps<PopperContentProps>(),\n  popperContentPropsDefaults\n)\n\nconst {\n  focusStartRef,\n  trapped,\n\n  onFocusAfterReleased,\n  onFocusAfterTrapped,\n  onFocusInTrap,\n  onFocusoutPrevented,\n  onReleaseRequested,\n} = usePopperContentFocusTrap(props, emit)\n\nconst { attributes, arrowRef, contentRef, styles, instanceRef, role, update } =\n  usePopperContent(props)\n\nconst {\n  ariaModal,\n  arrowStyle,\n  contentAttrs,\n  contentClass,\n  contentStyle,\n  updateZIndex,\n} = usePopperContentDOM(props, {\n  styles,\n  attributes,\n  role,\n})\n\nconst formItemContext = inject(formItemContextKey, undefined)\n\nprovide(POPPER_CONTENT_INJECTION_KEY, {\n  arrowStyle,\n  arrowRef,\n})\n\nif (formItemContext) {\n  // disallow auto-id from inside popper content\n  provide(formItemContextKey, {\n    ...formItemContext,\n    addInputId: NOOP,\n    removeInputId: NOOP,\n  })\n}\n\nlet triggerTargetAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst updatePopper = (shouldUpdateZIndex = true) => {\n  update()\n  shouldUpdateZIndex && updateZIndex()\n}\n\nconst togglePopperAlive = () => {\n  updatePopper(false)\n  if (props.visible && props.focusOnShow) {\n    trapped.value = true\n  } else if (props.visible === false) {\n    trapped.value = false\n  }\n}\n\nonMounted(() => {\n  watch(\n    () => props.triggerTargetEl,\n    (triggerTargetEl, prevTriggerTargetEl) => {\n      triggerTargetAriaStopWatch?.()\n      triggerTargetAriaStopWatch = undefined\n\n      const el = unref(triggerTargetEl || contentRef.value)\n      const prevEl = unref(prevTriggerTargetEl || contentRef.value)\n\n      if (isElement(el)) {\n        triggerTargetAriaStopWatch = watch(\n          [role, () => props.ariaLabel, ariaModal, () => props.id],\n          (watches) => {\n            ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key, idx) => {\n              isNil(watches[idx])\n                ? el.removeAttribute(key)\n                : el.setAttribute(key, watches[idx]!)\n            })\n          },\n          { immediate: true }\n        )\n      }\n      if (prevEl !== el && isElement(prevEl)) {\n        ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key) => {\n          prevEl.removeAttribute(key)\n        })\n      }\n    },\n    { immediate: true }\n  )\n\n  watch(() => props.visible, togglePopperAlive, { immediate: true })\n})\n\nonBeforeUnmount(() => {\n  triggerTargetAriaStopWatch?.()\n  triggerTargetAriaStopWatch = undefined\n  contentRef.value = undefined\n})\n\ndefineExpose({\n  /**\n   * @description popper content element\n   */\n  popperContentRef: contentRef,\n  /**\n   * @description popperjs instance\n   */\n  popperInstanceRef: instanceRef,\n  /**\n   * @description method for updating popper\n   */\n  updatePopper,\n\n  /**\n   * @description content style\n   */\n  contentStyle,\n})\n</script>\n","<template>\n  <div\n    ref=\"contentRef\"\n    v-bind=\"contentAttrs\"\n    :style=\"contentStyle\"\n    :class=\"contentClass\"\n    tabindex=\"-1\"\n    @mouseenter=\"(e) => $emit('mouseenter', e)\"\n    @mouseleave=\"(e) => $emit('mouseleave', e)\"\n  >\n    <el-focus-trap\n      :loop=\"loop\"\n      :trapped=\"trapped\"\n      :trap-on-focus-in=\"true\"\n      :focus-trap-el=\"contentRef\"\n      :focus-start-el=\"focusStartRef\"\n      @focus-after-trapped=\"onFocusAfterTrapped\"\n      @focus-after-released=\"onFocusAfterReleased\"\n      @focusin=\"onFocusInTrap\"\n      @focusout-prevented=\"onFocusoutPrevented\"\n      @release-requested=\"onReleaseRequested\"\n    >\n      <slot />\n    </el-focus-trap>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, onBeforeUnmount, onMounted, provide, unref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { NOOP, isElement } from '@pit-element-plus/utils'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport { formItemContextKey } from '@pit-element-plus/components/form'\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants'\nimport { popperContentEmits, popperContentPropsDefaults } from './content'\nimport {\n  usePopperContent,\n  usePopperContentDOM,\n  usePopperContentFocusTrap,\n} from './composables'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperContentProps } from './content'\n\ndefineOptions({\n  name: 'ElPopperContent',\n})\n\nconst emit = defineEmits(popperContentEmits)\n\nconst props = withDefaults(\n  defineProps<PopperContentProps>(),\n  popperContentPropsDefaults\n)\n\nconst {\n  focusStartRef,\n  trapped,\n\n  onFocusAfterReleased,\n  onFocusAfterTrapped,\n  onFocusInTrap,\n  onFocusoutPrevented,\n  onReleaseRequested,\n} = usePopperContentFocusTrap(props, emit)\n\nconst { attributes, arrowRef, contentRef, styles, instanceRef, role, update } =\n  usePopperContent(props)\n\nconst {\n  ariaModal,\n  arrowStyle,\n  contentAttrs,\n  contentClass,\n  contentStyle,\n  updateZIndex,\n} = usePopperContentDOM(props, {\n  styles,\n  attributes,\n  role,\n})\n\nconst formItemContext = inject(formItemContextKey, undefined)\n\nprovide(POPPER_CONTENT_INJECTION_KEY, {\n  arrowStyle,\n  arrowRef,\n})\n\nif (formItemContext) {\n  // disallow auto-id from inside popper content\n  provide(formItemContextKey, {\n    ...formItemContext,\n    addInputId: NOOP,\n    removeInputId: NOOP,\n  })\n}\n\nlet triggerTargetAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst updatePopper = (shouldUpdateZIndex = true) => {\n  update()\n  shouldUpdateZIndex && updateZIndex()\n}\n\nconst togglePopperAlive = () => {\n  updatePopper(false)\n  if (props.visible && props.focusOnShow) {\n    trapped.value = true\n  } else if (props.visible === false) {\n    trapped.value = false\n  }\n}\n\nonMounted(() => {\n  watch(\n    () => props.triggerTargetEl,\n    (triggerTargetEl, prevTriggerTargetEl) => {\n      triggerTargetAriaStopWatch?.()\n      triggerTargetAriaStopWatch = undefined\n\n      const el = unref(triggerTargetEl || contentRef.value)\n      const prevEl = unref(prevTriggerTargetEl || contentRef.value)\n\n      if (isElement(el)) {\n        triggerTargetAriaStopWatch = watch(\n          [role, () => props.ariaLabel, ariaModal, () => props.id],\n          (watches) => {\n            ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key, idx) => {\n              isNil(watches[idx])\n                ? el.removeAttribute(key)\n                : el.setAttribute(key, watches[idx]!)\n            })\n          },\n          { immediate: true }\n        )\n      }\n      if (prevEl !== el && isElement(prevEl)) {\n        ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key) => {\n          prevEl.removeAttribute(key)\n        })\n      }\n    },\n    { immediate: true }\n  )\n\n  watch(() => props.visible, togglePopperAlive, { immediate: true })\n})\n\nonBeforeUnmount(() => {\n  triggerTargetAriaStopWatch?.()\n  triggerTargetAriaStopWatch = undefined\n  contentRef.value = undefined\n})\n\ndefineExpose({\n  /**\n   * @description popper content element\n   */\n  popperContentRef: contentRef,\n  /**\n   * @description popperjs instance\n   */\n  popperInstanceRef: instanceRef,\n  /**\n   * @description method for updating popper\n   */\n  updatePopper,\n\n  /**\n   * @description content style\n   */\n  contentStyle,\n})\n</script>\n","<template>\n  <div\n    ref=\"contentRef\"\n    v-bind=\"contentAttrs\"\n    :style=\"contentStyle\"\n    :class=\"contentClass\"\n    tabindex=\"-1\"\n    @mouseenter=\"(e) => $emit('mouseenter', e)\"\n    @mouseleave=\"(e) => $emit('mouseleave', e)\"\n  >\n    <el-focus-trap\n      :loop=\"loop\"\n      :trapped=\"trapped\"\n      :trap-on-focus-in=\"true\"\n      :focus-trap-el=\"contentRef\"\n      :focus-start-el=\"focusStartRef\"\n      @focus-after-trapped=\"onFocusAfterTrapped\"\n      @focus-after-released=\"onFocusAfterReleased\"\n      @focusin=\"onFocusInTrap\"\n      @focusout-prevented=\"onFocusoutPrevented\"\n      @release-requested=\"onReleaseRequested\"\n    >\n      <slot />\n    </el-focus-trap>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, onBeforeUnmount, onMounted, provide, unref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { NOOP, isElement } from '@pit-element-plus/utils'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport { formItemContextKey } from '@pit-element-plus/components/form'\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants'\nimport { popperContentEmits, popperContentPropsDefaults } from './content'\nimport {\n  usePopperContent,\n  usePopperContentDOM,\n  usePopperContentFocusTrap,\n} from './composables'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperContentProps } from './content'\n\ndefineOptions({\n  name: 'ElPopperContent',\n})\n\nconst emit = defineEmits(popperContentEmits)\n\nconst props = withDefaults(\n  defineProps<PopperContentProps>(),\n  popperContentPropsDefaults\n)\n\nconst {\n  focusStartRef,\n  trapped,\n\n  onFocusAfterReleased,\n  onFocusAfterTrapped,\n  onFocusInTrap,\n  onFocusoutPrevented,\n  onReleaseRequested,\n} = usePopperContentFocusTrap(props, emit)\n\nconst { attributes, arrowRef, contentRef, styles, instanceRef, role, update } =\n  usePopperContent(props)\n\nconst {\n  ariaModal,\n  arrowStyle,\n  contentAttrs,\n  contentClass,\n  contentStyle,\n  updateZIndex,\n} = usePopperContentDOM(props, {\n  styles,\n  attributes,\n  role,\n})\n\nconst formItemContext = inject(formItemContextKey, undefined)\n\nprovide(POPPER_CONTENT_INJECTION_KEY, {\n  arrowStyle,\n  arrowRef,\n})\n\nif (formItemContext) {\n  // disallow auto-id from inside popper content\n  provide(formItemContextKey, {\n    ...formItemContext,\n    addInputId: NOOP,\n    removeInputId: NOOP,\n  })\n}\n\nlet triggerTargetAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst updatePopper = (shouldUpdateZIndex = true) => {\n  update()\n  shouldUpdateZIndex && updateZIndex()\n}\n\nconst togglePopperAlive = () => {\n  updatePopper(false)\n  if (props.visible && props.focusOnShow) {\n    trapped.value = true\n  } else if (props.visible === false) {\n    trapped.value = false\n  }\n}\n\nonMounted(() => {\n  watch(\n    () => props.triggerTargetEl,\n    (triggerTargetEl, prevTriggerTargetEl) => {\n      triggerTargetAriaStopWatch?.()\n      triggerTargetAriaStopWatch = undefined\n\n      const el = unref(triggerTargetEl || contentRef.value)\n      const prevEl = unref(prevTriggerTargetEl || contentRef.value)\n\n      if (isElement(el)) {\n        triggerTargetAriaStopWatch = watch(\n          [role, () => props.ariaLabel, ariaModal, () => props.id],\n          (watches) => {\n            ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key, idx) => {\n              isNil(watches[idx])\n                ? el.removeAttribute(key)\n                : el.setAttribute(key, watches[idx]!)\n            })\n          },\n          { immediate: true }\n        )\n      }\n      if (prevEl !== el && isElement(prevEl)) {\n        ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key) => {\n          prevEl.removeAttribute(key)\n        })\n      }\n    },\n    { immediate: true }\n  )\n\n  watch(() => props.visible, togglePopperAlive, { immediate: true })\n})\n\nonBeforeUnmount(() => {\n  triggerTargetAriaStopWatch?.()\n  triggerTargetAriaStopWatch = undefined\n  contentRef.value = undefined\n})\n\ndefineExpose({\n  /**\n   * @description popper content element\n   */\n  popperContentRef: contentRef,\n  /**\n   * @description popperjs instance\n   */\n  popperInstanceRef: instanceRef,\n  /**\n   * @description method for updating popper\n   */\n  updatePopper,\n\n  /**\n   * @description content style\n   */\n  contentStyle,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Popper from './src/popper.vue'\nimport ElPopperArrow from './src/arrow.vue'\nimport ElPopperTrigger from './src/trigger.vue'\nimport ElPopperContent from './src/content.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport { ElPopperArrow, ElPopperTrigger, ElPopperContent }\n\nexport const ElPopper: SFCWithInstall<typeof Popper> = withInstall(Popper)\nexport default ElPopper\n\nexport * from './src/popper'\nexport * from './src/trigger'\nexport * from './src/content'\nexport * from './src/arrow'\nexport * from './src/constants'\n\nexport type { Placement, Options } from '@popperjs/core'\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport {\n  popperContentProps,\n  popperContentPropsDefaults,\n} from '@pit-element-plus/components/popper'\nimport {\n  useAriaProps,\n  useDelayedToggleProps,\n  useDelayedTogglePropsDefaults,\n} from '@pit-element-plus/hooks'\nimport { teleportProps } from '@pit-element-plus/components/teleport'\n\nimport type { AriaProps, UseDelayedToggleProps } from '@pit-element-plus/hooks'\nimport type { PopperContentProps } from '@pit-element-plus/components/popper'\nimport type TooltipContent from './content.vue'\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport interface ElTooltipContentProps\n  extends UseDelayedToggleProps, Omit<PopperContentProps, 'visible'> {\n  /**\n   * @description which element the tooltip CONTENT appends to\n   */\n  appendTo?: string | HTMLElement\n  /**\n   * @description display content, can be overridden by `slot#content`\n   */\n  content?: string\n  /**\n   * @description whether `content` is treated as HTML string\n   */\n  rawContent?: boolean\n  /**\n   * @description when tooltip inactive and `persistent` is `false` , popconfirm will be destroyed\n   */\n  persistent?: boolean\n  // because model toggle prop is generated dynamically\n  // so the typing cannot be evaluated by typescript as type:\n  // [name]: { type: Boolean, default: null }\n  // so we need to declare that again for type checking.\n  /**\n   * @description visibility of Tooltip\n   */\n  visible?: boolean | null\n  /**\n   * @description animation name\n   */\n  transition?: string\n  /**\n   * @description whether tooltip content is teleported, if `true` it will be teleported to where `append-to` sets\n   */\n  teleported?: boolean\n  /**\n   * @description whether Tooltip is disabled\n   */\n  disabled?: boolean\n  ariaLabel?: AriaProps['ariaLabel']\n}\n\nexport const useTooltipContentPropsDefaults = {\n  ...useDelayedTogglePropsDefaults,\n  ...popperContentPropsDefaults,\n  content: '',\n  visible: null,\n  teleported: true,\n} as const\n\n/**\n * @deprecated Removed after 3.0.0, Use `ElTooltipContentProps` instead.\n */\nexport const useTooltipContentProps = buildProps({\n  ...useDelayedToggleProps,\n  ...popperContentProps,\n  /**\n   * @description which element the tooltip CONTENT appends to\n   */\n  appendTo: {\n    type: teleportProps.to.type,\n  },\n  /**\n   * @description display content, can be overridden by `slot#content`\n   */\n  content: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description whether `content` is treated as HTML string\n   */\n  rawContent: Boolean,\n  /**\n   * @description when tooltip inactive and `persistent` is `false` , popconfirm will be destroyed\n   */\n  persistent: Boolean,\n  // because model toggle prop is generated dynamically\n  // so the typing cannot be evaluated by typescript as type:\n  // [name]: { type: Boolean, default: null }\n  // so we need to declare that again for type checking.\n  /**\n   * @description visibility of Tooltip\n   */\n  visible: {\n    type: definePropType<boolean | null>(Boolean),\n    default: null,\n  },\n  /**\n   * @description animation name\n   */\n  transition: String,\n  /**\n   * @description whether tooltip content is teleported, if `true` it will be teleported to where `append-to` sets\n   */\n  teleported: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether Tooltip is disabled\n   */\n  disabled: Boolean,\n  ...useAriaProps(['ariaLabel']),\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `ElTooltipContentProps` instead.\n */\nexport type ElTooltipContentPropsPublic = ExtractPublicPropTypes<\n  typeof useTooltipContentProps\n>\n\nexport type TooltipContentInstance = InstanceType<typeof TooltipContent> &\n  unknown\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { popperTriggerProps } from '@pit-element-plus/components/popper'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\n\nimport type { PopperTriggerProps } from '@pit-element-plus/components/popper'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport type TooltipTriggerType = 'hover' | 'focus' | 'click' | 'contextmenu'\n\nexport interface UseTooltipTriggerProps extends PopperTriggerProps {\n  /**\n   * @description whether Tooltip is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description How should the tooltip be triggered (to show), not valid in controlled mode\n   */\n  trigger?: Arrayable<TooltipTriggerType>\n  /**\n   * @description When you click the mouse to focus on the trigger element, you can define a set of keyboard codes to control the display of tooltip through the keyboard, not valid in controlled mode\n   */\n  triggerKeys?: string[]\n  /**\n   * @description when triggering tooltips through hover, whether to focus the trigger element, which improves accessibility\n   */\n  focusOnTarget?: boolean\n}\n\nexport const useTooltipTriggerPropsDefaults = {\n  trigger: 'hover',\n  triggerKeys: () => [\n    EVENT_CODE.enter,\n    EVENT_CODE.numpadEnter,\n    EVENT_CODE.space,\n  ],\n} as const\n\n/**\n * @deprecated Removed after 3.0.0, Use `UseTooltipTriggerProps` instead.\n */\nexport const useTooltipTriggerProps = buildProps({\n  ...popperTriggerProps,\n  /**\n   * @description whether Tooltip is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description How should the tooltip be triggered (to show), not valid in controlled mode\n   */\n  trigger: {\n    type: definePropType<Arrayable<TooltipTriggerType>>([String, Array]),\n    default: 'hover',\n  },\n  /**\n   * @description When you click the mouse to focus on the trigger element, you can define a set of keyboard codes to control the display of tooltip through the keyboard, not valid in controlled mode\n   */\n  triggerKeys: {\n    type: definePropType<string[]>(Array),\n    default: () => [EVENT_CODE.enter, EVENT_CODE.numpadEnter, EVENT_CODE.space],\n  },\n  /**\n   * @description when triggering tooltips through hover, whether to focus the trigger element, which improves accessibility\n   */\n  focusOnTarget: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `UseTooltipTriggerProps` instead.\n */\nexport type ElTooltipTriggerProps = UseTooltipTriggerProps\n\n/**\n * @deprecated Removed after 3.0.0, Use `UseTooltipTriggerProps` instead.\n */\nexport type ElTooltipTriggerPropsPublic = ExtractPublicPropTypes<\n  typeof useTooltipTriggerProps\n>\n","import { buildProps } from '@pit-element-plus/utils'\nimport { createModelToggleComposable } from '@pit-element-plus/hooks'\nimport {\n  popperArrowProps,\n  popperProps,\n} from '@pit-element-plus/components/popper'\nimport { useTooltipContentProps } from './content'\nimport { useTooltipTriggerProps } from './trigger'\n\nimport type {\n  PopperArrowProps,\n  PopperProps,\n} from '@pit-element-plus/components/popper'\nimport type { ElTooltipContentProps } from './content'\nimport type { UseTooltipTriggerProps } from './trigger'\nimport type Tooltip from './tooltip.vue'\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport const {\n  useModelToggleProps: useTooltipModelToggleProps,\n  useModelToggleEmits: useTooltipModelToggleEmits,\n  useModelToggle: useTooltipModelToggle,\n} = createModelToggleComposable('visible' as const)\n\nexport interface UseTooltipProps\n  extends\n    PopperProps,\n    ElTooltipContentProps,\n    UseTooltipTriggerProps,\n    PopperArrowProps {\n  /**\n   * @description whether the tooltip content has an arrow\n   */\n  showArrow?: boolean\n  'onUpdate:visible'?: (value: boolean) => void\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `UseTooltipProps` instead.\n */\nexport const useTooltipProps = buildProps({\n  ...popperProps,\n  ...useTooltipModelToggleProps,\n  ...useTooltipContentProps,\n  ...useTooltipTriggerProps,\n  ...popperArrowProps,\n  /**\n   * @description whether the tooltip content has an arrow\n   */\n  showArrow: {\n    type: Boolean,\n    default: true,\n  },\n})\n\nexport const tooltipEmits = [\n  ...useTooltipModelToggleEmits,\n  'before-show',\n  'before-hide',\n  'show',\n  'hide',\n  'open',\n  'close',\n] as const\n\n/**\n * @deprecated Removed after 3.0.0, Use `UseTooltipProps` instead.\n */\nexport type ElTooltipProps = UseTooltipProps\n\n/**\n * @deprecated Removed after 3.0.0, Use `UseTooltipProps` instead.\n */\nexport type ElTooltipPropsPublic = ExtractPublicPropTypes<\n  typeof useTooltipProps\n>\n\nexport type TooltipInstance = InstanceType<typeof Tooltip> & unknown\n","import type { Arrayable } from '@pit-element-plus/utils'\nimport type { InjectionKey, Ref } from 'vue'\nimport type { TooltipTriggerType } from './trigger'\n\nexport type ElTooltipInjectionContext = {\n  controlled: Ref<boolean>\n  id: Ref<string>\n  open: Ref<boolean>\n  trigger: Ref<Arrayable<TooltipTriggerType>>\n  onOpen: (e?: Event) => void\n  onClose: (e?: Event) => void\n  onToggle: (e: Event) => void\n  onShow: () => void\n  onHide: () => void\n  onBeforeShow: () => void\n  onBeforeHide: () => void\n  updatePopper: () => void\n}\n\nexport const TOOLTIP_INJECTION_KEY: InjectionKey<ElTooltipInjectionContext> =\n  Symbol('elTooltip')\n","import { unref } from 'vue'\nimport { isArray } from '@pit-element-plus/utils'\n\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { Ref } from 'vue'\nimport type { TooltipTriggerType } from './trigger'\n\nexport const isTriggerType = (\n  trigger: Arrayable<TooltipTriggerType>,\n  type: TooltipTriggerType\n) => {\n  if (isArray(trigger)) {\n    return trigger.includes(type)\n  }\n  return trigger === type\n}\n\nexport const whenTrigger = (\n  trigger: Ref<Arrayable<TooltipTriggerType>>,\n  type: TooltipTriggerType,\n  handler: (e: Event) => void\n) => {\n  return (e: Event) => {\n    isTriggerType(unref(trigger), type) && handler(e)\n  }\n}\n","<template>\n  <el-popper-trigger\n    :id=\"id\"\n    :virtual-ref=\"virtualRef\"\n    :open=\"open\"\n    :virtual-triggering=\"virtualTriggering\"\n    :class=\"ns.e('trigger')\"\n    @blur=\"onBlur\"\n    @click=\"onClick\"\n    @contextmenu=\"onContextMenu\"\n    @focus=\"onFocus\"\n    @mouseenter=\"onMouseenter\"\n    @mouseleave=\"onMouseleave\"\n    @keydown=\"onKeydown\"\n  >\n    <slot />\n  </el-popper-trigger>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, nextTick, ref, toRef, unref } from 'vue'\nimport { ElPopperTrigger } from '@pit-element-plus/components/popper'\nimport {\n  composeEventHandlers,\n  focusElement,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { whenTrigger } from './utils'\nimport { useTooltipTriggerPropsDefaults } from './trigger'\n\nimport type { UseTooltipTriggerProps } from './trigger'\nimport type { OnlyChildExpose } from '@pit-element-plus/components/slot'\n\ndefineOptions({\n  name: 'ElTooltipTrigger',\n})\n\nconst props = withDefaults(\n  defineProps<UseTooltipTriggerProps>(),\n  useTooltipTriggerPropsDefaults\n)\n\nconst ns = useNamespace('tooltip')\nconst { controlled, id, open, onOpen, onClose, onToggle } = inject(\n  TOOLTIP_INJECTION_KEY,\n  undefined\n)!\n\nconst triggerRef = ref<OnlyChildExpose | null>(null)\n\nconst stopWhenControlledOrDisabled = () => {\n  if (unref(controlled) || props.disabled) {\n    return true\n  }\n}\nconst trigger = toRef(props, 'trigger')\nconst onMouseenter = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'hover', (e) => {\n    onOpen(e)\n\n    if (props.focusOnTarget && e.target) {\n      nextTick(() => {\n        focusElement(e.target as HTMLElement, { preventScroll: true })\n      })\n    }\n  })\n)\nconst onMouseleave = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'hover', onClose)\n)\nconst onClick = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'click', (e) => {\n    // distinguish left click\n    if ((e as MouseEvent).button === 0) {\n      onToggle(e)\n    }\n  })\n)\n\nconst onFocus = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'focus', onOpen)\n)\n\nconst onBlur = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'focus', onClose)\n)\n\nconst onContextMenu = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'contextmenu', (e: Event) => {\n    e.preventDefault()\n    onToggle(e)\n  })\n)\n\nconst onKeydown = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  (e: Event) => {\n    const code = getEventCode(e as KeyboardEvent)\n    if (props.triggerKeys.includes(code)) {\n      e.preventDefault()\n      onToggle(e)\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n})\n</script>\n","<template>\n  <el-popper-trigger\n    :id=\"id\"\n    :virtual-ref=\"virtualRef\"\n    :open=\"open\"\n    :virtual-triggering=\"virtualTriggering\"\n    :class=\"ns.e('trigger')\"\n    @blur=\"onBlur\"\n    @click=\"onClick\"\n    @contextmenu=\"onContextMenu\"\n    @focus=\"onFocus\"\n    @mouseenter=\"onMouseenter\"\n    @mouseleave=\"onMouseleave\"\n    @keydown=\"onKeydown\"\n  >\n    <slot />\n  </el-popper-trigger>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, nextTick, ref, toRef, unref } from 'vue'\nimport { ElPopperTrigger } from '@pit-element-plus/components/popper'\nimport {\n  composeEventHandlers,\n  focusElement,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { whenTrigger } from './utils'\nimport { useTooltipTriggerPropsDefaults } from './trigger'\n\nimport type { UseTooltipTriggerProps } from './trigger'\nimport type { OnlyChildExpose } from '@pit-element-plus/components/slot'\n\ndefineOptions({\n  name: 'ElTooltipTrigger',\n})\n\nconst props = withDefaults(\n  defineProps<UseTooltipTriggerProps>(),\n  useTooltipTriggerPropsDefaults\n)\n\nconst ns = useNamespace('tooltip')\nconst { controlled, id, open, onOpen, onClose, onToggle } = inject(\n  TOOLTIP_INJECTION_KEY,\n  undefined\n)!\n\nconst triggerRef = ref<OnlyChildExpose | null>(null)\n\nconst stopWhenControlledOrDisabled = () => {\n  if (unref(controlled) || props.disabled) {\n    return true\n  }\n}\nconst trigger = toRef(props, 'trigger')\nconst onMouseenter = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'hover', (e) => {\n    onOpen(e)\n\n    if (props.focusOnTarget && e.target) {\n      nextTick(() => {\n        focusElement(e.target as HTMLElement, { preventScroll: true })\n      })\n    }\n  })\n)\nconst onMouseleave = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'hover', onClose)\n)\nconst onClick = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'click', (e) => {\n    // distinguish left click\n    if ((e as MouseEvent).button === 0) {\n      onToggle(e)\n    }\n  })\n)\n\nconst onFocus = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'focus', onOpen)\n)\n\nconst onBlur = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'focus', onClose)\n)\n\nconst onContextMenu = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'contextmenu', (e: Event) => {\n    e.preventDefault()\n    onToggle(e)\n  })\n)\n\nconst onKeydown = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  (e: Event) => {\n    const code = getEventCode(e as KeyboardEvent)\n    if (props.triggerKeys.includes(code)) {\n      e.preventDefault()\n      onToggle(e)\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n})\n</script>\n","<template>\n  <el-popper-trigger\n    :id=\"id\"\n    :virtual-ref=\"virtualRef\"\n    :open=\"open\"\n    :virtual-triggering=\"virtualTriggering\"\n    :class=\"ns.e('trigger')\"\n    @blur=\"onBlur\"\n    @click=\"onClick\"\n    @contextmenu=\"onContextMenu\"\n    @focus=\"onFocus\"\n    @mouseenter=\"onMouseenter\"\n    @mouseleave=\"onMouseleave\"\n    @keydown=\"onKeydown\"\n  >\n    <slot />\n  </el-popper-trigger>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, nextTick, ref, toRef, unref } from 'vue'\nimport { ElPopperTrigger } from '@pit-element-plus/components/popper'\nimport {\n  composeEventHandlers,\n  focusElement,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { whenTrigger } from './utils'\nimport { useTooltipTriggerPropsDefaults } from './trigger'\n\nimport type { UseTooltipTriggerProps } from './trigger'\nimport type { OnlyChildExpose } from '@pit-element-plus/components/slot'\n\ndefineOptions({\n  name: 'ElTooltipTrigger',\n})\n\nconst props = withDefaults(\n  defineProps<UseTooltipTriggerProps>(),\n  useTooltipTriggerPropsDefaults\n)\n\nconst ns = useNamespace('tooltip')\nconst { controlled, id, open, onOpen, onClose, onToggle } = inject(\n  TOOLTIP_INJECTION_KEY,\n  undefined\n)!\n\nconst triggerRef = ref<OnlyChildExpose | null>(null)\n\nconst stopWhenControlledOrDisabled = () => {\n  if (unref(controlled) || props.disabled) {\n    return true\n  }\n}\nconst trigger = toRef(props, 'trigger')\nconst onMouseenter = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'hover', (e) => {\n    onOpen(e)\n\n    if (props.focusOnTarget && e.target) {\n      nextTick(() => {\n        focusElement(e.target as HTMLElement, { preventScroll: true })\n      })\n    }\n  })\n)\nconst onMouseleave = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'hover', onClose)\n)\nconst onClick = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'click', (e) => {\n    // distinguish left click\n    if ((e as MouseEvent).button === 0) {\n      onToggle(e)\n    }\n  })\n)\n\nconst onFocus = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'focus', onOpen)\n)\n\nconst onBlur = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'focus', onClose)\n)\n\nconst onContextMenu = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  whenTrigger(trigger, 'contextmenu', (e: Event) => {\n    e.preventDefault()\n    onToggle(e)\n  })\n)\n\nconst onKeydown = composeEventHandlers(\n  stopWhenControlledOrDisabled,\n  (e: Event) => {\n    const code = getEventCode(e as KeyboardEvent)\n    if (props.triggerKeys.includes(code)) {\n      e.preventDefault()\n      onToggle(e)\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description trigger element\n   */\n  triggerRef,\n})\n</script>\n","<template>\n  <el-teleport :disabled=\"!teleported\" :to=\"appendTo\">\n    <transition\n      v-if=\"shouldRender || !ariaHidden\"\n      :name=\"transitionClass\"\n      :appear=\"!persistentRef\"\n      @after-leave=\"onTransitionLeave\"\n      @before-enter=\"onBeforeEnter\"\n      @after-enter=\"onAfterShow\"\n      @before-leave=\"onBeforeLeave\"\n    >\n      <el-popper-content\n        v-show=\"shouldShow\"\n        :id=\"id\"\n        ref=\"contentRef\"\n        v-bind=\"$attrs\"\n        :aria-label=\"ariaLabel\"\n        :aria-hidden=\"ariaHidden\"\n        :boundaries-padding=\"boundariesPadding\"\n        :fallback-placements=\"fallbackPlacements\"\n        :gpu-acceleration=\"gpuAcceleration\"\n        :offset=\"offset\"\n        :placement=\"placement\"\n        :popper-options=\"popperOptions\"\n        :arrow-offset=\"arrowOffset\"\n        :strategy=\"strategy\"\n        :effect=\"effect\"\n        :enterable=\"enterable\"\n        :pure=\"pure\"\n        :popper-class=\"popperClass\"\n        :popper-style=\"[popperStyle!, contentStyle]\"\n        :reference-el=\"referenceEl\"\n        :trigger-target-el=\"triggerTargetEl\"\n        :visible=\"shouldShow\"\n        :z-index=\"zIndex\"\n        :loop=\"loop\"\n        @mouseenter=\"onContentEnter\"\n        @mouseleave=\"onContentLeave\"\n        @blur=\"onBlur\"\n        @close=\"onClose\"\n      >\n        <slot />\n      </el-popper-content>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, ref, unref, watch } from 'vue'\nimport { computedEager, onClickOutside } from '@vueuse/core'\nimport { useNamespace, usePopperContainerId } from '@pit-element-plus/hooks'\nimport {\n  castArray,\n  composeEventHandlers,\n  focusElement,\n} from '@pit-element-plus/utils'\nimport { ElPopperContent } from '@pit-element-plus/components/popper'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { isTriggerType } from './utils'\nimport { useTooltipContentPropsDefaults } from './content'\n\nimport type { ElTooltipContentProps } from './content'\nimport type { PopperContentInstance } from '@pit-element-plus/components/popper'\n\ndefineOptions({\n  name: 'ElTooltipContent',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<ElTooltipContentProps>(),\n  useTooltipContentPropsDefaults\n)\n\nconst { selector } = usePopperContainerId()\nconst ns = useNamespace('tooltip')\n\nconst contentRef = ref<PopperContentInstance>()\nconst popperContentRef = computedEager(() => contentRef.value?.popperContentRef)\nlet stopHandle: ReturnType<typeof onClickOutside>\nconst {\n  controlled,\n  id,\n  open,\n  trigger,\n  onClose,\n  onOpen,\n  onShow,\n  onHide,\n  onBeforeShow,\n  onBeforeHide,\n} = inject(TOOLTIP_INJECTION_KEY, undefined)!\nconst transitionClass = computed(() => {\n  return props.transition || `${ns.namespace.value}-fade-in-linear`\n})\nconst persistentRef = computed(() => {\n  // For testing, we would always want the content to be rendered\n  // to the DOM, so we need to return true here.\n  if (process.env.NODE_ENV === 'test') {\n    if (!process.env.RUN_TEST_WITH_PERSISTENT) {\n      return true\n    }\n  }\n  return props.persistent\n})\n\nonBeforeUnmount(() => {\n  stopHandle?.()\n})\n\nconst shouldRender = computed(() => {\n  return unref(persistentRef) ? true : unref(open)\n})\n\nconst shouldShow = computed(() => {\n  return props.disabled ? false : unref(open)\n})\n\nconst appendTo = computed(() => {\n  return props.appendTo || selector.value\n})\n\nconst contentStyle = computed(() => props.style ?? {})\n\nconst ariaHidden = ref(true)\n\nconst onTransitionLeave = () => {\n  onHide()\n  isFocusInsideContent() && focusElement(document.body, { preventScroll: true })\n  ariaHidden.value = true\n}\n\nconst stopWhenControlled = () => {\n  if (unref(controlled)) return true\n}\n\nconst onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n  if (props.enterable && isTriggerType(unref(trigger), 'hover')) {\n    onOpen()\n  }\n})\n\nconst onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n  if (isTriggerType(unref(trigger), 'hover')) {\n    onClose()\n  }\n})\n\nconst onBeforeEnter = () => {\n  contentRef.value?.updatePopper?.()\n  onBeforeShow?.()\n}\n\nconst onBeforeLeave = () => {\n  onBeforeHide?.()\n}\n\nconst onAfterShow = () => {\n  onShow()\n}\n\nconst onBlur = () => {\n  if (!props.virtualTriggering) {\n    onClose()\n  }\n}\n\nconst isFocusInsideContent = (event?: FocusEvent) => {\n  const popperContent: HTMLElement | undefined =\n    contentRef.value?.popperContentRef\n  const activeElement = (event?.relatedTarget as Node) || document.activeElement\n\n  return popperContent?.contains(activeElement)\n}\n\nwatch(\n  () => unref(open),\n  (val) => {\n    if (!val) {\n      stopHandle?.()\n    } else {\n      ariaHidden.value = false\n      stopHandle = onClickOutside(\n        popperContentRef,\n        () => {\n          if (unref(controlled)) return\n          const needClose = castArray(unref(trigger)).every((item) => {\n            return item !== 'hover' && item !== 'focus'\n          })\n          if (needClose) {\n            onClose()\n          }\n        },\n        { detectIframe: true }\n      )\n    }\n  },\n  {\n    flush: 'post',\n  }\n)\n\nwatch(\n  () => props.content,\n  () => {\n    contentRef.value?.updatePopper?.()\n  }\n)\n\ndefineExpose({\n  /**\n   * @description el-popper-content component instance\n   */\n  contentRef,\n  /**\n   * @description validate current focus event is trigger inside el-popper-content\n   */\n  isFocusInsideContent,\n})\n</script>\n","<template>\n  <el-teleport :disabled=\"!teleported\" :to=\"appendTo\">\n    <transition\n      v-if=\"shouldRender || !ariaHidden\"\n      :name=\"transitionClass\"\n      :appear=\"!persistentRef\"\n      @after-leave=\"onTransitionLeave\"\n      @before-enter=\"onBeforeEnter\"\n      @after-enter=\"onAfterShow\"\n      @before-leave=\"onBeforeLeave\"\n    >\n      <el-popper-content\n        v-show=\"shouldShow\"\n        :id=\"id\"\n        ref=\"contentRef\"\n        v-bind=\"$attrs\"\n        :aria-label=\"ariaLabel\"\n        :aria-hidden=\"ariaHidden\"\n        :boundaries-padding=\"boundariesPadding\"\n        :fallback-placements=\"fallbackPlacements\"\n        :gpu-acceleration=\"gpuAcceleration\"\n        :offset=\"offset\"\n        :placement=\"placement\"\n        :popper-options=\"popperOptions\"\n        :arrow-offset=\"arrowOffset\"\n        :strategy=\"strategy\"\n        :effect=\"effect\"\n        :enterable=\"enterable\"\n        :pure=\"pure\"\n        :popper-class=\"popperClass\"\n        :popper-style=\"[popperStyle!, contentStyle]\"\n        :reference-el=\"referenceEl\"\n        :trigger-target-el=\"triggerTargetEl\"\n        :visible=\"shouldShow\"\n        :z-index=\"zIndex\"\n        :loop=\"loop\"\n        @mouseenter=\"onContentEnter\"\n        @mouseleave=\"onContentLeave\"\n        @blur=\"onBlur\"\n        @close=\"onClose\"\n      >\n        <slot />\n      </el-popper-content>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, ref, unref, watch } from 'vue'\nimport { computedEager, onClickOutside } from '@vueuse/core'\nimport { useNamespace, usePopperContainerId } from '@pit-element-plus/hooks'\nimport {\n  castArray,\n  composeEventHandlers,\n  focusElement,\n} from '@pit-element-plus/utils'\nimport { ElPopperContent } from '@pit-element-plus/components/popper'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { isTriggerType } from './utils'\nimport { useTooltipContentPropsDefaults } from './content'\n\nimport type { ElTooltipContentProps } from './content'\nimport type { PopperContentInstance } from '@pit-element-plus/components/popper'\n\ndefineOptions({\n  name: 'ElTooltipContent',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<ElTooltipContentProps>(),\n  useTooltipContentPropsDefaults\n)\n\nconst { selector } = usePopperContainerId()\nconst ns = useNamespace('tooltip')\n\nconst contentRef = ref<PopperContentInstance>()\nconst popperContentRef = computedEager(() => contentRef.value?.popperContentRef)\nlet stopHandle: ReturnType<typeof onClickOutside>\nconst {\n  controlled,\n  id,\n  open,\n  trigger,\n  onClose,\n  onOpen,\n  onShow,\n  onHide,\n  onBeforeShow,\n  onBeforeHide,\n} = inject(TOOLTIP_INJECTION_KEY, undefined)!\nconst transitionClass = computed(() => {\n  return props.transition || `${ns.namespace.value}-fade-in-linear`\n})\nconst persistentRef = computed(() => {\n  // For testing, we would always want the content to be rendered\n  // to the DOM, so we need to return true here.\n  if (process.env.NODE_ENV === 'test') {\n    if (!process.env.RUN_TEST_WITH_PERSISTENT) {\n      return true\n    }\n  }\n  return props.persistent\n})\n\nonBeforeUnmount(() => {\n  stopHandle?.()\n})\n\nconst shouldRender = computed(() => {\n  return unref(persistentRef) ? true : unref(open)\n})\n\nconst shouldShow = computed(() => {\n  return props.disabled ? false : unref(open)\n})\n\nconst appendTo = computed(() => {\n  return props.appendTo || selector.value\n})\n\nconst contentStyle = computed(() => props.style ?? {})\n\nconst ariaHidden = ref(true)\n\nconst onTransitionLeave = () => {\n  onHide()\n  isFocusInsideContent() && focusElement(document.body, { preventScroll: true })\n  ariaHidden.value = true\n}\n\nconst stopWhenControlled = () => {\n  if (unref(controlled)) return true\n}\n\nconst onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n  if (props.enterable && isTriggerType(unref(trigger), 'hover')) {\n    onOpen()\n  }\n})\n\nconst onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n  if (isTriggerType(unref(trigger), 'hover')) {\n    onClose()\n  }\n})\n\nconst onBeforeEnter = () => {\n  contentRef.value?.updatePopper?.()\n  onBeforeShow?.()\n}\n\nconst onBeforeLeave = () => {\n  onBeforeHide?.()\n}\n\nconst onAfterShow = () => {\n  onShow()\n}\n\nconst onBlur = () => {\n  if (!props.virtualTriggering) {\n    onClose()\n  }\n}\n\nconst isFocusInsideContent = (event?: FocusEvent) => {\n  const popperContent: HTMLElement | undefined =\n    contentRef.value?.popperContentRef\n  const activeElement = (event?.relatedTarget as Node) || document.activeElement\n\n  return popperContent?.contains(activeElement)\n}\n\nwatch(\n  () => unref(open),\n  (val) => {\n    if (!val) {\n      stopHandle?.()\n    } else {\n      ariaHidden.value = false\n      stopHandle = onClickOutside(\n        popperContentRef,\n        () => {\n          if (unref(controlled)) return\n          const needClose = castArray(unref(trigger)).every((item) => {\n            return item !== 'hover' && item !== 'focus'\n          })\n          if (needClose) {\n            onClose()\n          }\n        },\n        { detectIframe: true }\n      )\n    }\n  },\n  {\n    flush: 'post',\n  }\n)\n\nwatch(\n  () => props.content,\n  () => {\n    contentRef.value?.updatePopper?.()\n  }\n)\n\ndefineExpose({\n  /**\n   * @description el-popper-content component instance\n   */\n  contentRef,\n  /**\n   * @description validate current focus event is trigger inside el-popper-content\n   */\n  isFocusInsideContent,\n})\n</script>\n","<template>\n  <el-teleport :disabled=\"!teleported\" :to=\"appendTo\">\n    <transition\n      v-if=\"shouldRender || !ariaHidden\"\n      :name=\"transitionClass\"\n      :appear=\"!persistentRef\"\n      @after-leave=\"onTransitionLeave\"\n      @before-enter=\"onBeforeEnter\"\n      @after-enter=\"onAfterShow\"\n      @before-leave=\"onBeforeLeave\"\n    >\n      <el-popper-content\n        v-show=\"shouldShow\"\n        :id=\"id\"\n        ref=\"contentRef\"\n        v-bind=\"$attrs\"\n        :aria-label=\"ariaLabel\"\n        :aria-hidden=\"ariaHidden\"\n        :boundaries-padding=\"boundariesPadding\"\n        :fallback-placements=\"fallbackPlacements\"\n        :gpu-acceleration=\"gpuAcceleration\"\n        :offset=\"offset\"\n        :placement=\"placement\"\n        :popper-options=\"popperOptions\"\n        :arrow-offset=\"arrowOffset\"\n        :strategy=\"strategy\"\n        :effect=\"effect\"\n        :enterable=\"enterable\"\n        :pure=\"pure\"\n        :popper-class=\"popperClass\"\n        :popper-style=\"[popperStyle!, contentStyle]\"\n        :reference-el=\"referenceEl\"\n        :trigger-target-el=\"triggerTargetEl\"\n        :visible=\"shouldShow\"\n        :z-index=\"zIndex\"\n        :loop=\"loop\"\n        @mouseenter=\"onContentEnter\"\n        @mouseleave=\"onContentLeave\"\n        @blur=\"onBlur\"\n        @close=\"onClose\"\n      >\n        <slot />\n      </el-popper-content>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, ref, unref, watch } from 'vue'\nimport { computedEager, onClickOutside } from '@vueuse/core'\nimport { useNamespace, usePopperContainerId } from '@pit-element-plus/hooks'\nimport {\n  castArray,\n  composeEventHandlers,\n  focusElement,\n} from '@pit-element-plus/utils'\nimport { ElPopperContent } from '@pit-element-plus/components/popper'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { isTriggerType } from './utils'\nimport { useTooltipContentPropsDefaults } from './content'\n\nimport type { ElTooltipContentProps } from './content'\nimport type { PopperContentInstance } from '@pit-element-plus/components/popper'\n\ndefineOptions({\n  name: 'ElTooltipContent',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<ElTooltipContentProps>(),\n  useTooltipContentPropsDefaults\n)\n\nconst { selector } = usePopperContainerId()\nconst ns = useNamespace('tooltip')\n\nconst contentRef = ref<PopperContentInstance>()\nconst popperContentRef = computedEager(() => contentRef.value?.popperContentRef)\nlet stopHandle: ReturnType<typeof onClickOutside>\nconst {\n  controlled,\n  id,\n  open,\n  trigger,\n  onClose,\n  onOpen,\n  onShow,\n  onHide,\n  onBeforeShow,\n  onBeforeHide,\n} = inject(TOOLTIP_INJECTION_KEY, undefined)!\nconst transitionClass = computed(() => {\n  return props.transition || `${ns.namespace.value}-fade-in-linear`\n})\nconst persistentRef = computed(() => {\n  // For testing, we would always want the content to be rendered\n  // to the DOM, so we need to return true here.\n  if (process.env.NODE_ENV === 'test') {\n    if (!process.env.RUN_TEST_WITH_PERSISTENT) {\n      return true\n    }\n  }\n  return props.persistent\n})\n\nonBeforeUnmount(() => {\n  stopHandle?.()\n})\n\nconst shouldRender = computed(() => {\n  return unref(persistentRef) ? true : unref(open)\n})\n\nconst shouldShow = computed(() => {\n  return props.disabled ? false : unref(open)\n})\n\nconst appendTo = computed(() => {\n  return props.appendTo || selector.value\n})\n\nconst contentStyle = computed(() => props.style ?? {})\n\nconst ariaHidden = ref(true)\n\nconst onTransitionLeave = () => {\n  onHide()\n  isFocusInsideContent() && focusElement(document.body, { preventScroll: true })\n  ariaHidden.value = true\n}\n\nconst stopWhenControlled = () => {\n  if (unref(controlled)) return true\n}\n\nconst onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n  if (props.enterable && isTriggerType(unref(trigger), 'hover')) {\n    onOpen()\n  }\n})\n\nconst onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n  if (isTriggerType(unref(trigger), 'hover')) {\n    onClose()\n  }\n})\n\nconst onBeforeEnter = () => {\n  contentRef.value?.updatePopper?.()\n  onBeforeShow?.()\n}\n\nconst onBeforeLeave = () => {\n  onBeforeHide?.()\n}\n\nconst onAfterShow = () => {\n  onShow()\n}\n\nconst onBlur = () => {\n  if (!props.virtualTriggering) {\n    onClose()\n  }\n}\n\nconst isFocusInsideContent = (event?: FocusEvent) => {\n  const popperContent: HTMLElement | undefined =\n    contentRef.value?.popperContentRef\n  const activeElement = (event?.relatedTarget as Node) || document.activeElement\n\n  return popperContent?.contains(activeElement)\n}\n\nwatch(\n  () => unref(open),\n  (val) => {\n    if (!val) {\n      stopHandle?.()\n    } else {\n      ariaHidden.value = false\n      stopHandle = onClickOutside(\n        popperContentRef,\n        () => {\n          if (unref(controlled)) return\n          const needClose = castArray(unref(trigger)).every((item) => {\n            return item !== 'hover' && item !== 'focus'\n          })\n          if (needClose) {\n            onClose()\n          }\n        },\n        { detectIframe: true }\n      )\n    }\n  },\n  {\n    flush: 'post',\n  }\n)\n\nwatch(\n  () => props.content,\n  () => {\n    contentRef.value?.updatePopper?.()\n  }\n)\n\ndefineExpose({\n  /**\n   * @description el-popper-content component instance\n   */\n  contentRef,\n  /**\n   * @description validate current focus event is trigger inside el-popper-content\n   */\n  isFocusInsideContent,\n})\n</script>\n","<template>\n  <el-popper ref=\"popperRef\" :role=\"role\">\n    <el-tooltip-trigger\n      :disabled=\"disabled\"\n      :trigger=\"trigger\"\n      :trigger-keys=\"triggerKeys\"\n      :virtual-ref=\"virtualRef\"\n      :virtual-triggering=\"virtualTriggering\"\n      :focus-on-target=\"focusOnTarget\"\n    >\n      <slot v-if=\"$slots.default\" />\n    </el-tooltip-trigger>\n    <el-tooltip-content\n      ref=\"contentRef\"\n      :aria-label=\"ariaLabel\"\n      :boundaries-padding=\"boundariesPadding\"\n      :content=\"content\"\n      :disabled=\"disabled\"\n      :effect=\"effect\"\n      :enterable=\"enterable\"\n      :fallback-placements=\"fallbackPlacements\"\n      :hide-after=\"hideAfter\"\n      :gpu-acceleration=\"gpuAcceleration\"\n      :offset=\"offset\"\n      :persistent=\"persistent\"\n      :popper-class=\"kls\"\n      :popper-style=\"popperStyle\"\n      :placement=\"placement\"\n      :popper-options=\"popperOptions\"\n      :arrow-offset=\"arrowOffset\"\n      :pure=\"pure\"\n      :raw-content=\"rawContent\"\n      :reference-el=\"referenceEl\"\n      :trigger-target-el=\"triggerTargetEl\"\n      :show-after=\"showAfter\"\n      :strategy=\"strategy\"\n      :teleported=\"teleported\"\n      :transition=\"transition\"\n      :virtual-triggering=\"virtualTriggering\"\n      :z-index=\"zIndex\"\n      :append-to=\"appendTo\"\n      :loop=\"loop\"\n    >\n      <slot name=\"content\">\n        <span v-if=\"rawContent\" v-html=\"content\" />\n        <span v-else>{{ content }}</span>\n      </slot>\n      <el-popper-arrow v-if=\"showArrow\" />\n    </el-tooltip-content>\n  </el-popper>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  onBeforeUnmount,\n  onDeactivated,\n  provide,\n  readonly,\n  ref,\n  toRef,\n  unref,\n  watch,\n} from 'vue'\nimport {\n  ElPopper,\n  ElPopperArrow,\n  popperArrowPropsDefaults,\n} from '@pit-element-plus/components/popper'\nimport { isBoolean } from '@pit-element-plus/utils'\nimport {\n  useDelayedToggle,\n  useId,\n  useNamespace,\n  usePopperContainer,\n} from '@pit-element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { tooltipEmits, useTooltipModelToggle } from './tooltip'\nimport ElTooltipTrigger from './trigger.vue'\nimport ElTooltipContent from './content.vue'\nimport { useTooltipContentPropsDefaults } from './content'\nimport { useTooltipTriggerPropsDefaults } from './trigger'\n\nimport type { Mutable } from '@pit-element-plus/utils'\nimport type { TooltipContentInstance } from './content'\nimport type { UseTooltipProps } from './tooltip'\nimport type { PopperInstance } from '@pit-element-plus/components/popper'\n\ndefineOptions({\n  name: 'ElTooltip',\n})\n\nconst props = withDefaults(defineProps<UseTooltipProps>(), {\n  role: 'tooltip',\n  ...useTooltipContentPropsDefaults,\n  ...useTooltipTriggerPropsDefaults,\n  ...popperArrowPropsDefaults,\n  showArrow: true,\n})\nconst emit = defineEmits(tooltipEmits as Mutable<typeof tooltipEmits>)\n\nusePopperContainer()\n\nconst ns = useNamespace('tooltip')\nconst id = useId()\nconst popperRef = ref<PopperInstance>()\nconst contentRef = ref<TooltipContentInstance>()\n\nconst updatePopper = () => {\n  const popperComponent = unref(popperRef)\n  if (popperComponent) {\n    popperComponent.popperInstanceRef?.update()\n  }\n}\nconst open = ref(false)\nconst toggleReason = ref<Event>()\n\nconst { show, hide, hasUpdateHandler } = useTooltipModelToggle({\n  indicator: open,\n  toggleReason,\n})\n\nconst { onOpen, onClose } = useDelayedToggle({\n  showAfter: toRef(props, 'showAfter'),\n  hideAfter: toRef(props, 'hideAfter'),\n  autoClose: toRef(props, 'autoClose'),\n  open: show,\n  close: hide,\n})\n\nconst controlled = computed(\n  () => isBoolean(props.visible) && !hasUpdateHandler.value\n)\n\nconst kls = computed(() => {\n  return [ns.b(), props.popperClass!]\n})\n\nprovide(TOOLTIP_INJECTION_KEY, {\n  controlled,\n  id,\n  open: readonly(open),\n  trigger: toRef(props, 'trigger'),\n  onOpen,\n  onClose,\n  onToggle: (event?: Event) => {\n    if (unref(open)) {\n      onClose(event)\n    } else {\n      onOpen(event)\n    }\n  },\n  onShow: () => {\n    emit('show', toggleReason.value)\n  },\n  onHide: () => {\n    emit('hide', toggleReason.value)\n  },\n  onBeforeShow: () => {\n    emit('before-show', toggleReason.value)\n  },\n  onBeforeHide: () => {\n    emit('before-hide', toggleReason.value)\n  },\n  updatePopper,\n})\n\nwatch(\n  () => props.disabled,\n  (disabled) => {\n    if (disabled && open.value) {\n      open.value = false\n    }\n    if (!disabled && isBoolean(props.visible)) {\n      open.value = props.visible\n    }\n  }\n)\n\nconst isFocusInsideContent = (event?: FocusEvent) => {\n  return contentRef.value?.isFocusInsideContent(event)\n}\n\nonDeactivated(() => open.value && hide())\n\nonBeforeUnmount(() => {\n  toggleReason.value = undefined\n})\n\ndefineExpose({\n  /**\n   * @description el-popper component instance\n   */\n  popperRef,\n  /**\n   * @description el-tooltip-content component instance\n   */\n  contentRef,\n  /**\n   * @description validate current focus event is trigger inside el-tooltip-content\n   */\n  isFocusInsideContent,\n  /**\n   * @description update el-popper component instance\n   */\n  updatePopper,\n  /**\n   * @description expose onOpen function to mange el-tooltip open state\n   */\n  onOpen,\n  /**\n   * @description expose onClose function to manage el-tooltip close state\n   */\n  onClose,\n  /**\n   * @description expose hide function\n   */\n  hide,\n})\n</script>\n","<template>\n  <el-popper ref=\"popperRef\" :role=\"role\">\n    <el-tooltip-trigger\n      :disabled=\"disabled\"\n      :trigger=\"trigger\"\n      :trigger-keys=\"triggerKeys\"\n      :virtual-ref=\"virtualRef\"\n      :virtual-triggering=\"virtualTriggering\"\n      :focus-on-target=\"focusOnTarget\"\n    >\n      <slot v-if=\"$slots.default\" />\n    </el-tooltip-trigger>\n    <el-tooltip-content\n      ref=\"contentRef\"\n      :aria-label=\"ariaLabel\"\n      :boundaries-padding=\"boundariesPadding\"\n      :content=\"content\"\n      :disabled=\"disabled\"\n      :effect=\"effect\"\n      :enterable=\"enterable\"\n      :fallback-placements=\"fallbackPlacements\"\n      :hide-after=\"hideAfter\"\n      :gpu-acceleration=\"gpuAcceleration\"\n      :offset=\"offset\"\n      :persistent=\"persistent\"\n      :popper-class=\"kls\"\n      :popper-style=\"popperStyle\"\n      :placement=\"placement\"\n      :popper-options=\"popperOptions\"\n      :arrow-offset=\"arrowOffset\"\n      :pure=\"pure\"\n      :raw-content=\"rawContent\"\n      :reference-el=\"referenceEl\"\n      :trigger-target-el=\"triggerTargetEl\"\n      :show-after=\"showAfter\"\n      :strategy=\"strategy\"\n      :teleported=\"teleported\"\n      :transition=\"transition\"\n      :virtual-triggering=\"virtualTriggering\"\n      :z-index=\"zIndex\"\n      :append-to=\"appendTo\"\n      :loop=\"loop\"\n    >\n      <slot name=\"content\">\n        <span v-if=\"rawContent\" v-html=\"content\" />\n        <span v-else>{{ content }}</span>\n      </slot>\n      <el-popper-arrow v-if=\"showArrow\" />\n    </el-tooltip-content>\n  </el-popper>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  onBeforeUnmount,\n  onDeactivated,\n  provide,\n  readonly,\n  ref,\n  toRef,\n  unref,\n  watch,\n} from 'vue'\nimport {\n  ElPopper,\n  ElPopperArrow,\n  popperArrowPropsDefaults,\n} from '@pit-element-plus/components/popper'\nimport { isBoolean } from '@pit-element-plus/utils'\nimport {\n  useDelayedToggle,\n  useId,\n  useNamespace,\n  usePopperContainer,\n} from '@pit-element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { tooltipEmits, useTooltipModelToggle } from './tooltip'\nimport ElTooltipTrigger from './trigger.vue'\nimport ElTooltipContent from './content.vue'\nimport { useTooltipContentPropsDefaults } from './content'\nimport { useTooltipTriggerPropsDefaults } from './trigger'\n\nimport type { Mutable } from '@pit-element-plus/utils'\nimport type { TooltipContentInstance } from './content'\nimport type { UseTooltipProps } from './tooltip'\nimport type { PopperInstance } from '@pit-element-plus/components/popper'\n\ndefineOptions({\n  name: 'ElTooltip',\n})\n\nconst props = withDefaults(defineProps<UseTooltipProps>(), {\n  role: 'tooltip',\n  ...useTooltipContentPropsDefaults,\n  ...useTooltipTriggerPropsDefaults,\n  ...popperArrowPropsDefaults,\n  showArrow: true,\n})\nconst emit = defineEmits(tooltipEmits as Mutable<typeof tooltipEmits>)\n\nusePopperContainer()\n\nconst ns = useNamespace('tooltip')\nconst id = useId()\nconst popperRef = ref<PopperInstance>()\nconst contentRef = ref<TooltipContentInstance>()\n\nconst updatePopper = () => {\n  const popperComponent = unref(popperRef)\n  if (popperComponent) {\n    popperComponent.popperInstanceRef?.update()\n  }\n}\nconst open = ref(false)\nconst toggleReason = ref<Event>()\n\nconst { show, hide, hasUpdateHandler } = useTooltipModelToggle({\n  indicator: open,\n  toggleReason,\n})\n\nconst { onOpen, onClose } = useDelayedToggle({\n  showAfter: toRef(props, 'showAfter'),\n  hideAfter: toRef(props, 'hideAfter'),\n  autoClose: toRef(props, 'autoClose'),\n  open: show,\n  close: hide,\n})\n\nconst controlled = computed(\n  () => isBoolean(props.visible) && !hasUpdateHandler.value\n)\n\nconst kls = computed(() => {\n  return [ns.b(), props.popperClass!]\n})\n\nprovide(TOOLTIP_INJECTION_KEY, {\n  controlled,\n  id,\n  open: readonly(open),\n  trigger: toRef(props, 'trigger'),\n  onOpen,\n  onClose,\n  onToggle: (event?: Event) => {\n    if (unref(open)) {\n      onClose(event)\n    } else {\n      onOpen(event)\n    }\n  },\n  onShow: () => {\n    emit('show', toggleReason.value)\n  },\n  onHide: () => {\n    emit('hide', toggleReason.value)\n  },\n  onBeforeShow: () => {\n    emit('before-show', toggleReason.value)\n  },\n  onBeforeHide: () => {\n    emit('before-hide', toggleReason.value)\n  },\n  updatePopper,\n})\n\nwatch(\n  () => props.disabled,\n  (disabled) => {\n    if (disabled && open.value) {\n      open.value = false\n    }\n    if (!disabled && isBoolean(props.visible)) {\n      open.value = props.visible\n    }\n  }\n)\n\nconst isFocusInsideContent = (event?: FocusEvent) => {\n  return contentRef.value?.isFocusInsideContent(event)\n}\n\nonDeactivated(() => open.value && hide())\n\nonBeforeUnmount(() => {\n  toggleReason.value = undefined\n})\n\ndefineExpose({\n  /**\n   * @description el-popper component instance\n   */\n  popperRef,\n  /**\n   * @description el-tooltip-content component instance\n   */\n  contentRef,\n  /**\n   * @description validate current focus event is trigger inside el-tooltip-content\n   */\n  isFocusInsideContent,\n  /**\n   * @description update el-popper component instance\n   */\n  updatePopper,\n  /**\n   * @description expose onOpen function to mange el-tooltip open state\n   */\n  onOpen,\n  /**\n   * @description expose onClose function to manage el-tooltip close state\n   */\n  onClose,\n  /**\n   * @description expose hide function\n   */\n  hide,\n})\n</script>\n","<template>\n  <el-popper ref=\"popperRef\" :role=\"role\">\n    <el-tooltip-trigger\n      :disabled=\"disabled\"\n      :trigger=\"trigger\"\n      :trigger-keys=\"triggerKeys\"\n      :virtual-ref=\"virtualRef\"\n      :virtual-triggering=\"virtualTriggering\"\n      :focus-on-target=\"focusOnTarget\"\n    >\n      <slot v-if=\"$slots.default\" />\n    </el-tooltip-trigger>\n    <el-tooltip-content\n      ref=\"contentRef\"\n      :aria-label=\"ariaLabel\"\n      :boundaries-padding=\"boundariesPadding\"\n      :content=\"content\"\n      :disabled=\"disabled\"\n      :effect=\"effect\"\n      :enterable=\"enterable\"\n      :fallback-placements=\"fallbackPlacements\"\n      :hide-after=\"hideAfter\"\n      :gpu-acceleration=\"gpuAcceleration\"\n      :offset=\"offset\"\n      :persistent=\"persistent\"\n      :popper-class=\"kls\"\n      :popper-style=\"popperStyle\"\n      :placement=\"placement\"\n      :popper-options=\"popperOptions\"\n      :arrow-offset=\"arrowOffset\"\n      :pure=\"pure\"\n      :raw-content=\"rawContent\"\n      :reference-el=\"referenceEl\"\n      :trigger-target-el=\"triggerTargetEl\"\n      :show-after=\"showAfter\"\n      :strategy=\"strategy\"\n      :teleported=\"teleported\"\n      :transition=\"transition\"\n      :virtual-triggering=\"virtualTriggering\"\n      :z-index=\"zIndex\"\n      :append-to=\"appendTo\"\n      :loop=\"loop\"\n    >\n      <slot name=\"content\">\n        <span v-if=\"rawContent\" v-html=\"content\" />\n        <span v-else>{{ content }}</span>\n      </slot>\n      <el-popper-arrow v-if=\"showArrow\" />\n    </el-tooltip-content>\n  </el-popper>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  onBeforeUnmount,\n  onDeactivated,\n  provide,\n  readonly,\n  ref,\n  toRef,\n  unref,\n  watch,\n} from 'vue'\nimport {\n  ElPopper,\n  ElPopperArrow,\n  popperArrowPropsDefaults,\n} from '@pit-element-plus/components/popper'\nimport { isBoolean } from '@pit-element-plus/utils'\nimport {\n  useDelayedToggle,\n  useId,\n  useNamespace,\n  usePopperContainer,\n} from '@pit-element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { tooltipEmits, useTooltipModelToggle } from './tooltip'\nimport ElTooltipTrigger from './trigger.vue'\nimport ElTooltipContent from './content.vue'\nimport { useTooltipContentPropsDefaults } from './content'\nimport { useTooltipTriggerPropsDefaults } from './trigger'\n\nimport type { Mutable } from '@pit-element-plus/utils'\nimport type { TooltipContentInstance } from './content'\nimport type { UseTooltipProps } from './tooltip'\nimport type { PopperInstance } from '@pit-element-plus/components/popper'\n\ndefineOptions({\n  name: 'ElTooltip',\n})\n\nconst props = withDefaults(defineProps<UseTooltipProps>(), {\n  role: 'tooltip',\n  ...useTooltipContentPropsDefaults,\n  ...useTooltipTriggerPropsDefaults,\n  ...popperArrowPropsDefaults,\n  showArrow: true,\n})\nconst emit = defineEmits(tooltipEmits as Mutable<typeof tooltipEmits>)\n\nusePopperContainer()\n\nconst ns = useNamespace('tooltip')\nconst id = useId()\nconst popperRef = ref<PopperInstance>()\nconst contentRef = ref<TooltipContentInstance>()\n\nconst updatePopper = () => {\n  const popperComponent = unref(popperRef)\n  if (popperComponent) {\n    popperComponent.popperInstanceRef?.update()\n  }\n}\nconst open = ref(false)\nconst toggleReason = ref<Event>()\n\nconst { show, hide, hasUpdateHandler } = useTooltipModelToggle({\n  indicator: open,\n  toggleReason,\n})\n\nconst { onOpen, onClose } = useDelayedToggle({\n  showAfter: toRef(props, 'showAfter'),\n  hideAfter: toRef(props, 'hideAfter'),\n  autoClose: toRef(props, 'autoClose'),\n  open: show,\n  close: hide,\n})\n\nconst controlled = computed(\n  () => isBoolean(props.visible) && !hasUpdateHandler.value\n)\n\nconst kls = computed(() => {\n  return [ns.b(), props.popperClass!]\n})\n\nprovide(TOOLTIP_INJECTION_KEY, {\n  controlled,\n  id,\n  open: readonly(open),\n  trigger: toRef(props, 'trigger'),\n  onOpen,\n  onClose,\n  onToggle: (event?: Event) => {\n    if (unref(open)) {\n      onClose(event)\n    } else {\n      onOpen(event)\n    }\n  },\n  onShow: () => {\n    emit('show', toggleReason.value)\n  },\n  onHide: () => {\n    emit('hide', toggleReason.value)\n  },\n  onBeforeShow: () => {\n    emit('before-show', toggleReason.value)\n  },\n  onBeforeHide: () => {\n    emit('before-hide', toggleReason.value)\n  },\n  updatePopper,\n})\n\nwatch(\n  () => props.disabled,\n  (disabled) => {\n    if (disabled && open.value) {\n      open.value = false\n    }\n    if (!disabled && isBoolean(props.visible)) {\n      open.value = props.visible\n    }\n  }\n)\n\nconst isFocusInsideContent = (event?: FocusEvent) => {\n  return contentRef.value?.isFocusInsideContent(event)\n}\n\nonDeactivated(() => open.value && hide())\n\nonBeforeUnmount(() => {\n  toggleReason.value = undefined\n})\n\ndefineExpose({\n  /**\n   * @description el-popper component instance\n   */\n  popperRef,\n  /**\n   * @description el-tooltip-content component instance\n   */\n  contentRef,\n  /**\n   * @description validate current focus event is trigger inside el-tooltip-content\n   */\n  isFocusInsideContent,\n  /**\n   * @description update el-popper component instance\n   */\n  updatePopper,\n  /**\n   * @description expose onOpen function to mange el-tooltip open state\n   */\n  onOpen,\n  /**\n   * @description expose onClose function to manage el-tooltip close state\n   */\n  onClose,\n  /**\n   * @description expose hide function\n   */\n  hide,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Tooltip from './src/tooltip.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTooltip: SFCWithInstall<typeof Tooltip> = withInstall(Tooltip)\nexport * from './src/tooltip'\nexport * from './src/trigger'\nexport * from './src/content'\nexport * from './src/constants'\nexport default ElTooltip\n","import { markRaw } from 'vue'\nimport {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isString,\n  mutable,\n} from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { useAriaProps, useSizeProp } from '@pit-element-plus/hooks'\nimport { CircleClose } from 'pit-element-icons'\n\nimport type { ExtractPublicPropTypes, HTMLAttributes, StyleValue } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { IconPropType } from '@pit-element-plus/utils'\n\nexport type InputModelModifiers = {\n  lazy?: true\n  number?: true\n  trim?: true\n}\nexport type InputAutoSize = { minRows?: number; maxRows?: number } | boolean\n// Some commonly used values for input type\nexport type InputType =\n  | 'text'\n  | 'textarea'\n  | 'number'\n  | 'password'\n  | 'email'\n  | 'search'\n  | 'tel'\n  | 'url'\n  | (string & NonNullable<unknown>)\n\nexport interface InputProps {\n  /**\n   * @description native input id\n   */\n  id?: string\n  /**\n   * @description input box size\n   */\n  size?: ComponentSize\n  /**\n   * @description whether to disable\n   */\n  disabled?: boolean\n  /**\n   * @description binding value\n   */\n  modelValue?: string | number | null | undefined\n  /**\n   * @description v-model modifiers, reference [Vue modifiers](https://vuejs.org/guide/essentials/forms.html#modifiers)\n   */\n  modelModifiers?: InputModelModifiers\n  /**\n   * @description same as `maxlength` in native input\n   */\n  maxlength?: string | number\n  /**\n   * @description same as `minlength` in native input\n   */\n  minlength?: string | number\n  /**\n   * @description type of input, see more in [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types)\n   */\n  type?: InputType\n  /**\n   * @description control the resizability\n   */\n  resize?: 'none' | 'both' | 'horizontal' | 'vertical'\n  /**\n   * @description whether textarea has an adaptive height\n   */\n  autosize?: InputAutoSize\n  /**\n   * @description native input autocomplete\n   * - When the number of literal types in a union exceeds 315, the TS2590 error occurs. see: https://github.com/vuejs/core/issues/10514\n   */\n  autocomplete?: string // HTMLInputElement['autocomplete']\n  /**\n   * @description format content\n   */\n  formatter?: (value: string) => string\n  /**\n   * @description parse content\n   */\n  parser?: (value: string) => string\n  /**\n   * @description placeholder\n   */\n  placeholder?: string\n  /**\n   * @description native input form\n   */\n  form?: string\n  /**\n   * @description native input readonly\n   */\n  readonly?: boolean\n  /**\n   * @description whether to show clear button\n   */\n  clearable?: boolean\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon?: IconPropType\n  /**\n   * @description toggleable password input\n   */\n  showPassword?: boolean\n  /**\n   * @description word count\n   */\n  showWordLimit?: boolean\n  /**\n   * @description word count position, valid when `show-word-limit` is true\n   */\n  wordLimitPosition?: 'inside' | 'outside'\n  /**\n   * @description suffix icon\n   */\n  suffixIcon?: IconPropType\n  /**\n   * @description prefix icon\n   */\n  prefixIcon?: IconPropType\n  /**\n   * @description container role, internal properties provided for use by the picker component\n   */\n  containerRole?: string\n  /**\n   * @description input tabindex\n   */\n  tabindex?: string | number\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n  /**\n   * @description input or textarea element style\n   */\n  inputStyle?: StyleValue\n  /**\n   * @description native input autofocus\n   */\n  autofocus?: boolean\n  /**\n   * @description number of rows of textarea, only works when `type` is 'textarea'\n   */\n  rows?: number\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel?: string\n  /**\n   * @description native input mode for virtual keyboards\n   */\n  inputmode?: HTMLAttributes['inputmode']\n  /**\n   * @description same as `name` in native input\n   */\n  name?: string\n  /**\n   * @description isSelect\n   */\n  isSelect?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `InputProps` instead.\n */\nexport const inputProps = buildProps({\n  /**\n   * @description native input id\n   */\n  id: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description input box size\n   */\n  size: useSizeProp,\n  /**\n   * @description whether to disable\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<string | number | null | undefined>([\n      String,\n      Number,\n      Object,\n    ]),\n    default: '',\n  },\n  /**\n   * @description v-model modifiers, reference [Vue modifiers](https://vuejs.org/guide/essentials/forms.html#modifiers)\n   */\n  modelModifiers: {\n    type: definePropType<InputModelModifiers>(Object),\n    default: () => ({}),\n  },\n  /**\n   * @description same as `maxlength` in native input\n   */\n  maxlength: {\n    type: [String, Number],\n  },\n  /**\n   * @description same as `minlength` in native input\n   */\n  minlength: {\n    type: [String, Number],\n  },\n  /**\n   * @description type of input, see more in [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types)\n   */\n  type: {\n    type: definePropType<InputType>(String),\n    default: 'text',\n  },\n  /**\n   * @description control the resizability\n   */\n  resize: {\n    type: String,\n    values: ['none', 'both', 'horizontal', 'vertical'],\n  },\n  /**\n   * @description whether textarea has an adaptive height\n   */\n  autosize: {\n    type: definePropType<InputAutoSize>([Boolean, Object]),\n    default: false,\n  },\n  /**\n   * @description native input autocomplete\n   */\n  autocomplete: {\n    type: definePropType<HTMLInputElement['autocomplete']>(String),\n    default: 'off',\n  },\n  /**\n   * @description format content\n   */\n  formatter: {\n    type: Function,\n  },\n  /**\n   * @description parse content\n   */\n  parser: {\n    type: Function,\n  },\n  /**\n   * @description placeholder\n   */\n  placeholder: {\n    type: String,\n  },\n  /**\n   * @description native input form\n   */\n  form: {\n    type: String,\n  },\n  /**\n   * @description native input readonly\n   */\n  readonly: Boolean,\n  /**\n   * @description whether to show clear button\n   */\n  clearable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon: {\n    type: iconPropType,\n    default: CircleClose,\n  },\n  /**\n   * @description toggleable password input\n   */\n  showPassword: Boolean,\n  /**\n   * @description word count\n   */\n  showWordLimit: Boolean,\n  /**\n   * @description word count position, valid when `show-word-limit` is true\n   */\n  wordLimitPosition: {\n    type: String,\n    values: ['inside', 'outside'],\n    default: 'inside',\n  },\n  /**\n   * @description suffix icon\n   */\n  suffixIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description prefix icon\n   */\n  prefixIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description container role, internal properties provided for use by the picker component\n   */\n  containerRole: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description input tabindex\n   */\n  tabindex: {\n    type: [String, Number],\n    default: 0,\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description input or textarea element style\n   */\n  inputStyle: {\n    type: definePropType<StyleValue>([Object, Array, String]),\n    default: () => mutable({} as const),\n  },\n  /**\n   * @description native input autofocus\n   */\n  autofocus: Boolean,\n  rows: {\n    type: Number,\n    default: 2,\n  },\n  ...useAriaProps(['ariaLabel']),\n  /**\n   * @description native input mode for virtual keyboards\n   */\n  inputmode: {\n    type: definePropType<HTMLAttributes['inputmode']>(String),\n    default: undefined,\n  },\n  /**\n   * @description same as `name` in native input\n   */\n  name: String,\n  /**\n   * @description isSelect\n   */\n  isSelect: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `InputProps` instead.\n */\nexport type InputPropsPublic = ExtractPublicPropTypes<typeof inputProps>\n\nexport const inputEmits = {\n  [UPDATE_MODEL_EVENT]: (value: string) => isString(value),\n  input: (value: string) => isString(value),\n  change: (value: string, evt?: Event) =>\n    isString(value) && (evt instanceof Event || evt === undefined),\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: (evt: MouseEvent | undefined) =>\n    evt === undefined || evt instanceof MouseEvent,\n  mouseleave: (evt: MouseEvent) => evt instanceof MouseEvent,\n  mouseenter: (evt: MouseEvent) => evt instanceof MouseEvent,\n  // NOTE: when autofill by browser, the keydown event is instanceof Event, not KeyboardEvent\n  // relative bug report https://github.com/element-plus/element-plus/issues/6665\n  keydown: (evt: KeyboardEvent | Event) => evt instanceof Event,\n  compositionstart: (evt: CompositionEvent) => evt instanceof CompositionEvent,\n  compositionupdate: (evt: CompositionEvent) => evt instanceof CompositionEvent,\n  compositionend: (evt: CompositionEvent) => evt instanceof CompositionEvent,\n}\nexport type InputEmits = typeof inputEmits\n\n/**\n * @description default values for InputProps, used in components that extend InputProps like Autocomplete\n */\nexport const inputPropsDefaults = {\n  disabled: undefined,\n  modelValue: '',\n  modelModifiers: () => ({}),\n  type: 'text' as InputType,\n  autocomplete: 'off',\n  clearIcon: markRaw(CircleClose),\n  wordLimitPosition: 'inside',\n  tabindex: 0,\n  validateEvent: true,\n  inputStyle: () => ({}),\n  rows: 2,\n  clearable: true,\n  isSelect: true,\n} as const\n","import { isFirefox, isNumber } from '@pit-element-plus/utils'\n\nlet hiddenTextarea: HTMLTextAreaElement | undefined = undefined\n\nconst HIDDEN_STYLE = {\n  height: '0',\n  visibility: 'hidden',\n  overflow: isFirefox() ? '' : 'hidden',\n  position: 'absolute',\n  'z-index': '-1000',\n  top: '0',\n  right: '0',\n}\n\nconst CONTEXT_STYLE = [\n  'letter-spacing',\n  'line-height',\n  'padding-top',\n  'padding-bottom',\n  'font-family',\n  'font-weight',\n  'font-size',\n  'text-rendering',\n  'text-transform',\n  'width',\n  'text-indent',\n  'padding-left',\n  'padding-right',\n  'border-width',\n  'box-sizing',\n  'word-break',\n]\n\ntype NodeStyle = {\n  contextStyle: string[][]\n  boxSizing: string\n  paddingSize: number\n  borderSize: number\n}\n\ntype TextAreaHeight = {\n  height: string\n  minHeight?: string\n}\n\nexport const looseToNumber = (val: any): any => {\n  const n = Number.parseFloat(val)\n  return Number.isNaN(n) ? val : n\n}\n\nfunction calculateNodeStyling(targetElement: Element): NodeStyle {\n  const style = window.getComputedStyle(targetElement)\n\n  const boxSizing = style.getPropertyValue('box-sizing')\n\n  const paddingSize =\n    Number.parseFloat(style.getPropertyValue('padding-bottom')) +\n    Number.parseFloat(style.getPropertyValue('padding-top'))\n\n  const borderSize =\n    Number.parseFloat(style.getPropertyValue('border-bottom-width')) +\n    Number.parseFloat(style.getPropertyValue('border-top-width'))\n\n  const contextStyle = CONTEXT_STYLE.map((name) => [\n    name,\n    style.getPropertyValue(name),\n  ])\n\n  return { contextStyle, paddingSize, borderSize, boxSizing }\n}\n\nexport function calcTextareaHeight(\n  targetElement: HTMLTextAreaElement,\n  minRows = 1,\n  maxRows?: number\n): TextAreaHeight {\n  if (!hiddenTextarea) {\n    hiddenTextarea = document.createElement('textarea')\n    let hostNode = document.body\n    // #23575\n    if (!isFirefox() && targetElement.parentNode) {\n      hostNode = targetElement.parentNode as HTMLElement\n    }\n    hostNode.appendChild(hiddenTextarea)\n  }\n\n  const { paddingSize, borderSize, boxSizing, contextStyle } =\n    calculateNodeStyling(targetElement)\n\n  contextStyle.forEach(([key, value]) =>\n    hiddenTextarea?.style.setProperty(key, value)\n  )\n\n  Object.entries(HIDDEN_STYLE).forEach(([key, value]) =>\n    hiddenTextarea?.style.setProperty(key, value, 'important')\n  )\n\n  hiddenTextarea.value = targetElement.value || targetElement.placeholder || ''\n\n  let height = hiddenTextarea.scrollHeight\n  const result = {} as TextAreaHeight\n\n  if (boxSizing === 'border-box') {\n    height = height + borderSize\n  } else if (boxSizing === 'content-box') {\n    height = height - paddingSize\n  }\n\n  hiddenTextarea.value = ''\n  const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize\n\n  if (isNumber(minRows)) {\n    let minHeight = singleRowHeight * minRows\n    if (boxSizing === 'border-box') {\n      minHeight = minHeight + paddingSize + borderSize\n    }\n    height = Math.max(minHeight, height)\n    result.minHeight = `${minHeight}px`\n  }\n  if (isNumber(maxRows)) {\n    let maxHeight = singleRowHeight * maxRows\n    if (boxSizing === 'border-box') {\n      maxHeight = maxHeight + paddingSize + borderSize\n    }\n    height = Math.min(maxHeight, height)\n  }\n  result.height = `${height}px`\n  hiddenTextarea.parentNode?.removeChild(hiddenTextarea)\n  hiddenTextarea = undefined\n\n  return result\n}\n","<template>\n  <div\n    :class=\"[\n      containerKls,\n      {\n        [nsInput.bm('group', 'append')]: $slots.append,\n        [nsInput.bm('group', 'prepend')]: $slots.prepend,\n      },\n    ]\"\n    :style=\"containerStyle\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n  >\n    <!-- input -->\n    <template v-if=\"type !== 'textarea'\">\n      <!-- prepend slot -->\n      <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n        <slot name=\"prepend\" />\n      </div>\n\n      <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n        <!-- prefix slot -->\n        <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n          <span :class=\"nsInput.e('prefix-inner')\">\n            <slot name=\"prefix\" />\n            <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n              <component :is=\"prefixIcon\" />\n            </el-icon>\n          </span>\n        </span>\n\n        <input\n          :id=\"inputId\"\n          ref=\"input\"\n          :class=\"nsInput.e('inner')\"\n          v-bind=\"attrs\"\n          :name=\"name\"\n          :minlength=\"minlength\"\n          :maxlength=\"maxlength\"\n          :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n          :disabled=\"inputDisabled\"\n          :readonly=\"readonly\"\n          :autocomplete=\"autocomplete\"\n          :tabindex=\"tabindex\"\n          :aria-label=\"ariaLabel\"\n          :placeholder=\"getPlaceholder\"\n          :style=\"inputStyle\"\n          :form=\"form\"\n          :autofocus=\"autofocus\"\n          :role=\"containerRole\"\n          :inputmode=\"inputmode\"\n          @compositionstart=\"handleCompositionStart\"\n          @compositionupdate=\"handleCompositionUpdate\"\n          @compositionend=\"handleCompositionEnd\"\n          @input=\"handleInput\"\n          @change=\"handleChange\"\n          @keydown=\"handleKeydown\"\n        />\n\n        <!-- suffix slot -->\n        <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n          <span :class=\"nsInput.e('suffix-inner')\">\n            <template\n              v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n            >\n              <slot name=\"suffix\" />\n              <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n                <component :is=\"suffixIcon\" />\n              </el-icon>\n            </template>\n            <el-icon\n              v-if=\"showClear\"\n              :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n              @mousedown.prevent=\"NOOP\"\n              @click=\"clear\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-if=\"showPwdVisible\"\n              :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n              @click=\"handlePasswordVisible\"\n              @mousedown.prevent=\"NOOP\"\n              @mouseup.prevent=\"NOOP\"\n            >\n              <slot name=\"password-icon\" :visible=\"passwordVisible\">\n                <component :is=\"passwordIcon\" />\n              </slot>\n            </el-icon>\n            <span\n              v-if=\"isWordLimitVisible\"\n              :class=\"[\n                nsInput.e('count'),\n                nsInput.is('outside', wordLimitPosition === 'outside'),\n              ]\"\n            >\n              <span :class=\"nsInput.e('count-inner')\">\n                {{ textLength }} / {{ maxlength }}\n              </span>\n            </span>\n            <el-icon\n              v-if=\"validateState && validateIcon && needStatusIcon\"\n              :class=\"[\n                nsInput.e('icon'),\n                nsInput.e('validateIcon'),\n                nsInput.is('loading', validateState === 'validating'),\n              ]\"\n            >\n              <component :is=\"validateIcon\" />\n            </el-icon>\n          </span>\n        </span>\n      </div>\n\n      <!-- append slot -->\n      <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n        <slot name=\"append\" />\n      </div>\n    </template>\n\n    <!-- textarea -->\n    <template v-else>\n      <textarea\n        :id=\"inputId\"\n        ref=\"textarea\"\n        :class=\"[\n          nsTextarea.e('inner'),\n          nsInput.is('focus', isFocused),\n          nsTextarea.is('clearable', clearable),\n        ]\"\n        v-bind=\"attrs\"\n        :name=\"name\"\n        :minlength=\"minlength\"\n        :maxlength=\"maxlength\"\n        :tabindex=\"tabindex\"\n        :disabled=\"inputDisabled\"\n        :readonly=\"readonly\"\n        :autocomplete=\"autocomplete\"\n        :style=\"textareaStyle\"\n        :aria-label=\"ariaLabel\"\n        :placeholder=\"getPlaceholder\"\n        :form=\"form\"\n        :autofocus=\"autofocus\"\n        :rows=\"rows\"\n        :role=\"containerRole\"\n        @compositionstart=\"handleCompositionStart\"\n        @compositionupdate=\"handleCompositionUpdate\"\n        @compositionend=\"handleCompositionEnd\"\n        @input=\"handleInput\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @change=\"handleChange\"\n        @keydown=\"handleKeydown\"\n      />\n      <el-icon\n        v-if=\"showClear\"\n        :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n        @mousedown.prevent=\"NOOP\"\n        @click=\"clear\"\n      >\n        <component :is=\"clearIcon\" />\n      </el-icon>\n      <span\n        v-if=\"isWordLimitVisible\"\n        :style=\"countStyle\"\n        :class=\"[\n          nsInput.e('count'),\n          nsInput.is('outside', wordLimitPosition === 'outside'),\n        ]\"\n      >\n        {{ textLength }} / {{ maxlength }}\n      </span>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  ref,\n  shallowRef,\n  toRef,\n  useAttrs as useRawAttrs,\n  useSlots,\n  watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Hide, View } from 'pit-element-icons'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport {\n  NOOP,\n  ValidateComponentsMap,\n  debugWarn,\n  isClient,\n  isObject,\n} from '@pit-element-plus/utils'\nimport {\n  useAttrs,\n  useComposition,\n  useCursor,\n  useFocusController,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n  name: COMPONENT_NAME,\n  inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n  props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n  nsInput.m(inputSize.value),\n  nsInput.is('disabled', inputDisabled.value),\n  nsInput.is('exceed', inputExceed.value),\n  {\n    [nsInput.b('group')]: slots.prepend || slots.append,\n    [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n    [nsInput.m('suffix')]:\n      slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n    [nsInput.bm('suffix', 'password-clear')]:\n      showClear.value && showPwdVisible.value,\n    [nsInput.b('hidden')]: props.type === 'hidden',\n  },\n  rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n  nsInput.e('wrapper'),\n  nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n  formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n  _ref,\n  {\n    disabled: inputDisabled,\n    afterBlur() {\n      if (props.validateEvent) {\n        elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n      }\n    },\n  }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n  () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n  rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n  props.inputStyle,\n  textareaCalcStyle.value,\n  { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n  isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n  () =>\n    props.clearable &&\n    !inputDisabled.value &&\n    !props.readonly &&\n    !!nativeInputValue.value &&\n    (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n  () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n  () =>\n    props.showWordLimit &&\n    !!props.maxlength &&\n    (props.type === 'text' || props.type === 'textarea') &&\n    !inputDisabled.value &&\n    !props.readonly &&\n    !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n  () =>\n    // show exceed style if length of initial value greater then maxlength\n    !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n  () =>\n    !!slots.suffix ||\n    !!props.suffixIcon ||\n    showClear.value ||\n    props.showPassword ||\n    isWordLimitVisible.value ||\n    (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n  () => !!Object.keys(props.modelModifiers).length\n)\n\nconst getPlaceholder = computed(() => {\n  if (inputDisabled.value) {\n    return ''\n  } else {\n    if (props.isSelect) {\n      const formItemPlaceholder = elFormItem?.label\n        ? `请输入${elFormItem?.label}`\n        : ''\n      return props.placeholder || formItemPlaceholder\n    }\n    return props.placeholder\n  }\n})\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n  onceInitSizeTextarea()\n  if (\n    !isWordLimitVisible.value ||\n    (props.resize !== 'both' && props.resize !== 'horizontal')\n  )\n    return\n  const entry = entries[0]\n  const { width } = entry.contentRect\n  countStyle.value = {\n    /** right: 100% - width + padding(22) - right(10) */\n    right: `calc(100% - ${width + 22 - 10}px)`,\n  }\n})\n\nconst resizeTextarea = () => {\n  const { type, autosize } = props\n\n  if (!isClient || type !== 'textarea' || !textarea.value) return\n\n  if (autosize) {\n    const minRows = isObject(autosize) ? autosize.minRows : undefined\n    const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n    const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n    // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n    // If set textarea height in this case, the scrollbar will not hide.\n    // So we need to hide scrollbar first, and reset it in next tick.\n    // see https://github.com/element-plus/element-plus/issues/8825\n    textareaCalcStyle.value = {\n      overflowY: 'hidden',\n      ...textareaStyle,\n    }\n\n    nextTick(() => {\n      // NOTE: Force repaint to make sure the style set above is applied.\n      textarea.value!.offsetHeight\n      textareaCalcStyle.value = textareaStyle\n    })\n  } else {\n    textareaCalcStyle.value = {\n      minHeight: calcTextareaHeight(textarea.value).minHeight,\n    }\n  }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n  let isInit = false\n  return () => {\n    if (isInit || !props.autosize) return\n    const isElHidden = textarea.value?.offsetParent === null\n    if (!isElHidden) {\n      setTimeout(resizeTextarea)\n      isInit = true\n    }\n  }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n  const input = _ref.value\n  const formatterValue = props.formatter\n    ? props.formatter(nativeInputValue.value)\n    : nativeInputValue.value\n  if (!input || input.value === formatterValue || props.type === 'file') return\n  input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n  const { trim, number } = props.modelModifiers\n  if (trim) {\n    value = value.trim()\n  }\n  if (number) {\n    value = `${looseToNumber(value)}`\n  }\n  if (props.formatter && props.parser) {\n    value = props.parser(value)\n  }\n  return value\n}\n\nconst handleInput = async (event: Event) => {\n  // should not emit input during composition\n  // see: https://github.com/ElemeFE/element/issues/10516\n  if (isComposing.value) return\n\n  const { lazy } = props.modelModifiers\n  let { value } = event.target as TargetElement\n  if (lazy) {\n    emit(INPUT_EVENT, value)\n    return\n  }\n\n  value = formatValue(value)\n\n  // hack for https://github.com/ElemeFE/element/issues/8548\n  // should remove the following line when we don't support IE\n  if (String(value) === nativeInputValue.value) {\n    // preserve native features while being compatible with #9501\n    if (props.formatter) {\n      setNativeInputValue()\n    }\n    return\n  }\n\n  recordCursor()\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(INPUT_EVENT, value)\n\n  // ensure native input value is controlled\n  // see: https://github.com/ElemeFE/element/issues/12850\n  await nextTick()\n\n  if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n    setNativeInputValue()\n  }\n  setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n  let { value } = event.target as TargetElement\n\n  value = formatValue(value)\n  if (props.modelModifiers.lazy) {\n    emit(UPDATE_MODEL_EVENT, value)\n  }\n  emit(CHANGE_EVENT, value, event)\n\n  await nextTick()\n  setNativeInputValue()\n}\n\nconst {\n  isComposing,\n  handleCompositionStart,\n  handleCompositionUpdate,\n  handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n  passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n  hovering.value = false\n  emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n  hovering.value = true\n  emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n  emit('keydown', evt)\n}\n\nconst select = () => {\n  _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n  emit(UPDATE_MODEL_EVENT, '')\n  emit(CHANGE_EVENT, '')\n  emit('clear', evt)\n  emit(INPUT_EVENT, '')\n}\n\nwatch(\n  () => props.modelValue,\n  () => {\n    nextTick(() => resizeTextarea())\n    if (props.validateEvent) {\n      elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n  if (!_ref.value) {\n    return\n  }\n  const { trim, number } = props.modelModifiers\n  const elValue = _ref.value.value\n  const displayValue =\n    (number || props.type === 'number') && !/^0\\d/.test(elValue)\n      ? `${looseToNumber(elValue)}`\n      : elValue\n\n  if (displayValue === newValue) {\n    return\n  }\n\n  if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n    if (trim && displayValue.trim() === newValue) {\n      return\n    }\n  }\n\n  setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n  () => props.type,\n  async () => {\n    await nextTick()\n    setNativeInputValue()\n    resizeTextarea()\n  }\n)\n\nonMounted(() => {\n  if (!props.formatter && props.parser) {\n    debugWarn(\n      COMPONENT_NAME,\n      'If you set the parser, you also need to set the formatter.'\n    )\n  }\n  setNativeInputValue()\n  nextTick(resizeTextarea)\n})\n\ndefineExpose({\n  /** @description HTML input element */\n  input,\n  /** @description HTML textarea element */\n  textarea,\n  /** @description HTML element, input or textarea */\n  ref: _ref,\n  /** @description style of textarea. */\n  textareaStyle,\n\n  /** @description from props (used on unit test) */\n  autosize: toRef(props, 'autosize'),\n\n  /** @description is input composing */\n  isComposing,\n\n  /** @description HTML input element native method */\n  focus,\n  /** @description HTML input element native method */\n  blur,\n  /** @description HTML input element native method */\n  select,\n  /** @description clear input value */\n  clear,\n  /** @description resize textarea. */\n  resizeTextarea,\n})\n</script>\n","<template>\n  <div\n    :class=\"[\n      containerKls,\n      {\n        [nsInput.bm('group', 'append')]: $slots.append,\n        [nsInput.bm('group', 'prepend')]: $slots.prepend,\n      },\n    ]\"\n    :style=\"containerStyle\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n  >\n    <!-- input -->\n    <template v-if=\"type !== 'textarea'\">\n      <!-- prepend slot -->\n      <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n        <slot name=\"prepend\" />\n      </div>\n\n      <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n        <!-- prefix slot -->\n        <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n          <span :class=\"nsInput.e('prefix-inner')\">\n            <slot name=\"prefix\" />\n            <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n              <component :is=\"prefixIcon\" />\n            </el-icon>\n          </span>\n        </span>\n\n        <input\n          :id=\"inputId\"\n          ref=\"input\"\n          :class=\"nsInput.e('inner')\"\n          v-bind=\"attrs\"\n          :name=\"name\"\n          :minlength=\"minlength\"\n          :maxlength=\"maxlength\"\n          :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n          :disabled=\"inputDisabled\"\n          :readonly=\"readonly\"\n          :autocomplete=\"autocomplete\"\n          :tabindex=\"tabindex\"\n          :aria-label=\"ariaLabel\"\n          :placeholder=\"getPlaceholder\"\n          :style=\"inputStyle\"\n          :form=\"form\"\n          :autofocus=\"autofocus\"\n          :role=\"containerRole\"\n          :inputmode=\"inputmode\"\n          @compositionstart=\"handleCompositionStart\"\n          @compositionupdate=\"handleCompositionUpdate\"\n          @compositionend=\"handleCompositionEnd\"\n          @input=\"handleInput\"\n          @change=\"handleChange\"\n          @keydown=\"handleKeydown\"\n        />\n\n        <!-- suffix slot -->\n        <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n          <span :class=\"nsInput.e('suffix-inner')\">\n            <template\n              v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n            >\n              <slot name=\"suffix\" />\n              <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n                <component :is=\"suffixIcon\" />\n              </el-icon>\n            </template>\n            <el-icon\n              v-if=\"showClear\"\n              :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n              @mousedown.prevent=\"NOOP\"\n              @click=\"clear\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-if=\"showPwdVisible\"\n              :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n              @click=\"handlePasswordVisible\"\n              @mousedown.prevent=\"NOOP\"\n              @mouseup.prevent=\"NOOP\"\n            >\n              <slot name=\"password-icon\" :visible=\"passwordVisible\">\n                <component :is=\"passwordIcon\" />\n              </slot>\n            </el-icon>\n            <span\n              v-if=\"isWordLimitVisible\"\n              :class=\"[\n                nsInput.e('count'),\n                nsInput.is('outside', wordLimitPosition === 'outside'),\n              ]\"\n            >\n              <span :class=\"nsInput.e('count-inner')\">\n                {{ textLength }} / {{ maxlength }}\n              </span>\n            </span>\n            <el-icon\n              v-if=\"validateState && validateIcon && needStatusIcon\"\n              :class=\"[\n                nsInput.e('icon'),\n                nsInput.e('validateIcon'),\n                nsInput.is('loading', validateState === 'validating'),\n              ]\"\n            >\n              <component :is=\"validateIcon\" />\n            </el-icon>\n          </span>\n        </span>\n      </div>\n\n      <!-- append slot -->\n      <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n        <slot name=\"append\" />\n      </div>\n    </template>\n\n    <!-- textarea -->\n    <template v-else>\n      <textarea\n        :id=\"inputId\"\n        ref=\"textarea\"\n        :class=\"[\n          nsTextarea.e('inner'),\n          nsInput.is('focus', isFocused),\n          nsTextarea.is('clearable', clearable),\n        ]\"\n        v-bind=\"attrs\"\n        :name=\"name\"\n        :minlength=\"minlength\"\n        :maxlength=\"maxlength\"\n        :tabindex=\"tabindex\"\n        :disabled=\"inputDisabled\"\n        :readonly=\"readonly\"\n        :autocomplete=\"autocomplete\"\n        :style=\"textareaStyle\"\n        :aria-label=\"ariaLabel\"\n        :placeholder=\"getPlaceholder\"\n        :form=\"form\"\n        :autofocus=\"autofocus\"\n        :rows=\"rows\"\n        :role=\"containerRole\"\n        @compositionstart=\"handleCompositionStart\"\n        @compositionupdate=\"handleCompositionUpdate\"\n        @compositionend=\"handleCompositionEnd\"\n        @input=\"handleInput\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @change=\"handleChange\"\n        @keydown=\"handleKeydown\"\n      />\n      <el-icon\n        v-if=\"showClear\"\n        :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n        @mousedown.prevent=\"NOOP\"\n        @click=\"clear\"\n      >\n        <component :is=\"clearIcon\" />\n      </el-icon>\n      <span\n        v-if=\"isWordLimitVisible\"\n        :style=\"countStyle\"\n        :class=\"[\n          nsInput.e('count'),\n          nsInput.is('outside', wordLimitPosition === 'outside'),\n        ]\"\n      >\n        {{ textLength }} / {{ maxlength }}\n      </span>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  ref,\n  shallowRef,\n  toRef,\n  useAttrs as useRawAttrs,\n  useSlots,\n  watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Hide, View } from 'pit-element-icons'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport {\n  NOOP,\n  ValidateComponentsMap,\n  debugWarn,\n  isClient,\n  isObject,\n} from '@pit-element-plus/utils'\nimport {\n  useAttrs,\n  useComposition,\n  useCursor,\n  useFocusController,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n  name: COMPONENT_NAME,\n  inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n  props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n  nsInput.m(inputSize.value),\n  nsInput.is('disabled', inputDisabled.value),\n  nsInput.is('exceed', inputExceed.value),\n  {\n    [nsInput.b('group')]: slots.prepend || slots.append,\n    [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n    [nsInput.m('suffix')]:\n      slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n    [nsInput.bm('suffix', 'password-clear')]:\n      showClear.value && showPwdVisible.value,\n    [nsInput.b('hidden')]: props.type === 'hidden',\n  },\n  rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n  nsInput.e('wrapper'),\n  nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n  formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n  _ref,\n  {\n    disabled: inputDisabled,\n    afterBlur() {\n      if (props.validateEvent) {\n        elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n      }\n    },\n  }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n  () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n  rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n  props.inputStyle,\n  textareaCalcStyle.value,\n  { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n  isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n  () =>\n    props.clearable &&\n    !inputDisabled.value &&\n    !props.readonly &&\n    !!nativeInputValue.value &&\n    (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n  () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n  () =>\n    props.showWordLimit &&\n    !!props.maxlength &&\n    (props.type === 'text' || props.type === 'textarea') &&\n    !inputDisabled.value &&\n    !props.readonly &&\n    !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n  () =>\n    // show exceed style if length of initial value greater then maxlength\n    !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n  () =>\n    !!slots.suffix ||\n    !!props.suffixIcon ||\n    showClear.value ||\n    props.showPassword ||\n    isWordLimitVisible.value ||\n    (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n  () => !!Object.keys(props.modelModifiers).length\n)\n\nconst getPlaceholder = computed(() => {\n  if (inputDisabled.value) {\n    return ''\n  } else {\n    if (props.isSelect) {\n      const formItemPlaceholder = elFormItem?.label\n        ? `请输入${elFormItem?.label}`\n        : ''\n      return props.placeholder || formItemPlaceholder\n    }\n    return props.placeholder\n  }\n})\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n  onceInitSizeTextarea()\n  if (\n    !isWordLimitVisible.value ||\n    (props.resize !== 'both' && props.resize !== 'horizontal')\n  )\n    return\n  const entry = entries[0]\n  const { width } = entry.contentRect\n  countStyle.value = {\n    /** right: 100% - width + padding(22) - right(10) */\n    right: `calc(100% - ${width + 22 - 10}px)`,\n  }\n})\n\nconst resizeTextarea = () => {\n  const { type, autosize } = props\n\n  if (!isClient || type !== 'textarea' || !textarea.value) return\n\n  if (autosize) {\n    const minRows = isObject(autosize) ? autosize.minRows : undefined\n    const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n    const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n    // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n    // If set textarea height in this case, the scrollbar will not hide.\n    // So we need to hide scrollbar first, and reset it in next tick.\n    // see https://github.com/element-plus/element-plus/issues/8825\n    textareaCalcStyle.value = {\n      overflowY: 'hidden',\n      ...textareaStyle,\n    }\n\n    nextTick(() => {\n      // NOTE: Force repaint to make sure the style set above is applied.\n      textarea.value!.offsetHeight\n      textareaCalcStyle.value = textareaStyle\n    })\n  } else {\n    textareaCalcStyle.value = {\n      minHeight: calcTextareaHeight(textarea.value).minHeight,\n    }\n  }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n  let isInit = false\n  return () => {\n    if (isInit || !props.autosize) return\n    const isElHidden = textarea.value?.offsetParent === null\n    if (!isElHidden) {\n      setTimeout(resizeTextarea)\n      isInit = true\n    }\n  }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n  const input = _ref.value\n  const formatterValue = props.formatter\n    ? props.formatter(nativeInputValue.value)\n    : nativeInputValue.value\n  if (!input || input.value === formatterValue || props.type === 'file') return\n  input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n  const { trim, number } = props.modelModifiers\n  if (trim) {\n    value = value.trim()\n  }\n  if (number) {\n    value = `${looseToNumber(value)}`\n  }\n  if (props.formatter && props.parser) {\n    value = props.parser(value)\n  }\n  return value\n}\n\nconst handleInput = async (event: Event) => {\n  // should not emit input during composition\n  // see: https://github.com/ElemeFE/element/issues/10516\n  if (isComposing.value) return\n\n  const { lazy } = props.modelModifiers\n  let { value } = event.target as TargetElement\n  if (lazy) {\n    emit(INPUT_EVENT, value)\n    return\n  }\n\n  value = formatValue(value)\n\n  // hack for https://github.com/ElemeFE/element/issues/8548\n  // should remove the following line when we don't support IE\n  if (String(value) === nativeInputValue.value) {\n    // preserve native features while being compatible with #9501\n    if (props.formatter) {\n      setNativeInputValue()\n    }\n    return\n  }\n\n  recordCursor()\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(INPUT_EVENT, value)\n\n  // ensure native input value is controlled\n  // see: https://github.com/ElemeFE/element/issues/12850\n  await nextTick()\n\n  if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n    setNativeInputValue()\n  }\n  setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n  let { value } = event.target as TargetElement\n\n  value = formatValue(value)\n  if (props.modelModifiers.lazy) {\n    emit(UPDATE_MODEL_EVENT, value)\n  }\n  emit(CHANGE_EVENT, value, event)\n\n  await nextTick()\n  setNativeInputValue()\n}\n\nconst {\n  isComposing,\n  handleCompositionStart,\n  handleCompositionUpdate,\n  handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n  passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n  hovering.value = false\n  emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n  hovering.value = true\n  emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n  emit('keydown', evt)\n}\n\nconst select = () => {\n  _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n  emit(UPDATE_MODEL_EVENT, '')\n  emit(CHANGE_EVENT, '')\n  emit('clear', evt)\n  emit(INPUT_EVENT, '')\n}\n\nwatch(\n  () => props.modelValue,\n  () => {\n    nextTick(() => resizeTextarea())\n    if (props.validateEvent) {\n      elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n  if (!_ref.value) {\n    return\n  }\n  const { trim, number } = props.modelModifiers\n  const elValue = _ref.value.value\n  const displayValue =\n    (number || props.type === 'number') && !/^0\\d/.test(elValue)\n      ? `${looseToNumber(elValue)}`\n      : elValue\n\n  if (displayValue === newValue) {\n    return\n  }\n\n  if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n    if (trim && displayValue.trim() === newValue) {\n      return\n    }\n  }\n\n  setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n  () => props.type,\n  async () => {\n    await nextTick()\n    setNativeInputValue()\n    resizeTextarea()\n  }\n)\n\nonMounted(() => {\n  if (!props.formatter && props.parser) {\n    debugWarn(\n      COMPONENT_NAME,\n      'If you set the parser, you also need to set the formatter.'\n    )\n  }\n  setNativeInputValue()\n  nextTick(resizeTextarea)\n})\n\ndefineExpose({\n  /** @description HTML input element */\n  input,\n  /** @description HTML textarea element */\n  textarea,\n  /** @description HTML element, input or textarea */\n  ref: _ref,\n  /** @description style of textarea. */\n  textareaStyle,\n\n  /** @description from props (used on unit test) */\n  autosize: toRef(props, 'autosize'),\n\n  /** @description is input composing */\n  isComposing,\n\n  /** @description HTML input element native method */\n  focus,\n  /** @description HTML input element native method */\n  blur,\n  /** @description HTML input element native method */\n  select,\n  /** @description clear input value */\n  clear,\n  /** @description resize textarea. */\n  resizeTextarea,\n})\n</script>\n","<template>\n  <div\n    :class=\"[\n      containerKls,\n      {\n        [nsInput.bm('group', 'append')]: $slots.append,\n        [nsInput.bm('group', 'prepend')]: $slots.prepend,\n      },\n    ]\"\n    :style=\"containerStyle\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n  >\n    <!-- input -->\n    <template v-if=\"type !== 'textarea'\">\n      <!-- prepend slot -->\n      <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\n        <slot name=\"prepend\" />\n      </div>\n\n      <div ref=\"wrapperRef\" :class=\"wrapperKls\">\n        <!-- prefix slot -->\n        <span v-if=\"$slots.prefix || prefixIcon\" :class=\"nsInput.e('prefix')\">\n          <span :class=\"nsInput.e('prefix-inner')\">\n            <slot name=\"prefix\" />\n            <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('icon')\">\n              <component :is=\"prefixIcon\" />\n            </el-icon>\n          </span>\n        </span>\n\n        <input\n          :id=\"inputId\"\n          ref=\"input\"\n          :class=\"nsInput.e('inner')\"\n          v-bind=\"attrs\"\n          :name=\"name\"\n          :minlength=\"minlength\"\n          :maxlength=\"maxlength\"\n          :type=\"showPassword ? (passwordVisible ? 'text' : 'password') : type\"\n          :disabled=\"inputDisabled\"\n          :readonly=\"readonly\"\n          :autocomplete=\"autocomplete\"\n          :tabindex=\"tabindex\"\n          :aria-label=\"ariaLabel\"\n          :placeholder=\"getPlaceholder\"\n          :style=\"inputStyle\"\n          :form=\"form\"\n          :autofocus=\"autofocus\"\n          :role=\"containerRole\"\n          :inputmode=\"inputmode\"\n          @compositionstart=\"handleCompositionStart\"\n          @compositionupdate=\"handleCompositionUpdate\"\n          @compositionend=\"handleCompositionEnd\"\n          @input=\"handleInput\"\n          @change=\"handleChange\"\n          @keydown=\"handleKeydown\"\n        />\n\n        <!-- suffix slot -->\n        <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\n          <span :class=\"nsInput.e('suffix-inner')\">\n            <template\n              v-if=\"!showClear || !showPwdVisible || !isWordLimitVisible\"\n            >\n              <slot name=\"suffix\" />\n              <el-icon v-if=\"suffixIcon\" :class=\"nsInput.e('icon')\">\n                <component :is=\"suffixIcon\" />\n              </el-icon>\n            </template>\n            <el-icon\n              v-if=\"showClear\"\n              :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\n              @mousedown.prevent=\"NOOP\"\n              @click=\"clear\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-if=\"showPwdVisible\"\n              :class=\"[nsInput.e('icon'), nsInput.e('password')]\"\n              @click=\"handlePasswordVisible\"\n              @mousedown.prevent=\"NOOP\"\n              @mouseup.prevent=\"NOOP\"\n            >\n              <slot name=\"password-icon\" :visible=\"passwordVisible\">\n                <component :is=\"passwordIcon\" />\n              </slot>\n            </el-icon>\n            <span\n              v-if=\"isWordLimitVisible\"\n              :class=\"[\n                nsInput.e('count'),\n                nsInput.is('outside', wordLimitPosition === 'outside'),\n              ]\"\n            >\n              <span :class=\"nsInput.e('count-inner')\">\n                {{ textLength }} / {{ maxlength }}\n              </span>\n            </span>\n            <el-icon\n              v-if=\"validateState && validateIcon && needStatusIcon\"\n              :class=\"[\n                nsInput.e('icon'),\n                nsInput.e('validateIcon'),\n                nsInput.is('loading', validateState === 'validating'),\n              ]\"\n            >\n              <component :is=\"validateIcon\" />\n            </el-icon>\n          </span>\n        </span>\n      </div>\n\n      <!-- append slot -->\n      <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\n        <slot name=\"append\" />\n      </div>\n    </template>\n\n    <!-- textarea -->\n    <template v-else>\n      <textarea\n        :id=\"inputId\"\n        ref=\"textarea\"\n        :class=\"[\n          nsTextarea.e('inner'),\n          nsInput.is('focus', isFocused),\n          nsTextarea.is('clearable', clearable),\n        ]\"\n        v-bind=\"attrs\"\n        :name=\"name\"\n        :minlength=\"minlength\"\n        :maxlength=\"maxlength\"\n        :tabindex=\"tabindex\"\n        :disabled=\"inputDisabled\"\n        :readonly=\"readonly\"\n        :autocomplete=\"autocomplete\"\n        :style=\"textareaStyle\"\n        :aria-label=\"ariaLabel\"\n        :placeholder=\"getPlaceholder\"\n        :form=\"form\"\n        :autofocus=\"autofocus\"\n        :rows=\"rows\"\n        :role=\"containerRole\"\n        @compositionstart=\"handleCompositionStart\"\n        @compositionupdate=\"handleCompositionUpdate\"\n        @compositionend=\"handleCompositionEnd\"\n        @input=\"handleInput\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @change=\"handleChange\"\n        @keydown=\"handleKeydown\"\n      />\n      <el-icon\n        v-if=\"showClear\"\n        :class=\"[nsTextarea.e('icon'), nsTextarea.e('clear')]\"\n        @mousedown.prevent=\"NOOP\"\n        @click=\"clear\"\n      >\n        <component :is=\"clearIcon\" />\n      </el-icon>\n      <span\n        v-if=\"isWordLimitVisible\"\n        :style=\"countStyle\"\n        :class=\"[\n          nsInput.e('count'),\n          nsInput.is('outside', wordLimitPosition === 'outside'),\n        ]\"\n      >\n        {{ textLength }} / {{ maxlength }}\n      </span>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  ref,\n  shallowRef,\n  toRef,\n  useAttrs as useRawAttrs,\n  useSlots,\n  watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Hide, View } from 'pit-element-icons'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport {\n  NOOP,\n  ValidateComponentsMap,\n  debugWarn,\n  isClient,\n  isObject,\n} from '@pit-element-plus/utils'\nimport {\n  useAttrs,\n  useComposition,\n  useCursor,\n  useFocusController,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { calcTextareaHeight, looseToNumber } from './utils'\nimport { inputEmits, inputPropsDefaults } from './input'\n\nimport type { StyleValue } from 'vue'\nimport type { InputProps } from './input'\n\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\n\nconst COMPONENT_NAME = 'ElInput'\ndefineOptions({\n  name: COMPONENT_NAME,\n  inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<InputProps>(), inputPropsDefaults)\nconst emit = defineEmits(inputEmits)\n\nconst rawAttrs = useRawAttrs()\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst containerKls = computed(() => [\n  props.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\n  nsInput.m(inputSize.value),\n  nsInput.is('disabled', inputDisabled.value),\n  nsInput.is('exceed', inputExceed.value),\n  {\n    [nsInput.b('group')]: slots.prepend || slots.append,\n    [nsInput.m('prefix')]: slots.prefix || props.prefixIcon,\n    [nsInput.m('suffix')]:\n      slots.suffix || props.suffixIcon || props.clearable || props.showPassword,\n    [nsInput.bm('suffix', 'password-clear')]:\n      showClear.value && showPwdVisible.value,\n    [nsInput.b('hidden')]: props.type === 'hidden',\n  },\n  rawAttrs.class,\n])\n\nconst wrapperKls = computed(() => [\n  nsInput.e('wrapper'),\n  nsInput.is('focus', isFocused.value),\n])\n\nconst { form: elForm, formItem: elFormItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, {\n  formItemContext: elFormItem,\n})\nconst inputSize = useFormSize()\nconst inputDisabled = useFormDisabled()\nconst nsInput = useNamespace('input')\nconst nsTextarea = useNamespace('textarea')\n\nconst input = shallowRef<HTMLInputElement>()\nconst textarea = shallowRef<HTMLTextAreaElement>()\n\nconst hovering = ref(false)\nconst passwordVisible = ref(false)\nconst countStyle = ref<StyleValue>()\nconst textareaCalcStyle = shallowRef(props.inputStyle)\n\nconst _ref = computed(() => input.value || textarea.value)\n\n// wrapperRef for type=\"text\", handleFocus and handleBlur for type=\"textarea\"\nconst { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(\n  _ref,\n  {\n    disabled: inputDisabled,\n    afterBlur() {\n      if (props.validateEvent) {\n        elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n      }\n    },\n  }\n)\n\nconst needStatusIcon = computed(() => elForm?.statusIcon ?? false)\nconst validateState = computed(() => elFormItem?.validateState || '')\nconst validateIcon = computed(\n  () => validateState.value && ValidateComponentsMap[validateState.value]\n)\nconst passwordIcon = computed(() => (passwordVisible.value ? View : Hide))\nconst containerStyle = computed<StyleValue>(() => [\n  rawAttrs.style as StyleValue,\n])\nconst textareaStyle = computed<StyleValue>(() => [\n  props.inputStyle,\n  textareaCalcStyle.value,\n  { resize: props.resize },\n])\nconst nativeInputValue = computed(() =>\n  isNil(props.modelValue) ? '' : String(props.modelValue)\n)\nconst showClear = computed(\n  () =>\n    props.clearable &&\n    !inputDisabled.value &&\n    !props.readonly &&\n    !!nativeInputValue.value &&\n    (isFocused.value || hovering.value)\n)\nconst showPwdVisible = computed(\n  () => props.showPassword && !inputDisabled.value && !!nativeInputValue.value\n)\nconst isWordLimitVisible = computed(\n  () =>\n    props.showWordLimit &&\n    !!props.maxlength &&\n    (props.type === 'text' || props.type === 'textarea') &&\n    !inputDisabled.value &&\n    !props.readonly &&\n    !props.showPassword\n)\nconst textLength = computed(() => nativeInputValue.value.length)\nconst inputExceed = computed(\n  () =>\n    // show exceed style if length of initial value greater then maxlength\n    !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)\n)\nconst suffixVisible = computed(\n  () =>\n    !!slots.suffix ||\n    !!props.suffixIcon ||\n    showClear.value ||\n    props.showPassword ||\n    isWordLimitVisible.value ||\n    (!!validateState.value && needStatusIcon.value)\n)\nconst hasModelModifiers = computed(\n  () => !!Object.keys(props.modelModifiers).length\n)\n\nconst getPlaceholder = computed(() => {\n  if (inputDisabled.value) {\n    return ''\n  } else {\n    if (props.isSelect) {\n      const formItemPlaceholder = elFormItem?.label\n        ? `请输入${elFormItem?.label}`\n        : ''\n      return props.placeholder || formItemPlaceholder\n    }\n    return props.placeholder\n  }\n})\n\nconst [recordCursor, setCursor] = useCursor(input)\n\nuseResizeObserver(textarea, (entries) => {\n  onceInitSizeTextarea()\n  if (\n    !isWordLimitVisible.value ||\n    (props.resize !== 'both' && props.resize !== 'horizontal')\n  )\n    return\n  const entry = entries[0]\n  const { width } = entry.contentRect\n  countStyle.value = {\n    /** right: 100% - width + padding(22) - right(10) */\n    right: `calc(100% - ${width + 22 - 10}px)`,\n  }\n})\n\nconst resizeTextarea = () => {\n  const { type, autosize } = props\n\n  if (!isClient || type !== 'textarea' || !textarea.value) return\n\n  if (autosize) {\n    const minRows = isObject(autosize) ? autosize.minRows : undefined\n    const maxRows = isObject(autosize) ? autosize.maxRows : undefined\n    const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows)\n\n    // If the scrollbar is displayed, the height of the textarea needs more space than the calculated height.\n    // If set textarea height in this case, the scrollbar will not hide.\n    // So we need to hide scrollbar first, and reset it in next tick.\n    // see https://github.com/element-plus/element-plus/issues/8825\n    textareaCalcStyle.value = {\n      overflowY: 'hidden',\n      ...textareaStyle,\n    }\n\n    nextTick(() => {\n      // NOTE: Force repaint to make sure the style set above is applied.\n      textarea.value!.offsetHeight\n      textareaCalcStyle.value = textareaStyle\n    })\n  } else {\n    textareaCalcStyle.value = {\n      minHeight: calcTextareaHeight(textarea.value).minHeight,\n    }\n  }\n}\n\nconst createOnceInitResize = (resizeTextarea: () => void) => {\n  let isInit = false\n  return () => {\n    if (isInit || !props.autosize) return\n    const isElHidden = textarea.value?.offsetParent === null\n    if (!isElHidden) {\n      setTimeout(resizeTextarea)\n      isInit = true\n    }\n  }\n}\n// fix: https://github.com/element-plus/element-plus/issues/12074\nconst onceInitSizeTextarea = createOnceInitResize(resizeTextarea)\n\nconst setNativeInputValue = () => {\n  const input = _ref.value\n  const formatterValue = props.formatter\n    ? props.formatter(nativeInputValue.value)\n    : nativeInputValue.value\n  if (!input || input.value === formatterValue || props.type === 'file') return\n  input.value = formatterValue\n}\n\nconst formatValue = (value: string) => {\n  const { trim, number } = props.modelModifiers\n  if (trim) {\n    value = value.trim()\n  }\n  if (number) {\n    value = `${looseToNumber(value)}`\n  }\n  if (props.formatter && props.parser) {\n    value = props.parser(value)\n  }\n  return value\n}\n\nconst handleInput = async (event: Event) => {\n  // should not emit input during composition\n  // see: https://github.com/ElemeFE/element/issues/10516\n  if (isComposing.value) return\n\n  const { lazy } = props.modelModifiers\n  let { value } = event.target as TargetElement\n  if (lazy) {\n    emit(INPUT_EVENT, value)\n    return\n  }\n\n  value = formatValue(value)\n\n  // hack for https://github.com/ElemeFE/element/issues/8548\n  // should remove the following line when we don't support IE\n  if (String(value) === nativeInputValue.value) {\n    // preserve native features while being compatible with #9501\n    if (props.formatter) {\n      setNativeInputValue()\n    }\n    return\n  }\n\n  recordCursor()\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(INPUT_EVENT, value)\n\n  // ensure native input value is controlled\n  // see: https://github.com/ElemeFE/element/issues/12850\n  await nextTick()\n\n  if ((props.formatter && props.parser) || !hasModelModifiers.value) {\n    setNativeInputValue()\n  }\n  setCursor()\n}\n\nconst handleChange = async (event: Event) => {\n  let { value } = event.target as TargetElement\n\n  value = formatValue(value)\n  if (props.modelModifiers.lazy) {\n    emit(UPDATE_MODEL_EVENT, value)\n  }\n  emit(CHANGE_EVENT, value, event)\n\n  await nextTick()\n  setNativeInputValue()\n}\n\nconst {\n  isComposing,\n  handleCompositionStart,\n  handleCompositionUpdate,\n  handleCompositionEnd,\n} = useComposition({ emit, afterComposition: handleInput })\n\nconst handlePasswordVisible = () => {\n  passwordVisible.value = !passwordVisible.value\n}\n\nconst focus = () => _ref.value?.focus()\n\nconst blur = () => _ref.value?.blur()\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n  hovering.value = false\n  emit('mouseleave', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n  hovering.value = true\n  emit('mouseenter', evt)\n}\n\nconst handleKeydown = (evt: KeyboardEvent) => {\n  emit('keydown', evt)\n}\n\nconst select = () => {\n  _ref.value?.select()\n}\n\nconst clear = (evt?: MouseEvent) => {\n  emit(UPDATE_MODEL_EVENT, '')\n  emit(CHANGE_EVENT, '')\n  emit('clear', evt)\n  emit(INPUT_EVENT, '')\n}\n\nwatch(\n  () => props.modelValue,\n  () => {\n    nextTick(() => resizeTextarea())\n    if (props.validateEvent) {\n      elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n\n// native input value is set explicitly\n// do not use v-model / :value in template\n// see: https://github.com/ElemeFE/element/issues/14521\nwatch(nativeInputValue, (newValue) => {\n  if (!_ref.value) {\n    return\n  }\n  const { trim, number } = props.modelModifiers\n  const elValue = _ref.value.value\n  const displayValue =\n    (number || props.type === 'number') && !/^0\\d/.test(elValue)\n      ? `${looseToNumber(elValue)}`\n      : elValue\n\n  if (displayValue === newValue) {\n    return\n  }\n\n  if (document.activeElement === _ref.value && _ref.value.type !== 'range') {\n    if (trim && displayValue.trim() === newValue) {\n      return\n    }\n  }\n\n  setNativeInputValue()\n})\n\n// when change between <input> and <textarea>,\n// update DOM dependent value and styles\n// https://github.com/ElemeFE/element/issues/14857\nwatch(\n  () => props.type,\n  async () => {\n    await nextTick()\n    setNativeInputValue()\n    resizeTextarea()\n  }\n)\n\nonMounted(() => {\n  if (!props.formatter && props.parser) {\n    debugWarn(\n      COMPONENT_NAME,\n      'If you set the parser, you also need to set the formatter.'\n    )\n  }\n  setNativeInputValue()\n  nextTick(resizeTextarea)\n})\n\ndefineExpose({\n  /** @description HTML input element */\n  input,\n  /** @description HTML textarea element */\n  textarea,\n  /** @description HTML element, input or textarea */\n  ref: _ref,\n  /** @description style of textarea. */\n  textareaStyle,\n\n  /** @description from props (used on unit test) */\n  autosize: toRef(props, 'autosize'),\n\n  /** @description is input composing */\n  isComposing,\n\n  /** @description HTML input element native method */\n  focus,\n  /** @description HTML input element native method */\n  blur,\n  /** @description HTML input element native method */\n  select,\n  /** @description clear input value */\n  clear,\n  /** @description resize textarea. */\n  resizeTextarea,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Input from './src/input.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElInput: SFCWithInstall<typeof Input> = withInstall(Input)\nexport default ElInput\n\nexport * from './src/input'\nexport type { InputInstance } from './src/instance'\n","import {\n  NOOP,\n  buildProps,\n  definePropType,\n  isNumber,\n  isObject,\n  isString,\n} from '@pit-element-plus/utils'\nimport { useTooltipContentProps } from '@pit-element-plus/components/tooltip'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { inputProps } from '@pit-element-plus/components/input'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Autocomplete from './autocomplete.vue'\nimport type { Placement } from '@pit-element-plus/components/popper'\nimport type { Awaitable } from '@pit-element-plus/utils'\nimport type { InputProps } from '@pit-element-plus/components/input'\nimport type { ElTooltipContentProps } from '@pit-element-plus/components/tooltip'\n\nexport type AutocompleteData = Record<string, any>[]\nexport type AutocompleteFetchSuggestionsCallback = (\n  data: AutocompleteData\n) => void\nexport type AutocompleteFetchSuggestions =\n  | ((\n      queryString: string,\n      cb: AutocompleteFetchSuggestionsCallback\n    ) => Awaitable<AutocompleteData> | void)\n  | AutocompleteData\n\nexport type AutocompletePlacement =\n  | 'top'\n  | 'top-start'\n  | 'top-end'\n  | 'bottom'\n  | 'bottom-start'\n  | 'bottom-end'\n\nexport interface AutocompleteProps extends InputProps {\n  /**\n   * @description key name of the input suggestion object for display\n   */\n  valueKey?: string\n  /**\n   * @description binding value\n   */\n  modelValue?: string | number\n  /**\n   * @description debounce delay when typing, in milliseconds\n   */\n  debounce?: number\n  /**\n   * @description placement of the popup menu\n   */\n  placement?: AutocompletePlacement\n  /**\n   * @description a method to fetch input suggestions. When suggestions are ready, invoke `callback(data:[])` to return them to Autocomplete\n   */\n  fetchSuggestions?: AutocompleteFetchSuggestions\n  /**\n   * @description custom class name for autocomplete's dropdown\n   */\n  popperClass?: ElTooltipContentProps['popperClass']\n  /**\n   * @description custom style for autocomplete's dropdown\n   */\n  popperStyle?: ElTooltipContentProps['popperStyle']\n  /**\n   * @description whether show suggestions when input focus\n   */\n  triggerOnFocus?: boolean\n  /**\n   * @description whether to emit a `select` event on enter when there is no autocomplete match\n   */\n  selectWhenUnmatched?: boolean\n  /**\n   * @description whether to hide the loading icon in remote search\n   */\n  hideLoading?: boolean\n  /**\n   * @description whether select dropdown is teleported to the body\n   */\n  teleported?: ElTooltipContentProps['teleported']\n  /**\n   * @description which select dropdown appends to\n   */\n  appendTo?: ElTooltipContentProps['appendTo']\n  /**\n   * @description whether to highlight first item in remote search suggestions by default\n   */\n  highlightFirstItem?: boolean\n  /**\n   * @description whether the width of the dropdown is the same as the input\n   */\n  fitInputWidth?: boolean\n  /**\n   * @description whether keyboard navigation loops from end to start\n   */\n  loopNavigation?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `AutocompleteProps` instead.\n */\nexport const autocompleteProps = buildProps({\n  ...inputProps,\n  /**\n   * @description key name of the input suggestion object for display\n   */\n  valueKey: {\n    type: String,\n    default: 'value',\n  },\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description debounce delay when typing, in milliseconds\n   */\n  debounce: {\n    type: Number,\n    default: 300,\n  },\n  /**\n   * @description placement of the popup menu\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    values: [\n      'top',\n      'top-start',\n      'top-end',\n      'bottom',\n      'bottom-start',\n      'bottom-end',\n    ],\n    default: 'bottom-start',\n  },\n  /**\n   * @description a method to fetch input suggestions. When suggestions are ready, invoke `callback(data:[])` to return them to Autocomplete\n   */\n  fetchSuggestions: {\n    type: definePropType<AutocompleteFetchSuggestions>([Function, Array]),\n    default: NOOP,\n  },\n  /**\n   * @description custom class name for autocomplete's dropdown\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  /**\n   * @description custom style for autocomplete's dropdown\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description whether show suggestions when input focus\n   */\n  triggerOnFocus: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to emit a `select` event on enter when there is no autocomplete match\n   */\n  selectWhenUnmatched: Boolean,\n  /**\n   * @description whether to hide the loading icon in remote search\n   */\n  hideLoading: Boolean,\n  /**\n   * @description whether select dropdown is teleported to the body\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description which select dropdown appends to\n   */\n  appendTo: useTooltipContentProps.appendTo,\n  /**\n   * @description whether to highlight first item in remote search suggestions by default\n   */\n  highlightFirstItem: Boolean,\n  /**\n   * @description whether the width of the dropdown is the same as the input\n   */\n  fitInputWidth: Boolean,\n  /**\n   * @description whether keyboard navigation loops from end to start\n   */\n  loopNavigation: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `AutocompleteProps` instead.\n */\nexport type AutocompletePropsPublic = ExtractPublicPropTypes<\n  typeof autocompleteProps\n>\n\nexport const autocompleteEmits = {\n  [UPDATE_MODEL_EVENT]: (value: string | number) =>\n    isString(value) || isNumber(value),\n  [INPUT_EVENT]: (value: string | number) => isString(value) || isNumber(value),\n  [CHANGE_EVENT]: (value: string | number) =>\n    isString(value) || isNumber(value),\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n  select: (item: Record<string, any>) => isObject(item),\n}\nexport type AutocompleteEmits = typeof autocompleteEmits\n\nexport type AutocompleteInstance = InstanceType<typeof Autocomplete> & unknown\n","import { buildProps, definePropType, isNumber } from '@pit-element-plus/utils'\nimport { useAriaProps } from '@pit-element-plus/hooks'\n\nimport type { ExtractPublicPropTypes, StyleValue } from 'vue'\nimport type Scrollbar from './scrollbar.vue'\n\nexport interface ScrollbarProps {\n  /**\n   * @description trigger distance(px)\n   * @default 0\n   */\n  distance?: number\n  /**\n   * @description height of scrollbar\n   * @default ''\n   */\n  height?: number | string\n  /**\n   * @description max height of scrollbar\n   * @default ''\n   */\n  maxHeight?: number | string\n  /**\n   * @description whether to use the native scrollbar\n   */\n  native?: boolean\n  /**\n   * @description style of wrap\n   * @default ''\n   */\n  wrapStyle?: StyleValue\n  /**\n   * @description class of wrap\n   * @default ''\n   */\n  wrapClass?: string | string[]\n  /**\n   * @description class of view\n   * @default ''\n   */\n  viewClass?: string | string[]\n  /**\n   * @description style of view\n   * @default ''\n   */\n  viewStyle?: StyleValue\n  /**\n   * @description do not respond to container size changes, if the container size does not change, it is better to set it to optimize performance\n   */\n  noresize?: boolean\n  /**\n   * @description element tag of the view\n   * @default 'div'\n   */\n  tag?: keyof HTMLElementTagNameMap | (string & {})\n  /**\n   * @description always show\n   */\n  always?: boolean\n  /**\n   * @description minimum size of scrollbar\n   * @default 20\n   */\n  minSize?: number\n  /**\n   * @description Wrap tabindex\n   * @default undefined\n   */\n  tabindex?: number | string\n  /**\n   * @description id of view\n   */\n  id?: string\n  /**\n   * @description role of view\n   */\n  role?: string\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel?: string\n  /**\n   * @description native `aria-orientation` attribute\n   */\n  ariaOrientation?: 'horizontal' | 'vertical' | 'undefined'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ScrollbarProps` instead.\n */\nexport const scrollbarProps = buildProps({\n  /**\n   * @description trigger distance(px)\n   */\n  distance: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description height of scrollbar\n   */\n  height: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description max height of scrollbar\n   */\n  maxHeight: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description whether to use the native scrollbar\n   */\n  native: Boolean,\n  /**\n   * @description style of wrap\n   */\n  wrapStyle: {\n    type: definePropType<StyleValue>([String, Object, Array]),\n    default: '',\n  },\n  /**\n   * @description class of wrap\n   */\n  wrapClass: {\n    type: [String, Array],\n    default: '',\n  },\n  /**\n   * @description class of view\n   */\n  viewClass: {\n    type: [String, Array],\n    default: '',\n  },\n  /**\n   * @description style of view\n   */\n  viewStyle: {\n    type: [String, Array, Object],\n    default: '',\n  },\n  /**\n   * @description do not respond to container size changes, if the container size does not change, it is better to set it to optimize performance\n   */\n  noresize: Boolean, // 如果 container 尺寸不会发生变化，最好设置它可以优化性能\n  /**\n   * @description element tag of the view\n   */\n  tag: {\n    type: String,\n    default: 'div',\n  },\n  /**\n   * @description always show\n   */\n  always: Boolean,\n  /**\n   * @description minimum size of scrollbar\n   */\n  minSize: {\n    type: Number,\n    default: 20,\n  },\n  /**\n   * @description Wrap tabindex\n   */\n  tabindex: {\n    type: [String, Number],\n    default: undefined,\n  },\n  /**\n   * @description id of view\n   */\n  id: String,\n  /**\n   * @description role of view\n   */\n  role: String,\n  ...useAriaProps(['ariaLabel', 'ariaOrientation']),\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `ScrollbarProps` instead.\n */\nexport type ScrollbarPropsPublic = ExtractPublicPropTypes<typeof scrollbarProps>\n\nexport const scrollbarEmits = {\n  'end-reached': (direction: ScrollbarDirection) =>\n    ['left', 'right', 'top', 'bottom'].includes(direction),\n  scroll: ({\n    scrollTop,\n    scrollLeft,\n  }: {\n    scrollTop: number\n    scrollLeft: number\n  }) => [scrollTop, scrollLeft].every(isNumber),\n}\nexport type ScrollbarEmits = typeof scrollbarEmits\nexport type ScrollbarDirection = 'top' | 'bottom' | 'left' | 'right'\n\nexport type ScrollbarInstance = InstanceType<typeof Scrollbar> & unknown\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Bar from './bar.vue'\n\nexport interface BarProps {\n  always?: boolean\n  minSize: number\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `BarProps` instead.\n */\nexport const barProps = buildProps({\n  always: {\n    type: Boolean,\n    default: true,\n  },\n  minSize: {\n    type: Number,\n    required: true,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `BarProps` instead.\n */\nexport type BarPropsPublic = ExtractPublicPropTypes<typeof barProps>\n\nexport type BarInstance = InstanceType<typeof Bar> & unknown\n","import type { CSSProperties } from 'vue'\nimport type { ThumbProps } from './thumb'\n\nexport const GAP = 4 // top 2 + bottom 2 of bar instance\n\nexport const BAR_MAP = {\n  vertical: {\n    offset: 'offsetHeight',\n    scroll: 'scrollTop',\n    scrollSize: 'scrollHeight',\n    size: 'height',\n    key: 'vertical',\n    axis: 'Y',\n    client: 'clientY',\n    direction: 'top',\n  },\n  horizontal: {\n    offset: 'offsetWidth',\n    scroll: 'scrollLeft',\n    scrollSize: 'scrollWidth',\n    size: 'width',\n    key: 'horizontal',\n    axis: 'X',\n    client: 'clientX',\n    direction: 'left',\n  },\n} as const\n\nexport const renderThumbStyle = ({\n  move,\n  size,\n  bar,\n}: Pick<ThumbProps, 'move' | 'size'> & {\n  bar: (typeof BAR_MAP)[keyof typeof BAR_MAP]\n}): CSSProperties => ({\n  [bar.size]: size,\n  transform: `translate${bar.axis}(${move}%)`,\n})\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Thumb from './thumb.vue'\n\nexport interface ThumbProps {\n  vertical?: boolean\n  size?: string\n  move?: number\n  ratio: number\n  always?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ThumbProps` instead.\n */\nexport const thumbProps = buildProps({\n  vertical: Boolean,\n  size: String,\n  move: Number,\n  ratio: {\n    type: Number,\n    required: true,\n  },\n  always: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `ThumbProps` instead.\n */\nexport type ThumbPropsPublic = ExtractPublicPropTypes<typeof thumbProps>\n\nexport type ThumbInstance = InstanceType<typeof Thumb> & unknown\n","import type { InjectionKey } from 'vue'\n\nexport interface ScrollbarContext {\n  scrollbarElement: HTMLDivElement | undefined\n  wrapElement: HTMLDivElement | undefined\n}\n\nexport const scrollbarContextKey: InjectionKey<ScrollbarContext> = Symbol(\n  'scrollbarContextKey'\n)\n","<template>\n  <transition :name=\"ns.b('fade')\">\n    <div\n      v-show=\"always || visible\"\n      ref=\"instance\"\n      :class=\"[ns.e('bar'), ns.is(bar.key)]\"\n      @mousedown=\"clickTrackHandler\"\n      @click.stop\n    >\n      <div\n        ref=\"thumb\"\n        :class=\"ns.e('thumb')\"\n        :style=\"thumbStyle\"\n        @mousedown=\"clickThumbHandler\"\n      />\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, ref, toRef } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { isClient, throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { scrollbarContextKey } from './constants'\nimport { BAR_MAP, renderThumbStyle } from './util'\n\nimport type { ThumbProps } from './thumb'\n\nconst COMPONENT_NAME = 'Thumb'\nconst props = defineProps<ThumbProps>()\n\nconst scrollbar = inject(scrollbarContextKey)\nconst ns = useNamespace('scrollbar')\n\nif (!scrollbar) throwError(COMPONENT_NAME, 'can not inject scrollbar context')\n\nconst instance = ref<HTMLDivElement>()\nconst thumb = ref<HTMLDivElement>()\n\nconst thumbState = ref<Partial<Record<'X' | 'Y', number>>>({})\nconst visible = ref(false)\n\nlet cursorDown = false\nlet cursorLeave = false\nlet baseScrollHeight = 0\nlet baseScrollWidth = 0\nlet originalOnSelectStart:\n  | ((this: GlobalEventHandlers, ev: Event) => any)\n  | null = isClient ? document.onselectstart : null\n\nconst bar = computed(() => BAR_MAP[props.vertical ? 'vertical' : 'horizontal'])\n\nconst thumbStyle = computed(() =>\n  renderThumbStyle({\n    size: props.size,\n    move: props.move,\n    bar: bar.value,\n  })\n)\n\nconst offsetRatio = computed(\n  () =>\n    // offsetRatioX = original width of thumb / current width of thumb / ratioX\n    // offsetRatioY = original height of thumb / current height of thumb / ratioY\n    // instance height = wrap height - GAP\n    instance.value![bar.value.offset] ** 2 /\n    scrollbar.wrapElement![bar.value.scrollSize] /\n    props.ratio /\n    thumb.value![bar.value.offset]\n)\n\nconst clickThumbHandler = (e: MouseEvent) => {\n  // prevent click event of middle and right button\n  e.stopPropagation()\n  if (e.ctrlKey || [1, 2].includes(e.button)) return\n\n  window.getSelection()?.removeAllRanges()\n  startDrag(e)\n\n  const el = e.currentTarget as HTMLDivElement\n  if (!el) return\n  thumbState.value[bar.value.axis] =\n    el[bar.value.offset] -\n    (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction])\n}\n\nconst clickTrackHandler = (e: MouseEvent) => {\n  if (!thumb.value || !instance.value || !scrollbar.wrapElement) return\n\n  const offset = Math.abs(\n    (e.target as HTMLElement).getBoundingClientRect()[bar.value.direction] -\n      e[bar.value.client]\n  )\n  const thumbHalf = thumb.value[bar.value.offset] / 2\n  const thumbPositionPercentage =\n    ((offset - thumbHalf) * 100 * offsetRatio.value) /\n    instance.value[bar.value.offset]\n\n  scrollbar.wrapElement[bar.value.scroll] =\n    (thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize]) /\n    100\n}\n\nconst startDrag = (e: MouseEvent) => {\n  e.stopImmediatePropagation()\n  cursorDown = true\n  baseScrollHeight = scrollbar.wrapElement!.scrollHeight\n  baseScrollWidth = scrollbar.wrapElement!.scrollWidth\n  document.addEventListener('mousemove', mouseMoveDocumentHandler)\n  document.addEventListener('mouseup', mouseUpDocumentHandler)\n  originalOnSelectStart = document.onselectstart\n  document.onselectstart = () => false\n}\n\nconst mouseMoveDocumentHandler = (e: MouseEvent) => {\n  if (!instance.value || !thumb.value) return\n  if (cursorDown === false) return\n\n  const prevPage = thumbState.value[bar.value.axis]\n  if (!prevPage) return\n\n  const offset =\n    (instance.value.getBoundingClientRect()[bar.value.direction] -\n      e[bar.value.client]) *\n    -1\n  const thumbClickPosition = thumb.value[bar.value.offset] - prevPage\n  const thumbPositionPercentage =\n    ((offset - thumbClickPosition) * 100 * offsetRatio.value) /\n    instance.value[bar.value.offset]\n\n  if (bar.value.scroll === 'scrollLeft') {\n    scrollbar.wrapElement![bar.value.scroll] =\n      (thumbPositionPercentage * baseScrollWidth) / 100\n  } else {\n    scrollbar.wrapElement![bar.value.scroll] =\n      (thumbPositionPercentage * baseScrollHeight) / 100\n  }\n}\n\nconst mouseUpDocumentHandler = () => {\n  cursorDown = false\n  thumbState.value[bar.value.axis] = 0\n  document.removeEventListener('mousemove', mouseMoveDocumentHandler)\n  document.removeEventListener('mouseup', mouseUpDocumentHandler)\n  restoreOnselectstart()\n  if (cursorLeave) visible.value = false\n}\n\nconst mouseMoveScrollbarHandler = () => {\n  cursorLeave = false\n  visible.value = !!props.size\n}\n\nconst mouseLeaveScrollbarHandler = () => {\n  cursorLeave = true\n  visible.value = cursorDown\n}\n\nonBeforeUnmount(() => {\n  restoreOnselectstart()\n  document.removeEventListener('mouseup', mouseUpDocumentHandler)\n})\n\nconst restoreOnselectstart = () => {\n  if (document.onselectstart !== originalOnSelectStart)\n    document.onselectstart = originalOnSelectStart\n}\n\nuseEventListener(\n  toRef(scrollbar, 'scrollbarElement'),\n  'mousemove',\n  mouseMoveScrollbarHandler\n)\nuseEventListener(\n  toRef(scrollbar, 'scrollbarElement'),\n  'mouseleave',\n  mouseLeaveScrollbarHandler\n)\n</script>\n","<template>\n  <transition :name=\"ns.b('fade')\">\n    <div\n      v-show=\"always || visible\"\n      ref=\"instance\"\n      :class=\"[ns.e('bar'), ns.is(bar.key)]\"\n      @mousedown=\"clickTrackHandler\"\n      @click.stop\n    >\n      <div\n        ref=\"thumb\"\n        :class=\"ns.e('thumb')\"\n        :style=\"thumbStyle\"\n        @mousedown=\"clickThumbHandler\"\n      />\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, ref, toRef } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { isClient, throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { scrollbarContextKey } from './constants'\nimport { BAR_MAP, renderThumbStyle } from './util'\n\nimport type { ThumbProps } from './thumb'\n\nconst COMPONENT_NAME = 'Thumb'\nconst props = defineProps<ThumbProps>()\n\nconst scrollbar = inject(scrollbarContextKey)\nconst ns = useNamespace('scrollbar')\n\nif (!scrollbar) throwError(COMPONENT_NAME, 'can not inject scrollbar context')\n\nconst instance = ref<HTMLDivElement>()\nconst thumb = ref<HTMLDivElement>()\n\nconst thumbState = ref<Partial<Record<'X' | 'Y', number>>>({})\nconst visible = ref(false)\n\nlet cursorDown = false\nlet cursorLeave = false\nlet baseScrollHeight = 0\nlet baseScrollWidth = 0\nlet originalOnSelectStart:\n  | ((this: GlobalEventHandlers, ev: Event) => any)\n  | null = isClient ? document.onselectstart : null\n\nconst bar = computed(() => BAR_MAP[props.vertical ? 'vertical' : 'horizontal'])\n\nconst thumbStyle = computed(() =>\n  renderThumbStyle({\n    size: props.size,\n    move: props.move,\n    bar: bar.value,\n  })\n)\n\nconst offsetRatio = computed(\n  () =>\n    // offsetRatioX = original width of thumb / current width of thumb / ratioX\n    // offsetRatioY = original height of thumb / current height of thumb / ratioY\n    // instance height = wrap height - GAP\n    instance.value![bar.value.offset] ** 2 /\n    scrollbar.wrapElement![bar.value.scrollSize] /\n    props.ratio /\n    thumb.value![bar.value.offset]\n)\n\nconst clickThumbHandler = (e: MouseEvent) => {\n  // prevent click event of middle and right button\n  e.stopPropagation()\n  if (e.ctrlKey || [1, 2].includes(e.button)) return\n\n  window.getSelection()?.removeAllRanges()\n  startDrag(e)\n\n  const el = e.currentTarget as HTMLDivElement\n  if (!el) return\n  thumbState.value[bar.value.axis] =\n    el[bar.value.offset] -\n    (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction])\n}\n\nconst clickTrackHandler = (e: MouseEvent) => {\n  if (!thumb.value || !instance.value || !scrollbar.wrapElement) return\n\n  const offset = Math.abs(\n    (e.target as HTMLElement).getBoundingClientRect()[bar.value.direction] -\n      e[bar.value.client]\n  )\n  const thumbHalf = thumb.value[bar.value.offset] / 2\n  const thumbPositionPercentage =\n    ((offset - thumbHalf) * 100 * offsetRatio.value) /\n    instance.value[bar.value.offset]\n\n  scrollbar.wrapElement[bar.value.scroll] =\n    (thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize]) /\n    100\n}\n\nconst startDrag = (e: MouseEvent) => {\n  e.stopImmediatePropagation()\n  cursorDown = true\n  baseScrollHeight = scrollbar.wrapElement!.scrollHeight\n  baseScrollWidth = scrollbar.wrapElement!.scrollWidth\n  document.addEventListener('mousemove', mouseMoveDocumentHandler)\n  document.addEventListener('mouseup', mouseUpDocumentHandler)\n  originalOnSelectStart = document.onselectstart\n  document.onselectstart = () => false\n}\n\nconst mouseMoveDocumentHandler = (e: MouseEvent) => {\n  if (!instance.value || !thumb.value) return\n  if (cursorDown === false) return\n\n  const prevPage = thumbState.value[bar.value.axis]\n  if (!prevPage) return\n\n  const offset =\n    (instance.value.getBoundingClientRect()[bar.value.direction] -\n      e[bar.value.client]) *\n    -1\n  const thumbClickPosition = thumb.value[bar.value.offset] - prevPage\n  const thumbPositionPercentage =\n    ((offset - thumbClickPosition) * 100 * offsetRatio.value) /\n    instance.value[bar.value.offset]\n\n  if (bar.value.scroll === 'scrollLeft') {\n    scrollbar.wrapElement![bar.value.scroll] =\n      (thumbPositionPercentage * baseScrollWidth) / 100\n  } else {\n    scrollbar.wrapElement![bar.value.scroll] =\n      (thumbPositionPercentage * baseScrollHeight) / 100\n  }\n}\n\nconst mouseUpDocumentHandler = () => {\n  cursorDown = false\n  thumbState.value[bar.value.axis] = 0\n  document.removeEventListener('mousemove', mouseMoveDocumentHandler)\n  document.removeEventListener('mouseup', mouseUpDocumentHandler)\n  restoreOnselectstart()\n  if (cursorLeave) visible.value = false\n}\n\nconst mouseMoveScrollbarHandler = () => {\n  cursorLeave = false\n  visible.value = !!props.size\n}\n\nconst mouseLeaveScrollbarHandler = () => {\n  cursorLeave = true\n  visible.value = cursorDown\n}\n\nonBeforeUnmount(() => {\n  restoreOnselectstart()\n  document.removeEventListener('mouseup', mouseUpDocumentHandler)\n})\n\nconst restoreOnselectstart = () => {\n  if (document.onselectstart !== originalOnSelectStart)\n    document.onselectstart = originalOnSelectStart\n}\n\nuseEventListener(\n  toRef(scrollbar, 'scrollbarElement'),\n  'mousemove',\n  mouseMoveScrollbarHandler\n)\nuseEventListener(\n  toRef(scrollbar, 'scrollbarElement'),\n  'mouseleave',\n  mouseLeaveScrollbarHandler\n)\n</script>\n","<template>\n  <transition :name=\"ns.b('fade')\">\n    <div\n      v-show=\"always || visible\"\n      ref=\"instance\"\n      :class=\"[ns.e('bar'), ns.is(bar.key)]\"\n      @mousedown=\"clickTrackHandler\"\n      @click.stop\n    >\n      <div\n        ref=\"thumb\"\n        :class=\"ns.e('thumb')\"\n        :style=\"thumbStyle\"\n        @mousedown=\"clickThumbHandler\"\n      />\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, ref, toRef } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { isClient, throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { scrollbarContextKey } from './constants'\nimport { BAR_MAP, renderThumbStyle } from './util'\n\nimport type { ThumbProps } from './thumb'\n\nconst COMPONENT_NAME = 'Thumb'\nconst props = defineProps<ThumbProps>()\n\nconst scrollbar = inject(scrollbarContextKey)\nconst ns = useNamespace('scrollbar')\n\nif (!scrollbar) throwError(COMPONENT_NAME, 'can not inject scrollbar context')\n\nconst instance = ref<HTMLDivElement>()\nconst thumb = ref<HTMLDivElement>()\n\nconst thumbState = ref<Partial<Record<'X' | 'Y', number>>>({})\nconst visible = ref(false)\n\nlet cursorDown = false\nlet cursorLeave = false\nlet baseScrollHeight = 0\nlet baseScrollWidth = 0\nlet originalOnSelectStart:\n  | ((this: GlobalEventHandlers, ev: Event) => any)\n  | null = isClient ? document.onselectstart : null\n\nconst bar = computed(() => BAR_MAP[props.vertical ? 'vertical' : 'horizontal'])\n\nconst thumbStyle = computed(() =>\n  renderThumbStyle({\n    size: props.size,\n    move: props.move,\n    bar: bar.value,\n  })\n)\n\nconst offsetRatio = computed(\n  () =>\n    // offsetRatioX = original width of thumb / current width of thumb / ratioX\n    // offsetRatioY = original height of thumb / current height of thumb / ratioY\n    // instance height = wrap height - GAP\n    instance.value![bar.value.offset] ** 2 /\n    scrollbar.wrapElement![bar.value.scrollSize] /\n    props.ratio /\n    thumb.value![bar.value.offset]\n)\n\nconst clickThumbHandler = (e: MouseEvent) => {\n  // prevent click event of middle and right button\n  e.stopPropagation()\n  if (e.ctrlKey || [1, 2].includes(e.button)) return\n\n  window.getSelection()?.removeAllRanges()\n  startDrag(e)\n\n  const el = e.currentTarget as HTMLDivElement\n  if (!el) return\n  thumbState.value[bar.value.axis] =\n    el[bar.value.offset] -\n    (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction])\n}\n\nconst clickTrackHandler = (e: MouseEvent) => {\n  if (!thumb.value || !instance.value || !scrollbar.wrapElement) return\n\n  const offset = Math.abs(\n    (e.target as HTMLElement).getBoundingClientRect()[bar.value.direction] -\n      e[bar.value.client]\n  )\n  const thumbHalf = thumb.value[bar.value.offset] / 2\n  const thumbPositionPercentage =\n    ((offset - thumbHalf) * 100 * offsetRatio.value) /\n    instance.value[bar.value.offset]\n\n  scrollbar.wrapElement[bar.value.scroll] =\n    (thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize]) /\n    100\n}\n\nconst startDrag = (e: MouseEvent) => {\n  e.stopImmediatePropagation()\n  cursorDown = true\n  baseScrollHeight = scrollbar.wrapElement!.scrollHeight\n  baseScrollWidth = scrollbar.wrapElement!.scrollWidth\n  document.addEventListener('mousemove', mouseMoveDocumentHandler)\n  document.addEventListener('mouseup', mouseUpDocumentHandler)\n  originalOnSelectStart = document.onselectstart\n  document.onselectstart = () => false\n}\n\nconst mouseMoveDocumentHandler = (e: MouseEvent) => {\n  if (!instance.value || !thumb.value) return\n  if (cursorDown === false) return\n\n  const prevPage = thumbState.value[bar.value.axis]\n  if (!prevPage) return\n\n  const offset =\n    (instance.value.getBoundingClientRect()[bar.value.direction] -\n      e[bar.value.client]) *\n    -1\n  const thumbClickPosition = thumb.value[bar.value.offset] - prevPage\n  const thumbPositionPercentage =\n    ((offset - thumbClickPosition) * 100 * offsetRatio.value) /\n    instance.value[bar.value.offset]\n\n  if (bar.value.scroll === 'scrollLeft') {\n    scrollbar.wrapElement![bar.value.scroll] =\n      (thumbPositionPercentage * baseScrollWidth) / 100\n  } else {\n    scrollbar.wrapElement![bar.value.scroll] =\n      (thumbPositionPercentage * baseScrollHeight) / 100\n  }\n}\n\nconst mouseUpDocumentHandler = () => {\n  cursorDown = false\n  thumbState.value[bar.value.axis] = 0\n  document.removeEventListener('mousemove', mouseMoveDocumentHandler)\n  document.removeEventListener('mouseup', mouseUpDocumentHandler)\n  restoreOnselectstart()\n  if (cursorLeave) visible.value = false\n}\n\nconst mouseMoveScrollbarHandler = () => {\n  cursorLeave = false\n  visible.value = !!props.size\n}\n\nconst mouseLeaveScrollbarHandler = () => {\n  cursorLeave = true\n  visible.value = cursorDown\n}\n\nonBeforeUnmount(() => {\n  restoreOnselectstart()\n  document.removeEventListener('mouseup', mouseUpDocumentHandler)\n})\n\nconst restoreOnselectstart = () => {\n  if (document.onselectstart !== originalOnSelectStart)\n    document.onselectstart = originalOnSelectStart\n}\n\nuseEventListener(\n  toRef(scrollbar, 'scrollbarElement'),\n  'mousemove',\n  mouseMoveScrollbarHandler\n)\nuseEventListener(\n  toRef(scrollbar, 'scrollbarElement'),\n  'mouseleave',\n  mouseLeaveScrollbarHandler\n)\n</script>\n","<template>\n  <thumb :move=\"moveX\" :ratio=\"ratioX\" :size=\"sizeWidth\" :always=\"always\" />\n  <thumb\n    :move=\"moveY\"\n    :ratio=\"ratioY\"\n    :size=\"sizeHeight\"\n    vertical\n    :always=\"always\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref } from 'vue'\nimport { GAP } from './util'\nimport Thumb from './thumb.vue'\nimport { scrollbarContextKey } from './constants'\n\nimport type { BarProps } from './bar'\n\nconst props = withDefaults(defineProps<BarProps>(), {\n  always: true,\n})\n\nconst scrollbar = inject(scrollbarContextKey)\n\nconst moveX = ref(0)\nconst moveY = ref(0)\nconst sizeWidth = ref('')\nconst sizeHeight = ref('')\nconst ratioY = ref(1)\nconst ratioX = ref(1)\n\nconst handleScroll = (wrap: HTMLDivElement) => {\n  if (wrap) {\n    const offsetHeight = wrap.offsetHeight - GAP\n    const offsetWidth = wrap.offsetWidth - GAP\n\n    moveY.value = ((wrap.scrollTop * 100) / offsetHeight) * ratioY.value\n    moveX.value = ((wrap.scrollLeft * 100) / offsetWidth) * ratioX.value\n  }\n}\n\nconst update = () => {\n  const wrap = scrollbar?.wrapElement\n  if (!wrap) return\n  const offsetHeight = wrap.offsetHeight - GAP\n  const offsetWidth = wrap.offsetWidth - GAP\n\n  const originalHeight = offsetHeight ** 2 / wrap.scrollHeight\n  const originalWidth = offsetWidth ** 2 / wrap.scrollWidth\n  const height = Math.max(originalHeight, props.minSize)\n  const width = Math.max(originalWidth, props.minSize)\n\n  ratioY.value =\n    originalHeight /\n    (offsetHeight - originalHeight) /\n    (height / (offsetHeight - height))\n  ratioX.value =\n    originalWidth /\n    (offsetWidth - originalWidth) /\n    (width / (offsetWidth - width))\n\n  sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : ''\n  sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : ''\n}\n\ndefineExpose({\n  handleScroll,\n  update,\n})\n</script>\n","<template>\n  <thumb :move=\"moveX\" :ratio=\"ratioX\" :size=\"sizeWidth\" :always=\"always\" />\n  <thumb\n    :move=\"moveY\"\n    :ratio=\"ratioY\"\n    :size=\"sizeHeight\"\n    vertical\n    :always=\"always\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref } from 'vue'\nimport { GAP } from './util'\nimport Thumb from './thumb.vue'\nimport { scrollbarContextKey } from './constants'\n\nimport type { BarProps } from './bar'\n\nconst props = withDefaults(defineProps<BarProps>(), {\n  always: true,\n})\n\nconst scrollbar = inject(scrollbarContextKey)\n\nconst moveX = ref(0)\nconst moveY = ref(0)\nconst sizeWidth = ref('')\nconst sizeHeight = ref('')\nconst ratioY = ref(1)\nconst ratioX = ref(1)\n\nconst handleScroll = (wrap: HTMLDivElement) => {\n  if (wrap) {\n    const offsetHeight = wrap.offsetHeight - GAP\n    const offsetWidth = wrap.offsetWidth - GAP\n\n    moveY.value = ((wrap.scrollTop * 100) / offsetHeight) * ratioY.value\n    moveX.value = ((wrap.scrollLeft * 100) / offsetWidth) * ratioX.value\n  }\n}\n\nconst update = () => {\n  const wrap = scrollbar?.wrapElement\n  if (!wrap) return\n  const offsetHeight = wrap.offsetHeight - GAP\n  const offsetWidth = wrap.offsetWidth - GAP\n\n  const originalHeight = offsetHeight ** 2 / wrap.scrollHeight\n  const originalWidth = offsetWidth ** 2 / wrap.scrollWidth\n  const height = Math.max(originalHeight, props.minSize)\n  const width = Math.max(originalWidth, props.minSize)\n\n  ratioY.value =\n    originalHeight /\n    (offsetHeight - originalHeight) /\n    (height / (offsetHeight - height))\n  ratioX.value =\n    originalWidth /\n    (offsetWidth - originalWidth) /\n    (width / (offsetWidth - width))\n\n  sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : ''\n  sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : ''\n}\n\ndefineExpose({\n  handleScroll,\n  update,\n})\n</script>\n","<template>\n  <thumb :move=\"moveX\" :ratio=\"ratioX\" :size=\"sizeWidth\" :always=\"always\" />\n  <thumb\n    :move=\"moveY\"\n    :ratio=\"ratioY\"\n    :size=\"sizeHeight\"\n    vertical\n    :always=\"always\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref } from 'vue'\nimport { GAP } from './util'\nimport Thumb from './thumb.vue'\nimport { scrollbarContextKey } from './constants'\n\nimport type { BarProps } from './bar'\n\nconst props = withDefaults(defineProps<BarProps>(), {\n  always: true,\n})\n\nconst scrollbar = inject(scrollbarContextKey)\n\nconst moveX = ref(0)\nconst moveY = ref(0)\nconst sizeWidth = ref('')\nconst sizeHeight = ref('')\nconst ratioY = ref(1)\nconst ratioX = ref(1)\n\nconst handleScroll = (wrap: HTMLDivElement) => {\n  if (wrap) {\n    const offsetHeight = wrap.offsetHeight - GAP\n    const offsetWidth = wrap.offsetWidth - GAP\n\n    moveY.value = ((wrap.scrollTop * 100) / offsetHeight) * ratioY.value\n    moveX.value = ((wrap.scrollLeft * 100) / offsetWidth) * ratioX.value\n  }\n}\n\nconst update = () => {\n  const wrap = scrollbar?.wrapElement\n  if (!wrap) return\n  const offsetHeight = wrap.offsetHeight - GAP\n  const offsetWidth = wrap.offsetWidth - GAP\n\n  const originalHeight = offsetHeight ** 2 / wrap.scrollHeight\n  const originalWidth = offsetWidth ** 2 / wrap.scrollWidth\n  const height = Math.max(originalHeight, props.minSize)\n  const width = Math.max(originalWidth, props.minSize)\n\n  ratioY.value =\n    originalHeight /\n    (offsetHeight - originalHeight) /\n    (height / (offsetHeight - height))\n  ratioX.value =\n    originalWidth /\n    (offsetWidth - originalWidth) /\n    (width / (offsetWidth - width))\n\n  sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : ''\n  sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : ''\n}\n\ndefineExpose({\n  handleScroll,\n  update,\n})\n</script>\n","<template>\n  <div ref=\"scrollbarRef\" :class=\"ns.b()\">\n    <div\n      ref=\"wrapRef\"\n      :class=\"wrapKls\"\n      :style=\"wrapStyle\"\n      :tabindex=\"tabindex\"\n      @scroll=\"handleScroll\"\n    >\n      <component\n        :is=\"tag\"\n        :id=\"id\"\n        ref=\"resizeRef\"\n        :class=\"resizeKls\"\n        :style=\"viewStyle\"\n        :role=\"role\"\n        :aria-label=\"ariaLabel\"\n        :aria-orientation=\"ariaOrientation\"\n      >\n        <slot />\n      </component>\n    </div>\n    <template v-if=\"!native\">\n      <bar ref=\"barRef\" :always=\"always\" :min-size=\"minSize\" />\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onActivated,\n  onMounted,\n  onUpdated,\n  provide,\n  reactive,\n  ref,\n  watch,\n} from 'vue'\nimport { useEventListener, useResizeObserver } from '@vueuse/core'\nimport { addUnit, debugWarn, isNumber, isObject } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport Bar from './bar.vue'\nimport { scrollbarContextKey } from './constants'\nimport { scrollbarEmits } from './scrollbar'\n\nimport type { ScrollbarDirection, ScrollbarProps } from './scrollbar'\nimport type { BarInstance } from './bar'\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst COMPONENT_NAME = 'ElScrollbar'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<ScrollbarProps>(), {\n  distance: 0,\n  height: '',\n  maxHeight: '',\n  wrapStyle: '',\n  wrapClass: '',\n  viewStyle: '',\n  viewClass: '',\n  tag: 'div',\n  minSize: 20,\n  tabindex: undefined,\n})\nconst emit = defineEmits(scrollbarEmits)\n\nconst ns = useNamespace('scrollbar')\n\nlet stopResizeObserver: (() => void) | undefined = undefined\nlet stopWrapResizeObserver: (() => void) | undefined = undefined\nlet stopResizeListener: (() => void) | undefined = undefined\nlet wrapScrollTop = 0\nlet wrapScrollLeft = 0\nlet direction = '' as ScrollbarDirection\nconst distanceScrollState = {\n  bottom: false,\n  top: false,\n  right: false,\n  left: false,\n}\n\nconst scrollbarRef = ref<HTMLDivElement>()\nconst wrapRef = ref<HTMLDivElement>()\nconst resizeRef = ref<HTMLElement>()\nconst barRef = ref<BarInstance>()\n\nconst wrapStyle = computed<StyleValue>(() => {\n  const style: CSSProperties = {}\n  const height = addUnit(props.height)\n  const maxHeight = addUnit(props.maxHeight)\n  if (height) style.height = height\n  if (maxHeight) style.maxHeight = maxHeight\n  return [props.wrapStyle, style]\n})\n\nconst wrapKls = computed(() => {\n  return [\n    props.wrapClass,\n    ns.e('wrap'),\n    { [ns.em('wrap', 'hidden-default')]: !props.native },\n  ]\n})\n\nconst resizeKls = computed(() => {\n  return [ns.e('view'), props.viewClass]\n})\n\nconst shouldSkipDirection = (direction: ScrollbarDirection) => {\n  return distanceScrollState[direction] ?? false\n}\n\nconst DIRECTION_PAIRS: Record<ScrollbarDirection, ScrollbarDirection> = {\n  top: 'bottom',\n  bottom: 'top',\n  left: 'right',\n  right: 'left',\n}\nconst updateTriggerStatus = (arrivedStates: Record<string, boolean>) => {\n  const oppositeDirection = DIRECTION_PAIRS[direction]\n  if (!oppositeDirection) return\n\n  const arrived = arrivedStates[direction]\n  const oppositeArrived = arrivedStates[oppositeDirection]\n\n  if (arrived && !distanceScrollState[direction]) {\n    distanceScrollState[direction] = true\n  }\n\n  if (!oppositeArrived && distanceScrollState[oppositeDirection]) {\n    distanceScrollState[oppositeDirection] = false\n  }\n}\n\nconst handleScroll = () => {\n  if (wrapRef.value) {\n    barRef.value?.handleScroll(wrapRef.value)\n    const prevTop = wrapScrollTop\n    const prevLeft = wrapScrollLeft\n    wrapScrollTop = wrapRef.value.scrollTop\n    wrapScrollLeft = wrapRef.value.scrollLeft\n\n    const arrivedStates = {\n      bottom:\n        wrapScrollTop + wrapRef.value.clientHeight >=\n        wrapRef.value.scrollHeight - props.distance,\n      top: wrapScrollTop <= props.distance && prevTop !== 0,\n      right:\n        wrapScrollLeft + wrapRef.value.clientWidth >=\n          wrapRef.value.scrollWidth - props.distance &&\n        prevLeft !== wrapScrollLeft,\n      left: wrapScrollLeft <= props.distance && prevLeft !== 0,\n    }\n\n    emit('scroll', {\n      scrollTop: wrapScrollTop,\n      scrollLeft: wrapScrollLeft,\n    })\n\n    if (prevTop !== wrapScrollTop) {\n      direction = wrapScrollTop > prevTop ? 'bottom' : 'top'\n    }\n    if (prevLeft !== wrapScrollLeft) {\n      direction = wrapScrollLeft > prevLeft ? 'right' : 'left'\n    }\n    if (props.distance > 0) {\n      if (shouldSkipDirection(direction)) {\n        return\n      }\n      updateTriggerStatus(arrivedStates)\n    }\n    if (arrivedStates[direction]) emit('end-reached', direction)\n  }\n}\n\nfunction scrollTo(xCord: number, yCord?: number): void\nfunction scrollTo(options: ScrollToOptions): void\nfunction scrollTo(arg1: unknown, arg2?: number) {\n  if (isObject(arg1)) {\n    wrapRef.value!.scrollTo(arg1)\n  } else if (isNumber(arg1) && isNumber(arg2)) {\n    wrapRef.value!.scrollTo(arg1, arg2)\n  }\n}\n\nconst setScrollTop = (value: number) => {\n  if (!isNumber(value)) {\n    debugWarn(COMPONENT_NAME, 'value must be a number')\n    return\n  }\n  wrapRef.value!.scrollTop = value\n}\n\nconst setScrollLeft = (value: number) => {\n  if (!isNumber(value)) {\n    debugWarn(COMPONENT_NAME, 'value must be a number')\n    return\n  }\n  wrapRef.value!.scrollLeft = value\n}\n\nconst update = () => {\n  barRef.value?.update()\n  distanceScrollState[direction] = false\n}\n\nwatch(\n  () => props.noresize,\n  (noresize) => {\n    if (noresize) {\n      stopResizeObserver?.()\n      stopWrapResizeObserver?.()\n      stopResizeListener?.()\n    } else {\n      ;({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update))\n      ;({ stop: stopWrapResizeObserver } = useResizeObserver(wrapRef, update))\n      stopResizeListener = useEventListener('resize', update)\n    }\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => [props.maxHeight, props.height],\n  () => {\n    if (!props.native)\n      nextTick(() => {\n        update()\n        if (wrapRef.value) {\n          barRef.value?.handleScroll(wrapRef.value)\n        }\n      })\n  }\n)\n\nprovide(\n  scrollbarContextKey,\n  reactive({\n    scrollbarElement: scrollbarRef,\n    wrapElement: wrapRef,\n  })\n)\n\nonActivated(() => {\n  if (wrapRef.value) {\n    wrapRef.value.scrollTop = wrapScrollTop\n    wrapRef.value.scrollLeft = wrapScrollLeft\n  }\n})\n\nonMounted(() => {\n  if (!props.native)\n    nextTick(() => {\n      update()\n    })\n})\nonUpdated(() => update())\n\ndefineExpose({\n  /** @description scrollbar wrap ref */\n  wrapRef,\n  /** @description update scrollbar state manually */\n  update,\n  /** @description scrolls to a particular set of coordinates */\n  scrollTo,\n  /** @description set distance to scroll top */\n  setScrollTop,\n  /** @description set distance to scroll left */\n  setScrollLeft,\n  /** @description handle scroll event */\n  handleScroll,\n})\n</script>\n","<template>\n  <div ref=\"scrollbarRef\" :class=\"ns.b()\">\n    <div\n      ref=\"wrapRef\"\n      :class=\"wrapKls\"\n      :style=\"wrapStyle\"\n      :tabindex=\"tabindex\"\n      @scroll=\"handleScroll\"\n    >\n      <component\n        :is=\"tag\"\n        :id=\"id\"\n        ref=\"resizeRef\"\n        :class=\"resizeKls\"\n        :style=\"viewStyle\"\n        :role=\"role\"\n        :aria-label=\"ariaLabel\"\n        :aria-orientation=\"ariaOrientation\"\n      >\n        <slot />\n      </component>\n    </div>\n    <template v-if=\"!native\">\n      <bar ref=\"barRef\" :always=\"always\" :min-size=\"minSize\" />\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onActivated,\n  onMounted,\n  onUpdated,\n  provide,\n  reactive,\n  ref,\n  watch,\n} from 'vue'\nimport { useEventListener, useResizeObserver } from '@vueuse/core'\nimport { addUnit, debugWarn, isNumber, isObject } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport Bar from './bar.vue'\nimport { scrollbarContextKey } from './constants'\nimport { scrollbarEmits } from './scrollbar'\n\nimport type { ScrollbarDirection, ScrollbarProps } from './scrollbar'\nimport type { BarInstance } from './bar'\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst COMPONENT_NAME = 'ElScrollbar'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<ScrollbarProps>(), {\n  distance: 0,\n  height: '',\n  maxHeight: '',\n  wrapStyle: '',\n  wrapClass: '',\n  viewStyle: '',\n  viewClass: '',\n  tag: 'div',\n  minSize: 20,\n  tabindex: undefined,\n})\nconst emit = defineEmits(scrollbarEmits)\n\nconst ns = useNamespace('scrollbar')\n\nlet stopResizeObserver: (() => void) | undefined = undefined\nlet stopWrapResizeObserver: (() => void) | undefined = undefined\nlet stopResizeListener: (() => void) | undefined = undefined\nlet wrapScrollTop = 0\nlet wrapScrollLeft = 0\nlet direction = '' as ScrollbarDirection\nconst distanceScrollState = {\n  bottom: false,\n  top: false,\n  right: false,\n  left: false,\n}\n\nconst scrollbarRef = ref<HTMLDivElement>()\nconst wrapRef = ref<HTMLDivElement>()\nconst resizeRef = ref<HTMLElement>()\nconst barRef = ref<BarInstance>()\n\nconst wrapStyle = computed<StyleValue>(() => {\n  const style: CSSProperties = {}\n  const height = addUnit(props.height)\n  const maxHeight = addUnit(props.maxHeight)\n  if (height) style.height = height\n  if (maxHeight) style.maxHeight = maxHeight\n  return [props.wrapStyle, style]\n})\n\nconst wrapKls = computed(() => {\n  return [\n    props.wrapClass,\n    ns.e('wrap'),\n    { [ns.em('wrap', 'hidden-default')]: !props.native },\n  ]\n})\n\nconst resizeKls = computed(() => {\n  return [ns.e('view'), props.viewClass]\n})\n\nconst shouldSkipDirection = (direction: ScrollbarDirection) => {\n  return distanceScrollState[direction] ?? false\n}\n\nconst DIRECTION_PAIRS: Record<ScrollbarDirection, ScrollbarDirection> = {\n  top: 'bottom',\n  bottom: 'top',\n  left: 'right',\n  right: 'left',\n}\nconst updateTriggerStatus = (arrivedStates: Record<string, boolean>) => {\n  const oppositeDirection = DIRECTION_PAIRS[direction]\n  if (!oppositeDirection) return\n\n  const arrived = arrivedStates[direction]\n  const oppositeArrived = arrivedStates[oppositeDirection]\n\n  if (arrived && !distanceScrollState[direction]) {\n    distanceScrollState[direction] = true\n  }\n\n  if (!oppositeArrived && distanceScrollState[oppositeDirection]) {\n    distanceScrollState[oppositeDirection] = false\n  }\n}\n\nconst handleScroll = () => {\n  if (wrapRef.value) {\n    barRef.value?.handleScroll(wrapRef.value)\n    const prevTop = wrapScrollTop\n    const prevLeft = wrapScrollLeft\n    wrapScrollTop = wrapRef.value.scrollTop\n    wrapScrollLeft = wrapRef.value.scrollLeft\n\n    const arrivedStates = {\n      bottom:\n        wrapScrollTop + wrapRef.value.clientHeight >=\n        wrapRef.value.scrollHeight - props.distance,\n      top: wrapScrollTop <= props.distance && prevTop !== 0,\n      right:\n        wrapScrollLeft + wrapRef.value.clientWidth >=\n          wrapRef.value.scrollWidth - props.distance &&\n        prevLeft !== wrapScrollLeft,\n      left: wrapScrollLeft <= props.distance && prevLeft !== 0,\n    }\n\n    emit('scroll', {\n      scrollTop: wrapScrollTop,\n      scrollLeft: wrapScrollLeft,\n    })\n\n    if (prevTop !== wrapScrollTop) {\n      direction = wrapScrollTop > prevTop ? 'bottom' : 'top'\n    }\n    if (prevLeft !== wrapScrollLeft) {\n      direction = wrapScrollLeft > prevLeft ? 'right' : 'left'\n    }\n    if (props.distance > 0) {\n      if (shouldSkipDirection(direction)) {\n        return\n      }\n      updateTriggerStatus(arrivedStates)\n    }\n    if (arrivedStates[direction]) emit('end-reached', direction)\n  }\n}\n\nfunction scrollTo(xCord: number, yCord?: number): void\nfunction scrollTo(options: ScrollToOptions): void\nfunction scrollTo(arg1: unknown, arg2?: number) {\n  if (isObject(arg1)) {\n    wrapRef.value!.scrollTo(arg1)\n  } else if (isNumber(arg1) && isNumber(arg2)) {\n    wrapRef.value!.scrollTo(arg1, arg2)\n  }\n}\n\nconst setScrollTop = (value: number) => {\n  if (!isNumber(value)) {\n    debugWarn(COMPONENT_NAME, 'value must be a number')\n    return\n  }\n  wrapRef.value!.scrollTop = value\n}\n\nconst setScrollLeft = (value: number) => {\n  if (!isNumber(value)) {\n    debugWarn(COMPONENT_NAME, 'value must be a number')\n    return\n  }\n  wrapRef.value!.scrollLeft = value\n}\n\nconst update = () => {\n  barRef.value?.update()\n  distanceScrollState[direction] = false\n}\n\nwatch(\n  () => props.noresize,\n  (noresize) => {\n    if (noresize) {\n      stopResizeObserver?.()\n      stopWrapResizeObserver?.()\n      stopResizeListener?.()\n    } else {\n      ;({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update))\n      ;({ stop: stopWrapResizeObserver } = useResizeObserver(wrapRef, update))\n      stopResizeListener = useEventListener('resize', update)\n    }\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => [props.maxHeight, props.height],\n  () => {\n    if (!props.native)\n      nextTick(() => {\n        update()\n        if (wrapRef.value) {\n          barRef.value?.handleScroll(wrapRef.value)\n        }\n      })\n  }\n)\n\nprovide(\n  scrollbarContextKey,\n  reactive({\n    scrollbarElement: scrollbarRef,\n    wrapElement: wrapRef,\n  })\n)\n\nonActivated(() => {\n  if (wrapRef.value) {\n    wrapRef.value.scrollTop = wrapScrollTop\n    wrapRef.value.scrollLeft = wrapScrollLeft\n  }\n})\n\nonMounted(() => {\n  if (!props.native)\n    nextTick(() => {\n      update()\n    })\n})\nonUpdated(() => update())\n\ndefineExpose({\n  /** @description scrollbar wrap ref */\n  wrapRef,\n  /** @description update scrollbar state manually */\n  update,\n  /** @description scrolls to a particular set of coordinates */\n  scrollTo,\n  /** @description set distance to scroll top */\n  setScrollTop,\n  /** @description set distance to scroll left */\n  setScrollLeft,\n  /** @description handle scroll event */\n  handleScroll,\n})\n</script>\n","<template>\n  <div ref=\"scrollbarRef\" :class=\"ns.b()\">\n    <div\n      ref=\"wrapRef\"\n      :class=\"wrapKls\"\n      :style=\"wrapStyle\"\n      :tabindex=\"tabindex\"\n      @scroll=\"handleScroll\"\n    >\n      <component\n        :is=\"tag\"\n        :id=\"id\"\n        ref=\"resizeRef\"\n        :class=\"resizeKls\"\n        :style=\"viewStyle\"\n        :role=\"role\"\n        :aria-label=\"ariaLabel\"\n        :aria-orientation=\"ariaOrientation\"\n      >\n        <slot />\n      </component>\n    </div>\n    <template v-if=\"!native\">\n      <bar ref=\"barRef\" :always=\"always\" :min-size=\"minSize\" />\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onActivated,\n  onMounted,\n  onUpdated,\n  provide,\n  reactive,\n  ref,\n  watch,\n} from 'vue'\nimport { useEventListener, useResizeObserver } from '@vueuse/core'\nimport { addUnit, debugWarn, isNumber, isObject } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport Bar from './bar.vue'\nimport { scrollbarContextKey } from './constants'\nimport { scrollbarEmits } from './scrollbar'\n\nimport type { ScrollbarDirection, ScrollbarProps } from './scrollbar'\nimport type { BarInstance } from './bar'\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst COMPONENT_NAME = 'ElScrollbar'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<ScrollbarProps>(), {\n  distance: 0,\n  height: '',\n  maxHeight: '',\n  wrapStyle: '',\n  wrapClass: '',\n  viewStyle: '',\n  viewClass: '',\n  tag: 'div',\n  minSize: 20,\n  tabindex: undefined,\n})\nconst emit = defineEmits(scrollbarEmits)\n\nconst ns = useNamespace('scrollbar')\n\nlet stopResizeObserver: (() => void) | undefined = undefined\nlet stopWrapResizeObserver: (() => void) | undefined = undefined\nlet stopResizeListener: (() => void) | undefined = undefined\nlet wrapScrollTop = 0\nlet wrapScrollLeft = 0\nlet direction = '' as ScrollbarDirection\nconst distanceScrollState = {\n  bottom: false,\n  top: false,\n  right: false,\n  left: false,\n}\n\nconst scrollbarRef = ref<HTMLDivElement>()\nconst wrapRef = ref<HTMLDivElement>()\nconst resizeRef = ref<HTMLElement>()\nconst barRef = ref<BarInstance>()\n\nconst wrapStyle = computed<StyleValue>(() => {\n  const style: CSSProperties = {}\n  const height = addUnit(props.height)\n  const maxHeight = addUnit(props.maxHeight)\n  if (height) style.height = height\n  if (maxHeight) style.maxHeight = maxHeight\n  return [props.wrapStyle, style]\n})\n\nconst wrapKls = computed(() => {\n  return [\n    props.wrapClass,\n    ns.e('wrap'),\n    { [ns.em('wrap', 'hidden-default')]: !props.native },\n  ]\n})\n\nconst resizeKls = computed(() => {\n  return [ns.e('view'), props.viewClass]\n})\n\nconst shouldSkipDirection = (direction: ScrollbarDirection) => {\n  return distanceScrollState[direction] ?? false\n}\n\nconst DIRECTION_PAIRS: Record<ScrollbarDirection, ScrollbarDirection> = {\n  top: 'bottom',\n  bottom: 'top',\n  left: 'right',\n  right: 'left',\n}\nconst updateTriggerStatus = (arrivedStates: Record<string, boolean>) => {\n  const oppositeDirection = DIRECTION_PAIRS[direction]\n  if (!oppositeDirection) return\n\n  const arrived = arrivedStates[direction]\n  const oppositeArrived = arrivedStates[oppositeDirection]\n\n  if (arrived && !distanceScrollState[direction]) {\n    distanceScrollState[direction] = true\n  }\n\n  if (!oppositeArrived && distanceScrollState[oppositeDirection]) {\n    distanceScrollState[oppositeDirection] = false\n  }\n}\n\nconst handleScroll = () => {\n  if (wrapRef.value) {\n    barRef.value?.handleScroll(wrapRef.value)\n    const prevTop = wrapScrollTop\n    const prevLeft = wrapScrollLeft\n    wrapScrollTop = wrapRef.value.scrollTop\n    wrapScrollLeft = wrapRef.value.scrollLeft\n\n    const arrivedStates = {\n      bottom:\n        wrapScrollTop + wrapRef.value.clientHeight >=\n        wrapRef.value.scrollHeight - props.distance,\n      top: wrapScrollTop <= props.distance && prevTop !== 0,\n      right:\n        wrapScrollLeft + wrapRef.value.clientWidth >=\n          wrapRef.value.scrollWidth - props.distance &&\n        prevLeft !== wrapScrollLeft,\n      left: wrapScrollLeft <= props.distance && prevLeft !== 0,\n    }\n\n    emit('scroll', {\n      scrollTop: wrapScrollTop,\n      scrollLeft: wrapScrollLeft,\n    })\n\n    if (prevTop !== wrapScrollTop) {\n      direction = wrapScrollTop > prevTop ? 'bottom' : 'top'\n    }\n    if (prevLeft !== wrapScrollLeft) {\n      direction = wrapScrollLeft > prevLeft ? 'right' : 'left'\n    }\n    if (props.distance > 0) {\n      if (shouldSkipDirection(direction)) {\n        return\n      }\n      updateTriggerStatus(arrivedStates)\n    }\n    if (arrivedStates[direction]) emit('end-reached', direction)\n  }\n}\n\nfunction scrollTo(xCord: number, yCord?: number): void\nfunction scrollTo(options: ScrollToOptions): void\nfunction scrollTo(arg1: unknown, arg2?: number) {\n  if (isObject(arg1)) {\n    wrapRef.value!.scrollTo(arg1)\n  } else if (isNumber(arg1) && isNumber(arg2)) {\n    wrapRef.value!.scrollTo(arg1, arg2)\n  }\n}\n\nconst setScrollTop = (value: number) => {\n  if (!isNumber(value)) {\n    debugWarn(COMPONENT_NAME, 'value must be a number')\n    return\n  }\n  wrapRef.value!.scrollTop = value\n}\n\nconst setScrollLeft = (value: number) => {\n  if (!isNumber(value)) {\n    debugWarn(COMPONENT_NAME, 'value must be a number')\n    return\n  }\n  wrapRef.value!.scrollLeft = value\n}\n\nconst update = () => {\n  barRef.value?.update()\n  distanceScrollState[direction] = false\n}\n\nwatch(\n  () => props.noresize,\n  (noresize) => {\n    if (noresize) {\n      stopResizeObserver?.()\n      stopWrapResizeObserver?.()\n      stopResizeListener?.()\n    } else {\n      ;({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update))\n      ;({ stop: stopWrapResizeObserver } = useResizeObserver(wrapRef, update))\n      stopResizeListener = useEventListener('resize', update)\n    }\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => [props.maxHeight, props.height],\n  () => {\n    if (!props.native)\n      nextTick(() => {\n        update()\n        if (wrapRef.value) {\n          barRef.value?.handleScroll(wrapRef.value)\n        }\n      })\n  }\n)\n\nprovide(\n  scrollbarContextKey,\n  reactive({\n    scrollbarElement: scrollbarRef,\n    wrapElement: wrapRef,\n  })\n)\n\nonActivated(() => {\n  if (wrapRef.value) {\n    wrapRef.value.scrollTop = wrapScrollTop\n    wrapRef.value.scrollLeft = wrapScrollLeft\n  }\n})\n\nonMounted(() => {\n  if (!props.native)\n    nextTick(() => {\n      update()\n    })\n})\nonUpdated(() => update())\n\ndefineExpose({\n  /** @description scrollbar wrap ref */\n  wrapRef,\n  /** @description update scrollbar state manually */\n  update,\n  /** @description scrolls to a particular set of coordinates */\n  scrollTo,\n  /** @description set distance to scroll top */\n  setScrollTop,\n  /** @description set distance to scroll left */\n  setScrollLeft,\n  /** @description handle scroll event */\n  handleScroll,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Scrollbar from './src/scrollbar.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElScrollbar: SFCWithInstall<typeof Scrollbar> =\n  withInstall(Scrollbar)\nexport default ElScrollbar\n\nexport * from './src/util'\nexport * from './src/scrollbar'\nexport * from './src/thumb'\nexport * from './src/constants'\n","<template>\n  <el-tooltip\n    ref=\"popperRef\"\n    :visible=\"suggestionVisible\"\n    :placement=\"placement\"\n    :fallback-placements=\"['bottom-start', 'top-start']\"\n    :popper-class=\"[ns.e('popper'), popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :teleported=\"teleported\"\n    :append-to=\"appendTo\"\n    :gpu-acceleration=\"false\"\n    pure\n    manual-mode\n    effect=\"light\"\n    trigger=\"click\"\n    :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n    persistent\n    role=\"listbox\"\n    @before-show=\"onSuggestionShow\"\n    @hide=\"onHide\"\n  >\n    <div\n      ref=\"listboxRef\"\n      :class=\"[ns.b(), $attrs.class]\"\n      :style=\"styles\"\n      role=\"combobox\"\n      aria-haspopup=\"listbox\"\n      :aria-expanded=\"suggestionVisible\"\n      :aria-owns=\"listboxId\"\n    >\n      <el-input\n        ref=\"inputRef\"\n        v-bind=\"mergeProps(passInputProps, $attrs)\"\n        :model-value=\"modelValue\"\n        :disabled=\"disabled\"\n        @input=\"handleInput\"\n        @change=\"handleChange\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @clear=\"handleClear\"\n        @keydown=\"handleKeydown\"\n        @mousedown=\"handleMouseDown\"\n      >\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        <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      </el-input>\n    </div>\n    <template #content>\n      <div\n        ref=\"regionRef\"\n        :class=\"[ns.b('suggestion'), ns.is('loading', suggestionLoading)]\"\n        :style=\"{\n          [fitInputWidth ? 'width' : 'minWidth']: dropdownWidth,\n          outline: 'none',\n        }\"\n        role=\"region\"\n      >\n        <div\n          v-if=\"$slots.header\"\n          :class=\"ns.be('suggestion', 'header')\"\n          @click.stop\n        >\n          <slot name=\"header\" />\n        </div>\n        <el-scrollbar\n          :id=\"listboxId\"\n          tag=\"ul\"\n          :wrap-class=\"ns.be('suggestion', 'wrap')\"\n          :view-class=\"ns.be('suggestion', 'list')\"\n          role=\"listbox\"\n        >\n          <li v-if=\"suggestionLoading\">\n            <slot name=\"loading\">\n              <el-icon :class=\"ns.is('loading')\">\n                <Loading />\n              </el-icon>\n            </slot>\n          </li>\n          <template v-else>\n            <li\n              v-for=\"(item, index) in suggestions\"\n              :id=\"`${listboxId}-item-${index}`\"\n              :key=\"index\"\n              :class=\"{ highlighted: highlightedIndex === index }\"\n              role=\"option\"\n              :aria-selected=\"highlightedIndex === index\"\n              @click=\"handleSelect(item)\"\n            >\n              <slot :item=\"item\">{{ item[valueKey] }}</slot>\n            </li>\n          </template>\n        </el-scrollbar>\n        <div\n          v-if=\"$slots.footer\"\n          :class=\"ns.be('suggestion', 'footer')\"\n          @click.stop\n        >\n          <slot name=\"footer\" />\n        </div>\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  mergeProps,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  useAttrs as useRawAttrs,\n} from 'vue'\nimport { pick } from 'lodash-unified'\nimport { onClickOutside, useDebounceFn } from '@vueuse/core'\nimport { Loading } from 'pit-element-icons'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  NOOP,\n  getEventCode,\n  isArray,\n  throwError,\n} from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport ElInput, {\n  inputProps,\n  inputPropsDefaults,\n} from '@pit-element-plus/components/input'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { autocompleteEmits } from './autocomplete'\n\nimport type { AutocompleteData, AutocompleteProps } from './autocomplete'\nimport type { StyleValue } from 'vue'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { InputInstance } from '@pit-element-plus/components/input'\n\nconst COMPONENT_NAME = 'ElAutocomplete'\ndefineOptions({\n  name: COMPONENT_NAME,\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<AutocompleteProps>(), {\n  ...inputPropsDefaults,\n  valueKey: 'value',\n  modelValue: '',\n  debounce: 300,\n  placement: 'bottom-start',\n  fetchSuggestions: NOOP,\n  triggerOnFocus: true,\n  loopNavigation: true,\n  teleported: true,\n})\nconst emit = defineEmits(autocompleteEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst rawAttrs = useRawAttrs()\nconst disabled = useFormDisabled()\nconst ns = useNamespace('autocomplete')\n\nconst inputRef = ref<InputInstance>()\nconst regionRef = ref<HTMLElement>()\nconst popperRef = ref<TooltipInstance>()\nconst listboxRef = ref<HTMLElement>()\n\nlet readonly = false\nlet ignoreFocusEvent = false\nconst suggestions = ref<AutocompleteData>([])\nconst highlightedIndex = ref(-1)\nconst dropdownWidth = ref('')\nconst activated = ref(false)\nconst suggestionDisabled = ref(false)\nconst loading = ref(false)\n\nconst listboxId = useId()\nconst styles = computed(() => rawAttrs.style as StyleValue)\n\nconst suggestionVisible = computed(() => {\n  const isValidData = suggestions.value.length > 0\n  return (isValidData || loading.value) && activated.value\n})\n\nconst suggestionLoading = computed(() => !props.hideLoading && loading.value)\n\nconst refInput = computed<HTMLInputElement[]>(() => {\n  if (inputRef.value) {\n    return Array.from<HTMLInputElement>(\n      inputRef.value.$el.querySelectorAll('input')\n    )\n  }\n  return []\n})\n\nconst onSuggestionShow = () => {\n  if (suggestionVisible.value) {\n    dropdownWidth.value = `${inputRef.value!.$el.offsetWidth}px`\n  }\n}\n\nconst onHide = () => {\n  highlightedIndex.value = -1\n}\n\nconst getData = async (queryString: string) => {\n  if (suggestionDisabled.value) return\n\n  const cb = (suggestionList: AutocompleteData) => {\n    loading.value = false\n    if (suggestionDisabled.value) return\n\n    if (isArray(suggestionList)) {\n      suggestions.value = suggestionList\n      highlightedIndex.value = props.highlightFirstItem ? 0 : -1\n    } else {\n      throwError(COMPONENT_NAME, 'autocomplete suggestions must be an array')\n    }\n  }\n\n  loading.value = true\n  if (isArray(props.fetchSuggestions)) {\n    cb(props.fetchSuggestions)\n  } else {\n    const result = await props.fetchSuggestions(queryString, cb)\n    if (isArray(result)) cb(result)\n  }\n}\n\nconst debounce = computed(() => props.debounce)\nconst debouncedGetData = useDebounceFn(getData, debounce)\n\nconst handleInput = (value: string) => {\n  const valuePresented = !!value\n\n  emit(INPUT_EVENT, value)\n  emit(UPDATE_MODEL_EVENT, value)\n\n  suggestionDisabled.value = false\n  activated.value ||= valuePresented\n\n  if (!props.triggerOnFocus && !value) {\n    suggestionDisabled.value = true\n    suggestions.value = []\n    return\n  }\n\n  debouncedGetData(value)\n}\n\nconst handleMouseDown = (event: MouseEvent) => {\n  if (disabled.value) return\n  if (\n    (event.target as HTMLElement)?.tagName !== 'INPUT' ||\n    refInput.value.includes(document.activeElement as HTMLInputElement)\n  ) {\n    activated.value = true\n  }\n}\n\nconst handleChange = (value: string | number) => {\n  emit(CHANGE_EVENT, value)\n}\n\nconst handleFocus = (evt: FocusEvent) => {\n  if (!ignoreFocusEvent) {\n    activated.value = true\n    emit('focus', evt)\n    const queryString = props.modelValue ?? ''\n    if (props.triggerOnFocus && !readonly) {\n      debouncedGetData(String(queryString))\n    }\n  } else {\n    ignoreFocusEvent = false\n  }\n}\n\nconst handleBlur = (evt: FocusEvent) => {\n  setTimeout(() => {\n    // validate current focus event is inside el-tooltip-content\n    // if so, ignore the blur event and the next focus event\n    if (popperRef.value?.isFocusInsideContent()) {\n      ignoreFocusEvent = true\n      return\n    }\n    activated.value && close()\n    emit('blur', evt)\n  })\n}\n\nconst handleClear = () => {\n  activated.value = false\n  emit(UPDATE_MODEL_EVENT, '')\n  emit('clear')\n}\n\nconst handleKeyEnter = async () => {\n  if (inputRef.value?.isComposing) {\n    return\n  }\n\n  if (\n    suggestionVisible.value &&\n    highlightedIndex.value >= 0 &&\n    highlightedIndex.value < suggestions.value.length\n  ) {\n    handleSelect(suggestions.value[highlightedIndex.value])\n  } else {\n    if (props.selectWhenUnmatched) {\n      emit('select', { value: props.modelValue })\n      suggestions.value = []\n      highlightedIndex.value = -1\n    }\n    activated.value = true\n    debouncedGetData(String(props.modelValue))\n  }\n}\n\nconst handleKeyEscape = (evt: Event) => {\n  if (suggestionVisible.value) {\n    evt.preventDefault()\n    evt.stopPropagation()\n    close()\n  }\n}\n\nconst close = () => {\n  activated.value = false\n}\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nconst handleSelect = async (item: any) => {\n  emit(INPUT_EVENT, item[props.valueKey])\n  emit(UPDATE_MODEL_EVENT, item[props.valueKey])\n  emit('select', item)\n  suggestions.value = []\n  highlightedIndex.value = -1\n}\n\nconst highlight = (index: number) => {\n  if (!suggestionVisible.value || loading.value) return\n\n  if (index < 0) {\n    if (!props.loopNavigation) {\n      highlightedIndex.value = -1\n      return\n    }\n    index = suggestions.value.length - 1\n  }\n\n  if (index >= suggestions.value.length) {\n    index = props.loopNavigation ? 0 : suggestions.value.length - 1\n  }\n  const [suggestion, suggestionList] = getSuggestionContext()\n  const highlightItem = suggestionList[index]\n  const scrollTop = suggestion.scrollTop\n  const { offsetTop, scrollHeight } = highlightItem\n\n  if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) {\n    suggestion.scrollTop = offsetTop + scrollHeight - suggestion.clientHeight\n  }\n  if (offsetTop < scrollTop) {\n    suggestion.scrollTop = offsetTop\n  }\n  highlightedIndex.value = index\n  inputRef.value?.ref?.setAttribute(\n    'aria-activedescendant',\n    `${listboxId.value}-item-${highlightedIndex.value}`\n  )\n}\nconst getSuggestionContext = () => {\n  const suggestion = regionRef.value!.querySelector(\n    `.${ns.be('suggestion', 'wrap')}`\n  )!\n  const suggestionList = suggestion.querySelectorAll<HTMLElement>(\n    `.${ns.be('suggestion', 'list')} li`\n  )\n  return [suggestion, suggestionList] as const\n}\n\nconst stopHandle = onClickOutside(listboxRef, (event: FocusEvent) => {\n  // Prevent closing if focus is inside popper content\n  if (popperRef.value?.isFocusInsideContent()) return\n  const hadIgnoredFocus = ignoreFocusEvent\n  ignoreFocusEvent = false\n  if (!suggestionVisible.value) return\n  if (hadIgnoredFocus) {\n    handleBlur(new FocusEvent('blur', event))\n  } else {\n    close()\n  }\n})\n\nconst handleKeydown = (e: KeyboardEvent | Event) => {\n  const code = getEventCode(e as KeyboardEvent)\n  switch (code) {\n    case EVENT_CODE.up:\n      e.preventDefault()\n      highlight(highlightedIndex.value - 1)\n      break\n    case EVENT_CODE.down:\n      e.preventDefault()\n      highlight(highlightedIndex.value + 1)\n      break\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      e.preventDefault()\n      handleKeyEnter()\n      break\n    case EVENT_CODE.tab:\n      close()\n      break\n    case EVENT_CODE.esc:\n      handleKeyEscape(e)\n      break\n    case EVENT_CODE.home:\n      e.preventDefault()\n      highlight(0)\n      break\n    case EVENT_CODE.end:\n      e.preventDefault()\n      highlight(suggestions.value.length - 1)\n      break\n    case EVENT_CODE.pageUp:\n      e.preventDefault()\n      highlight(Math.max(0, highlightedIndex.value - 10))\n      break\n    case EVENT_CODE.pageDown:\n      e.preventDefault()\n      highlight(\n        Math.min(suggestions.value.length - 1, highlightedIndex.value + 10)\n      )\n      break\n  }\n}\n\nonBeforeUnmount(() => {\n  stopHandle?.()\n})\n\nonMounted(() => {\n  const inputElement = inputRef.value?.ref\n  if (!inputElement) return\n  ;[\n    { key: 'role', value: 'textbox' },\n    { key: 'aria-autocomplete', value: 'list' },\n    { key: 'aria-controls', value: listboxId.value },\n    {\n      key: 'aria-activedescendant',\n      value: `${listboxId.value}-item-${highlightedIndex.value}`,\n    },\n  ].forEach(({ key, value }) => inputElement.setAttribute(key, value))\n  // get readonly attr\n  readonly = inputElement.hasAttribute('readonly')\n})\n\ndefineExpose({\n  /** @description the index of the currently highlighted item */\n  highlightedIndex,\n  /** @description autocomplete whether activated */\n  activated,\n  /** @description remote search loading status */\n  loading,\n  /** @description el-input component instance */\n  inputRef,\n  /** @description el-tooltip component instance */\n  popperRef,\n  /** @description fetch suggestions result */\n  suggestions,\n  /** @description triggers when a suggestion is clicked */\n  handleSelect,\n  /** @description handle keyboard enter event */\n  handleKeyEnter,\n  /** @description focus the input element */\n  focus,\n  /** @description blur the input element */\n  blur,\n  /** @description close suggestion */\n  close,\n  /** @description highlight an item in a suggestion */\n  highlight,\n  /** @description loading suggestion list */\n  getData,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"popperRef\"\n    :visible=\"suggestionVisible\"\n    :placement=\"placement\"\n    :fallback-placements=\"['bottom-start', 'top-start']\"\n    :popper-class=\"[ns.e('popper'), popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :teleported=\"teleported\"\n    :append-to=\"appendTo\"\n    :gpu-acceleration=\"false\"\n    pure\n    manual-mode\n    effect=\"light\"\n    trigger=\"click\"\n    :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n    persistent\n    role=\"listbox\"\n    @before-show=\"onSuggestionShow\"\n    @hide=\"onHide\"\n  >\n    <div\n      ref=\"listboxRef\"\n      :class=\"[ns.b(), $attrs.class]\"\n      :style=\"styles\"\n      role=\"combobox\"\n      aria-haspopup=\"listbox\"\n      :aria-expanded=\"suggestionVisible\"\n      :aria-owns=\"listboxId\"\n    >\n      <el-input\n        ref=\"inputRef\"\n        v-bind=\"mergeProps(passInputProps, $attrs)\"\n        :model-value=\"modelValue\"\n        :disabled=\"disabled\"\n        @input=\"handleInput\"\n        @change=\"handleChange\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @clear=\"handleClear\"\n        @keydown=\"handleKeydown\"\n        @mousedown=\"handleMouseDown\"\n      >\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        <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      </el-input>\n    </div>\n    <template #content>\n      <div\n        ref=\"regionRef\"\n        :class=\"[ns.b('suggestion'), ns.is('loading', suggestionLoading)]\"\n        :style=\"{\n          [fitInputWidth ? 'width' : 'minWidth']: dropdownWidth,\n          outline: 'none',\n        }\"\n        role=\"region\"\n      >\n        <div\n          v-if=\"$slots.header\"\n          :class=\"ns.be('suggestion', 'header')\"\n          @click.stop\n        >\n          <slot name=\"header\" />\n        </div>\n        <el-scrollbar\n          :id=\"listboxId\"\n          tag=\"ul\"\n          :wrap-class=\"ns.be('suggestion', 'wrap')\"\n          :view-class=\"ns.be('suggestion', 'list')\"\n          role=\"listbox\"\n        >\n          <li v-if=\"suggestionLoading\">\n            <slot name=\"loading\">\n              <el-icon :class=\"ns.is('loading')\">\n                <Loading />\n              </el-icon>\n            </slot>\n          </li>\n          <template v-else>\n            <li\n              v-for=\"(item, index) in suggestions\"\n              :id=\"`${listboxId}-item-${index}`\"\n              :key=\"index\"\n              :class=\"{ highlighted: highlightedIndex === index }\"\n              role=\"option\"\n              :aria-selected=\"highlightedIndex === index\"\n              @click=\"handleSelect(item)\"\n            >\n              <slot :item=\"item\">{{ item[valueKey] }}</slot>\n            </li>\n          </template>\n        </el-scrollbar>\n        <div\n          v-if=\"$slots.footer\"\n          :class=\"ns.be('suggestion', 'footer')\"\n          @click.stop\n        >\n          <slot name=\"footer\" />\n        </div>\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  mergeProps,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  useAttrs as useRawAttrs,\n} from 'vue'\nimport { pick } from 'lodash-unified'\nimport { onClickOutside, useDebounceFn } from '@vueuse/core'\nimport { Loading } from 'pit-element-icons'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  NOOP,\n  getEventCode,\n  isArray,\n  throwError,\n} from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport ElInput, {\n  inputProps,\n  inputPropsDefaults,\n} from '@pit-element-plus/components/input'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { autocompleteEmits } from './autocomplete'\n\nimport type { AutocompleteData, AutocompleteProps } from './autocomplete'\nimport type { StyleValue } from 'vue'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { InputInstance } from '@pit-element-plus/components/input'\n\nconst COMPONENT_NAME = 'ElAutocomplete'\ndefineOptions({\n  name: COMPONENT_NAME,\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<AutocompleteProps>(), {\n  ...inputPropsDefaults,\n  valueKey: 'value',\n  modelValue: '',\n  debounce: 300,\n  placement: 'bottom-start',\n  fetchSuggestions: NOOP,\n  triggerOnFocus: true,\n  loopNavigation: true,\n  teleported: true,\n})\nconst emit = defineEmits(autocompleteEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst rawAttrs = useRawAttrs()\nconst disabled = useFormDisabled()\nconst ns = useNamespace('autocomplete')\n\nconst inputRef = ref<InputInstance>()\nconst regionRef = ref<HTMLElement>()\nconst popperRef = ref<TooltipInstance>()\nconst listboxRef = ref<HTMLElement>()\n\nlet readonly = false\nlet ignoreFocusEvent = false\nconst suggestions = ref<AutocompleteData>([])\nconst highlightedIndex = ref(-1)\nconst dropdownWidth = ref('')\nconst activated = ref(false)\nconst suggestionDisabled = ref(false)\nconst loading = ref(false)\n\nconst listboxId = useId()\nconst styles = computed(() => rawAttrs.style as StyleValue)\n\nconst suggestionVisible = computed(() => {\n  const isValidData = suggestions.value.length > 0\n  return (isValidData || loading.value) && activated.value\n})\n\nconst suggestionLoading = computed(() => !props.hideLoading && loading.value)\n\nconst refInput = computed<HTMLInputElement[]>(() => {\n  if (inputRef.value) {\n    return Array.from<HTMLInputElement>(\n      inputRef.value.$el.querySelectorAll('input')\n    )\n  }\n  return []\n})\n\nconst onSuggestionShow = () => {\n  if (suggestionVisible.value) {\n    dropdownWidth.value = `${inputRef.value!.$el.offsetWidth}px`\n  }\n}\n\nconst onHide = () => {\n  highlightedIndex.value = -1\n}\n\nconst getData = async (queryString: string) => {\n  if (suggestionDisabled.value) return\n\n  const cb = (suggestionList: AutocompleteData) => {\n    loading.value = false\n    if (suggestionDisabled.value) return\n\n    if (isArray(suggestionList)) {\n      suggestions.value = suggestionList\n      highlightedIndex.value = props.highlightFirstItem ? 0 : -1\n    } else {\n      throwError(COMPONENT_NAME, 'autocomplete suggestions must be an array')\n    }\n  }\n\n  loading.value = true\n  if (isArray(props.fetchSuggestions)) {\n    cb(props.fetchSuggestions)\n  } else {\n    const result = await props.fetchSuggestions(queryString, cb)\n    if (isArray(result)) cb(result)\n  }\n}\n\nconst debounce = computed(() => props.debounce)\nconst debouncedGetData = useDebounceFn(getData, debounce)\n\nconst handleInput = (value: string) => {\n  const valuePresented = !!value\n\n  emit(INPUT_EVENT, value)\n  emit(UPDATE_MODEL_EVENT, value)\n\n  suggestionDisabled.value = false\n  activated.value ||= valuePresented\n\n  if (!props.triggerOnFocus && !value) {\n    suggestionDisabled.value = true\n    suggestions.value = []\n    return\n  }\n\n  debouncedGetData(value)\n}\n\nconst handleMouseDown = (event: MouseEvent) => {\n  if (disabled.value) return\n  if (\n    (event.target as HTMLElement)?.tagName !== 'INPUT' ||\n    refInput.value.includes(document.activeElement as HTMLInputElement)\n  ) {\n    activated.value = true\n  }\n}\n\nconst handleChange = (value: string | number) => {\n  emit(CHANGE_EVENT, value)\n}\n\nconst handleFocus = (evt: FocusEvent) => {\n  if (!ignoreFocusEvent) {\n    activated.value = true\n    emit('focus', evt)\n    const queryString = props.modelValue ?? ''\n    if (props.triggerOnFocus && !readonly) {\n      debouncedGetData(String(queryString))\n    }\n  } else {\n    ignoreFocusEvent = false\n  }\n}\n\nconst handleBlur = (evt: FocusEvent) => {\n  setTimeout(() => {\n    // validate current focus event is inside el-tooltip-content\n    // if so, ignore the blur event and the next focus event\n    if (popperRef.value?.isFocusInsideContent()) {\n      ignoreFocusEvent = true\n      return\n    }\n    activated.value && close()\n    emit('blur', evt)\n  })\n}\n\nconst handleClear = () => {\n  activated.value = false\n  emit(UPDATE_MODEL_EVENT, '')\n  emit('clear')\n}\n\nconst handleKeyEnter = async () => {\n  if (inputRef.value?.isComposing) {\n    return\n  }\n\n  if (\n    suggestionVisible.value &&\n    highlightedIndex.value >= 0 &&\n    highlightedIndex.value < suggestions.value.length\n  ) {\n    handleSelect(suggestions.value[highlightedIndex.value])\n  } else {\n    if (props.selectWhenUnmatched) {\n      emit('select', { value: props.modelValue })\n      suggestions.value = []\n      highlightedIndex.value = -1\n    }\n    activated.value = true\n    debouncedGetData(String(props.modelValue))\n  }\n}\n\nconst handleKeyEscape = (evt: Event) => {\n  if (suggestionVisible.value) {\n    evt.preventDefault()\n    evt.stopPropagation()\n    close()\n  }\n}\n\nconst close = () => {\n  activated.value = false\n}\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nconst handleSelect = async (item: any) => {\n  emit(INPUT_EVENT, item[props.valueKey])\n  emit(UPDATE_MODEL_EVENT, item[props.valueKey])\n  emit('select', item)\n  suggestions.value = []\n  highlightedIndex.value = -1\n}\n\nconst highlight = (index: number) => {\n  if (!suggestionVisible.value || loading.value) return\n\n  if (index < 0) {\n    if (!props.loopNavigation) {\n      highlightedIndex.value = -1\n      return\n    }\n    index = suggestions.value.length - 1\n  }\n\n  if (index >= suggestions.value.length) {\n    index = props.loopNavigation ? 0 : suggestions.value.length - 1\n  }\n  const [suggestion, suggestionList] = getSuggestionContext()\n  const highlightItem = suggestionList[index]\n  const scrollTop = suggestion.scrollTop\n  const { offsetTop, scrollHeight } = highlightItem\n\n  if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) {\n    suggestion.scrollTop = offsetTop + scrollHeight - suggestion.clientHeight\n  }\n  if (offsetTop < scrollTop) {\n    suggestion.scrollTop = offsetTop\n  }\n  highlightedIndex.value = index\n  inputRef.value?.ref?.setAttribute(\n    'aria-activedescendant',\n    `${listboxId.value}-item-${highlightedIndex.value}`\n  )\n}\nconst getSuggestionContext = () => {\n  const suggestion = regionRef.value!.querySelector(\n    `.${ns.be('suggestion', 'wrap')}`\n  )!\n  const suggestionList = suggestion.querySelectorAll<HTMLElement>(\n    `.${ns.be('suggestion', 'list')} li`\n  )\n  return [suggestion, suggestionList] as const\n}\n\nconst stopHandle = onClickOutside(listboxRef, (event: FocusEvent) => {\n  // Prevent closing if focus is inside popper content\n  if (popperRef.value?.isFocusInsideContent()) return\n  const hadIgnoredFocus = ignoreFocusEvent\n  ignoreFocusEvent = false\n  if (!suggestionVisible.value) return\n  if (hadIgnoredFocus) {\n    handleBlur(new FocusEvent('blur', event))\n  } else {\n    close()\n  }\n})\n\nconst handleKeydown = (e: KeyboardEvent | Event) => {\n  const code = getEventCode(e as KeyboardEvent)\n  switch (code) {\n    case EVENT_CODE.up:\n      e.preventDefault()\n      highlight(highlightedIndex.value - 1)\n      break\n    case EVENT_CODE.down:\n      e.preventDefault()\n      highlight(highlightedIndex.value + 1)\n      break\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      e.preventDefault()\n      handleKeyEnter()\n      break\n    case EVENT_CODE.tab:\n      close()\n      break\n    case EVENT_CODE.esc:\n      handleKeyEscape(e)\n      break\n    case EVENT_CODE.home:\n      e.preventDefault()\n      highlight(0)\n      break\n    case EVENT_CODE.end:\n      e.preventDefault()\n      highlight(suggestions.value.length - 1)\n      break\n    case EVENT_CODE.pageUp:\n      e.preventDefault()\n      highlight(Math.max(0, highlightedIndex.value - 10))\n      break\n    case EVENT_CODE.pageDown:\n      e.preventDefault()\n      highlight(\n        Math.min(suggestions.value.length - 1, highlightedIndex.value + 10)\n      )\n      break\n  }\n}\n\nonBeforeUnmount(() => {\n  stopHandle?.()\n})\n\nonMounted(() => {\n  const inputElement = inputRef.value?.ref\n  if (!inputElement) return\n  ;[\n    { key: 'role', value: 'textbox' },\n    { key: 'aria-autocomplete', value: 'list' },\n    { key: 'aria-controls', value: listboxId.value },\n    {\n      key: 'aria-activedescendant',\n      value: `${listboxId.value}-item-${highlightedIndex.value}`,\n    },\n  ].forEach(({ key, value }) => inputElement.setAttribute(key, value))\n  // get readonly attr\n  readonly = inputElement.hasAttribute('readonly')\n})\n\ndefineExpose({\n  /** @description the index of the currently highlighted item */\n  highlightedIndex,\n  /** @description autocomplete whether activated */\n  activated,\n  /** @description remote search loading status */\n  loading,\n  /** @description el-input component instance */\n  inputRef,\n  /** @description el-tooltip component instance */\n  popperRef,\n  /** @description fetch suggestions result */\n  suggestions,\n  /** @description triggers when a suggestion is clicked */\n  handleSelect,\n  /** @description handle keyboard enter event */\n  handleKeyEnter,\n  /** @description focus the input element */\n  focus,\n  /** @description blur the input element */\n  blur,\n  /** @description close suggestion */\n  close,\n  /** @description highlight an item in a suggestion */\n  highlight,\n  /** @description loading suggestion list */\n  getData,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"popperRef\"\n    :visible=\"suggestionVisible\"\n    :placement=\"placement\"\n    :fallback-placements=\"['bottom-start', 'top-start']\"\n    :popper-class=\"[ns.e('popper'), popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :teleported=\"teleported\"\n    :append-to=\"appendTo\"\n    :gpu-acceleration=\"false\"\n    pure\n    manual-mode\n    effect=\"light\"\n    trigger=\"click\"\n    :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n    persistent\n    role=\"listbox\"\n    @before-show=\"onSuggestionShow\"\n    @hide=\"onHide\"\n  >\n    <div\n      ref=\"listboxRef\"\n      :class=\"[ns.b(), $attrs.class]\"\n      :style=\"styles\"\n      role=\"combobox\"\n      aria-haspopup=\"listbox\"\n      :aria-expanded=\"suggestionVisible\"\n      :aria-owns=\"listboxId\"\n    >\n      <el-input\n        ref=\"inputRef\"\n        v-bind=\"mergeProps(passInputProps, $attrs)\"\n        :model-value=\"modelValue\"\n        :disabled=\"disabled\"\n        @input=\"handleInput\"\n        @change=\"handleChange\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @clear=\"handleClear\"\n        @keydown=\"handleKeydown\"\n        @mousedown=\"handleMouseDown\"\n      >\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        <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      </el-input>\n    </div>\n    <template #content>\n      <div\n        ref=\"regionRef\"\n        :class=\"[ns.b('suggestion'), ns.is('loading', suggestionLoading)]\"\n        :style=\"{\n          [fitInputWidth ? 'width' : 'minWidth']: dropdownWidth,\n          outline: 'none',\n        }\"\n        role=\"region\"\n      >\n        <div\n          v-if=\"$slots.header\"\n          :class=\"ns.be('suggestion', 'header')\"\n          @click.stop\n        >\n          <slot name=\"header\" />\n        </div>\n        <el-scrollbar\n          :id=\"listboxId\"\n          tag=\"ul\"\n          :wrap-class=\"ns.be('suggestion', 'wrap')\"\n          :view-class=\"ns.be('suggestion', 'list')\"\n          role=\"listbox\"\n        >\n          <li v-if=\"suggestionLoading\">\n            <slot name=\"loading\">\n              <el-icon :class=\"ns.is('loading')\">\n                <Loading />\n              </el-icon>\n            </slot>\n          </li>\n          <template v-else>\n            <li\n              v-for=\"(item, index) in suggestions\"\n              :id=\"`${listboxId}-item-${index}`\"\n              :key=\"index\"\n              :class=\"{ highlighted: highlightedIndex === index }\"\n              role=\"option\"\n              :aria-selected=\"highlightedIndex === index\"\n              @click=\"handleSelect(item)\"\n            >\n              <slot :item=\"item\">{{ item[valueKey] }}</slot>\n            </li>\n          </template>\n        </el-scrollbar>\n        <div\n          v-if=\"$slots.footer\"\n          :class=\"ns.be('suggestion', 'footer')\"\n          @click.stop\n        >\n          <slot name=\"footer\" />\n        </div>\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  mergeProps,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  useAttrs as useRawAttrs,\n} from 'vue'\nimport { pick } from 'lodash-unified'\nimport { onClickOutside, useDebounceFn } from '@vueuse/core'\nimport { Loading } from 'pit-element-icons'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  NOOP,\n  getEventCode,\n  isArray,\n  throwError,\n} from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport ElInput, {\n  inputProps,\n  inputPropsDefaults,\n} from '@pit-element-plus/components/input'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { autocompleteEmits } from './autocomplete'\n\nimport type { AutocompleteData, AutocompleteProps } from './autocomplete'\nimport type { StyleValue } from 'vue'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { InputInstance } from '@pit-element-plus/components/input'\n\nconst COMPONENT_NAME = 'ElAutocomplete'\ndefineOptions({\n  name: COMPONENT_NAME,\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<AutocompleteProps>(), {\n  ...inputPropsDefaults,\n  valueKey: 'value',\n  modelValue: '',\n  debounce: 300,\n  placement: 'bottom-start',\n  fetchSuggestions: NOOP,\n  triggerOnFocus: true,\n  loopNavigation: true,\n  teleported: true,\n})\nconst emit = defineEmits(autocompleteEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst rawAttrs = useRawAttrs()\nconst disabled = useFormDisabled()\nconst ns = useNamespace('autocomplete')\n\nconst inputRef = ref<InputInstance>()\nconst regionRef = ref<HTMLElement>()\nconst popperRef = ref<TooltipInstance>()\nconst listboxRef = ref<HTMLElement>()\n\nlet readonly = false\nlet ignoreFocusEvent = false\nconst suggestions = ref<AutocompleteData>([])\nconst highlightedIndex = ref(-1)\nconst dropdownWidth = ref('')\nconst activated = ref(false)\nconst suggestionDisabled = ref(false)\nconst loading = ref(false)\n\nconst listboxId = useId()\nconst styles = computed(() => rawAttrs.style as StyleValue)\n\nconst suggestionVisible = computed(() => {\n  const isValidData = suggestions.value.length > 0\n  return (isValidData || loading.value) && activated.value\n})\n\nconst suggestionLoading = computed(() => !props.hideLoading && loading.value)\n\nconst refInput = computed<HTMLInputElement[]>(() => {\n  if (inputRef.value) {\n    return Array.from<HTMLInputElement>(\n      inputRef.value.$el.querySelectorAll('input')\n    )\n  }\n  return []\n})\n\nconst onSuggestionShow = () => {\n  if (suggestionVisible.value) {\n    dropdownWidth.value = `${inputRef.value!.$el.offsetWidth}px`\n  }\n}\n\nconst onHide = () => {\n  highlightedIndex.value = -1\n}\n\nconst getData = async (queryString: string) => {\n  if (suggestionDisabled.value) return\n\n  const cb = (suggestionList: AutocompleteData) => {\n    loading.value = false\n    if (suggestionDisabled.value) return\n\n    if (isArray(suggestionList)) {\n      suggestions.value = suggestionList\n      highlightedIndex.value = props.highlightFirstItem ? 0 : -1\n    } else {\n      throwError(COMPONENT_NAME, 'autocomplete suggestions must be an array')\n    }\n  }\n\n  loading.value = true\n  if (isArray(props.fetchSuggestions)) {\n    cb(props.fetchSuggestions)\n  } else {\n    const result = await props.fetchSuggestions(queryString, cb)\n    if (isArray(result)) cb(result)\n  }\n}\n\nconst debounce = computed(() => props.debounce)\nconst debouncedGetData = useDebounceFn(getData, debounce)\n\nconst handleInput = (value: string) => {\n  const valuePresented = !!value\n\n  emit(INPUT_EVENT, value)\n  emit(UPDATE_MODEL_EVENT, value)\n\n  suggestionDisabled.value = false\n  activated.value ||= valuePresented\n\n  if (!props.triggerOnFocus && !value) {\n    suggestionDisabled.value = true\n    suggestions.value = []\n    return\n  }\n\n  debouncedGetData(value)\n}\n\nconst handleMouseDown = (event: MouseEvent) => {\n  if (disabled.value) return\n  if (\n    (event.target as HTMLElement)?.tagName !== 'INPUT' ||\n    refInput.value.includes(document.activeElement as HTMLInputElement)\n  ) {\n    activated.value = true\n  }\n}\n\nconst handleChange = (value: string | number) => {\n  emit(CHANGE_EVENT, value)\n}\n\nconst handleFocus = (evt: FocusEvent) => {\n  if (!ignoreFocusEvent) {\n    activated.value = true\n    emit('focus', evt)\n    const queryString = props.modelValue ?? ''\n    if (props.triggerOnFocus && !readonly) {\n      debouncedGetData(String(queryString))\n    }\n  } else {\n    ignoreFocusEvent = false\n  }\n}\n\nconst handleBlur = (evt: FocusEvent) => {\n  setTimeout(() => {\n    // validate current focus event is inside el-tooltip-content\n    // if so, ignore the blur event and the next focus event\n    if (popperRef.value?.isFocusInsideContent()) {\n      ignoreFocusEvent = true\n      return\n    }\n    activated.value && close()\n    emit('blur', evt)\n  })\n}\n\nconst handleClear = () => {\n  activated.value = false\n  emit(UPDATE_MODEL_EVENT, '')\n  emit('clear')\n}\n\nconst handleKeyEnter = async () => {\n  if (inputRef.value?.isComposing) {\n    return\n  }\n\n  if (\n    suggestionVisible.value &&\n    highlightedIndex.value >= 0 &&\n    highlightedIndex.value < suggestions.value.length\n  ) {\n    handleSelect(suggestions.value[highlightedIndex.value])\n  } else {\n    if (props.selectWhenUnmatched) {\n      emit('select', { value: props.modelValue })\n      suggestions.value = []\n      highlightedIndex.value = -1\n    }\n    activated.value = true\n    debouncedGetData(String(props.modelValue))\n  }\n}\n\nconst handleKeyEscape = (evt: Event) => {\n  if (suggestionVisible.value) {\n    evt.preventDefault()\n    evt.stopPropagation()\n    close()\n  }\n}\n\nconst close = () => {\n  activated.value = false\n}\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nconst handleSelect = async (item: any) => {\n  emit(INPUT_EVENT, item[props.valueKey])\n  emit(UPDATE_MODEL_EVENT, item[props.valueKey])\n  emit('select', item)\n  suggestions.value = []\n  highlightedIndex.value = -1\n}\n\nconst highlight = (index: number) => {\n  if (!suggestionVisible.value || loading.value) return\n\n  if (index < 0) {\n    if (!props.loopNavigation) {\n      highlightedIndex.value = -1\n      return\n    }\n    index = suggestions.value.length - 1\n  }\n\n  if (index >= suggestions.value.length) {\n    index = props.loopNavigation ? 0 : suggestions.value.length - 1\n  }\n  const [suggestion, suggestionList] = getSuggestionContext()\n  const highlightItem = suggestionList[index]\n  const scrollTop = suggestion.scrollTop\n  const { offsetTop, scrollHeight } = highlightItem\n\n  if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) {\n    suggestion.scrollTop = offsetTop + scrollHeight - suggestion.clientHeight\n  }\n  if (offsetTop < scrollTop) {\n    suggestion.scrollTop = offsetTop\n  }\n  highlightedIndex.value = index\n  inputRef.value?.ref?.setAttribute(\n    'aria-activedescendant',\n    `${listboxId.value}-item-${highlightedIndex.value}`\n  )\n}\nconst getSuggestionContext = () => {\n  const suggestion = regionRef.value!.querySelector(\n    `.${ns.be('suggestion', 'wrap')}`\n  )!\n  const suggestionList = suggestion.querySelectorAll<HTMLElement>(\n    `.${ns.be('suggestion', 'list')} li`\n  )\n  return [suggestion, suggestionList] as const\n}\n\nconst stopHandle = onClickOutside(listboxRef, (event: FocusEvent) => {\n  // Prevent closing if focus is inside popper content\n  if (popperRef.value?.isFocusInsideContent()) return\n  const hadIgnoredFocus = ignoreFocusEvent\n  ignoreFocusEvent = false\n  if (!suggestionVisible.value) return\n  if (hadIgnoredFocus) {\n    handleBlur(new FocusEvent('blur', event))\n  } else {\n    close()\n  }\n})\n\nconst handleKeydown = (e: KeyboardEvent | Event) => {\n  const code = getEventCode(e as KeyboardEvent)\n  switch (code) {\n    case EVENT_CODE.up:\n      e.preventDefault()\n      highlight(highlightedIndex.value - 1)\n      break\n    case EVENT_CODE.down:\n      e.preventDefault()\n      highlight(highlightedIndex.value + 1)\n      break\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      e.preventDefault()\n      handleKeyEnter()\n      break\n    case EVENT_CODE.tab:\n      close()\n      break\n    case EVENT_CODE.esc:\n      handleKeyEscape(e)\n      break\n    case EVENT_CODE.home:\n      e.preventDefault()\n      highlight(0)\n      break\n    case EVENT_CODE.end:\n      e.preventDefault()\n      highlight(suggestions.value.length - 1)\n      break\n    case EVENT_CODE.pageUp:\n      e.preventDefault()\n      highlight(Math.max(0, highlightedIndex.value - 10))\n      break\n    case EVENT_CODE.pageDown:\n      e.preventDefault()\n      highlight(\n        Math.min(suggestions.value.length - 1, highlightedIndex.value + 10)\n      )\n      break\n  }\n}\n\nonBeforeUnmount(() => {\n  stopHandle?.()\n})\n\nonMounted(() => {\n  const inputElement = inputRef.value?.ref\n  if (!inputElement) return\n  ;[\n    { key: 'role', value: 'textbox' },\n    { key: 'aria-autocomplete', value: 'list' },\n    { key: 'aria-controls', value: listboxId.value },\n    {\n      key: 'aria-activedescendant',\n      value: `${listboxId.value}-item-${highlightedIndex.value}`,\n    },\n  ].forEach(({ key, value }) => inputElement.setAttribute(key, value))\n  // get readonly attr\n  readonly = inputElement.hasAttribute('readonly')\n})\n\ndefineExpose({\n  /** @description the index of the currently highlighted item */\n  highlightedIndex,\n  /** @description autocomplete whether activated */\n  activated,\n  /** @description remote search loading status */\n  loading,\n  /** @description el-input component instance */\n  inputRef,\n  /** @description el-tooltip component instance */\n  popperRef,\n  /** @description fetch suggestions result */\n  suggestions,\n  /** @description triggers when a suggestion is clicked */\n  handleSelect,\n  /** @description handle keyboard enter event */\n  handleKeyEnter,\n  /** @description focus the input element */\n  focus,\n  /** @description blur the input element */\n  blur,\n  /** @description close suggestion */\n  close,\n  /** @description highlight an item in a suggestion */\n  highlight,\n  /** @description loading suggestion list */\n  getData,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Autocomplete from './src/autocomplete.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElAutocomplete: SFCWithInstall<typeof Autocomplete> =\n  withInstall(Autocomplete)\n\nexport default ElAutocomplete\n\nexport * from './src/autocomplete'\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isNumber,\n} from '@pit-element-plus/utils'\nimport { componentSizes } from '@pit-element-plus/constants'\n\nimport type { CSSProperties, ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { IconPropType } from '@pit-element-plus/utils'\n\nexport interface AvatarProps {\n  /**\n   * @description avatar size.\n   */\n  size?: number | ComponentSize\n  /**\n   * @description avatar shape.\n   */\n  shape?: 'circle' | 'square'\n  /**\n   * @description representation type to icon, more info on icon component.\n   */\n  icon?: IconPropType\n  /**\n   * @description the source of the image for an image avatar.\n   */\n  src?: string\n  /**\n   * @description native attribute `alt` of image avatar.\n   */\n  alt?: string\n  /**\n   * @description native attribute srcset of image avatar.\n   */\n  srcSet?: string\n  /**\n   * @description set how the image fit its container for an image avatar.\n   */\n  fit?: CSSProperties['object-fit']\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `AvatarProps` instead.\n */\nexport const avatarProps = buildProps({\n  /**\n   * @description avatar size.\n   */\n  size: {\n    type: [Number, String],\n    values: componentSizes,\n    validator: (val: unknown): val is number => isNumber(val),\n  },\n  /**\n   * @description avatar shape.\n   */\n  shape: {\n    type: String,\n    values: ['circle', 'square'],\n  },\n  /**\n   * @description representation type to icon, more info on icon component.\n   */\n  icon: {\n    type: iconPropType,\n  },\n  /**\n   * @description the source of the image for an image avatar.\n   */\n  src: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description native attribute `alt` of image avatar.\n   */\n  alt: String,\n  /**\n   * @description native attribute srcset of image avatar.\n   */\n  srcSet: String,\n  /**\n   * @description set how the image fit its container for an image avatar.\n   */\n  fit: {\n    type: definePropType<CSSProperties['object-fit']>(String),\n    default: 'cover',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `AvatarProps` instead.\n */\nexport type AvatarPropsPublic = ExtractPublicPropTypes<typeof avatarProps>\n\nexport const avatarEmits = {\n  error: (evt: Event) => evt instanceof Event,\n}\nexport type AvatarEmits = typeof avatarEmits\n","import type { InjectionKey } from 'vue'\nimport type { AvatarProps } from './avatar'\n\nexport interface AvatarGroupContext {\n  size?: AvatarProps['size']\n  shape?: AvatarProps['shape']\n}\n\nexport const avatarGroupContextKey: InjectionKey<AvatarGroupContext> = Symbol(\n  'avatarGroupContextKey'\n)\n","<template>\n  <span :class=\"avatarClass\" :style=\"sizeStyle\">\n    <img\n      v-if=\"(src || srcSet) && !hasLoadError\"\n      :src=\"src\"\n      :alt=\"alt\"\n      :srcset=\"srcSet\"\n      :style=\"fitStyle\"\n      @error=\"handleError\"\n    />\n    <el-icon v-else-if=\"icon\">\n      <component :is=\"icon\" />\n    </el-icon>\n    <slot v-else />\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, watch } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit, isNumber, isString } from '@pit-element-plus/utils'\nimport { avatarEmits } from './avatar'\nimport { avatarGroupContextKey } from './constants'\n\nimport type { AvatarProps } from './avatar'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElAvatar',\n})\n\nconst props = withDefaults(defineProps<AvatarProps>(), {\n  src: '',\n  fit: 'cover',\n})\n\nconst emit = defineEmits(avatarEmits)\n\nconst avatarGroupContext = inject(avatarGroupContextKey, undefined)\n\nconst ns = useNamespace('avatar')\n\nconst hasLoadError = ref(false)\n\nconst size = computed(() => props.size ?? avatarGroupContext?.size)\nconst shape = computed(\n  () => props.shape ?? avatarGroupContext?.shape ?? 'circle'\n)\n\nconst avatarClass = computed(() => {\n  const { icon } = props\n  const classList = [ns.b()]\n  if (isString(size.value)) classList.push(ns.m(size.value))\n  if (icon) classList.push(ns.m('icon'))\n  if (shape.value) classList.push(ns.m(shape.value))\n  return classList\n})\n\nconst sizeStyle = computed(() => {\n  return isNumber(size.value)\n    ? (ns.cssVarBlock({\n        size: addUnit(size.value)!,\n      }) as CSSProperties)\n    : undefined\n})\n\nconst fitStyle = computed<CSSProperties>(() => ({\n  objectFit: props.fit,\n}))\n\n// need reset hasLoadError to false if src changed\nwatch(\n  () => [props.src, props.srcSet],\n  () => (hasLoadError.value = false)\n)\n\nfunction handleError(e: Event) {\n  hasLoadError.value = true\n  emit('error', e)\n}\n</script>\n","<template>\n  <span :class=\"avatarClass\" :style=\"sizeStyle\">\n    <img\n      v-if=\"(src || srcSet) && !hasLoadError\"\n      :src=\"src\"\n      :alt=\"alt\"\n      :srcset=\"srcSet\"\n      :style=\"fitStyle\"\n      @error=\"handleError\"\n    />\n    <el-icon v-else-if=\"icon\">\n      <component :is=\"icon\" />\n    </el-icon>\n    <slot v-else />\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, watch } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit, isNumber, isString } from '@pit-element-plus/utils'\nimport { avatarEmits } from './avatar'\nimport { avatarGroupContextKey } from './constants'\n\nimport type { AvatarProps } from './avatar'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElAvatar',\n})\n\nconst props = withDefaults(defineProps<AvatarProps>(), {\n  src: '',\n  fit: 'cover',\n})\n\nconst emit = defineEmits(avatarEmits)\n\nconst avatarGroupContext = inject(avatarGroupContextKey, undefined)\n\nconst ns = useNamespace('avatar')\n\nconst hasLoadError = ref(false)\n\nconst size = computed(() => props.size ?? avatarGroupContext?.size)\nconst shape = computed(\n  () => props.shape ?? avatarGroupContext?.shape ?? 'circle'\n)\n\nconst avatarClass = computed(() => {\n  const { icon } = props\n  const classList = [ns.b()]\n  if (isString(size.value)) classList.push(ns.m(size.value))\n  if (icon) classList.push(ns.m('icon'))\n  if (shape.value) classList.push(ns.m(shape.value))\n  return classList\n})\n\nconst sizeStyle = computed(() => {\n  return isNumber(size.value)\n    ? (ns.cssVarBlock({\n        size: addUnit(size.value)!,\n      }) as CSSProperties)\n    : undefined\n})\n\nconst fitStyle = computed<CSSProperties>(() => ({\n  objectFit: props.fit,\n}))\n\n// need reset hasLoadError to false if src changed\nwatch(\n  () => [props.src, props.srcSet],\n  () => (hasLoadError.value = false)\n)\n\nfunction handleError(e: Event) {\n  hasLoadError.value = true\n  emit('error', e)\n}\n</script>\n","<template>\n  <span :class=\"avatarClass\" :style=\"sizeStyle\">\n    <img\n      v-if=\"(src || srcSet) && !hasLoadError\"\n      :src=\"src\"\n      :alt=\"alt\"\n      :srcset=\"srcSet\"\n      :style=\"fitStyle\"\n      @error=\"handleError\"\n    />\n    <el-icon v-else-if=\"icon\">\n      <component :is=\"icon\" />\n    </el-icon>\n    <slot v-else />\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, watch } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit, isNumber, isString } from '@pit-element-plus/utils'\nimport { avatarEmits } from './avatar'\nimport { avatarGroupContextKey } from './constants'\n\nimport type { AvatarProps } from './avatar'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElAvatar',\n})\n\nconst props = withDefaults(defineProps<AvatarProps>(), {\n  src: '',\n  fit: 'cover',\n})\n\nconst emit = defineEmits(avatarEmits)\n\nconst avatarGroupContext = inject(avatarGroupContextKey, undefined)\n\nconst ns = useNamespace('avatar')\n\nconst hasLoadError = ref(false)\n\nconst size = computed(() => props.size ?? avatarGroupContext?.size)\nconst shape = computed(\n  () => props.shape ?? avatarGroupContext?.shape ?? 'circle'\n)\n\nconst avatarClass = computed(() => {\n  const { icon } = props\n  const classList = [ns.b()]\n  if (isString(size.value)) classList.push(ns.m(size.value))\n  if (icon) classList.push(ns.m('icon'))\n  if (shape.value) classList.push(ns.m(shape.value))\n  return classList\n})\n\nconst sizeStyle = computed(() => {\n  return isNumber(size.value)\n    ? (ns.cssVarBlock({\n        size: addUnit(size.value)!,\n      }) as CSSProperties)\n    : undefined\n})\n\nconst fitStyle = computed<CSSProperties>(() => ({\n  objectFit: props.fit,\n}))\n\n// need reset hasLoadError to false if src changed\nwatch(\n  () => [props.src, props.srcSet],\n  () => (hasLoadError.value = false)\n)\n\nfunction handleError(e: Event) {\n  hasLoadError.value = true\n  emit('error', e)\n}\n</script>\n","import { placements } from '@popperjs/core'\nimport { useTooltipContentProps } from '@pit-element-plus/components/tooltip'\nimport { definePropType, isNumber } from '@pit-element-plus/utils'\nimport { componentSizes } from '@pit-element-plus/constants'\n\nimport type { AvatarProps } from './avatar'\nimport type { ExtractPropTypes, ExtractPublicPropTypes, StyleValue } from 'vue'\nimport type {\n  Placement,\n  PopperEffect,\n} from '@pit-element-plus/components/popper'\n\nexport const avatarGroupProps = {\n  /**\n   * @description control the size of avatars in this avatar-group\n   */\n  size: {\n    type: definePropType<AvatarProps['size']>([Number, String]),\n    values: componentSizes,\n    validator: (val: unknown): val is number => isNumber(val),\n  },\n  /**\n   * @description control the shape of avatars in this avatar-group\n   */\n  shape: {\n    type: definePropType<AvatarProps['shape']>(String),\n    values: ['circle', 'square'] as const,\n  },\n  /**\n   * @description whether to collapse avatars\n   */\n  collapseAvatars: Boolean,\n  /**\n   * @description whether show all collapsed avatars when mouse hover text of the collapse-avatar. To use this, `collapse-avatars` must be true\n   */\n  collapseAvatarsTooltip: Boolean,\n  /**\n   * @description the max avatars number to be shown. To use this, `collapse-avatars` must be true\n   */\n  maxCollapseAvatars: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    type: definePropType<PopperEffect>(String),\n    default: 'light',\n  },\n  /**\n   * @description placement of tooltip\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    values: placements,\n    default: 'top',\n  },\n  /**\n   * @description custom class name for tooltip\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  /**\n   * @description custom style for tooltip\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description custom class name for the collapse-avatar\n   */\n  collapseClass: String,\n  /**\n   * @description custom style for the collapse-avatar\n   */\n  collapseStyle: {\n    type: definePropType<StyleValue>([String, Array, Object]),\n  },\n} as const\nexport type AvatarGroupProps = ExtractPropTypes<typeof avatarGroupProps>\nexport type AvatarGroupPropsPublic = ExtractPublicPropTypes<\n  typeof avatarGroupProps\n>\n","import {\n  cloneVNode,\n  defineComponent,\n  isVNode,\n  provide,\n  reactive,\n  toRef,\n} from 'vue'\nimport { flattedChildren } from '@pit-element-plus/utils'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport ElAvatar from './avatar.vue'\nimport { avatarGroupContextKey } from './constants'\nimport { avatarGroupProps } from './avatar-group-props'\n\nexport default defineComponent({\n  name: 'ElAvatarGroup',\n  props: avatarGroupProps,\n  setup(props, { slots }) {\n    const ns = useNamespace('avatar-group')\n\n    provide(\n      avatarGroupContextKey,\n      reactive({\n        size: toRef(props, 'size'),\n        shape: toRef(props, 'shape'),\n      })\n    )\n\n    return () => {\n      const avatars = flattedChildren(slots.default?.() ?? [])\n      let visibleAvatars = avatars\n\n      const showCollapseAvatar =\n        props.collapseAvatars && avatars.length > props.maxCollapseAvatars\n\n      if (showCollapseAvatar) {\n        visibleAvatars = avatars.slice(0, props.maxCollapseAvatars)\n        const hiddenAvatars = avatars.slice(props.maxCollapseAvatars)\n\n        visibleAvatars.push(\n          <ElTooltip\n            popperClass={props.popperClass}\n            popperStyle={props.popperStyle}\n            placement={props.placement}\n            effect={props.effect}\n            disabled={!props.collapseAvatarsTooltip}\n          >\n            {{\n              default: () => (\n                <ElAvatar\n                  size={props.size}\n                  shape={props.shape}\n                  class={props.collapseClass}\n                  style={props.collapseStyle}\n                >\n                  + {hiddenAvatars.length}\n                </ElAvatar>\n              ),\n              content: () => (\n                <div class={ns.e('collapse-avatars')}>\n                  {hiddenAvatars.map((node, idx) =>\n                    isVNode(node)\n                      ? cloneVNode(node, { key: node.key ?? idx })\n                      : node\n                  )}\n                </div>\n              ),\n            }}\n          </ElTooltip>\n        )\n      }\n\n      return <div class={ns.b()}>{visibleAvatars}</div>\n    }\n  },\n})\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Avatar from './src/avatar.vue'\nimport AvatarGroup from './src/avatar-group'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElAvatar: SFCWithInstall<typeof Avatar> & {\n  AvatarGroup: typeof AvatarGroup\n} = withInstall(Avatar, {\n  AvatarGroup,\n})\nexport const ElAvatarGroup: SFCWithInstall<typeof AvatarGroup> =\n  withNoopInstall(AvatarGroup)\nexport default ElAvatar\n\nexport * from './src/avatar'\nexport * from './src/constants'\nexport * from './src/avatar-group-props'\nexport type { AvatarInstance, AvatarGroupInstance } from './src/instance'\n","import type { ExtractPublicPropTypes } from 'vue'\n\nexport interface BacktopProps {\n  /**\n   * @description the button will not show until the scroll height reaches this value.\n   */\n  visibilityHeight?: number\n  /**\n   * @description the target to trigger scroll.\n   */\n  target?: string\n  /**\n   * @description right distance.\n   */\n  right?: number\n  /**\n   * @description bottom distance.\n   */\n  bottom?: number\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `BacktopProps` instead.\n */\nexport const backtopProps = {\n  /**\n   * @description the button will not show until the scroll height reaches this value.\n   */\n  visibilityHeight: {\n    type: Number,\n    default: 200,\n  },\n  /**\n   * @description the target to trigger scroll.\n   */\n  target: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description right distance.\n   */\n  right: {\n    type: Number,\n    default: 40,\n  },\n  /**\n   * @description bottom distance.\n   */\n  bottom: {\n    type: Number,\n    default: 40,\n  },\n} as const\n\n/**\n * @deprecated Removed after 3.0.0, Use `BacktopProps` instead.\n */\nexport type BacktopPropsPublic = ExtractPublicPropTypes<typeof backtopProps>\n\nexport const backtopEmits = {\n  click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\nexport type BacktopEmits = typeof backtopEmits\n","import { onMounted, ref, shallowRef } from 'vue'\nimport { useEventListener, useThrottleFn } from '@vueuse/core'\nimport { throwError } from '@pit-element-plus/utils'\n\nimport type { SetupContext } from 'vue'\nimport type { BacktopEmits, BacktopProps } from './backtop'\n\nexport const useBackTop = (\n  props: Required<BacktopProps>,\n  emit: SetupContext<BacktopEmits>['emit'],\n  componentName: string\n) => {\n  const el = shallowRef<HTMLElement>()\n  const container = shallowRef<Document | HTMLElement>()\n  const visible = ref(false)\n\n  const handleScroll = () => {\n    if (el.value) visible.value = el.value.scrollTop >= props.visibilityHeight\n  }\n\n  const handleClick = (event: MouseEvent) => {\n    el.value?.scrollTo({ top: 0, behavior: 'smooth' })\n    emit('click', event)\n  }\n\n  const handleScrollThrottled = useThrottleFn(handleScroll, 300, true)\n\n  useEventListener(container, 'scroll', handleScrollThrottled)\n  onMounted(() => {\n    container.value = document\n    el.value = document.documentElement\n\n    if (props.target) {\n      el.value = document.querySelector<HTMLElement>(props.target) ?? undefined\n      if (!el.value) {\n        throwError(componentName, `target does not exist: ${props.target}`)\n      }\n      container.value = el.value\n    }\n    // Give visible an initial value, fix #13066\n    handleScroll()\n  })\n\n  return {\n    visible,\n    handleClick,\n  }\n}\n","<template>\n  <transition :name=\"`${ns.namespace.value}-fade-in`\">\n    <div\n      v-if=\"visible\"\n      :style=\"backTopStyle\"\n      :class=\"ns.b()\"\n      @click.stop=\"handleClick\"\n    >\n      <slot>\n        <el-icon :class=\"ns.e('icon')\"><caret-top /></el-icon>\n      </slot>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { CaretTop } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { backtopEmits } from './backtop'\nimport { useBackTop } from './use-backtop'\n\nimport type { BacktopProps } from './backtop'\n\nconst COMPONENT_NAME = 'ElBacktop'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<BacktopProps>(), {\n  visibilityHeight: 200,\n  target: '',\n  right: 40,\n  bottom: 40,\n})\nconst emit = defineEmits(backtopEmits)\n\nconst ns = useNamespace('backtop')\n\nconst { handleClick, visible } = useBackTop(props, emit, COMPONENT_NAME)\n\nconst backTopStyle = computed(() => ({\n  right: `${props.right}px`,\n  bottom: `${props.bottom}px`,\n}))\n</script>\n","<template>\n  <transition :name=\"`${ns.namespace.value}-fade-in`\">\n    <div\n      v-if=\"visible\"\n      :style=\"backTopStyle\"\n      :class=\"ns.b()\"\n      @click.stop=\"handleClick\"\n    >\n      <slot>\n        <el-icon :class=\"ns.e('icon')\"><caret-top /></el-icon>\n      </slot>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { CaretTop } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { backtopEmits } from './backtop'\nimport { useBackTop } from './use-backtop'\n\nimport type { BacktopProps } from './backtop'\n\nconst COMPONENT_NAME = 'ElBacktop'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<BacktopProps>(), {\n  visibilityHeight: 200,\n  target: '',\n  right: 40,\n  bottom: 40,\n})\nconst emit = defineEmits(backtopEmits)\n\nconst ns = useNamespace('backtop')\n\nconst { handleClick, visible } = useBackTop(props, emit, COMPONENT_NAME)\n\nconst backTopStyle = computed(() => ({\n  right: `${props.right}px`,\n  bottom: `${props.bottom}px`,\n}))\n</script>\n","<template>\n  <transition :name=\"`${ns.namespace.value}-fade-in`\">\n    <div\n      v-if=\"visible\"\n      :style=\"backTopStyle\"\n      :class=\"ns.b()\"\n      @click.stop=\"handleClick\"\n    >\n      <slot>\n        <el-icon :class=\"ns.e('icon')\"><caret-top /></el-icon>\n      </slot>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { CaretTop } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { backtopEmits } from './backtop'\nimport { useBackTop } from './use-backtop'\n\nimport type { BacktopProps } from './backtop'\n\nconst COMPONENT_NAME = 'ElBacktop'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<BacktopProps>(), {\n  visibilityHeight: 200,\n  target: '',\n  right: 40,\n  bottom: 40,\n})\nconst emit = defineEmits(backtopEmits)\n\nconst ns = useNamespace('backtop')\n\nconst { handleClick, visible } = useBackTop(props, emit, COMPONENT_NAME)\n\nconst backTopStyle = computed(() => ({\n  right: `${props.right}px`,\n  bottom: `${props.bottom}px`,\n}))\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Backtop from './src/backtop.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElBacktop: SFCWithInstall<typeof Backtop> = withInstall(Backtop)\nexport default ElBacktop\n\nexport * from './src/backtop'\nexport type { BacktopInstance } from './src/instance'\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes, StyleValue } from 'vue'\n\nexport interface BadgeProps {\n  /**\n   * @description display value.\n   */\n  value?: string | number\n  /**\n   * @description maximum value, shows `{max}+` when exceeded. Only works if value is a number.\n   */\n  max?: number\n  /**\n   * @description if a little dot is displayed.\n   */\n  isDot?: boolean\n  /**\n   * @description hidden badge.\n   */\n  hidden?: boolean\n  /**\n   * @description badge type.\n   */\n  type?: 'primary' | 'success' | 'warning' | 'info' | 'danger'\n  /**\n   * @description whether to show badge when value is zero.\n   */\n  showZero?: boolean\n  /**\n   * @description customize dot background color\n   */\n  color?: string\n  /**\n   * @description CSS style of badge\n   */\n  badgeStyle?: StyleValue\n  /**\n   * @description set offset of the badge\n   */\n  offset?: [number, number]\n  /**\n   * @description custom class name of badge\n   */\n  badgeClass?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `BadgeProps` instead.\n */\nexport const badgeProps = buildProps({\n  /**\n   * @description display value.\n   */\n  value: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description maximum value, shows `{max}+` when exceeded. Only works if value is a number.\n   */\n  max: {\n    type: Number,\n    default: 99,\n  },\n  /**\n   * @description if a little dot is displayed.\n   */\n  isDot: Boolean,\n  /**\n   * @description hidden badge.\n   */\n  hidden: Boolean,\n  /**\n   * @description badge type.\n   */\n  type: {\n    type: String,\n    values: ['primary', 'success', 'warning', 'info', 'danger'],\n    default: 'danger',\n  },\n  /**\n   * @description whether to show badge when value is zero.\n   */\n  showZero: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description customize dot background color\n   */\n  color: String,\n  /**\n   * @description CSS style of badge\n   */\n  badgeStyle: {\n    type: definePropType<StyleValue>([String, Object, Array]),\n  },\n  /**\n   * @description set offset of the badge\n   */\n  offset: {\n    type: definePropType<[number, number]>(Array),\n    default: () => [0, 0],\n  },\n  /**\n   * @description custom class name of badge\n   */\n  badgeClass: {\n    type: String,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `BadgeProps` instead.\n */\nexport type BadgePropsPublic = ExtractPublicPropTypes<typeof badgeProps>\n","<template>\n  <div :class=\"ns.b()\">\n    <slot />\n    <transition :name=\"`${ns.namespace.value}-zoom-in-center`\">\n      <sup\n        v-if=\"!hidden && (content || isDot || $slots.content)\"\n        :class=\"[\n          ns.e('content'),\n          ns.em('content', type),\n          ns.is('fixed', !!$slots.default),\n          ns.is('dot', isDot),\n          ns.is('hide-zero', !showZero && value === 0),\n          badgeClass,\n        ]\"\n        :style=\"style\"\n      >\n        <slot name=\"content\" :value=\"content\">\n          {{ content }}\n        </slot>\n      </sup>\n    </transition>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit, isNumber } from '@pit-element-plus/utils'\n\nimport type { StyleValue } from 'vue'\nimport type { BadgeProps } from './badge'\n\ndefineOptions({\n  name: 'ElBadge',\n})\n\nconst props = withDefaults(defineProps<BadgeProps>(), {\n  badgeStyle: undefined,\n  value: '',\n  max: 99,\n  type: 'danger',\n  showZero: true,\n  offset: () => [0, 0],\n})\n\nconst ns = useNamespace('badge')\n\nconst content = computed<string>(() => {\n  if (props.isDot) return ''\n  if (isNumber(props.value) && isNumber(props.max)) {\n    return props.max < props.value ? `${props.max}+` : `${props.value}`\n  }\n  return `${props.value}`\n})\n\nconst style = computed<StyleValue>(() => {\n  return [\n    {\n      backgroundColor: props.color,\n      marginRight: addUnit(-props.offset[0]),\n      marginTop: addUnit(props.offset[1]),\n    },\n    props.badgeStyle ?? {},\n  ]\n})\n\ndefineExpose({\n  /** @description badge content */\n  content,\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <slot />\n    <transition :name=\"`${ns.namespace.value}-zoom-in-center`\">\n      <sup\n        v-if=\"!hidden && (content || isDot || $slots.content)\"\n        :class=\"[\n          ns.e('content'),\n          ns.em('content', type),\n          ns.is('fixed', !!$slots.default),\n          ns.is('dot', isDot),\n          ns.is('hide-zero', !showZero && value === 0),\n          badgeClass,\n        ]\"\n        :style=\"style\"\n      >\n        <slot name=\"content\" :value=\"content\">\n          {{ content }}\n        </slot>\n      </sup>\n    </transition>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit, isNumber } from '@pit-element-plus/utils'\n\nimport type { StyleValue } from 'vue'\nimport type { BadgeProps } from './badge'\n\ndefineOptions({\n  name: 'ElBadge',\n})\n\nconst props = withDefaults(defineProps<BadgeProps>(), {\n  badgeStyle: undefined,\n  value: '',\n  max: 99,\n  type: 'danger',\n  showZero: true,\n  offset: () => [0, 0],\n})\n\nconst ns = useNamespace('badge')\n\nconst content = computed<string>(() => {\n  if (props.isDot) return ''\n  if (isNumber(props.value) && isNumber(props.max)) {\n    return props.max < props.value ? `${props.max}+` : `${props.value}`\n  }\n  return `${props.value}`\n})\n\nconst style = computed<StyleValue>(() => {\n  return [\n    {\n      backgroundColor: props.color,\n      marginRight: addUnit(-props.offset[0]),\n      marginTop: addUnit(props.offset[1]),\n    },\n    props.badgeStyle ?? {},\n  ]\n})\n\ndefineExpose({\n  /** @description badge content */\n  content,\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <slot />\n    <transition :name=\"`${ns.namespace.value}-zoom-in-center`\">\n      <sup\n        v-if=\"!hidden && (content || isDot || $slots.content)\"\n        :class=\"[\n          ns.e('content'),\n          ns.em('content', type),\n          ns.is('fixed', !!$slots.default),\n          ns.is('dot', isDot),\n          ns.is('hide-zero', !showZero && value === 0),\n          badgeClass,\n        ]\"\n        :style=\"style\"\n      >\n        <slot name=\"content\" :value=\"content\">\n          {{ content }}\n        </slot>\n      </sup>\n    </transition>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit, isNumber } from '@pit-element-plus/utils'\n\nimport type { StyleValue } from 'vue'\nimport type { BadgeProps } from './badge'\n\ndefineOptions({\n  name: 'ElBadge',\n})\n\nconst props = withDefaults(defineProps<BadgeProps>(), {\n  badgeStyle: undefined,\n  value: '',\n  max: 99,\n  type: 'danger',\n  showZero: true,\n  offset: () => [0, 0],\n})\n\nconst ns = useNamespace('badge')\n\nconst content = computed<string>(() => {\n  if (props.isDot) return ''\n  if (isNumber(props.value) && isNumber(props.max)) {\n    return props.max < props.value ? `${props.max}+` : `${props.value}`\n  }\n  return `${props.value}`\n})\n\nconst style = computed<StyleValue>(() => {\n  return [\n    {\n      backgroundColor: props.color,\n      marginRight: addUnit(-props.offset[0]),\n      marginTop: addUnit(props.offset[1]),\n    },\n    props.badgeStyle ?? {},\n  ]\n})\n\ndefineExpose({\n  /** @description badge content */\n  content,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Badge from './src/badge.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElBadge: SFCWithInstall<typeof Badge> = withInstall(Badge)\nexport default ElBadge\n\nexport * from './src/badge'\nexport type { BadgeInstance } from './src/instance'\n","<template>\n  <div class=\"el-tabs el-tabs--top el-base-tabs\">\n    <div class=\"el-tabs__header is-top\">\n      <div class=\"el-tabs__nav-wrap is-top\">\n        <div class=\"el-tabs__nav-scroll\">\n          <div class=\"el-tabs__nav is-top\">\n            <div\n              v-for=\"item in props.tabListData\"\n              :key=\"item.name\"\n              class=\"el-tabs__item\"\n              :class=\"props.modelValue === item.name ? 'is-active' : ''\"\n              @click=\"handleClick(item.name)\"\n            >\n              {{ item.label }}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { definePropType, mutable } from '@pit-element-plus/utils'\nimport type { TabListDatas } from './tabs'\n\ndefineOptions({\n  name: 'TabsCard',\n})\n\nconst props = defineProps({\n  modelValue: {\n    type: [String, Number],\n  },\n  tabListData: {\n    type: definePropType<TabListDatas>(Array),\n    default: () => mutable([]),\n  },\n  noCard: {\n    type: Boolean,\n    default: false,\n  },\n})\n\nconst emit = defineEmits({\n  change: (val: string | number) => val,\n})\n\nconst handleClick = function (val: string | number) {\n  if (val) {\n    emit('change', val)\n  }\n}\n</script>\n","<template>\n  <div class=\"el-tabs el-tabs--top el-base-tabs\">\n    <div class=\"el-tabs__header is-top\">\n      <div class=\"el-tabs__nav-wrap is-top\">\n        <div class=\"el-tabs__nav-scroll\">\n          <div class=\"el-tabs__nav is-top\">\n            <div\n              v-for=\"item in props.tabListData\"\n              :key=\"item.name\"\n              class=\"el-tabs__item\"\n              :class=\"props.modelValue === item.name ? 'is-active' : ''\"\n              @click=\"handleClick(item.name)\"\n            >\n              {{ item.label }}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { definePropType, mutable } from '@pit-element-plus/utils'\nimport type { TabListDatas } from './tabs'\n\ndefineOptions({\n  name: 'TabsCard',\n})\n\nconst props = defineProps({\n  modelValue: {\n    type: [String, Number],\n  },\n  tabListData: {\n    type: definePropType<TabListDatas>(Array),\n    default: () => mutable([]),\n  },\n  noCard: {\n    type: Boolean,\n    default: false,\n  },\n})\n\nconst emit = defineEmits({\n  change: (val: string | number) => val,\n})\n\nconst handleClick = function (val: string | number) {\n  if (val) {\n    emit('change', val)\n  }\n}\n</script>\n","<template>\n  <div class=\"el-tabs el-tabs--top el-base-tabs\">\n    <div class=\"el-tabs__header is-top\">\n      <div class=\"el-tabs__nav-wrap is-top\">\n        <div class=\"el-tabs__nav-scroll\">\n          <div class=\"el-tabs__nav is-top\">\n            <div\n              v-for=\"item in props.tabListData\"\n              :key=\"item.name\"\n              class=\"el-tabs__item\"\n              :class=\"props.modelValue === item.name ? 'is-active' : ''\"\n              @click=\"handleClick(item.name)\"\n            >\n              {{ item.label }}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { definePropType, mutable } from '@pit-element-plus/utils'\nimport type { TabListDatas } from './tabs'\n\ndefineOptions({\n  name: 'TabsCard',\n})\n\nconst props = defineProps({\n  modelValue: {\n    type: [String, Number],\n  },\n  tabListData: {\n    type: definePropType<TabListDatas>(Array),\n    default: () => mutable([]),\n  },\n  noCard: {\n    type: Boolean,\n    default: false,\n  },\n})\n\nconst emit = defineEmits({\n  change: (val: string | number) => val,\n})\n\nconst handleClick = function (val: string | number) {\n  if (val) {\n    emit('change', val)\n  }\n}\n</script>\n","<template>\n  <div class=\"el-tabs-Line\">\n    <el-tabs v-model=\"getValue\">\n      <el-tab-pane\n        v-for=\"item in props.tabListData\"\n        :key=\"item.name\"\n        :label=\"item.label as string\"\n        :name=\"item.name\"\n      />\n    </el-tabs>\n    <div class=\"el-tabs-Line-pane\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { definePropType, mutable } from '@pit-element-plus/utils'\nimport type { TabListDatas } from './tabs'\n\ndefineOptions({\n  name: 'TabsLine',\n})\n\nconst props = defineProps({\n  modelValue: {\n    type: [String, Number],\n  },\n  tabListData: {\n    type: definePropType<TabListDatas>(Array),\n    default: () => mutable([]),\n  },\n  noCard: {\n    type: Boolean,\n    default: false,\n  },\n})\n\nconst emit = defineEmits({\n  change: (val: string | number) => val,\n})\n\nconst getValue = computed({\n  get() {\n    return props.modelValue as string | number\n  },\n  set(val: string | number) {\n    emit('change', val)\n  },\n})\n</script>\n","<template>\n  <div class=\"el-tabs-Line\">\n    <el-tabs v-model=\"getValue\">\n      <el-tab-pane\n        v-for=\"item in props.tabListData\"\n        :key=\"item.name\"\n        :label=\"item.label as string\"\n        :name=\"item.name\"\n      />\n    </el-tabs>\n    <div class=\"el-tabs-Line-pane\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { definePropType, mutable } from '@pit-element-plus/utils'\nimport type { TabListDatas } from './tabs'\n\ndefineOptions({\n  name: 'TabsLine',\n})\n\nconst props = defineProps({\n  modelValue: {\n    type: [String, Number],\n  },\n  tabListData: {\n    type: definePropType<TabListDatas>(Array),\n    default: () => mutable([]),\n  },\n  noCard: {\n    type: Boolean,\n    default: false,\n  },\n})\n\nconst emit = defineEmits({\n  change: (val: string | number) => val,\n})\n\nconst getValue = computed({\n  get() {\n    return props.modelValue as string | number\n  },\n  set(val: string | number) {\n    emit('change', val)\n  },\n})\n</script>\n","<template>\n  <div class=\"el-tabs-Line\">\n    <el-tabs v-model=\"getValue\">\n      <el-tab-pane\n        v-for=\"item in props.tabListData\"\n        :key=\"item.name\"\n        :label=\"item.label as string\"\n        :name=\"item.name\"\n      />\n    </el-tabs>\n    <div class=\"el-tabs-Line-pane\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { definePropType, mutable } from '@pit-element-plus/utils'\nimport type { TabListDatas } from './tabs'\n\ndefineOptions({\n  name: 'TabsLine',\n})\n\nconst props = defineProps({\n  modelValue: {\n    type: [String, Number],\n  },\n  tabListData: {\n    type: definePropType<TabListDatas>(Array),\n    default: () => mutable([]),\n  },\n  noCard: {\n    type: Boolean,\n    default: false,\n  },\n})\n\nconst emit = defineEmits({\n  change: (val: string | number) => val,\n})\n\nconst getValue = computed({\n  get() {\n    return props.modelValue as string | number\n  },\n  set(val: string | number) {\n    emit('change', val)\n  },\n})\n</script>\n","import { defineComponent, renderSlot } from 'vue'\nimport { buildProps, definePropType, mutable } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport tabsCard from './tabsCard.vue'\nimport tabsLine from './tabsLine.vue'\nimport type { BaseTabsPaneContext } from './constants'\nimport type { ExtractPropTypes } from 'vue'\n\nexport interface TabListData {\n  name: string | number\n  label: string | number\n}\n\nexport type TabListDatas = TabListData[]\n\nexport const baseTabsProps = buildProps({\n  modelValue: {\n    type: [String, Number],\n  },\n  tabListData: {\n    type: definePropType<TabListDatas>(Array),\n    default: () => mutable([]),\n  },\n  noCard: {\n    type: Boolean,\n    default: false,\n  },\n} as const)\n\nexport type BaseTabsProps = ExtractPropTypes<typeof baseTabsProps>\n\nexport const baseTabsEmits = {\n  [UPDATE_MODEL_EVENT]: (name: string | number) => name,\n  change: (name: string | number) => name,\n}\nexport type BaseTabsEmits = typeof baseTabsEmits\n\nexport type BaseTabsPanes = Record<number, BaseTabsPaneContext>\n\nexport default defineComponent({\n  name: 'ElBaseTabs',\n\n  components: {\n    tabsCard,\n    tabsLine,\n  },\n\n  props: baseTabsProps,\n  emits: baseTabsEmits,\n\n  setup(props: BaseTabsProps, { emit, slots }) {\n    const handleChange = function (val: string | number) {\n      emit('update:modelValue', val)\n      emit('change', val)\n    }\n    return () => {\n      if (props.noCard) {\n        return (\n          <tabsLine\n            v-model={props.modelValue}\n            tabListData={props.tabListData}\n            noCard={props.noCard}\n            onChange={handleChange}\n          >\n            {renderSlot(slots, 'default')}\n          </tabsLine>\n        )\n      } else {\n        return (\n          <tabsCard\n            v-model={props.modelValue}\n            tabListData={props.tabListData}\n            noCard={props.noCard}\n            onChange={handleChange}\n          >\n            {renderSlot(slots, 'default')}\n          </tabsCard>\n        )\n      }\n    }\n  },\n})\n","import { withInstall } from '@pit-element-plus/utils'\nimport BaseTabs from './src/tabs'\n\nexport const ElBaseTabs = withInstall(BaseTabs)\nexport default ElBaseTabs\n\nexport * from './src/tabs'\n","import { buildProps, iconPropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\n\nexport interface BreadcrumbProps {\n  /**\n   * @description separator character\n   */\n  separator?: string\n  /**\n   * @description icon component of icon separator\n   */\n  separatorIcon?: IconPropType\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `BreadcrumbProps` instead.\n */\nexport const breadcrumbProps = buildProps({\n  /**\n   * @description separator character\n   */\n  separator: {\n    type: String,\n    default: '/',\n  },\n  /**\n   * @description icon component of icon separator\n   */\n  separatorIcon: {\n    type: iconPropType,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `BreadcrumbProps` instead.\n */\nexport type BreadcrumbPropsPublic = ExtractPublicPropTypes<\n  typeof breadcrumbProps\n>\n","import type { InjectionKey } from 'vue'\nimport type { BreadcrumbProps } from './breadcrumb'\n\nexport const breadcrumbKey: InjectionKey<BreadcrumbProps> =\n  Symbol('breadcrumbKey')\n","<template>\n  <div\n    ref=\"breadcrumb\"\n    :class=\"ns.b()\"\n    :aria-label=\"t('el.breadcrumb.label')\"\n    role=\"navigation\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onMounted, provide, ref } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { breadcrumbKey } from './constants'\n\nimport type { BreadcrumbProps } from './breadcrumb'\n\ndefineOptions({\n  name: 'ElBreadcrumb',\n})\n\nconst { t } = useLocale()\nconst props = withDefaults(defineProps<BreadcrumbProps>(), {\n  separator: '/',\n})\n\nconst ns = useNamespace('breadcrumb')\nconst breadcrumb = ref<HTMLDivElement>()\n\nprovide(breadcrumbKey, props)\n\nonMounted(() => {\n  const items = breadcrumb.value!.querySelectorAll(`.${ns.e('item')}`)\n  if (items.length) {\n    items[items.length - 1].setAttribute('aria-current', 'page')\n  }\n})\n</script>\n","<template>\n  <div\n    ref=\"breadcrumb\"\n    :class=\"ns.b()\"\n    :aria-label=\"t('el.breadcrumb.label')\"\n    role=\"navigation\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onMounted, provide, ref } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { breadcrumbKey } from './constants'\n\nimport type { BreadcrumbProps } from './breadcrumb'\n\ndefineOptions({\n  name: 'ElBreadcrumb',\n})\n\nconst { t } = useLocale()\nconst props = withDefaults(defineProps<BreadcrumbProps>(), {\n  separator: '/',\n})\n\nconst ns = useNamespace('breadcrumb')\nconst breadcrumb = ref<HTMLDivElement>()\n\nprovide(breadcrumbKey, props)\n\nonMounted(() => {\n  const items = breadcrumb.value!.querySelectorAll(`.${ns.e('item')}`)\n  if (items.length) {\n    items[items.length - 1].setAttribute('aria-current', 'page')\n  }\n})\n</script>\n","<template>\n  <div\n    ref=\"breadcrumb\"\n    :class=\"ns.b()\"\n    :aria-label=\"t('el.breadcrumb.label')\"\n    role=\"navigation\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onMounted, provide, ref } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { breadcrumbKey } from './constants'\n\nimport type { BreadcrumbProps } from './breadcrumb'\n\ndefineOptions({\n  name: 'ElBreadcrumb',\n})\n\nconst { t } = useLocale()\nconst props = withDefaults(defineProps<BreadcrumbProps>(), {\n  separator: '/',\n})\n\nconst ns = useNamespace('breadcrumb')\nconst breadcrumb = ref<HTMLDivElement>()\n\nprovide(breadcrumbKey, props)\n\nonMounted(() => {\n  const items = breadcrumb.value!.querySelectorAll(`.${ns.e('item')}`)\n  if (items.length) {\n    items[items.length - 1].setAttribute('aria-current', 'page')\n  }\n})\n</script>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\n\nexport interface BreadcrumbItemProps {\n  /**\n   * @description target route of the link, same as `to` of `vue-router`\n   */\n  to?: RouteLocationRaw\n  /**\n   * @description if `true`, the navigation will not leave a history record\n   */\n  replace?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `BreadcrumbItemProps` instead.\n */\nexport const breadcrumbItemProps = buildProps({\n  /**\n   * @description target route of the link, same as `to` of `vue-router`\n   */\n  to: {\n    type: definePropType<RouteLocationRaw>([String, Object]),\n    default: '',\n  },\n  /**\n   * @description if `true`, the navigation will not leave a history record\n   */\n  replace: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `BreadcrumbItemProps` instead.\n */\nexport type BreadcrumbItemPropsPublic = ExtractPublicPropTypes<\n  typeof breadcrumbItemProps\n>\n","<template>\n  <span :class=\"ns.e('item')\">\n    <span\n      :class=\"[ns.e('inner'), ns.is('link', !!to)]\"\n      role=\"link\"\n      @click=\"onClick\"\n    >\n      <slot />\n    </span>\n    <el-icon v-if=\"breadcrumbContext?.separatorIcon\" :class=\"ns.e('separator')\">\n      <component :is=\"breadcrumbContext.separatorIcon\" />\n    </el-icon>\n    <span v-else :class=\"ns.e('separator')\" role=\"presentation\">\n      {{ breadcrumbContext?.separator }}\n    </span>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { getCurrentInstance, inject } from 'vue'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { breadcrumbKey } from './constants'\n\nimport type { Router } from 'vue-router'\nimport type { BreadcrumbItemProps } from './breadcrumb-item'\n\ndefineOptions({\n  name: 'ElBreadcrumbItem',\n})\n\nconst props = withDefaults(defineProps<BreadcrumbItemProps>(), {\n  to: '',\n})\n\nconst instance = getCurrentInstance()!\nconst breadcrumbContext = inject(breadcrumbKey, undefined)\nconst ns = useNamespace('breadcrumb')\n\nconst router = instance.appContext.config.globalProperties.$router as Router\n\nconst onClick = () => {\n  if (!props.to || !router) return\n  props.replace ? router.replace(props.to) : router.push(props.to)\n}\n</script>\n","<template>\n  <span :class=\"ns.e('item')\">\n    <span\n      :class=\"[ns.e('inner'), ns.is('link', !!to)]\"\n      role=\"link\"\n      @click=\"onClick\"\n    >\n      <slot />\n    </span>\n    <el-icon v-if=\"breadcrumbContext?.separatorIcon\" :class=\"ns.e('separator')\">\n      <component :is=\"breadcrumbContext.separatorIcon\" />\n    </el-icon>\n    <span v-else :class=\"ns.e('separator')\" role=\"presentation\">\n      {{ breadcrumbContext?.separator }}\n    </span>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { getCurrentInstance, inject } from 'vue'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { breadcrumbKey } from './constants'\n\nimport type { Router } from 'vue-router'\nimport type { BreadcrumbItemProps } from './breadcrumb-item'\n\ndefineOptions({\n  name: 'ElBreadcrumbItem',\n})\n\nconst props = withDefaults(defineProps<BreadcrumbItemProps>(), {\n  to: '',\n})\n\nconst instance = getCurrentInstance()!\nconst breadcrumbContext = inject(breadcrumbKey, undefined)\nconst ns = useNamespace('breadcrumb')\n\nconst router = instance.appContext.config.globalProperties.$router as Router\n\nconst onClick = () => {\n  if (!props.to || !router) return\n  props.replace ? router.replace(props.to) : router.push(props.to)\n}\n</script>\n","<template>\n  <span :class=\"ns.e('item')\">\n    <span\n      :class=\"[ns.e('inner'), ns.is('link', !!to)]\"\n      role=\"link\"\n      @click=\"onClick\"\n    >\n      <slot />\n    </span>\n    <el-icon v-if=\"breadcrumbContext?.separatorIcon\" :class=\"ns.e('separator')\">\n      <component :is=\"breadcrumbContext.separatorIcon\" />\n    </el-icon>\n    <span v-else :class=\"ns.e('separator')\" role=\"presentation\">\n      {{ breadcrumbContext?.separator }}\n    </span>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { getCurrentInstance, inject } from 'vue'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { breadcrumbKey } from './constants'\n\nimport type { Router } from 'vue-router'\nimport type { BreadcrumbItemProps } from './breadcrumb-item'\n\ndefineOptions({\n  name: 'ElBreadcrumbItem',\n})\n\nconst props = withDefaults(defineProps<BreadcrumbItemProps>(), {\n  to: '',\n})\n\nconst instance = getCurrentInstance()!\nconst breadcrumbContext = inject(breadcrumbKey, undefined)\nconst ns = useNamespace('breadcrumb')\n\nconst router = instance.appContext.config.globalProperties.$router as Router\n\nconst onClick = () => {\n  if (!props.to || !router) return\n  props.replace ? router.replace(props.to) : router.push(props.to)\n}\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Breadcrumb from './src/breadcrumb.vue'\nimport BreadcrumbItem from './src/breadcrumb-item.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElBreadcrumb: SFCWithInstall<typeof Breadcrumb> & {\n  BreadcrumbItem: typeof BreadcrumbItem\n} = withInstall(Breadcrumb, {\n  BreadcrumbItem,\n})\nexport const ElBreadcrumbItem: SFCWithInstall<typeof BreadcrumbItem> =\n  withNoopInstall(BreadcrumbItem)\nexport default ElBreadcrumb\n\nexport * from './src/breadcrumb'\nexport * from './src/breadcrumb-item'\nexport * from './src/constants'\nexport type {\n  BreadcrumbInstance,\n  BreadcrumbItemInstance,\n} from './src/instances'\n","import { useSizeProp } from '@pit-element-plus/hooks'\nimport {\n  buildProps,\n  definePropType,\n  iconPropType,\n} from '@pit-element-plus/utils'\nimport { Loading } from 'pit-element-icons'\n\nimport type { Component, ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { IconPropType } from '@pit-element-plus/utils'\n\nexport const buttonTypes = [\n  'default',\n  'primary',\n  'success',\n  'warning',\n  'info',\n  'danger',\n  /**\n   * @deprecated\n   * Text type will be deprecated in the next major version (3.0.0)\n   */\n  'text',\n  'colour-1',\n  'colour-2',\n  'colour-3',\n  'colour-4',\n  'colour-5',\n  'colour-6',\n  'colour-7',\n  'colour-8',\n  'colour-9',\n  'colour-10',\n  'colour-11',\n  'colour-12',\n  '',\n] as const\nexport const buttonNativeTypes = ['button', 'submit', 'reset'] as const\n\nexport type ButtonType = (typeof buttonTypes)[number]\nexport type ButtonNativeType = (typeof buttonNativeTypes)[number]\n\nexport interface ButtonProps {\n  /**\n   * @description button size\n   */\n  size?: ComponentSize\n  /**\n   * @description disable the button\n   */\n  disabled?: boolean\n  /**\n   * @description button type\n   */\n  type?: ButtonType\n  /**\n   * @description icon component\n   */\n  icon?: IconPropType\n  /**\n   * @description native button type\n   */\n  nativeType?: ButtonNativeType\n  /**\n   * @description determine whether it's loading\n   */\n  loading?: boolean\n  /**\n   * @description customize loading icon component\n   */\n  loadingIcon?: IconPropType\n  /**\n   * @description determine whether it's a plain button\n   */\n  plain?: boolean\n  /**\n   * @description determine whether it's a text button\n   */\n  text?: boolean\n  /**\n   * @description determine whether it's a link button\n   */\n  link?: boolean\n  /**\n   * @description determine whether the text button background color is always on\n   */\n  bg?: boolean\n  /**\n   * @description native button autofocus\n   */\n  autofocus?: boolean\n  /**\n   * @description determine whether it's a round button\n   */\n  round?: boolean\n  /**\n   * @description determine whether it's a circle button\n   */\n  circle?: boolean\n  /**\n   * @description determine whether it's a dashed button\n   */\n  dashed?: boolean\n  /**\n   * @description custom button color, automatically calculate `hover` and `active` color\n   */\n  color?: string\n  /**\n   * @description dark mode, which automatically converts `color` to dark mode colors\n   */\n  dark?: boolean\n  /**\n   * @description automatically insert a space between two chinese characters\n   */\n  autoInsertSpace?: boolean\n  /**\n   * @description custom element tag\n   */\n  tag?: string | Component\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ButtonProps` instead.\n */\nexport const buttonProps = buildProps({\n  /**\n   * @description button size\n   */\n  size: useSizeProp,\n  /**\n   * @description disable the button\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description button type\n   */\n  type: {\n    type: String,\n    values: buttonTypes,\n    default: '',\n  },\n  /**\n   * @description icon component\n   */\n  icon: {\n    type: iconPropType,\n  },\n  /**\n   * @description native button type\n   */\n  nativeType: {\n    type: String,\n    values: buttonNativeTypes,\n    default: 'button',\n  },\n  /**\n   * @description determine whether it's loading\n   */\n  loading: Boolean,\n  /**\n   * @description customize loading icon component\n   */\n  loadingIcon: {\n    type: iconPropType,\n    default: () => Loading,\n  },\n  /**\n   * @description determine whether it's a plain button\n   */\n  plain: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description determine whether it's a text button\n   */\n  text: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description determine whether it's a link button\n   */\n  link: Boolean,\n  /**\n   * @description determine whether the text button background color is always on\n   */\n  bg: Boolean,\n  /**\n   * @description native button autofocus\n   */\n  autofocus: Boolean,\n  /**\n   * @description determine whether it's a round button\n   */\n  round: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description determine whether it's a circle button\n   */\n  circle: Boolean,\n  /**\n   * @description determine whether it's a dashed button\n   */\n  dashed: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description custom button color, automatically calculate `hover` and `active` color\n   */\n  color: String,\n  /**\n   * @description dark mode, which automatically converts `color` to dark mode colors\n   */\n  dark: Boolean,\n  /**\n   * @description automatically insert a space between two chinese characters\n   */\n  autoInsertSpace: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description custom element tag\n   */\n  tag: {\n    type: definePropType<string | Component>([String, Object]),\n    default: 'button',\n  },\n  /**\n   * @description isDisabled\n   */\n  isDisabled: {\n    type: Boolean,\n  },\n} as const)\nexport const buttonEmits = {\n  click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ButtonProps` instead.\n */\nexport type ButtonPropsPublic = ExtractPublicPropTypes<typeof buttonProps>\nexport type ButtonEmits = typeof buttonEmits\n\nexport interface ButtonConfigContext {\n  type?: ButtonProps['type']\n  plain?: ButtonProps['plain']\n  text?: ButtonProps['text']\n  round?: ButtonProps['round']\n  dashed?: ButtonProps['dashed']\n  autoInsertSpace?: ButtonProps['autoInsertSpace']\n}\n","import type { InjectionKey } from 'vue'\nimport type { ButtonProps } from './button'\n\nexport interface ButtonGroupContext {\n  size?: ButtonProps['size']\n  type?: ButtonProps['type']\n}\n\nexport const buttonGroupContextKey: InjectionKey<ButtonGroupContext> = Symbol(\n  'buttonGroupContextKey'\n)\n","import { Text, computed, inject, ref, useSlots } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { useDeprecated } from '@pit-element-plus/hooks'\nimport { buttonGroupContextKey } from './constants'\n\nimport type { SetupContext } from 'vue'\nimport type { ButtonEmits, ButtonProps } from './button'\n\nexport const useButton = (\n  props: ButtonProps,\n  emit: SetupContext<ButtonEmits>['emit']\n) => {\n  useDeprecated(\n    {\n      from: 'type.text',\n      replacement: 'link',\n      version: '3.0.0',\n      scope: 'props',\n      ref: 'https://element-plus.org/en-US/component/button.html#button-attributes',\n    },\n    computed(() => props.type === 'text')\n  )\n\n  const buttonGroupContext = inject(buttonGroupContextKey, undefined)\n  const globalConfig = useGlobalConfig('button')\n  const { form } = useFormItem()\n  const _size = useFormSize(computed(() => buttonGroupContext?.size))\n  // const _disabled = props.isDisabled ? false : useFormDisabled().value\n  const _disabled = computed(() => {\n    return props.isDisabled ? false : useFormDisabled().value\n  })\n  const _ref = ref<HTMLButtonElement>()\n  const slots = useSlots()\n\n  const _type = computed(\n    () =>\n      props.type || buttonGroupContext?.type || globalConfig.value?.type || ''\n  )\n  const autoInsertSpace = computed(\n    () => props.autoInsertSpace ?? globalConfig.value?.autoInsertSpace ?? false\n  )\n  const _plain = computed(\n    () => props.plain ?? globalConfig.value?.plain ?? false\n  )\n  const _round = computed(\n    () => props.round ?? globalConfig.value?.round ?? false\n  )\n  const _text = computed(() => props.text ?? globalConfig.value?.text ?? false)\n  const _dashed = computed(\n    () => props.dashed ?? globalConfig.value?.dashed ?? false\n  )\n\n  const _props = computed(() => {\n    if (props.tag === 'button') {\n      return {\n        ariaDisabled: _disabled.value || props.loading,\n        disabled: _disabled.value || props.loading,\n        autofocus: props.autofocus,\n        type: props.nativeType,\n      }\n    }\n    return {}\n  })\n\n  // add space between two characters in Chinese\n  const shouldAddSpace = computed(() => {\n    const defaultSlot = slots.default?.()\n    if (autoInsertSpace.value && defaultSlot?.length === 1) {\n      const slot = defaultSlot[0]\n      if (slot?.type === Text) {\n        const text = slot.children as string\n        return /^\\p{Unified_Ideograph}{2}$/u.test(text.trim())\n      }\n    }\n    return false\n  })\n\n  const handleClick = debounce((evt: MouseEvent) => {\n    if (_disabled.value || props.loading) {\n      evt.stopPropagation()\n      return\n    }\n    if (props.nativeType === 'reset') {\n      form?.resetFields()\n    }\n    emit('click', evt)\n  }, 200)\n\n  return {\n    _disabled,\n    _size,\n    _type,\n    _ref,\n    _props,\n    _plain,\n    _round,\n    _text,\n    _dashed,\n    shouldAddSpace,\n    handleClick,\n  }\n}\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n    if (isOnePointZero(n)) {\n        n = '100%';\n    }\n    const isPercent = isPercentage(n);\n    n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n    // Automatically convert percentage into number\n    if (isPercent) {\n        n = parseInt(String(n * max), 10) / 100;\n    }\n    // Handle floating point rounding errors\n    if (Math.abs(n - max) < 0.000001) {\n        return 1;\n    }\n    // Convert into [0, 1] range if it isn't already\n    if (max === 360) {\n        // If n is a hue given in degrees,\n        // wrap around out-of-range values into [0, 360] range\n        // then convert into [0, 1].\n        n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n    }\n    else {\n        // If n not a hue given in degrees\n        // Convert into [0, 1] range if it isn't already.\n        n = (n % max) / parseFloat(String(max));\n    }\n    return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n    return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n * @hidden\n */\nexport function isOnePointZero(n) {\n    return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n    return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n    a = parseFloat(a);\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n    return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n    if (Number(n) <= 1) {\n        return `${Number(n) * 100}%`;\n    }\n    return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n    return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util.js';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * <http://www.w3.org/TR/css3-color/>\n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255,\n    };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    let h = 0;\n    let s = 0;\n    const l = (max + min) / 2;\n    if (max === min) {\n        s = 0;\n        h = 0; // achromatic\n    }\n    else {\n        const d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch (max) {\n            case r:\n                h = (g - b) / d + (g < b ? 6 : 0);\n                break;\n            case g:\n                h = (b - r) / d + 2;\n                break;\n            case b:\n                h = (r - g) / d + 4;\n                break;\n            default:\n                break;\n        }\n        h /= 6;\n    }\n    return { h, s, l };\n}\nfunction hue2rgb(p, q, t) {\n    if (t < 0) {\n        t += 1;\n    }\n    if (t > 1) {\n        t -= 1;\n    }\n    if (t < 1 / 6) {\n        return p + (q - p) * (6 * t);\n    }\n    if (t < 1 / 2) {\n        return q;\n    }\n    if (t < 2 / 3) {\n        return p + (q - p) * (2 / 3 - t) * 6;\n    }\n    return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n    let r;\n    let g;\n    let b;\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n    if (s === 0) {\n        // achromatic\n        g = l;\n        b = l;\n        r = l;\n    }\n    else {\n        const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        const p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1 / 3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1 / 3);\n    }\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    let h = 0;\n    const v = max;\n    const d = max - min;\n    const s = max === 0 ? 0 : d / max;\n    if (max === min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch (max) {\n            case r:\n                h = (g - b) / d + (g < b ? 6 : 0);\n                break;\n            case g:\n                h = (b - r) / d + 2;\n                break;\n            case b:\n                h = (r - g) / d + 4;\n                break;\n            default:\n                break;\n        }\n        h /= 6;\n    }\n    return { h, s, v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n    const i = Math.floor(h);\n    const f = h - i;\n    const p = v * (1 - s);\n    const q = v * (1 - f * s);\n    const t = v * (1 - (1 - f) * s);\n    const mod = i % 6;\n    const r = [v, q, p, p, t, v][mod];\n    const g = [t, v, v, q, p, p][mod];\n    const b = [p, p, t, v, v, q][mod];\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255]\n * *Returns:* a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n    const hex = [\n        pad2(Math.round(r).toString(16)),\n        pad2(Math.round(g).toString(16)),\n        pad2(Math.round(b).toString(16)),\n    ];\n    // Return a 3 character hex if possible\n    if (allow3Char &&\n        hex[0].startsWith(hex[0].charAt(1)) &&\n        hex[1].startsWith(hex[1].charAt(1)) &&\n        hex[2].startsWith(hex[2].charAt(1))) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n    return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * *Assumes:* r, g, b are contained in the set [0, 255] and a in [0, 1]\n * *Returns:* a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n    const hex = [\n        pad2(Math.round(r).toString(16)),\n        pad2(Math.round(g).toString(16)),\n        pad2(Math.round(b).toString(16)),\n        pad2(convertDecimalToHex(a)),\n    ];\n    // Return a 4 character hex if possible\n    if (allow4Char &&\n        hex[0].startsWith(hex[0].charAt(1)) &&\n        hex[1].startsWith(hex[1].charAt(1)) &&\n        hex[2].startsWith(hex[2].charAt(1)) &&\n        hex[3].startsWith(hex[3].charAt(1))) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n    return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n *\n * *Assumes:* r, g, b are contained in the set [0, 255] and a in [0, 1]\n * *Returns:* a 8 character argb hex\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n    const hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(Math.round(r).toString(16)),\n        pad2(Math.round(g).toString(16)),\n        pad2(Math.round(b).toString(16)),\n    ];\n    return hex.join('');\n}\n/**\n * Converts CMYK to RBG\n * Assumes c, m, y, k are in the set [0, 100]\n */\nexport function cmykToRgb(c, m, y, k) {\n    const cConv = c / 100;\n    const mConv = m / 100;\n    const yConv = y / 100;\n    const kConv = k / 100;\n    const r = 255 * (1 - cConv) * (1 - kConv);\n    const g = 255 * (1 - mConv) * (1 - kConv);\n    const b = 255 * (1 - yConv) * (1 - kConv);\n    return { r, g, b };\n}\nexport function rgbToCmyk(r, g, b) {\n    let c = 1 - r / 255;\n    let m = 1 - g / 255;\n    let y = 1 - b / 255;\n    let k = Math.min(c, m, y);\n    if (k === 1) {\n        c = 0;\n        m = 0;\n        y = 0;\n    }\n    else {\n        c = ((c - k) / (1 - k)) * 100;\n        m = ((m - k) / (1 - k)) * 100;\n        y = ((y - k) / (1 - k)) * 100;\n    }\n    k *= 100;\n    return {\n        c: Math.round(c),\n        m: Math.round(m),\n        y: Math.round(y),\n        k: Math.round(k),\n    };\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n    return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n    return {\n        r: color >> 16,\n        g: (color & 0xff00) >> 8,\n        b: color & 0xff,\n    };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport const names = {\n    aliceblue: '#f0f8ff',\n    antiquewhite: '#faebd7',\n    aqua: '#00ffff',\n    aquamarine: '#7fffd4',\n    azure: '#f0ffff',\n    beige: '#f5f5dc',\n    bisque: '#ffe4c4',\n    black: '#000000',\n    blanchedalmond: '#ffebcd',\n    blue: '#0000ff',\n    blueviolet: '#8a2be2',\n    brown: '#a52a2a',\n    burlywood: '#deb887',\n    cadetblue: '#5f9ea0',\n    chartreuse: '#7fff00',\n    chocolate: '#d2691e',\n    coral: '#ff7f50',\n    cornflowerblue: '#6495ed',\n    cornsilk: '#fff8dc',\n    crimson: '#dc143c',\n    cyan: '#00ffff',\n    darkblue: '#00008b',\n    darkcyan: '#008b8b',\n    darkgoldenrod: '#b8860b',\n    darkgray: '#a9a9a9',\n    darkgreen: '#006400',\n    darkgrey: '#a9a9a9',\n    darkkhaki: '#bdb76b',\n    darkmagenta: '#8b008b',\n    darkolivegreen: '#556b2f',\n    darkorange: '#ff8c00',\n    darkorchid: '#9932cc',\n    darkred: '#8b0000',\n    darksalmon: '#e9967a',\n    darkseagreen: '#8fbc8f',\n    darkslateblue: '#483d8b',\n    darkslategray: '#2f4f4f',\n    darkslategrey: '#2f4f4f',\n    darkturquoise: '#00ced1',\n    darkviolet: '#9400d3',\n    deeppink: '#ff1493',\n    deepskyblue: '#00bfff',\n    dimgray: '#696969',\n    dimgrey: '#696969',\n    dodgerblue: '#1e90ff',\n    firebrick: '#b22222',\n    floralwhite: '#fffaf0',\n    forestgreen: '#228b22',\n    fuchsia: '#ff00ff',\n    gainsboro: '#dcdcdc',\n    ghostwhite: '#f8f8ff',\n    goldenrod: '#daa520',\n    gold: '#ffd700',\n    gray: '#808080',\n    green: '#008000',\n    greenyellow: '#adff2f',\n    grey: '#808080',\n    honeydew: '#f0fff0',\n    hotpink: '#ff69b4',\n    indianred: '#cd5c5c',\n    indigo: '#4b0082',\n    ivory: '#fffff0',\n    khaki: '#f0e68c',\n    lavenderblush: '#fff0f5',\n    lavender: '#e6e6fa',\n    lawngreen: '#7cfc00',\n    lemonchiffon: '#fffacd',\n    lightblue: '#add8e6',\n    lightcoral: '#f08080',\n    lightcyan: '#e0ffff',\n    lightgoldenrodyellow: '#fafad2',\n    lightgray: '#d3d3d3',\n    lightgreen: '#90ee90',\n    lightgrey: '#d3d3d3',\n    lightpink: '#ffb6c1',\n    lightsalmon: '#ffa07a',\n    lightseagreen: '#20b2aa',\n    lightskyblue: '#87cefa',\n    lightslategray: '#778899',\n    lightslategrey: '#778899',\n    lightsteelblue: '#b0c4de',\n    lightyellow: '#ffffe0',\n    lime: '#00ff00',\n    limegreen: '#32cd32',\n    linen: '#faf0e6',\n    magenta: '#ff00ff',\n    maroon: '#800000',\n    mediumaquamarine: '#66cdaa',\n    mediumblue: '#0000cd',\n    mediumorchid: '#ba55d3',\n    mediumpurple: '#9370db',\n    mediumseagreen: '#3cb371',\n    mediumslateblue: '#7b68ee',\n    mediumspringgreen: '#00fa9a',\n    mediumturquoise: '#48d1cc',\n    mediumvioletred: '#c71585',\n    midnightblue: '#191970',\n    mintcream: '#f5fffa',\n    mistyrose: '#ffe4e1',\n    moccasin: '#ffe4b5',\n    navajowhite: '#ffdead',\n    navy: '#000080',\n    oldlace: '#fdf5e6',\n    olive: '#808000',\n    olivedrab: '#6b8e23',\n    orange: '#ffa500',\n    orangered: '#ff4500',\n    orchid: '#da70d6',\n    palegoldenrod: '#eee8aa',\n    palegreen: '#98fb98',\n    paleturquoise: '#afeeee',\n    palevioletred: '#db7093',\n    papayawhip: '#ffefd5',\n    peachpuff: '#ffdab9',\n    peru: '#cd853f',\n    pink: '#ffc0cb',\n    plum: '#dda0dd',\n    powderblue: '#b0e0e6',\n    purple: '#800080',\n    rebeccapurple: '#663399',\n    red: '#ff0000',\n    rosybrown: '#bc8f8f',\n    royalblue: '#4169e1',\n    saddlebrown: '#8b4513',\n    salmon: '#fa8072',\n    sandybrown: '#f4a460',\n    seagreen: '#2e8b57',\n    seashell: '#fff5ee',\n    sienna: '#a0522d',\n    silver: '#c0c0c0',\n    skyblue: '#87ceeb',\n    slateblue: '#6a5acd',\n    slategray: '#708090',\n    slategrey: '#708090',\n    snow: '#fffafa',\n    springgreen: '#00ff7f',\n    steelblue: '#4682b4',\n    tan: '#d2b48c',\n    teal: '#008080',\n    thistle: '#d8bfd8',\n    tomato: '#ff6347',\n    turquoise: '#40e0d0',\n    violet: '#ee82ee',\n    wheat: '#f5deb3',\n    white: '#ffffff',\n    whitesmoke: '#f5f5f5',\n    yellow: '#ffff00',\n    yellowgreen: '#9acd32',\n};\n","import { cmykToRgb, convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { boundAlpha, convertToPercentage } from './util.js';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * \"cmyk(0, 20, 0, 0)\" or \"cmyk 0 20 0 0\"\n * ```\n */\nexport function inputToRGB(color) {\n    let rgb = { r: 0, g: 0, b: 0 };\n    let a = 1;\n    let s = null;\n    let v = null;\n    let l = null;\n    let ok = false;\n    let format = false;\n    if (typeof color === 'string') {\n        color = stringInputToObject(color);\n    }\n    if (typeof color === 'object') {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = 'hsv';\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = 'hsl';\n        }\n        else if (isValidCSSUnit(color.c) &&\n            isValidCSSUnit(color.m) &&\n            isValidCSSUnit(color.y) &&\n            isValidCSSUnit(color.k)) {\n            rgb = cmykToRgb(color.c, color.m, color.y, color.k);\n            ok = true;\n            format = 'cmyk';\n        }\n        if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n            a = color.a;\n        }\n    }\n    a = boundAlpha(a);\n    return {\n        ok,\n        format: color.format || format,\n        r: Math.min(255, Math.max(rgb.r, 0)),\n        g: Math.min(255, Math.max(rgb.g, 0)),\n        b: Math.min(255, Math.max(rgb.b, 0)),\n        a,\n    };\n}\n// <http://www.w3.org/TR/css3-values/#integers>\nconst CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nconst CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\nconst CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')';\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\n// eslint-disable-next-line prettier/prettier\nconst PERMISSIVE_MATCH3 = '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?';\nconst PERMISSIVE_MATCH4 = \n// eslint-disable-next-line prettier/prettier\n'[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?';\nconst matchers = {\n    CSS_UNIT: new RegExp(CSS_UNIT),\n    rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n    rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n    hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n    hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n    hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n    hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n    cmyk: new RegExp('cmyk' + PERMISSIVE_MATCH4),\n    hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing.  Take in a number of formats, and output an object\n * based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` or `{c, m, y, k}` or `{c, m, y, k, a}`\n */\nexport function stringInputToObject(color) {\n    color = color.trim().toLowerCase();\n    if (color.length === 0) {\n        return false;\n    }\n    let named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color === 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n    }\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    let match = matchers.rgb.exec(color);\n    if (match) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    match = matchers.rgba.exec(color);\n    if (match) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    match = matchers.hsl.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    match = matchers.hsla.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    match = matchers.hsv.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    match = matchers.hsva.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    match = matchers.cmyk.exec(color);\n    if (match) {\n        return {\n            c: match[1],\n            m: match[2],\n            y: match[3],\n            k: match[4],\n        };\n    }\n    match = matchers.hex8.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? 'name' : 'hex8',\n        };\n    }\n    match = matchers.hex6.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? 'name' : 'hex',\n        };\n    }\n    match = matchers.hex4.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1] + match[1]),\n            g: parseIntFromHex(match[2] + match[2]),\n            b: parseIntFromHex(match[3] + match[3]),\n            a: convertHexToDecimal(match[4] + match[4]),\n            format: named ? 'name' : 'hex8',\n        };\n    }\n    match = matchers.hex3.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1] + match[1]),\n            g: parseIntFromHex(match[2] + match[2]),\n            b: parseIntFromHex(match[3] + match[3]),\n            format: named ? 'name' : 'hex',\n        };\n    }\n    return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n    if (typeof color === 'number') {\n        return !Number.isNaN(color);\n    }\n    return matchers.CSS_UNIT.test(color);\n}\n","import { numberInputToObject, rgbaToHex, rgbToCmyk, rgbToHex, rgbToHsl, rgbToHsv, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { inputToRGB } from './format-input.js';\nimport { bound01, boundAlpha, clamp01 } from './util.js';\nexport class TinyColor {\n    constructor(color = '', opts = {}) {\n        // If input is already a tinycolor, return itself\n        if (color instanceof TinyColor) {\n            // eslint-disable-next-line no-constructor-return\n            return color;\n        }\n        if (typeof color === 'number') {\n            color = numberInputToObject(color);\n        }\n        this.originalInput = color;\n        const rgb = inputToRGB(color);\n        this.originalInput = color;\n        this.r = rgb.r;\n        this.g = rgb.g;\n        this.b = rgb.b;\n        this.a = rgb.a;\n        this.roundA = Math.round(100 * this.a) / 100;\n        this.format = opts.format ?? rgb.format;\n        this.gradientType = opts.gradientType;\n        // Don't let the range of [0,255] come back in [0,1].\n        // Potentially lose a little bit of precision here, but will fix issues where\n        // .5 gets interpreted as half of the total, instead of half of 1\n        // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n        if (this.r < 1) {\n            this.r = Math.round(this.r);\n        }\n        if (this.g < 1) {\n            this.g = Math.round(this.g);\n        }\n        if (this.b < 1) {\n            this.b = Math.round(this.b);\n        }\n        this.isValid = rgb.ok;\n    }\n    isDark() {\n        return this.getBrightness() < 128;\n    }\n    isLight() {\n        return !this.isDark();\n    }\n    /**\n     * Returns the perceived brightness of the color, from 0-255.\n     */\n    getBrightness() {\n        // http://www.w3.org/TR/AERT#color-contrast\n        const rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    }\n    /**\n     * Returns the perceived luminance of a color, from 0-1.\n     */\n    getLuminance() {\n        // http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        const rgb = this.toRgb();\n        let R;\n        let G;\n        let B;\n        const RsRGB = rgb.r / 255;\n        const GsRGB = rgb.g / 255;\n        const BsRGB = rgb.b / 255;\n        if (RsRGB <= 0.03928) {\n            R = RsRGB / 12.92;\n        }\n        else {\n            // eslint-disable-next-line prefer-exponentiation-operator\n            R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n        }\n        if (GsRGB <= 0.03928) {\n            G = GsRGB / 12.92;\n        }\n        else {\n            // eslint-disable-next-line prefer-exponentiation-operator\n            G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n        }\n        if (BsRGB <= 0.03928) {\n            B = BsRGB / 12.92;\n        }\n        else {\n            // eslint-disable-next-line prefer-exponentiation-operator\n            B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n        }\n        return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n    }\n    /**\n     * Returns the alpha value of a color, from 0-1.\n     */\n    getAlpha() {\n        return this.a;\n    }\n    /**\n     * Sets the alpha value on the current color.\n     *\n     * @param alpha - The new alpha value. The accepted range is 0-1.\n     */\n    setAlpha(alpha) {\n        this.a = boundAlpha(alpha);\n        this.roundA = Math.round(100 * this.a) / 100;\n        return this;\n    }\n    /**\n     * Returns whether the color is monochrome.\n     */\n    isMonochrome() {\n        const { s } = this.toHsl();\n        return s === 0;\n    }\n    /**\n     * Returns the object as a HSVA object.\n     */\n    toHsv() {\n        const hsv = rgbToHsv(this.r, this.g, this.b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };\n    }\n    /**\n     * Returns the hsva values interpolated into a string with the following format:\n     * \"hsva(xxx, xxx, xxx, xx)\".\n     */\n    toHsvString() {\n        const hsv = rgbToHsv(this.r, this.g, this.b);\n        const h = Math.round(hsv.h * 360);\n        const s = Math.round(hsv.s * 100);\n        const v = Math.round(hsv.v * 100);\n        return this.a === 1 ? `hsv(${h}, ${s}%, ${v}%)` : `hsva(${h}, ${s}%, ${v}%, ${this.roundA})`;\n    }\n    /**\n     * Returns the object as a HSLA object.\n     */\n    toHsl() {\n        const hsl = rgbToHsl(this.r, this.g, this.b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };\n    }\n    /**\n     * Returns the hsla values interpolated into a string with the following format:\n     * \"hsla(xxx, xxx, xxx, xx)\".\n     */\n    toHslString() {\n        const hsl = rgbToHsl(this.r, this.g, this.b);\n        const h = Math.round(hsl.h * 360);\n        const s = Math.round(hsl.s * 100);\n        const l = Math.round(hsl.l * 100);\n        return this.a === 1 ? `hsl(${h}, ${s}%, ${l}%)` : `hsla(${h}, ${s}%, ${l}%, ${this.roundA})`;\n    }\n    /**\n     * Returns the hex value of the color.\n     * @param allow3Char will shorten hex value to 3 char if possible\n     */\n    toHex(allow3Char = false) {\n        return rgbToHex(this.r, this.g, this.b, allow3Char);\n    }\n    /**\n     * Returns the hex value of the color -with a # prefixed.\n     * @param allow3Char will shorten hex value to 3 char if possible\n     */\n    toHexString(allow3Char = false) {\n        return '#' + this.toHex(allow3Char);\n    }\n    /**\n     * Returns the hex 8 value of the color.\n     * @param allow4Char will shorten hex value to 4 char if possible\n     */\n    toHex8(allow4Char = false) {\n        return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\n    }\n    /**\n     * Returns the hex 8 value of the color -with a # prefixed.\n     * @param allow4Char will shorten hex value to 4 char if possible\n     */\n    toHex8String(allow4Char = false) {\n        return '#' + this.toHex8(allow4Char);\n    }\n    /**\n     * Returns the shorter hex value of the color depends on its alpha -with a # prefixed.\n     * @param allowShortChar will shorten hex value to 3 or 4 char if possible\n     */\n    toHexShortString(allowShortChar = false) {\n        return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);\n    }\n    /**\n     * Returns the object as a RGBA object.\n     */\n    toRgb() {\n        return {\n            r: Math.round(this.r),\n            g: Math.round(this.g),\n            b: Math.round(this.b),\n            a: this.a,\n        };\n    }\n    /**\n     * Returns the RGBA values interpolated into a string with the following format:\n     * \"RGBA(xxx, xxx, xxx, xx)\".\n     */\n    toRgbString() {\n        const r = Math.round(this.r);\n        const g = Math.round(this.g);\n        const b = Math.round(this.b);\n        return this.a === 1 ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${this.roundA})`;\n    }\n    /**\n     * Returns the object as a RGBA object.\n     */\n    toPercentageRgb() {\n        const fmt = (x) => `${Math.round(bound01(x, 255) * 100)}%`;\n        return {\n            r: fmt(this.r),\n            g: fmt(this.g),\n            b: fmt(this.b),\n            a: this.a,\n        };\n    }\n    /**\n     * Returns the RGBA relative values interpolated into a string\n     */\n    toPercentageRgbString() {\n        const rnd = (x) => Math.round(bound01(x, 255) * 100);\n        return this.a === 1\n            ? `rgb(${rnd(this.r)}%, ${rnd(this.g)}%, ${rnd(this.b)}%)`\n            : `rgba(${rnd(this.r)}%, ${rnd(this.g)}%, ${rnd(this.b)}%, ${this.roundA})`;\n    }\n    toCmyk() {\n        return {\n            ...rgbToCmyk(this.r, this.g, this.b),\n        };\n    }\n    toCmykString() {\n        const { c, m, y, k } = rgbToCmyk(this.r, this.g, this.b);\n        return `cmyk(${c}, ${m}, ${y}, ${k})`;\n    }\n    /**\n     * The 'real' name of the color -if there is one.\n     */\n    toName() {\n        if (this.a === 0) {\n            return 'transparent';\n        }\n        if (this.a < 1) {\n            return false;\n        }\n        const hex = '#' + rgbToHex(this.r, this.g, this.b, false);\n        for (const [key, value] of Object.entries(names)) {\n            if (hex === value) {\n                return key;\n            }\n        }\n        return false;\n    }\n    toString(format) {\n        const formatSet = Boolean(format);\n        format = format ?? this.format;\n        let formattedString = false;\n        const hasAlpha = this.a < 1 && this.a >= 0;\n        const needsAlphaFormat = !formatSet && hasAlpha && (format.startsWith('hex') || format === 'name');\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === 'name' && this.a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === 'rgb') {\n            formattedString = this.toRgbString();\n        }\n        if (format === 'prgb') {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === 'hex' || format === 'hex6') {\n            formattedString = this.toHexString();\n        }\n        if (format === 'hex3') {\n            formattedString = this.toHexString(true);\n        }\n        if (format === 'hex4') {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === 'hex8') {\n            formattedString = this.toHex8String();\n        }\n        if (format === 'name') {\n            formattedString = this.toName();\n        }\n        if (format === 'hsl') {\n            formattedString = this.toHslString();\n        }\n        if (format === 'hsv') {\n            formattedString = this.toHsvString();\n        }\n        if (format === 'cmyk') {\n            formattedString = this.toCmykString();\n        }\n        return formattedString || this.toHexString();\n    }\n    toNumber() {\n        return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);\n    }\n    clone() {\n        return new TinyColor(this.toString());\n    }\n    /**\n     * Lighten the color a given amount. Providing 100 will always return white.\n     * @param amount - valid between 1-100\n     */\n    lighten(amount = 10) {\n        const hsl = this.toHsl();\n        hsl.l += amount / 100;\n        hsl.l = clamp01(hsl.l);\n        return new TinyColor(hsl);\n    }\n    /**\n     * Brighten the color a given amount, from 0 to 100.\n     * @param amount - valid between 1-100\n     */\n    brighten(amount = 10) {\n        const rgb = this.toRgb();\n        rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n        rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n        rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n        return new TinyColor(rgb);\n    }\n    /**\n     * Darken the color a given amount, from 0 to 100.\n     * Providing 100 will always return black.\n     * @param amount - valid between 1-100\n     */\n    darken(amount = 10) {\n        const hsl = this.toHsl();\n        hsl.l -= amount / 100;\n        hsl.l = clamp01(hsl.l);\n        return new TinyColor(hsl);\n    }\n    /**\n     * Mix the color with pure white, from 0 to 100.\n     * Providing 0 will do nothing, providing 100 will always return white.\n     * @param amount - valid between 1-100\n     */\n    tint(amount = 10) {\n        return this.mix('white', amount);\n    }\n    /**\n     * Mix the color with pure black, from 0 to 100.\n     * Providing 0 will do nothing, providing 100 will always return black.\n     * @param amount - valid between 1-100\n     */\n    shade(amount = 10) {\n        return this.mix('black', amount);\n    }\n    /**\n     * Desaturate the color a given amount, from 0 to 100.\n     * Providing 100 will is the same as calling greyscale\n     * @param amount - valid between 1-100\n     */\n    desaturate(amount = 10) {\n        const hsl = this.toHsl();\n        hsl.s -= amount / 100;\n        hsl.s = clamp01(hsl.s);\n        return new TinyColor(hsl);\n    }\n    /**\n     * Saturate the color a given amount, from 0 to 100.\n     * @param amount - valid between 1-100\n     */\n    saturate(amount = 10) {\n        const hsl = this.toHsl();\n        hsl.s += amount / 100;\n        hsl.s = clamp01(hsl.s);\n        return new TinyColor(hsl);\n    }\n    /**\n     * Completely desaturates a color into greyscale.\n     * Same as calling `desaturate(100)`\n     */\n    greyscale() {\n        return this.desaturate(100);\n    }\n    /**\n     * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n     * Values outside of this range will be wrapped into this range.\n     */\n    spin(amount) {\n        const hsl = this.toHsl();\n        const hue = (hsl.h + amount) % 360;\n        hsl.h = hue < 0 ? 360 + hue : hue;\n        return new TinyColor(hsl);\n    }\n    /**\n     * Mix the current color a given amount with another color, from 0 to 100.\n     * 0 means no mixing (return current color).\n     */\n    mix(color, amount = 50) {\n        const rgb1 = this.toRgb();\n        const rgb2 = new TinyColor(color).toRgb();\n        const p = amount / 100;\n        const rgba = {\n            r: (rgb2.r - rgb1.r) * p + rgb1.r,\n            g: (rgb2.g - rgb1.g) * p + rgb1.g,\n            b: (rgb2.b - rgb1.b) * p + rgb1.b,\n            a: (rgb2.a - rgb1.a) * p + rgb1.a,\n        };\n        return new TinyColor(rgba);\n    }\n    analogous(results = 6, slices = 30) {\n        const hsl = this.toHsl();\n        const part = 360 / slices;\n        const ret = [this];\n        for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results;) {\n            hsl.h = (hsl.h + part) % 360;\n            ret.push(new TinyColor(hsl));\n        }\n        return ret;\n    }\n    /**\n     * taken from https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js\n     */\n    complement() {\n        const hsl = this.toHsl();\n        hsl.h = (hsl.h + 180) % 360;\n        return new TinyColor(hsl);\n    }\n    monochromatic(results = 6) {\n        const hsv = this.toHsv();\n        const { h } = hsv;\n        const { s } = hsv;\n        let { v } = hsv;\n        const res = [];\n        const modification = 1 / results;\n        while (results--) {\n            res.push(new TinyColor({ h, s, v }));\n            v = (v + modification) % 1;\n        }\n        return res;\n    }\n    splitcomplement() {\n        const hsl = this.toHsl();\n        const { h } = hsl;\n        return [\n            this,\n            new TinyColor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n            new TinyColor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n        ];\n    }\n    /**\n     * Compute how the color would appear on a background\n     */\n    onBackground(background) {\n        const fg = this.toRgb();\n        const bg = new TinyColor(background).toRgb();\n        const alpha = fg.a + bg.a * (1 - fg.a);\n        return new TinyColor({\n            r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha,\n            g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha,\n            b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha,\n            a: alpha,\n        });\n    }\n    /**\n     * Alias for `polyad(3)`\n     */\n    triad() {\n        return this.polyad(3);\n    }\n    /**\n     * Alias for `polyad(4)`\n     */\n    tetrad() {\n        return this.polyad(4);\n    }\n    /**\n     * Get polyad colors, like (for 1, 2, 3, 4, 5, 6, 7, 8, etc...)\n     * monad, dyad, triad, tetrad, pentad, hexad, heptad, octad, etc...\n     */\n    polyad(n) {\n        const hsl = this.toHsl();\n        const { h } = hsl;\n        const result = [this];\n        const increment = 360 / n;\n        for (let i = 1; i < n; i++) {\n            result.push(new TinyColor({ h: (h + i * increment) % 360, s: hsl.s, l: hsl.l }));\n        }\n        return result;\n    }\n    /**\n     * compare color vs current color\n     */\n    equals(color) {\n        const comparedColor = new TinyColor(color);\n        /**\n         * RGB and CMYK do not have the same color gamut, so a CMYK conversion will never be 100%.\n         * This means we need to compare CMYK to CMYK to ensure accuracy of the equals function.\n         */\n        if (this.format === 'cmyk' || comparedColor.format === 'cmyk') {\n            return this.toCmykString() === comparedColor.toCmykString();\n        }\n        return this.toRgbString() === comparedColor.toRgbString();\n    }\n}\n","import { computed } from 'vue'\nimport { TinyColor } from '@ctrl/tinycolor'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { ButtonProps } from './button'\n\nexport function darken(color: TinyColor, amount = 20) {\n  return color.mix('#141414', amount).toString()\n}\n\nexport function useButtonCustomStyle(props: ButtonProps) {\n  const _disabled = useFormDisabled()\n  const ns = useNamespace('button')\n\n  // calculate hover & active color by custom color\n  // only work when custom color\n  return computed(() => {\n    let styles: Record<string, string> = {}\n\n    let buttonColor = props.color\n\n    if (buttonColor) {\n      const match = (buttonColor as string).match(/var\\((.*?)\\)/)\n      if (match) {\n        buttonColor = window\n          .getComputedStyle(window.document.documentElement)\n          .getPropertyValue(match[1])\n      }\n      const color = new TinyColor(buttonColor)\n      const activeBgColor = props.dark\n        ? color.tint(20).toString()\n        : darken(color, 20)\n\n      if (props.plain) {\n        styles = ns.cssVarBlock({\n          'bg-color': props.dark\n            ? darken(color, 90)\n            : color.tint(90).toString(),\n          'text-color': buttonColor,\n          'border-color': props.dark\n            ? darken(color, 50)\n            : color.tint(50).toString(),\n          'hover-text-color': `var(${ns.cssVarName('color-white')})`,\n          'hover-bg-color': buttonColor,\n          'hover-border-color': buttonColor,\n          'active-bg-color': activeBgColor,\n          'active-text-color': `var(${ns.cssVarName('color-white')})`,\n          'active-border-color': activeBgColor,\n        })\n\n        if (_disabled.value) {\n          styles[ns.cssVarBlockName('disabled-bg-color')] = props.dark\n            ? darken(color, 90)\n            : color.tint(90).toString()\n          styles[ns.cssVarBlockName('disabled-text-color')] = props.dark\n            ? darken(color, 50)\n            : color.tint(50).toString()\n          styles[ns.cssVarBlockName('disabled-border-color')] = props.dark\n            ? darken(color, 80)\n            : color.tint(80).toString()\n        }\n      } else {\n        const hoverBgColor = props.dark\n          ? darken(color, 30)\n          : color.tint(30).toString()\n        const textColor = color.isDark()\n          ? `var(${ns.cssVarName('color-white')})`\n          : `var(${ns.cssVarName('color-black')})`\n        styles = ns.cssVarBlock({\n          'bg-color': buttonColor,\n          'text-color': textColor,\n          'border-color': buttonColor,\n          'hover-bg-color': hoverBgColor,\n          'hover-text-color': textColor,\n          'hover-border-color': hoverBgColor,\n          'active-bg-color': activeBgColor,\n          'active-border-color': activeBgColor,\n        })\n\n        if (_disabled.value) {\n          const disabledButtonColor = props.dark\n            ? darken(color, 50)\n            : color.tint(50).toString()\n          styles[ns.cssVarBlockName('disabled-bg-color')] = disabledButtonColor\n          styles[ns.cssVarBlockName('disabled-text-color')] = props.dark\n            ? 'rgba(255, 255, 255, 0.5)'\n            : `var(${ns.cssVarName('color-white')})`\n          styles[ns.cssVarBlockName('disabled-border-color')] =\n            disabledButtonColor\n        }\n      }\n    }\n\n    return styles\n  })\n}\n","<template>\n  <component\n    :is=\"tag\"\n    ref=\"_ref\"\n    v-bind=\"_props\"\n    :class=\"buttonKls\"\n    :style=\"buttonStyle\"\n    @click=\"handleClick\"\n  >\n    <template v-if=\"loading\">\n      <slot v-if=\"$slots.loading\" name=\"loading\" />\n      <el-icon v-else :class=\"ns.is('loading')\">\n        <component :is=\"loadingIcon\" />\n      </el-icon>\n    </template>\n    <el-icon v-else-if=\"icon || $slots.icon\">\n      <component :is=\"icon\" v-if=\"icon\" />\n      <slot v-else name=\"icon\" />\n    </el-icon>\n    <span\n      v-if=\"$slots.default\"\n      :class=\"{ [ns.em('text', 'expand')]: shouldAddSpace }\"\n    >\n      <slot />\n    </span>\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, markRaw } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Loading } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useButton } from './use-button'\nimport { buttonEmits } from './button'\nimport { useButtonCustomStyle } from './button-custom'\n\nimport type { ButtonProps } from './button'\n\ndefineOptions({\n  name: 'ElButton',\n})\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n  disabled: undefined,\n  type: '',\n  nativeType: 'button',\n  loadingIcon: markRaw(Loading),\n  plain: undefined,\n  text: undefined,\n  round: undefined,\n  dashed: undefined,\n  autoInsertSpace: undefined,\n  tag: 'button',\n})\n\nconst emit = defineEmits(buttonEmits)\n\nconst buttonStyle = useButtonCustomStyle(props)\nconst ns = useNamespace('button')\nconst {\n  _ref,\n  _size,\n  _type,\n  _disabled,\n  _props,\n  _plain,\n  _round,\n  _text,\n  _dashed,\n  shouldAddSpace,\n  handleClick,\n} = useButton(props, emit)\nconst buttonKls = computed(() => [\n  ns.b(),\n  ns.m(_type.value),\n  ns.m(_size.value),\n  ns.is('disabled', _disabled.value),\n  ns.is('loading', props.loading),\n  ns.is('plain', _plain.value),\n  ns.is('round', _round.value),\n  ns.is('circle', props.circle),\n  ns.is('text', _text.value),\n  ns.is('dashed', _dashed.value),\n  ns.is('link', props.link),\n  ns.is('has-bg', props.bg),\n])\n\ndefineExpose({\n  /** @description button html element */\n  ref: _ref,\n  /** @description button size */\n  size: _size,\n  /** @description button type */\n  type: _type,\n  /** @description button disabled */\n  disabled: _disabled,\n  /** @description whether adding space */\n  shouldAddSpace,\n})\n</script>\n","<template>\n  <component\n    :is=\"tag\"\n    ref=\"_ref\"\n    v-bind=\"_props\"\n    :class=\"buttonKls\"\n    :style=\"buttonStyle\"\n    @click=\"handleClick\"\n  >\n    <template v-if=\"loading\">\n      <slot v-if=\"$slots.loading\" name=\"loading\" />\n      <el-icon v-else :class=\"ns.is('loading')\">\n        <component :is=\"loadingIcon\" />\n      </el-icon>\n    </template>\n    <el-icon v-else-if=\"icon || $slots.icon\">\n      <component :is=\"icon\" v-if=\"icon\" />\n      <slot v-else name=\"icon\" />\n    </el-icon>\n    <span\n      v-if=\"$slots.default\"\n      :class=\"{ [ns.em('text', 'expand')]: shouldAddSpace }\"\n    >\n      <slot />\n    </span>\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, markRaw } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Loading } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useButton } from './use-button'\nimport { buttonEmits } from './button'\nimport { useButtonCustomStyle } from './button-custom'\n\nimport type { ButtonProps } from './button'\n\ndefineOptions({\n  name: 'ElButton',\n})\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n  disabled: undefined,\n  type: '',\n  nativeType: 'button',\n  loadingIcon: markRaw(Loading),\n  plain: undefined,\n  text: undefined,\n  round: undefined,\n  dashed: undefined,\n  autoInsertSpace: undefined,\n  tag: 'button',\n})\n\nconst emit = defineEmits(buttonEmits)\n\nconst buttonStyle = useButtonCustomStyle(props)\nconst ns = useNamespace('button')\nconst {\n  _ref,\n  _size,\n  _type,\n  _disabled,\n  _props,\n  _plain,\n  _round,\n  _text,\n  _dashed,\n  shouldAddSpace,\n  handleClick,\n} = useButton(props, emit)\nconst buttonKls = computed(() => [\n  ns.b(),\n  ns.m(_type.value),\n  ns.m(_size.value),\n  ns.is('disabled', _disabled.value),\n  ns.is('loading', props.loading),\n  ns.is('plain', _plain.value),\n  ns.is('round', _round.value),\n  ns.is('circle', props.circle),\n  ns.is('text', _text.value),\n  ns.is('dashed', _dashed.value),\n  ns.is('link', props.link),\n  ns.is('has-bg', props.bg),\n])\n\ndefineExpose({\n  /** @description button html element */\n  ref: _ref,\n  /** @description button size */\n  size: _size,\n  /** @description button type */\n  type: _type,\n  /** @description button disabled */\n  disabled: _disabled,\n  /** @description whether adding space */\n  shouldAddSpace,\n})\n</script>\n","<template>\n  <component\n    :is=\"tag\"\n    ref=\"_ref\"\n    v-bind=\"_props\"\n    :class=\"buttonKls\"\n    :style=\"buttonStyle\"\n    @click=\"handleClick\"\n  >\n    <template v-if=\"loading\">\n      <slot v-if=\"$slots.loading\" name=\"loading\" />\n      <el-icon v-else :class=\"ns.is('loading')\">\n        <component :is=\"loadingIcon\" />\n      </el-icon>\n    </template>\n    <el-icon v-else-if=\"icon || $slots.icon\">\n      <component :is=\"icon\" v-if=\"icon\" />\n      <slot v-else name=\"icon\" />\n    </el-icon>\n    <span\n      v-if=\"$slots.default\"\n      :class=\"{ [ns.em('text', 'expand')]: shouldAddSpace }\"\n    >\n      <slot />\n    </span>\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, markRaw } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Loading } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useButton } from './use-button'\nimport { buttonEmits } from './button'\nimport { useButtonCustomStyle } from './button-custom'\n\nimport type { ButtonProps } from './button'\n\ndefineOptions({\n  name: 'ElButton',\n})\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n  disabled: undefined,\n  type: '',\n  nativeType: 'button',\n  loadingIcon: markRaw(Loading),\n  plain: undefined,\n  text: undefined,\n  round: undefined,\n  dashed: undefined,\n  autoInsertSpace: undefined,\n  tag: 'button',\n})\n\nconst emit = defineEmits(buttonEmits)\n\nconst buttonStyle = useButtonCustomStyle(props)\nconst ns = useNamespace('button')\nconst {\n  _ref,\n  _size,\n  _type,\n  _disabled,\n  _props,\n  _plain,\n  _round,\n  _text,\n  _dashed,\n  shouldAddSpace,\n  handleClick,\n} = useButton(props, emit)\nconst buttonKls = computed(() => [\n  ns.b(),\n  ns.m(_type.value),\n  ns.m(_size.value),\n  ns.is('disabled', _disabled.value),\n  ns.is('loading', props.loading),\n  ns.is('plain', _plain.value),\n  ns.is('round', _round.value),\n  ns.is('circle', props.circle),\n  ns.is('text', _text.value),\n  ns.is('dashed', _dashed.value),\n  ns.is('link', props.link),\n  ns.is('has-bg', props.bg),\n])\n\ndefineExpose({\n  /** @description button html element */\n  ref: _ref,\n  /** @description button size */\n  size: _size,\n  /** @description button type */\n  type: _type,\n  /** @description button disabled */\n  disabled: _disabled,\n  /** @description whether adding space */\n  shouldAddSpace,\n})\n</script>\n","import { definePropType } from '@pit-element-plus/utils'\nimport { buttonProps } from './button'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ButtonProps } from './button'\n\nexport interface ButtonGroupProps {\n  /**\n   * @description control the size of buttons in this button-group\n   */\n  size?: ButtonProps['size']\n  /**\n   * @description control the type of buttons in this button-group\n   */\n  type?: ButtonProps['type']\n  /**\n   * @description display direction\n   */\n  direction?: 'horizontal' | 'vertical'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ButtonGroupProps` instead.\n */\nexport const buttonGroupProps = {\n  /**\n   * @description control the size of buttons in this button-group\n   */\n  size: buttonProps.size,\n  /**\n   * @description control the type of buttons in this button-group\n   */\n  type: buttonProps.type,\n  /**\n   * @description display direction\n   */\n  direction: {\n    type: definePropType<'horizontal' | 'vertical'>(String),\n    values: ['horizontal', 'vertical'],\n    default: 'horizontal',\n  },\n} as const\n\n/**\n * @deprecated Removed after 3.0.0, Use `ButtonGroupProps` instead.\n */\nexport type ButtonGroupPropsPublic = ExtractPublicPropTypes<\n  typeof buttonGroupProps\n>\n","<template>\n  <div :class=\"[ns.b('group'), ns.bm('group', props.direction)]\">\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { provide, reactive, toRef } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { buttonGroupContextKey } from './constants'\n\nimport type { ButtonGroupProps } from './button-group'\n\ndefineOptions({\n  name: 'ElButtonGroup',\n})\nconst props = withDefaults(defineProps<ButtonGroupProps>(), {\n  direction: 'horizontal',\n  type: '',\n})\nprovide(\n  buttonGroupContextKey,\n  reactive({\n    size: toRef(props, 'size'),\n    type: toRef(props, 'type'),\n  })\n)\nconst ns = useNamespace('button')\n</script>\n","<template>\n  <div :class=\"[ns.b('group'), ns.bm('group', props.direction)]\">\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { provide, reactive, toRef } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { buttonGroupContextKey } from './constants'\n\nimport type { ButtonGroupProps } from './button-group'\n\ndefineOptions({\n  name: 'ElButtonGroup',\n})\nconst props = withDefaults(defineProps<ButtonGroupProps>(), {\n  direction: 'horizontal',\n  type: '',\n})\nprovide(\n  buttonGroupContextKey,\n  reactive({\n    size: toRef(props, 'size'),\n    type: toRef(props, 'type'),\n  })\n)\nconst ns = useNamespace('button')\n</script>\n","<template>\n  <div :class=\"[ns.b('group'), ns.bm('group', props.direction)]\">\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { provide, reactive, toRef } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { buttonGroupContextKey } from './constants'\n\nimport type { ButtonGroupProps } from './button-group'\n\ndefineOptions({\n  name: 'ElButtonGroup',\n})\nconst props = withDefaults(defineProps<ButtonGroupProps>(), {\n  direction: 'horizontal',\n  type: '',\n})\nprovide(\n  buttonGroupContextKey,\n  reactive({\n    size: toRef(props, 'size'),\n    type: toRef(props, 'type'),\n  })\n)\nconst ns = useNamespace('button')\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Button from './src/button.vue'\nimport ButtonGroup from './src/button-group.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElButton: SFCWithInstall<typeof Button> & {\n  ButtonGroup: typeof ButtonGroup\n} = withInstall(Button, {\n  ButtonGroup,\n})\nexport const ElButtonGroup: SFCWithInstall<typeof ButtonGroup> =\n  withNoopInstall(ButtonGroup)\nexport default ElButton\n\nexport * from './src/button'\nexport * from './src/constants'\nexport type { ButtonInstance, ButtonGroupInstance } from './src/instance'\n","import {\n  buildProps,\n  definePropType,\n  isArray,\n  isDate,\n} from '@pit-element-plus/utils'\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport type CalendarDateType =\n  | 'prev-month'\n  | 'next-month'\n  | 'prev-year'\n  | 'next-year'\n  | 'today'\n\nconst isValidRange = (range: unknown): range is [Date, Date] =>\n  isArray(range) && range.length === 2 && range.every((item) => isDate(item))\n\nexport interface CalendarProps {\n  /**\n   * @description binding value\n   */\n  modelValue?: Date\n  /**\n   * @description time range, including start time and end time.\n   *   Start time must be start day of week, end time must be end day of week, the time span cannot exceed two months.\n   */\n  range?: [Date, Date]\n  /**\n   * @description type of the controller for the Calendar header\n   */\n  controllerType?: 'button' | 'select'\n  /**\n   * @description format label when `controller-type` is 'select'\n   */\n  formatter?: (value: number, type: 'year' | 'month') => string | number\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CalendarProps` instead.\n */\nexport const calendarProps = buildProps({\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: Date,\n  },\n  /**\n   * @description time range, including start time and end time.\n   *   Start time must be start day of week, end time must be end day of week, the time span cannot exceed two months.\n   */\n  range: {\n    type: definePropType<[Date, Date]>(Array),\n    validator: isValidRange,\n  },\n  /**\n   * @description type of the controller for the Calendar header\n   */\n  controllerType: {\n    type: String,\n    values: ['button', 'select'],\n    default: 'button',\n  },\n  /**\n   * @description format label when `controller-type` is 'select'\n   */\n  formatter: {\n    type: definePropType<\n      (value: number, type: 'year' | 'month') => string | number\n    >(Function),\n  },\n} as const)\n\n/**\n *  @deprecated Removed after 3.0.0, Use `CalendarProps` instead.\n */\nexport type CalendarPropsPublic = ExtractPublicPropTypes<typeof calendarProps>\n\nexport const calendarEmits = {\n  [UPDATE_MODEL_EVENT]: (value: Date) => isDate(value),\n  [INPUT_EVENT]: (value: Date) => isDate(value),\n}\nexport type CalendarEmits = typeof calendarEmits\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import type { InjectionKey } from 'vue'\nimport type { CommonPickerContext } from './composables/use-common-picker'\n\nexport const timeUnits = ['hours', 'minutes', 'seconds'] as const\n\nexport const PICKER_BASE_INJECTION_KEY = 'EP_PICKER_BASE'\n\nexport const PICKER_POPPER_OPTIONS_INJECTION_KEY = 'ElPopperOptions'\n\nexport const ROOT_COMMON_PICKER_INJECTION_KEY: InjectionKey<CommonPickerContext> =\n  Symbol('commonPickerContextKey')\n\nexport const DEFAULT_FORMATS_TIME = 'HH:mm:ss'\n\nexport const DEFAULT_FORMATS_DATE = 'YYYY-MM-DD'\n\nexport const DEFAULT_FORMATS_DATEPICKER = {\n  date: DEFAULT_FORMATS_DATE,\n  dates: DEFAULT_FORMATS_DATE,\n  week: 'gggg[w]ww',\n  year: 'YYYY',\n  years: 'YYYY',\n  month: 'YYYY-MM',\n  months: 'YYYY-MM',\n  datetime: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`,\n  monthrange: 'YYYY-MM',\n  yearrange: 'YYYY',\n  daterange: DEFAULT_FORMATS_DATE,\n  datetimerange: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`,\n}\n\nexport type TimeUnit = (typeof timeUnits)[number]\n","import dayjs from 'dayjs'\nimport { isArray, isDate, isEmpty } from '@pit-element-plus/utils'\n\nimport type { Dayjs } from 'dayjs'\nimport type { DateOrDates, DayOrDays } from './common/props'\n\nexport type TimeList = [number | undefined, number, undefined | number]\n\nexport const buildTimeList = (value: number, bound: number): TimeList => {\n  return [\n    value > 0 ? value - 1 : undefined,\n    value,\n    value < bound ? value + 1 : undefined,\n  ]\n}\n\nexport const rangeArr = (n: number) =>\n  Array.from(Array.from({ length: n }).keys())\n\nexport const extractDateFormat = (format: string) => {\n  return format\n    .replace(/\\W?m{1,2}|\\W?ZZ/g, '')\n    .replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi, '')\n    .trim()\n}\n\nexport const extractTimeFormat = (format: string) => {\n  return format\n    .replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?Y{2,4}/g, '')\n    .trim()\n}\n\nexport const dateEquals = function (a: Date | unknown, b: Date | unknown) {\n  const aIsDate = isDate(a)\n  const bIsDate = isDate(b)\n  if (aIsDate && bIsDate) {\n    return a.getTime() === b.getTime()\n  }\n  if (!aIsDate && !bIsDate) {\n    return a === b\n  }\n  return false\n}\n\nexport const valueEquals = function (\n  a: Array<Date> | unknown,\n  b: Array<Date> | unknown\n) {\n  const aIsArray = isArray(a)\n  const bIsArray = isArray(b)\n  if (aIsArray && bIsArray) {\n    if (a.length !== b.length) {\n      return false\n    }\n    return a.every((item, index) => dateEquals(item, b[index]))\n  }\n  if (!aIsArray && !bIsArray) {\n    return dateEquals(a, b)\n  }\n  return false\n}\n\nexport const parseDate = function (\n  date: string | number | Date,\n  format: string | undefined,\n  lang: string\n) {\n  const day =\n    isEmpty(format) || format === 'x'\n      ? dayjs(date).locale(lang)\n      : dayjs(date, format).locale(lang)\n  return day.isValid() ? day : undefined\n}\n\nexport const formatter = function (\n  date: string | number | Date | Dayjs,\n  format: string | undefined,\n  lang: string\n) {\n  if (isEmpty(format)) return date\n  if (format === 'x') return +date\n  return dayjs(date).locale(lang).format(format)\n}\n\nexport const makeList = (total: number, method?: () => number[]) => {\n  const arr: boolean[] = []\n  const disabledArr = method?.()\n  for (let i = 0; i < total; i++) {\n    arr.push(disabledArr?.includes(i) ?? false)\n  }\n  return arr\n}\n\nexport const dayOrDaysToDate = (dayOrDays: DayOrDays): DateOrDates => {\n  return isArray(dayOrDays)\n    ? (dayOrDays.map((d) => d.toDate()) as [Date, Date])\n    : dayOrDays.toDate()\n}\n","import { computed, ref } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useLocale } from '@pit-element-plus/hooks/use-locale'\nimport { isArray } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { dayOrDaysToDate, formatter, parseDate, valueEquals } from '../utils'\n\nimport type { Dayjs } from 'dayjs'\nimport type {\n  DateModelType,\n  DayOrDays,\n  ModelValueType,\n  PickerOptions,\n  SingleOrRange,\n  UserInput,\n} from '../common/props'\n\ninterface CommonPickerProps {\n  modelValue: ModelValueType | null\n  valueFormat?: string\n}\ntype CommonPickerEmits = (\n  event: 'update:modelValue' | 'calendar-change' | 'panel-change',\n  ...args: any[]\n) => void\n\nexport const useCommonPicker = <\n  P extends CommonPickerProps,\n  E extends CommonPickerEmits,\n>(\n  props: P,\n  emit: E\n) => {\n  const { lang } = useLocale()\n  const pickerVisible = ref(false)\n  const pickerActualVisible = ref(false)\n  const userInput = ref<UserInput>(null)\n\n  const valueIsEmpty = computed(() => {\n    const { modelValue } = props\n    return (\n      !modelValue || (isArray(modelValue) && !modelValue.filter(Boolean).length)\n    )\n  })\n\n  const emitInput = (input: SingleOrRange<DateModelType> | null) => {\n    if (!valueEquals(props.modelValue, input)) {\n      let formatted\n      if (isArray(input)) {\n        formatted = input.map((item) =>\n          formatter(item, props.valueFormat, lang.value)\n        )\n      } else if (input) {\n        formatted = formatter(input, props.valueFormat, lang.value)\n      }\n      const emitVal = input ? formatted : input\n      emit(UPDATE_MODEL_EVENT, emitVal, lang.value)\n    }\n  }\n\n  const parsedValue = computed(() => {\n    let dayOrDays: DayOrDays\n    if (valueIsEmpty.value) {\n      if (pickerOptions.value.getDefaultValue) {\n        dayOrDays = pickerOptions.value.getDefaultValue()\n      }\n    } else {\n      if (isArray(props.modelValue)) {\n        dayOrDays = props.modelValue.map((d) =>\n          parseDate(d, props.valueFormat, lang.value)\n        ) as [Dayjs, Dayjs]\n      } else {\n        dayOrDays = parseDate(\n          props.modelValue ?? '',\n          props.valueFormat,\n          lang.value\n        )!\n      }\n    }\n\n    if (pickerOptions.value.getRangeAvailableTime) {\n      const availableResult = pickerOptions.value.getRangeAvailableTime(\n        dayOrDays!\n      )\n      if (!isEqual(availableResult, dayOrDays!)) {\n        dayOrDays = availableResult\n\n        // The result is corrected only when model-value exists\n        if (!valueIsEmpty.value) {\n          emitInput(dayOrDaysToDate(dayOrDays))\n        }\n      }\n    }\n    if (isArray(dayOrDays!) && dayOrDays.some((day) => !day)) {\n      dayOrDays = [] as unknown as DayOrDays\n    }\n    return dayOrDays!\n  })\n\n  const pickerOptions = ref<Partial<PickerOptions>>({})\n\n  const onSetPickerOption = <T extends keyof PickerOptions>(\n    e: [T, PickerOptions[T]]\n  ) => {\n    pickerOptions.value[e[0]] = e[1]\n    pickerOptions.value.panelReady = true\n  }\n\n  const onCalendarChange = (e: [Date, null | Date]) => {\n    emit('calendar-change', e)\n  }\n\n  const onPanelChange = (\n    value: [Dayjs, Dayjs],\n    mode: 'month' | 'year',\n    view: unknown\n  ) => {\n    emit('panel-change', value, mode, view)\n  }\n\n  const onPick = (date: any = '', visible = false) => {\n    pickerVisible.value = visible\n    let result\n    if (isArray(date)) {\n      result = date.map((_) => _.toDate())\n    } else {\n      // clear btn emit null\n      result = date ? date.toDate() : date\n    }\n    userInput.value = null\n    emitInput(result)\n  }\n\n  return {\n    parsedValue,\n    pickerActualVisible,\n    pickerOptions,\n    pickerVisible,\n    userInput,\n    valueIsEmpty,\n    emitInput,\n    onCalendarChange,\n    onPanelChange,\n    onPick,\n    onSetPickerOption,\n  }\n}\n\nexport type CommonPickerContext = ReturnType<typeof useCommonPicker>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type {\n  GetDisabledHours,\n  GetDisabledMinutes,\n  GetDisabledSeconds,\n} from '../common/props'\n\nexport const disabledTimeListsProps = buildProps({\n  /**\n   * @description To specify the array of hours that cannot be selected\n   */\n  disabledHours: {\n    type: definePropType<GetDisabledHours>(Function),\n  },\n  /**\n   * @description To specify the array of minutes that cannot be selected\n   */\n  disabledMinutes: {\n    type: definePropType<GetDisabledMinutes>(Function),\n  },\n  /**\n   * @description To specify the array of seconds that cannot be selected\n   */\n  disabledSeconds: {\n    type: definePropType<GetDisabledSeconds>(Function),\n  },\n} as const)\n\nexport type DisabledTimeListsProps = ExtractPropTypes<\n  typeof disabledTimeListsProps\n>\nexport type DisabledTimeListsPropsPublic = ExtractPublicPropTypes<\n  typeof disabledTimeListsProps\n>\n\nexport const timePanelSharedProps = buildProps({\n  visible: Boolean,\n  actualVisible: {\n    type: Boolean,\n    default: undefined,\n  },\n  format: {\n    type: String,\n    default: '',\n  },\n} as const)\n\nexport type TimePanelSharedProps = ExtractPropTypes<typeof timePanelSharedProps>\nexport type TimePanelSharedPropsPublic = ExtractPublicPropTypes<\n  typeof timePanelSharedProps\n>\n","import { placements } from '@popperjs/core'\nimport { buildProps, definePropType } from '@pit-element-plus/utils'\nimport {\n  useAriaProps,\n  useEmptyValuesProps,\n  useSizeProp,\n} from '@pit-element-plus/hooks'\nimport { useTooltipContentProps } from '@pit-element-plus/components/tooltip'\nimport { CircleClose } from 'pit-element-icons'\nimport { disabledTimeListsProps } from '../props/shared'\n\nimport type { Component, ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { Options } from '@popperjs/core'\nimport type { Dayjs } from 'dayjs'\nimport type { Placement } from '@pit-element-plus/components/popper'\n\nexport type SingleOrRange<T> = T | [T, T]\nexport type DateModelType = number | string | Date\nexport type ModelValueType = DateModelType | number[] | string[] | Date[]\nexport type DayOrDays = SingleOrRange<Dayjs>\nexport type DateOrDates = SingleOrRange<Date>\nexport type UserInput = SingleOrRange<string | null>\nexport type GetDisabledHours = (role: string, comparingDate?: Dayjs) => number[]\nexport type GetDisabledMinutes = (\n  hour: number,\n  role: string,\n  comparingDate?: Dayjs\n) => number[]\nexport type GetDisabledSeconds = (\n  hour: number,\n  minute: number,\n  role: string,\n  comparingDate?: Dayjs\n) => number[]\n\nexport const timePickerDefaultProps = buildProps({\n  /**\n   * @description this prop decides if the date picker panel pops up when the input is focused\n   */\n  automaticDropdown: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description same as `id` in native input\n   */\n  id: {\n    type: definePropType<SingleOrRange<string>>([Array, String]),\n  },\n  /**\n   * @description same as `name` in native input\n   */\n  name: {\n    type: definePropType<SingleOrRange<string>>([Array, String]),\n  },\n  /**\n   * @description custom class name for TimePicker's dropdown\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  /**\n   * @description custom style for TimePicker's dropdown\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description format of the displayed value in the input box\n   */\n  format: String,\n  /**\n   * @description optional, format of binding value. If not specified, the binding value will be a Date object\n   */\n  valueFormat: String,\n  /**\n   * @description optional, format of the date displayed in input's inner panel\n   */\n  dateFormat: String,\n  /**\n   * @description optional, format of the time displayed in input's inner panel\n   */\n  timeFormat: String,\n  /**\n   * @description type of the picker\n   */\n  type: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description whether to show clear button\n   */\n  clearable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Custom clear icon component\n   */\n  clearIcon: {\n    type: definePropType<string | Component>([String, Object]),\n    default: CircleClose,\n  },\n  /**\n   * @description whether the input is editable\n   */\n  editable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Whether to auto-fill the input with the current time on focus when no value is selected.\n   */\n  saveOnBlur: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Custom prefix icon component\n   */\n  prefixIcon: {\n    type: definePropType<string | Component>([String, Object]),\n    default: '',\n  },\n  /**\n   * @description size of Input\n   */\n  size: useSizeProp,\n  /**\n   * @description whether TimePicker is read only\n   */\n  readonly: Boolean,\n  /**\n   * @description whether TimePicker is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description placeholder in non-range mode\n   */\n  placeholder: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions: {\n    type: definePropType<Partial<Options>>(Object),\n    default: () => ({}),\n  },\n  /**\n   * @description binding value, if it is an array, the length should be 2\n   */\n  modelValue: {\n    type: definePropType<ModelValueType | null>([Date, Array, String, Number]),\n    default: '',\n  },\n  /**\n   * @description range separator\n   */\n  rangeSeparator: {\n    type: String,\n    default: '-',\n  },\n  /**\n   * @description placeholder for the start date in range mode\n   */\n  startPlaceholder: String,\n  /**\n   * @description placeholder for the end date in range mode\n   */\n  endPlaceholder: String,\n  /**\n   * @description optional, default date of the calendar\n   */\n  defaultValue: {\n    type: definePropType<SingleOrRange<Date>>([Date, Array]),\n  },\n  /**\n   * @description optional, the time value to use when selecting date range\n   */\n  defaultTime: {\n    type: definePropType<SingleOrRange<Date>>([Date, Array]),\n  },\n  /**\n   * @description whether to pick a time range\n   */\n  isRange: Boolean,\n  ...disabledTimeListsProps,\n  /**\n   * @description a function determining if a date is disabled with that date as its parameter. Should return a Boolean\n   */\n  disabledDate: {\n    type: Function,\n  },\n  /**\n   * @description set custom className\n   */\n  cellClassName: {\n    type: Function,\n  },\n  /**\n   * @description an object array to set shortcut options\n   */\n  shortcuts: {\n    type: Array,\n    default: () => [],\n  },\n  /**\n   * @description whether to pick time using arrow buttons\n   */\n  arrowControl: Boolean,\n  /**\n   * @description input tabindex\n   */\n  tabindex: {\n    type: definePropType<string | number>([String, Number]),\n    default: 0,\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description unlink two date-panels in range-picker\n   */\n  unlinkPanels: Boolean,\n  /**\n   * @description position of dropdown\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    values: placements,\n    default: 'bottom',\n  },\n  /**\n   * @description list of possible positions for dropdown\n   */\n  fallbackPlacements: {\n    type: definePropType<Placement[]>(Array),\n    default: ['bottom', 'top', 'right', 'left'],\n  },\n  ...useEmptyValuesProps,\n  ...useAriaProps(['ariaLabel']),\n  /**\n   * @description whether to show the now button\n   */\n  showNow: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to show footer\n   */\n  showConfirm: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to show footer\n   */\n  showFooter: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to show the number of the calendar week\n   */\n  showWeekNumber: Boolean,\n} as const)\n\nexport type TimePickerDefaultProps = ExtractPropTypes<\n  typeof timePickerDefaultProps\n>\nexport type TimePickerDefaultPropsPublic = ExtractPublicPropTypes<\n  typeof timePickerDefaultProps\n>\n\nexport interface PickerOptions {\n  isValidValue: (date: DayOrDays) => boolean\n  handleKeydownInput: (event: KeyboardEvent) => void\n  parseUserInput: (value: UserInput) => DayOrDays\n  getRangeAvailableTime: (date: DayOrDays) => DayOrDays\n  getDefaultValue: () => DayOrDays\n  panelReady: boolean\n  handleClear: () => void\n  handleFocusPicker?: () => void\n  handleCancel?: () => void\n}\n\nexport const timePickerRangeTriggerProps = buildProps({\n  id: {\n    type: definePropType<string[]>(Array),\n  },\n  name: {\n    type: definePropType<string[]>(Array),\n  },\n  modelValue: {\n    type: definePropType<UserInput>([Array, String]),\n  },\n  startPlaceholder: String,\n  endPlaceholder: String,\n  disabled: Boolean,\n} as const)\n\n/**\n * @deprecated Use `timePickerRangeTriggerProps` instead. This will be removed in future versions.\n */\nexport const timePickerRngeTriggerProps = timePickerRangeTriggerProps\n","<template>\n  <div\n    ref=\"wrapperRef\"\n    :class=\"[nsDate.is('active', isFocused), $attrs.class]\"\n    :style=\"\n      // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n      $attrs.style as CSSProperties\n    \"\n    @click=\"handleClick\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n    @touchstart.passive=\"handleTouchStart\"\n  >\n    <slot name=\"prefix\" />\n    <input\n      v-bind=\"attrs\"\n      :id=\"inputId\"\n      ref=\"inputRef\"\n      :name=\"name && name[0]\"\n      :placeholder=\"startPlaceholder\"\n      :value=\"modelValue && modelValue[0]\"\n      :class=\"nsRange.b('input')\"\n      :disabled=\"disabled\"\n      @input=\"handleStartInput\"\n      @change=\"handleStartChange\"\n    />\n    <slot name=\"range-separator\" />\n    <input\n      v-bind=\"attrs\"\n      :id=\"id && id[1]\"\n      ref=\"endInputRef\"\n      :name=\"name && name[1]\"\n      :placeholder=\"endPlaceholder\"\n      :value=\"modelValue && modelValue[1]\"\n      :class=\"nsRange.b('input')\"\n      :disabled=\"disabled\"\n      @input=\"handleEndInput\"\n      @change=\"handleEndChange\"\n    />\n    <slot name=\"suffix\" />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, ref } from 'vue'\nimport {\n  useAttrs,\n  useFocusController,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport { timePickerRangeTriggerProps } from './props'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\n\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'PickerRangeTrigger',\n  inheritAttrs: false,\n})\n\nconst props = defineProps(timePickerRangeTriggerProps)\nconst emit = defineEmits([\n  'mouseenter',\n  'mouseleave',\n  'click',\n  'touchstart',\n  'focus',\n  'blur',\n  'startInput',\n  'endInput',\n  'startChange',\n  'endChange',\n])\n\nconst { formItem } = useFormItem()\nconst { inputId } = useFormItemInputId(\n  reactive({ id: computed(() => props.id?.[0]) }),\n  {\n    formItemContext: formItem,\n  }\n)\n\nconst attrs = useAttrs()\nconst nsDate = useNamespace('date')\nconst nsRange = useNamespace('range')\n\nconst inputRef = ref<HTMLInputElement>()\nconst endInputRef = ref<HTMLInputElement>()\n\nconst { wrapperRef, isFocused } = useFocusController(inputRef, {\n  disabled: computed(() => props.disabled),\n})\n\nconst handleClick = (evt: MouseEvent) => {\n  emit('click', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n  emit('mouseenter', evt)\n}\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n  emit('mouseleave', evt)\n}\n\nconst handleTouchStart = (evt: TouchEvent) => {\n  emit('touchstart', evt)\n}\n\nconst handleStartInput = (evt: Event) => {\n  emit('startInput', evt)\n}\n\nconst handleEndInput = (evt: Event) => {\n  emit('endInput', evt)\n}\n\nconst handleStartChange = (evt: Event) => {\n  emit('startChange', evt)\n}\n\nconst handleEndChange = (evt: Event) => {\n  emit('endChange', evt)\n}\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n  endInputRef.value?.blur()\n}\n\ndefineExpose({\n  focus,\n  blur,\n})\n</script>\n","<template>\n  <div\n    ref=\"wrapperRef\"\n    :class=\"[nsDate.is('active', isFocused), $attrs.class]\"\n    :style=\"\n      // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n      $attrs.style as CSSProperties\n    \"\n    @click=\"handleClick\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n    @touchstart.passive=\"handleTouchStart\"\n  >\n    <slot name=\"prefix\" />\n    <input\n      v-bind=\"attrs\"\n      :id=\"inputId\"\n      ref=\"inputRef\"\n      :name=\"name && name[0]\"\n      :placeholder=\"startPlaceholder\"\n      :value=\"modelValue && modelValue[0]\"\n      :class=\"nsRange.b('input')\"\n      :disabled=\"disabled\"\n      @input=\"handleStartInput\"\n      @change=\"handleStartChange\"\n    />\n    <slot name=\"range-separator\" />\n    <input\n      v-bind=\"attrs\"\n      :id=\"id && id[1]\"\n      ref=\"endInputRef\"\n      :name=\"name && name[1]\"\n      :placeholder=\"endPlaceholder\"\n      :value=\"modelValue && modelValue[1]\"\n      :class=\"nsRange.b('input')\"\n      :disabled=\"disabled\"\n      @input=\"handleEndInput\"\n      @change=\"handleEndChange\"\n    />\n    <slot name=\"suffix\" />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, ref } from 'vue'\nimport {\n  useAttrs,\n  useFocusController,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport { timePickerRangeTriggerProps } from './props'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\n\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'PickerRangeTrigger',\n  inheritAttrs: false,\n})\n\nconst props = defineProps(timePickerRangeTriggerProps)\nconst emit = defineEmits([\n  'mouseenter',\n  'mouseleave',\n  'click',\n  'touchstart',\n  'focus',\n  'blur',\n  'startInput',\n  'endInput',\n  'startChange',\n  'endChange',\n])\n\nconst { formItem } = useFormItem()\nconst { inputId } = useFormItemInputId(\n  reactive({ id: computed(() => props.id?.[0]) }),\n  {\n    formItemContext: formItem,\n  }\n)\n\nconst attrs = useAttrs()\nconst nsDate = useNamespace('date')\nconst nsRange = useNamespace('range')\n\nconst inputRef = ref<HTMLInputElement>()\nconst endInputRef = ref<HTMLInputElement>()\n\nconst { wrapperRef, isFocused } = useFocusController(inputRef, {\n  disabled: computed(() => props.disabled),\n})\n\nconst handleClick = (evt: MouseEvent) => {\n  emit('click', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n  emit('mouseenter', evt)\n}\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n  emit('mouseleave', evt)\n}\n\nconst handleTouchStart = (evt: TouchEvent) => {\n  emit('touchstart', evt)\n}\n\nconst handleStartInput = (evt: Event) => {\n  emit('startInput', evt)\n}\n\nconst handleEndInput = (evt: Event) => {\n  emit('endInput', evt)\n}\n\nconst handleStartChange = (evt: Event) => {\n  emit('startChange', evt)\n}\n\nconst handleEndChange = (evt: Event) => {\n  emit('endChange', evt)\n}\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n  endInputRef.value?.blur()\n}\n\ndefineExpose({\n  focus,\n  blur,\n})\n</script>\n","<template>\n  <div\n    ref=\"wrapperRef\"\n    :class=\"[nsDate.is('active', isFocused), $attrs.class]\"\n    :style=\"\n      // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n      $attrs.style as CSSProperties\n    \"\n    @click=\"handleClick\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n    @touchstart.passive=\"handleTouchStart\"\n  >\n    <slot name=\"prefix\" />\n    <input\n      v-bind=\"attrs\"\n      :id=\"inputId\"\n      ref=\"inputRef\"\n      :name=\"name && name[0]\"\n      :placeholder=\"startPlaceholder\"\n      :value=\"modelValue && modelValue[0]\"\n      :class=\"nsRange.b('input')\"\n      :disabled=\"disabled\"\n      @input=\"handleStartInput\"\n      @change=\"handleStartChange\"\n    />\n    <slot name=\"range-separator\" />\n    <input\n      v-bind=\"attrs\"\n      :id=\"id && id[1]\"\n      ref=\"endInputRef\"\n      :name=\"name && name[1]\"\n      :placeholder=\"endPlaceholder\"\n      :value=\"modelValue && modelValue[1]\"\n      :class=\"nsRange.b('input')\"\n      :disabled=\"disabled\"\n      @input=\"handleEndInput\"\n      @change=\"handleEndChange\"\n    />\n    <slot name=\"suffix\" />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, ref } from 'vue'\nimport {\n  useAttrs,\n  useFocusController,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport { timePickerRangeTriggerProps } from './props'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\n\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'PickerRangeTrigger',\n  inheritAttrs: false,\n})\n\nconst props = defineProps(timePickerRangeTriggerProps)\nconst emit = defineEmits([\n  'mouseenter',\n  'mouseleave',\n  'click',\n  'touchstart',\n  'focus',\n  'blur',\n  'startInput',\n  'endInput',\n  'startChange',\n  'endChange',\n])\n\nconst { formItem } = useFormItem()\nconst { inputId } = useFormItemInputId(\n  reactive({ id: computed(() => props.id?.[0]) }),\n  {\n    formItemContext: formItem,\n  }\n)\n\nconst attrs = useAttrs()\nconst nsDate = useNamespace('date')\nconst nsRange = useNamespace('range')\n\nconst inputRef = ref<HTMLInputElement>()\nconst endInputRef = ref<HTMLInputElement>()\n\nconst { wrapperRef, isFocused } = useFocusController(inputRef, {\n  disabled: computed(() => props.disabled),\n})\n\nconst handleClick = (evt: MouseEvent) => {\n  emit('click', evt)\n}\n\nconst handleMouseEnter = (evt: MouseEvent) => {\n  emit('mouseenter', evt)\n}\n\nconst handleMouseLeave = (evt: MouseEvent) => {\n  emit('mouseleave', evt)\n}\n\nconst handleTouchStart = (evt: TouchEvent) => {\n  emit('touchstart', evt)\n}\n\nconst handleStartInput = (evt: Event) => {\n  emit('startInput', evt)\n}\n\nconst handleEndInput = (evt: Event) => {\n  emit('endInput', evt)\n}\n\nconst handleStartChange = (evt: Event) => {\n  emit('startChange', evt)\n}\n\nconst handleEndChange = (evt: Event) => {\n  emit('endChange', evt)\n}\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n  endInputRef.value?.blur()\n}\n\ndefineExpose({\n  focus,\n  blur,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"refPopper\"\n    :visible=\"pickerVisible\"\n    effect=\"light\"\n    pure\n    trigger=\"click\"\n    v-bind=\"$attrs\"\n    role=\"dialog\"\n    teleported\n    :transition=\"`${nsDate.namespace.value}-zoom-in-top`\"\n    :popper-class=\"[`${nsDate.namespace.value}-picker__popper`, popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :popper-options=\"elPopperOptions\"\n    :fallback-placements=\"fallbackPlacements\"\n    :gpu-acceleration=\"false\"\n    :placement=\"placement\"\n    :stop-popper-mouse-event=\"false\"\n    :hide-after=\"0\"\n    persistent\n    @before-show=\"onBeforeShow\"\n    @show=\"onShow\"\n    @hide=\"onHide\"\n  >\n    <template #default>\n      <el-input\n        v-if=\"!isRangeInput\"\n        :id=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          id as string\n        \"\n        ref=\"inputRef\"\n        container-role=\"combobox\"\n        :model-value=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          displayValue as string\n        \"\n        :name=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          name as string\n        \"\n        :size=\"pickerSize\"\n        :disabled=\"pickerDisabled\"\n        :placeholder=\"getPlaceholder\"\n        :class=\"[\n          nsDate.b('editor'),\n          nsDate.bm('editor', type),\n          nsDate.is('focus', pickerVisible),\n          $attrs.class,\n        ]\"\n        :style=\"$attrs.style\"\n        :readonly=\"\n          !editable ||\n          readonly ||\n          isDatesPicker ||\n          isMonthsPicker ||\n          isYearsPicker ||\n          type === 'week'\n        \"\n        :aria-label=\"ariaLabel\"\n        :tabindex=\"tabindex\"\n        :validate-event=\"false\"\n        :clearable=\"false\"\n        :is-select=\"false\"\n        @input=\"onUserInput\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @keydown=\"handleKeydownInput\"\n        @change=\"handleChange\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart.passive=\"onTouchStartInput\"\n        @click.stop\n      >\n        <template #prefix>\n          <el-icon\n            v-if=\"triggerIcon\"\n            :class=\"nsInput.e('icon')\"\n            @mousedown.prevent=\"onMouseDownInput\"\n            @touchstart.passive=\"onTouchStartInput\"\n          >\n            <component :is=\"triggerIcon\" />\n          </el-icon>\n        </template>\n        <template #suffix>\n          <el-icon\n            v-if=\"showClearBtn && clearIcon\"\n            :class=\"`${nsInput.e('icon')} clear-icon`\"\n            @mousedown.prevent=\"NOOP\"\n            @click=\"onClear\"\n          >\n            <component :is=\"clearIcon\" />\n          </el-icon>\n        </template>\n      </el-input>\n      <picker-range-trigger\n        v-else\n        :id=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          id as string[]\n        \"\n        ref=\"inputRef\"\n        :model-value=\"displayValue\"\n        :name=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          name as string[]\n        \"\n        :disabled=\"pickerDisabled\"\n        :readonly=\"!editable || readonly\"\n        :start-placeholder=\"getStartPlaceholder\"\n        :end-placeholder=\"getEndPlaceholder\"\n        :class=\"rangeInputKls\"\n        :style=\"$attrs.style\"\n        :aria-label=\"ariaLabel\"\n        :tabindex=\"tabindex\"\n        autocomplete=\"off\"\n        role=\"combobox\"\n        @click=\"onMouseDownInput\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @start-input=\"handleStartInput\"\n        @start-change=\"handleStartChange\"\n        @end-input=\"handleEndInput\"\n        @end-change=\"handleEndChange\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart.passive=\"onTouchStartInput\"\n        @keydown=\"handleKeydownInput\"\n      >\n        <template #prefix>\n          <el-icon\n            v-if=\"triggerIcon\"\n            :class=\"[nsInput.e('icon'), nsRange.e('icon')]\"\n          >\n            <component :is=\"triggerIcon\" />\n          </el-icon>\n        </template>\n        <template #range-separator>\n          <slot name=\"range-separator\">\n            <span :class=\"nsRange.b('separator')\">{{ rangeSeparator }}</span>\n          </slot>\n        </template>\n        <template #suffix>\n          <el-icon\n            v-if=\"clearIcon\"\n            :class=\"clearIconKls\"\n            @mousedown.prevent=\"NOOP\"\n            @click=\"onClear\"\n          >\n            <component :is=\"clearIcon\" />\n          </el-icon>\n        </template>\n      </picker-range-trigger>\n    </template>\n    <template #content>\n      <slot\n        :visible=\"pickerVisible\"\n        :actual-visible=\"pickerActualVisible\"\n        :parsed-value=\"parsedValue\"\n        :format=\"format\"\n        :date-format=\"dateFormat\"\n        :time-format=\"timeFormat\"\n        :unlink-panels=\"unlinkPanels\"\n        :type=\"type\"\n        :default-value=\"defaultValue\"\n        :show-now=\"showNow\"\n        :show-confirm=\"showConfirm\"\n        :show-footer=\"showFooter\"\n        :show-week-number=\"showWeekNumber\"\n        @pick=\"onPick\"\n        @select-range=\"setSelectionRange\"\n        @set-picker-option=\"onSetPickerOption\"\n        @calendar-change=\"onCalendarChange\"\n        @clear=\"onClear\"\n        @panel-change=\"onPanelChange\"\n        @mousedown.stop\n      />\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  provide,\n  ref,\n  unref,\n  useAttrs,\n  watch,\n} from 'vue'\nimport { onClickOutside, unrefElement } from '@vueuse/core'\nimport {\n  useEmptyValues,\n  useFocusController,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport ElInput from '@pit-element-plus/components/input'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { NOOP, debugWarn, getEventCode, isArray } from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { Calendar, Clock } from 'pit-element-icons'\nimport { dayOrDaysToDate, valueEquals } from '../utils'\nimport {\n  PICKER_BASE_INJECTION_KEY,\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n  ROOT_COMMON_PICKER_INJECTION_KEY,\n} from '../constants'\nimport { useCommonPicker } from '../composables/use-common-picker'\nimport { timePickerDefaultProps } from './props'\nimport PickerRangeTrigger from './picker-range-trigger.vue'\n\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance, Ref } from 'vue'\nimport type { Options } from '@popperjs/core'\nimport type { DayOrDays, TimePickerDefaultProps, UserInput } from './props'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\n\ndefineOptions({\n  name: 'Picker',\n})\n\nconst props = defineProps(timePickerDefaultProps)\nconst emit = defineEmits([\n  UPDATE_MODEL_EVENT,\n  CHANGE_EVENT,\n  'focus',\n  'blur',\n  'clear',\n  'calendar-change',\n  'panel-change',\n  'visible-change',\n  'keydown',\n])\nconst attrs = useAttrs()\n\nconst nsDate = useNamespace('date')\nconst nsInput = useNamespace('input')\nconst nsRange = useNamespace('range')\n\nconst { formItem } = useFormItem()\nconst elPopperOptions = inject(\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n  {} as Options\n)\nconst emptyValues = useEmptyValues(props, null)\n\nconst refPopper = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst valueOnOpen = ref<TimePickerDefaultProps['modelValue'] | null>(null)\nlet hasJustTabExitedInput = false\n\nconst pickerDisabled = useFormDisabled()\n\nconst commonPicker = useCommonPicker(props, emit)\nconst {\n  parsedValue,\n  pickerActualVisible,\n  userInput,\n  pickerVisible,\n  pickerOptions,\n  valueIsEmpty,\n  emitInput,\n  onPick,\n  onSetPickerOption,\n  onCalendarChange,\n  onPanelChange,\n} = commonPicker\n\nconst { isFocused, handleFocus, handleBlur } = useFocusController(inputRef, {\n  disabled: pickerDisabled,\n  beforeFocus() {\n    return props.readonly\n  },\n  afterFocus() {\n    if (!props.automaticDropdown) return\n    pickerVisible.value = true\n  },\n  beforeBlur(event) {\n    return (\n      !hasJustTabExitedInput && refPopper.value?.isFocusInsideContent(event)\n    )\n  },\n  afterBlur() {\n    if (isTimePicker.value && !props.saveOnBlur) {\n      if (!valueIsEmpty.value) {\n        pickerOptions.value.handleCancel?.()\n      }\n    } else {\n      handleChange()\n    }\n    pickerVisible.value = false\n    hasJustTabExitedInput = false\n    props.validateEvent &&\n      formItem?.validate('blur').catch((err) => debugWarn(err))\n  },\n})\n\nconst hovering = ref(false)\n\nconst rangeInputKls = computed(() => [\n  nsDate.b('editor'),\n  nsDate.bm('editor', props.type),\n  nsInput.e('wrapper'),\n  nsDate.is('disabled', pickerDisabled.value),\n  nsDate.is('active', pickerVisible.value),\n  nsRange.b('editor'),\n  pickerSize ? nsRange.bm('editor', pickerSize.value) : '',\n  attrs.class,\n])\n\nconst clearIconKls = computed(() => [\n  nsInput.e('icon'),\n  nsRange.e('close-icon'),\n  !showClearBtn.value ? nsRange.em('close-icon', 'hidden') : '',\n])\n\nwatch(pickerVisible, (val) => {\n  if (!val) {\n    userInput.value = null\n    nextTick(() => {\n      emitChange(props.modelValue)\n    })\n  } else {\n    nextTick(() => {\n      if (val) {\n        valueOnOpen.value = props.modelValue\n      }\n    })\n  }\n})\nconst emitChange = (\n  val: TimePickerDefaultProps['modelValue'] | null,\n  isClear?: boolean\n) => {\n  // determine user real change only\n  if (isClear || !valueEquals(val, valueOnOpen.value)) {\n    emit(CHANGE_EVENT, val)\n    // Set the value of valueOnOpen when clearing to avoid triggering change events multiple times.\n    isClear && (valueOnOpen.value = val)\n    props.validateEvent &&\n      formItem?.validate('change').catch((err) => debugWarn(err))\n  }\n}\nconst emitKeydown = (e: KeyboardEvent) => {\n  emit('keydown', e)\n}\n\nconst getPlaceholder = computed(() => {\n  const formItemPlaceholder = formItem?.label ? `请选择${formItem?.label}` : ''\n  return props.placeholder || formItemPlaceholder\n})\n\nconst getStartPlaceholder = computed(() => {\n  const formItemPlaceholder = formItem?.label\n    ? `请选择${formItem?.label}开始时间`\n    : ''\n  return props.startPlaceholder || formItemPlaceholder\n})\n\nconst getEndPlaceholder = computed(() => {\n  const formItemPlaceholder = formItem?.label\n    ? `请选择${formItem?.label}结束时间`\n    : ''\n  return props.endPlaceholder || formItemPlaceholder\n})\n\nconst refInput = computed<HTMLInputElement[]>(() => {\n  if (inputRef.value) {\n    return Array.from<HTMLInputElement>(\n      inputRef.value.$el.querySelectorAll('input')\n    )\n  }\n  return []\n})\n\n// @ts-ignore\nconst setSelectionRange = (start: number, end: number, pos?: 'min' | 'max') => {\n  const _inputs = refInput.value\n  if (!_inputs.length) return\n  if (!pos || pos === 'min') {\n    _inputs[0].setSelectionRange(start, end)\n    _inputs[0].focus()\n  } else if (pos === 'max') {\n    _inputs[1].setSelectionRange(start, end)\n    _inputs[1].focus()\n  }\n}\n\nconst onBeforeShow = () => {\n  pickerActualVisible.value = true\n}\n\nconst onShow = () => {\n  emit('visible-change', true)\n}\n\nconst onHide = () => {\n  pickerActualVisible.value = false\n  pickerVisible.value = false\n  emit('visible-change', false)\n}\n\nconst handleOpen = () => {\n  pickerVisible.value = true\n}\n\nconst handleClose = () => {\n  pickerVisible.value = false\n}\n\nconst displayValue = computed<UserInput>(() => {\n  const formattedValue = formatToString(parsedValue.value)\n  if (isArray(userInput.value)) {\n    return [\n      userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n      userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n    ]\n  } else if (userInput.value !== null) {\n    return userInput.value\n  }\n  if (isTimePicker.value && valueIsEmpty.value && !props.saveOnBlur) return ''\n  if (!isTimePicker.value && valueIsEmpty.value) return ''\n  if (!pickerVisible.value && valueIsEmpty.value) return ''\n  if (formattedValue) {\n    return isDatesPicker.value || isMonthsPicker.value || isYearsPicker.value\n      ? (formattedValue as Array<string>).join(', ')\n      : formattedValue\n  }\n  return ''\n})\n\nconst isTimeLikePicker = computed(() => props.type.includes('time'))\n\nconst isTimePicker = computed(() => props.type.startsWith('time'))\n\nconst isDatesPicker = computed(() => props.type === 'dates')\n\nconst isMonthsPicker = computed(() => props.type === 'months')\n\nconst isYearsPicker = computed(() => props.type === 'years')\n\nconst triggerIcon = computed(\n  () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n)\n\nconst showClearBtn = computed(\n  () =>\n    props.clearable &&\n    !pickerDisabled.value &&\n    !props.readonly &&\n    !valueIsEmpty.value &&\n    (hovering.value || isFocused.value)\n)\n\nconst onClear = (event?: MouseEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (showClearBtn.value) {\n    event?.stopPropagation()\n    // When the handleClear Function was provided, emit null will be executed inside it\n    // There is no need for us to execute emit null twice. #14752\n    if (pickerOptions.value.handleClear) {\n      pickerOptions.value.handleClear()\n    } else {\n      emitInput(emptyValues.valueOnClear.value)\n    }\n    emitChange(emptyValues.valueOnClear.value, true)\n    onHide()\n  }\n  emit('clear')\n}\n\nconst onMouseDownInput = async (event: MouseEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (\n    (event.target as HTMLElement)?.tagName !== 'INPUT' ||\n    isFocused.value ||\n    !props.automaticDropdown\n  ) {\n    pickerVisible.value = true\n  }\n}\nconst onMouseEnter = () => {\n  if (props.readonly || pickerDisabled.value) return\n  if (!valueIsEmpty.value && props.clearable) {\n    hovering.value = true\n  }\n}\nconst onMouseLeave = () => {\n  hovering.value = false\n}\n\nconst onTouchStartInput = (event: TouchEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (\n    (event.touches[0].target as HTMLElement)?.tagName !== 'INPUT' ||\n    isFocused.value ||\n    !props.automaticDropdown\n  ) {\n    pickerVisible.value = true\n  }\n}\n\nconst isRangeInput = computed(() => {\n  return props.type.includes('range')\n})\n\nconst pickerSize = useFormSize()\n\nconst popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n\nconst stophandle = onClickOutside(\n  inputRef as Ref<ComponentPublicInstance>,\n  (e: PointerEvent) => {\n    const unrefedPopperEl = unref(popperEl)\n    const inputEl = unrefElement(inputRef as Ref<ComponentPublicInstance>)\n    if (\n      (unrefedPopperEl &&\n        (e.target === unrefedPopperEl ||\n          e.composedPath().includes(unrefedPopperEl))) ||\n      e.target === inputEl ||\n      (inputEl && e.composedPath().includes(inputEl))\n    )\n      return\n    pickerVisible.value = false\n  }\n)\n\nonBeforeUnmount(() => {\n  stophandle?.()\n})\n\nconst handleChange = () => {\n  if (isTimePicker.value && !props.saveOnBlur) return\n\n  if (userInput.value) {\n    const value = parseUserInputToDayjs(displayValue.value)\n    if (value) {\n      if (isValidValue(value)) {\n        emitInput(dayOrDaysToDate(value))\n      }\n      userInput.value = null\n    }\n  }\n  if (userInput.value === '') {\n    emitInput(emptyValues.valueOnClear.value)\n    emitChange(emptyValues.valueOnClear.value, true)\n    userInput.value = null\n  }\n}\n\nconst parseUserInputToDayjs = (value: UserInput) => {\n  if (!value) return null\n  return pickerOptions.value.parseUserInput!(value)\n}\n\nconst formatToString = (value: DayOrDays) => {\n  if (!value) return null\n  const res = isArray(value)\n    ? value.map((_) => _.format(props.format))\n    : value.format(props.format)\n  return res as UserInput\n}\n\nconst isValidValue = (value: DayOrDays) => {\n  return pickerOptions.value.isValidValue!(value)\n}\n\nconst handleKeydownInput = async (event: Event | KeyboardEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n\n  const code = getEventCode(event as KeyboardEvent)\n  emitKeydown(event as KeyboardEvent)\n  if (code === EVENT_CODE.esc) {\n    if (pickerVisible.value === true) {\n      pickerVisible.value = false\n      event.preventDefault()\n      event.stopPropagation()\n    }\n    return\n  }\n\n  if (code === EVENT_CODE.down) {\n    if (pickerOptions.value.handleFocusPicker) {\n      event.preventDefault()\n      event.stopPropagation()\n    }\n    if (pickerVisible.value === false) {\n      pickerVisible.value = true\n      await nextTick()\n    }\n    if (pickerOptions.value.handleFocusPicker) {\n      pickerOptions.value.handleFocusPicker()\n      return\n    }\n  }\n\n  if (code === EVENT_CODE.tab) {\n    hasJustTabExitedInput = true\n    return\n  }\n\n  if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n    if (!pickerVisible.value) {\n      pickerVisible.value = true\n    } else if (\n      userInput.value === null ||\n      userInput.value === '' ||\n      isValidValue(parseUserInputToDayjs(displayValue.value) as DayOrDays)\n    ) {\n      handleChange()\n      pickerVisible.value = false\n    }\n    event.preventDefault()\n    event.stopPropagation()\n    return\n  }\n\n  // if user is typing, do not let picker handle key input\n  if (userInput.value) {\n    event.stopPropagation()\n    return\n  }\n  if (pickerOptions.value.handleKeydownInput) {\n    pickerOptions.value.handleKeydownInput(event as KeyboardEvent)\n  }\n}\nconst onUserInput = (e: string) => {\n  userInput.value = e\n  // Temporary fix when the picker is dismissed and the input box\n  // is focused, just mimic the behavior of antdesign.\n  if (!pickerVisible.value) {\n    pickerVisible.value = true\n  }\n}\n\nconst handleStartInput = (event: Event) => {\n  const target = event.target as HTMLInputElement\n  if (userInput.value) {\n    userInput.value = [target.value, userInput.value[1]]\n  } else {\n    userInput.value = [target.value, null]\n  }\n}\n\nconst handleEndInput = (event: Event) => {\n  const target = event.target as HTMLInputElement\n  if (userInput.value) {\n    userInput.value = [userInput.value[0], target.value]\n  } else {\n    userInput.value = [null, target.value]\n  }\n}\n\nconst handleStartChange = () => {\n  const values = userInput.value as string[]\n  const value = parseUserInputToDayjs(values && values[0]) as Dayjs\n  const parsedVal = unref(parsedValue) as [Dayjs, Dayjs]\n  if (value && value.isValid()) {\n    userInput.value = [\n      formatToString(value) as string,\n      displayValue.value?.[1] || null,\n    ]\n    const newValue = [value, parsedVal && (parsedVal[1] || null)] as DayOrDays\n    if (isValidValue(newValue)) {\n      emitInput(dayOrDaysToDate(newValue))\n      userInput.value = null\n    }\n  }\n}\n\nconst handleEndChange = () => {\n  const values = unref(userInput) as string[]\n  const value = parseUserInputToDayjs(values && values[1]) as Dayjs\n  const parsedVal = unref(parsedValue) as [Dayjs, Dayjs]\n  if (value && value.isValid()) {\n    userInput.value = [\n      unref(displayValue)?.[0] || null,\n      formatToString(value) as string,\n    ]\n    const newValue = [parsedVal && parsedVal[0], value] as DayOrDays\n    if (isValidValue(newValue)) {\n      emitInput(dayOrDaysToDate(newValue))\n      userInput.value = null\n    }\n  }\n}\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nprovide(PICKER_BASE_INJECTION_KEY, {\n  props,\n  emptyValues,\n})\nprovide(ROOT_COMMON_PICKER_INJECTION_KEY, commonPicker)\n\ndefineExpose({\n  /**\n   * @description focus input box.\n   */\n  focus,\n  /**\n   * @description blur input box.\n   */\n  blur,\n  /**\n   * @description opens picker\n   */\n  handleOpen,\n  /**\n   * @description closes picker\n   */\n  handleClose,\n  /**\n   * @description pick item manually\n   */\n  onPick,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"refPopper\"\n    :visible=\"pickerVisible\"\n    effect=\"light\"\n    pure\n    trigger=\"click\"\n    v-bind=\"$attrs\"\n    role=\"dialog\"\n    teleported\n    :transition=\"`${nsDate.namespace.value}-zoom-in-top`\"\n    :popper-class=\"[`${nsDate.namespace.value}-picker__popper`, popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :popper-options=\"elPopperOptions\"\n    :fallback-placements=\"fallbackPlacements\"\n    :gpu-acceleration=\"false\"\n    :placement=\"placement\"\n    :stop-popper-mouse-event=\"false\"\n    :hide-after=\"0\"\n    persistent\n    @before-show=\"onBeforeShow\"\n    @show=\"onShow\"\n    @hide=\"onHide\"\n  >\n    <template #default>\n      <el-input\n        v-if=\"!isRangeInput\"\n        :id=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          id as string\n        \"\n        ref=\"inputRef\"\n        container-role=\"combobox\"\n        :model-value=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          displayValue as string\n        \"\n        :name=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          name as string\n        \"\n        :size=\"pickerSize\"\n        :disabled=\"pickerDisabled\"\n        :placeholder=\"getPlaceholder\"\n        :class=\"[\n          nsDate.b('editor'),\n          nsDate.bm('editor', type),\n          nsDate.is('focus', pickerVisible),\n          $attrs.class,\n        ]\"\n        :style=\"$attrs.style\"\n        :readonly=\"\n          !editable ||\n          readonly ||\n          isDatesPicker ||\n          isMonthsPicker ||\n          isYearsPicker ||\n          type === 'week'\n        \"\n        :aria-label=\"ariaLabel\"\n        :tabindex=\"tabindex\"\n        :validate-event=\"false\"\n        :clearable=\"false\"\n        :is-select=\"false\"\n        @input=\"onUserInput\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @keydown=\"handleKeydownInput\"\n        @change=\"handleChange\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart.passive=\"onTouchStartInput\"\n        @click.stop\n      >\n        <template #prefix>\n          <el-icon\n            v-if=\"triggerIcon\"\n            :class=\"nsInput.e('icon')\"\n            @mousedown.prevent=\"onMouseDownInput\"\n            @touchstart.passive=\"onTouchStartInput\"\n          >\n            <component :is=\"triggerIcon\" />\n          </el-icon>\n        </template>\n        <template #suffix>\n          <el-icon\n            v-if=\"showClearBtn && clearIcon\"\n            :class=\"`${nsInput.e('icon')} clear-icon`\"\n            @mousedown.prevent=\"NOOP\"\n            @click=\"onClear\"\n          >\n            <component :is=\"clearIcon\" />\n          </el-icon>\n        </template>\n      </el-input>\n      <picker-range-trigger\n        v-else\n        :id=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          id as string[]\n        \"\n        ref=\"inputRef\"\n        :model-value=\"displayValue\"\n        :name=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          name as string[]\n        \"\n        :disabled=\"pickerDisabled\"\n        :readonly=\"!editable || readonly\"\n        :start-placeholder=\"getStartPlaceholder\"\n        :end-placeholder=\"getEndPlaceholder\"\n        :class=\"rangeInputKls\"\n        :style=\"$attrs.style\"\n        :aria-label=\"ariaLabel\"\n        :tabindex=\"tabindex\"\n        autocomplete=\"off\"\n        role=\"combobox\"\n        @click=\"onMouseDownInput\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @start-input=\"handleStartInput\"\n        @start-change=\"handleStartChange\"\n        @end-input=\"handleEndInput\"\n        @end-change=\"handleEndChange\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart.passive=\"onTouchStartInput\"\n        @keydown=\"handleKeydownInput\"\n      >\n        <template #prefix>\n          <el-icon\n            v-if=\"triggerIcon\"\n            :class=\"[nsInput.e('icon'), nsRange.e('icon')]\"\n          >\n            <component :is=\"triggerIcon\" />\n          </el-icon>\n        </template>\n        <template #range-separator>\n          <slot name=\"range-separator\">\n            <span :class=\"nsRange.b('separator')\">{{ rangeSeparator }}</span>\n          </slot>\n        </template>\n        <template #suffix>\n          <el-icon\n            v-if=\"clearIcon\"\n            :class=\"clearIconKls\"\n            @mousedown.prevent=\"NOOP\"\n            @click=\"onClear\"\n          >\n            <component :is=\"clearIcon\" />\n          </el-icon>\n        </template>\n      </picker-range-trigger>\n    </template>\n    <template #content>\n      <slot\n        :visible=\"pickerVisible\"\n        :actual-visible=\"pickerActualVisible\"\n        :parsed-value=\"parsedValue\"\n        :format=\"format\"\n        :date-format=\"dateFormat\"\n        :time-format=\"timeFormat\"\n        :unlink-panels=\"unlinkPanels\"\n        :type=\"type\"\n        :default-value=\"defaultValue\"\n        :show-now=\"showNow\"\n        :show-confirm=\"showConfirm\"\n        :show-footer=\"showFooter\"\n        :show-week-number=\"showWeekNumber\"\n        @pick=\"onPick\"\n        @select-range=\"setSelectionRange\"\n        @set-picker-option=\"onSetPickerOption\"\n        @calendar-change=\"onCalendarChange\"\n        @clear=\"onClear\"\n        @panel-change=\"onPanelChange\"\n        @mousedown.stop\n      />\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  provide,\n  ref,\n  unref,\n  useAttrs,\n  watch,\n} from 'vue'\nimport { onClickOutside, unrefElement } from '@vueuse/core'\nimport {\n  useEmptyValues,\n  useFocusController,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport ElInput from '@pit-element-plus/components/input'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { NOOP, debugWarn, getEventCode, isArray } from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { Calendar, Clock } from 'pit-element-icons'\nimport { dayOrDaysToDate, valueEquals } from '../utils'\nimport {\n  PICKER_BASE_INJECTION_KEY,\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n  ROOT_COMMON_PICKER_INJECTION_KEY,\n} from '../constants'\nimport { useCommonPicker } from '../composables/use-common-picker'\nimport { timePickerDefaultProps } from './props'\nimport PickerRangeTrigger from './picker-range-trigger.vue'\n\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance, Ref } from 'vue'\nimport type { Options } from '@popperjs/core'\nimport type { DayOrDays, TimePickerDefaultProps, UserInput } from './props'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\n\ndefineOptions({\n  name: 'Picker',\n})\n\nconst props = defineProps(timePickerDefaultProps)\nconst emit = defineEmits([\n  UPDATE_MODEL_EVENT,\n  CHANGE_EVENT,\n  'focus',\n  'blur',\n  'clear',\n  'calendar-change',\n  'panel-change',\n  'visible-change',\n  'keydown',\n])\nconst attrs = useAttrs()\n\nconst nsDate = useNamespace('date')\nconst nsInput = useNamespace('input')\nconst nsRange = useNamespace('range')\n\nconst { formItem } = useFormItem()\nconst elPopperOptions = inject(\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n  {} as Options\n)\nconst emptyValues = useEmptyValues(props, null)\n\nconst refPopper = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst valueOnOpen = ref<TimePickerDefaultProps['modelValue'] | null>(null)\nlet hasJustTabExitedInput = false\n\nconst pickerDisabled = useFormDisabled()\n\nconst commonPicker = useCommonPicker(props, emit)\nconst {\n  parsedValue,\n  pickerActualVisible,\n  userInput,\n  pickerVisible,\n  pickerOptions,\n  valueIsEmpty,\n  emitInput,\n  onPick,\n  onSetPickerOption,\n  onCalendarChange,\n  onPanelChange,\n} = commonPicker\n\nconst { isFocused, handleFocus, handleBlur } = useFocusController(inputRef, {\n  disabled: pickerDisabled,\n  beforeFocus() {\n    return props.readonly\n  },\n  afterFocus() {\n    if (!props.automaticDropdown) return\n    pickerVisible.value = true\n  },\n  beforeBlur(event) {\n    return (\n      !hasJustTabExitedInput && refPopper.value?.isFocusInsideContent(event)\n    )\n  },\n  afterBlur() {\n    if (isTimePicker.value && !props.saveOnBlur) {\n      if (!valueIsEmpty.value) {\n        pickerOptions.value.handleCancel?.()\n      }\n    } else {\n      handleChange()\n    }\n    pickerVisible.value = false\n    hasJustTabExitedInput = false\n    props.validateEvent &&\n      formItem?.validate('blur').catch((err) => debugWarn(err))\n  },\n})\n\nconst hovering = ref(false)\n\nconst rangeInputKls = computed(() => [\n  nsDate.b('editor'),\n  nsDate.bm('editor', props.type),\n  nsInput.e('wrapper'),\n  nsDate.is('disabled', pickerDisabled.value),\n  nsDate.is('active', pickerVisible.value),\n  nsRange.b('editor'),\n  pickerSize ? nsRange.bm('editor', pickerSize.value) : '',\n  attrs.class,\n])\n\nconst clearIconKls = computed(() => [\n  nsInput.e('icon'),\n  nsRange.e('close-icon'),\n  !showClearBtn.value ? nsRange.em('close-icon', 'hidden') : '',\n])\n\nwatch(pickerVisible, (val) => {\n  if (!val) {\n    userInput.value = null\n    nextTick(() => {\n      emitChange(props.modelValue)\n    })\n  } else {\n    nextTick(() => {\n      if (val) {\n        valueOnOpen.value = props.modelValue\n      }\n    })\n  }\n})\nconst emitChange = (\n  val: TimePickerDefaultProps['modelValue'] | null,\n  isClear?: boolean\n) => {\n  // determine user real change only\n  if (isClear || !valueEquals(val, valueOnOpen.value)) {\n    emit(CHANGE_EVENT, val)\n    // Set the value of valueOnOpen when clearing to avoid triggering change events multiple times.\n    isClear && (valueOnOpen.value = val)\n    props.validateEvent &&\n      formItem?.validate('change').catch((err) => debugWarn(err))\n  }\n}\nconst emitKeydown = (e: KeyboardEvent) => {\n  emit('keydown', e)\n}\n\nconst getPlaceholder = computed(() => {\n  const formItemPlaceholder = formItem?.label ? `请选择${formItem?.label}` : ''\n  return props.placeholder || formItemPlaceholder\n})\n\nconst getStartPlaceholder = computed(() => {\n  const formItemPlaceholder = formItem?.label\n    ? `请选择${formItem?.label}开始时间`\n    : ''\n  return props.startPlaceholder || formItemPlaceholder\n})\n\nconst getEndPlaceholder = computed(() => {\n  const formItemPlaceholder = formItem?.label\n    ? `请选择${formItem?.label}结束时间`\n    : ''\n  return props.endPlaceholder || formItemPlaceholder\n})\n\nconst refInput = computed<HTMLInputElement[]>(() => {\n  if (inputRef.value) {\n    return Array.from<HTMLInputElement>(\n      inputRef.value.$el.querySelectorAll('input')\n    )\n  }\n  return []\n})\n\n// @ts-ignore\nconst setSelectionRange = (start: number, end: number, pos?: 'min' | 'max') => {\n  const _inputs = refInput.value\n  if (!_inputs.length) return\n  if (!pos || pos === 'min') {\n    _inputs[0].setSelectionRange(start, end)\n    _inputs[0].focus()\n  } else if (pos === 'max') {\n    _inputs[1].setSelectionRange(start, end)\n    _inputs[1].focus()\n  }\n}\n\nconst onBeforeShow = () => {\n  pickerActualVisible.value = true\n}\n\nconst onShow = () => {\n  emit('visible-change', true)\n}\n\nconst onHide = () => {\n  pickerActualVisible.value = false\n  pickerVisible.value = false\n  emit('visible-change', false)\n}\n\nconst handleOpen = () => {\n  pickerVisible.value = true\n}\n\nconst handleClose = () => {\n  pickerVisible.value = false\n}\n\nconst displayValue = computed<UserInput>(() => {\n  const formattedValue = formatToString(parsedValue.value)\n  if (isArray(userInput.value)) {\n    return [\n      userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n      userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n    ]\n  } else if (userInput.value !== null) {\n    return userInput.value\n  }\n  if (isTimePicker.value && valueIsEmpty.value && !props.saveOnBlur) return ''\n  if (!isTimePicker.value && valueIsEmpty.value) return ''\n  if (!pickerVisible.value && valueIsEmpty.value) return ''\n  if (formattedValue) {\n    return isDatesPicker.value || isMonthsPicker.value || isYearsPicker.value\n      ? (formattedValue as Array<string>).join(', ')\n      : formattedValue\n  }\n  return ''\n})\n\nconst isTimeLikePicker = computed(() => props.type.includes('time'))\n\nconst isTimePicker = computed(() => props.type.startsWith('time'))\n\nconst isDatesPicker = computed(() => props.type === 'dates')\n\nconst isMonthsPicker = computed(() => props.type === 'months')\n\nconst isYearsPicker = computed(() => props.type === 'years')\n\nconst triggerIcon = computed(\n  () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n)\n\nconst showClearBtn = computed(\n  () =>\n    props.clearable &&\n    !pickerDisabled.value &&\n    !props.readonly &&\n    !valueIsEmpty.value &&\n    (hovering.value || isFocused.value)\n)\n\nconst onClear = (event?: MouseEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (showClearBtn.value) {\n    event?.stopPropagation()\n    // When the handleClear Function was provided, emit null will be executed inside it\n    // There is no need for us to execute emit null twice. #14752\n    if (pickerOptions.value.handleClear) {\n      pickerOptions.value.handleClear()\n    } else {\n      emitInput(emptyValues.valueOnClear.value)\n    }\n    emitChange(emptyValues.valueOnClear.value, true)\n    onHide()\n  }\n  emit('clear')\n}\n\nconst onMouseDownInput = async (event: MouseEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (\n    (event.target as HTMLElement)?.tagName !== 'INPUT' ||\n    isFocused.value ||\n    !props.automaticDropdown\n  ) {\n    pickerVisible.value = true\n  }\n}\nconst onMouseEnter = () => {\n  if (props.readonly || pickerDisabled.value) return\n  if (!valueIsEmpty.value && props.clearable) {\n    hovering.value = true\n  }\n}\nconst onMouseLeave = () => {\n  hovering.value = false\n}\n\nconst onTouchStartInput = (event: TouchEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (\n    (event.touches[0].target as HTMLElement)?.tagName !== 'INPUT' ||\n    isFocused.value ||\n    !props.automaticDropdown\n  ) {\n    pickerVisible.value = true\n  }\n}\n\nconst isRangeInput = computed(() => {\n  return props.type.includes('range')\n})\n\nconst pickerSize = useFormSize()\n\nconst popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n\nconst stophandle = onClickOutside(\n  inputRef as Ref<ComponentPublicInstance>,\n  (e: PointerEvent) => {\n    const unrefedPopperEl = unref(popperEl)\n    const inputEl = unrefElement(inputRef as Ref<ComponentPublicInstance>)\n    if (\n      (unrefedPopperEl &&\n        (e.target === unrefedPopperEl ||\n          e.composedPath().includes(unrefedPopperEl))) ||\n      e.target === inputEl ||\n      (inputEl && e.composedPath().includes(inputEl))\n    )\n      return\n    pickerVisible.value = false\n  }\n)\n\nonBeforeUnmount(() => {\n  stophandle?.()\n})\n\nconst handleChange = () => {\n  if (isTimePicker.value && !props.saveOnBlur) return\n\n  if (userInput.value) {\n    const value = parseUserInputToDayjs(displayValue.value)\n    if (value) {\n      if (isValidValue(value)) {\n        emitInput(dayOrDaysToDate(value))\n      }\n      userInput.value = null\n    }\n  }\n  if (userInput.value === '') {\n    emitInput(emptyValues.valueOnClear.value)\n    emitChange(emptyValues.valueOnClear.value, true)\n    userInput.value = null\n  }\n}\n\nconst parseUserInputToDayjs = (value: UserInput) => {\n  if (!value) return null\n  return pickerOptions.value.parseUserInput!(value)\n}\n\nconst formatToString = (value: DayOrDays) => {\n  if (!value) return null\n  const res = isArray(value)\n    ? value.map((_) => _.format(props.format))\n    : value.format(props.format)\n  return res as UserInput\n}\n\nconst isValidValue = (value: DayOrDays) => {\n  return pickerOptions.value.isValidValue!(value)\n}\n\nconst handleKeydownInput = async (event: Event | KeyboardEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n\n  const code = getEventCode(event as KeyboardEvent)\n  emitKeydown(event as KeyboardEvent)\n  if (code === EVENT_CODE.esc) {\n    if (pickerVisible.value === true) {\n      pickerVisible.value = false\n      event.preventDefault()\n      event.stopPropagation()\n    }\n    return\n  }\n\n  if (code === EVENT_CODE.down) {\n    if (pickerOptions.value.handleFocusPicker) {\n      event.preventDefault()\n      event.stopPropagation()\n    }\n    if (pickerVisible.value === false) {\n      pickerVisible.value = true\n      await nextTick()\n    }\n    if (pickerOptions.value.handleFocusPicker) {\n      pickerOptions.value.handleFocusPicker()\n      return\n    }\n  }\n\n  if (code === EVENT_CODE.tab) {\n    hasJustTabExitedInput = true\n    return\n  }\n\n  if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n    if (!pickerVisible.value) {\n      pickerVisible.value = true\n    } else if (\n      userInput.value === null ||\n      userInput.value === '' ||\n      isValidValue(parseUserInputToDayjs(displayValue.value) as DayOrDays)\n    ) {\n      handleChange()\n      pickerVisible.value = false\n    }\n    event.preventDefault()\n    event.stopPropagation()\n    return\n  }\n\n  // if user is typing, do not let picker handle key input\n  if (userInput.value) {\n    event.stopPropagation()\n    return\n  }\n  if (pickerOptions.value.handleKeydownInput) {\n    pickerOptions.value.handleKeydownInput(event as KeyboardEvent)\n  }\n}\nconst onUserInput = (e: string) => {\n  userInput.value = e\n  // Temporary fix when the picker is dismissed and the input box\n  // is focused, just mimic the behavior of antdesign.\n  if (!pickerVisible.value) {\n    pickerVisible.value = true\n  }\n}\n\nconst handleStartInput = (event: Event) => {\n  const target = event.target as HTMLInputElement\n  if (userInput.value) {\n    userInput.value = [target.value, userInput.value[1]]\n  } else {\n    userInput.value = [target.value, null]\n  }\n}\n\nconst handleEndInput = (event: Event) => {\n  const target = event.target as HTMLInputElement\n  if (userInput.value) {\n    userInput.value = [userInput.value[0], target.value]\n  } else {\n    userInput.value = [null, target.value]\n  }\n}\n\nconst handleStartChange = () => {\n  const values = userInput.value as string[]\n  const value = parseUserInputToDayjs(values && values[0]) as Dayjs\n  const parsedVal = unref(parsedValue) as [Dayjs, Dayjs]\n  if (value && value.isValid()) {\n    userInput.value = [\n      formatToString(value) as string,\n      displayValue.value?.[1] || null,\n    ]\n    const newValue = [value, parsedVal && (parsedVal[1] || null)] as DayOrDays\n    if (isValidValue(newValue)) {\n      emitInput(dayOrDaysToDate(newValue))\n      userInput.value = null\n    }\n  }\n}\n\nconst handleEndChange = () => {\n  const values = unref(userInput) as string[]\n  const value = parseUserInputToDayjs(values && values[1]) as Dayjs\n  const parsedVal = unref(parsedValue) as [Dayjs, Dayjs]\n  if (value && value.isValid()) {\n    userInput.value = [\n      unref(displayValue)?.[0] || null,\n      formatToString(value) as string,\n    ]\n    const newValue = [parsedVal && parsedVal[0], value] as DayOrDays\n    if (isValidValue(newValue)) {\n      emitInput(dayOrDaysToDate(newValue))\n      userInput.value = null\n    }\n  }\n}\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nprovide(PICKER_BASE_INJECTION_KEY, {\n  props,\n  emptyValues,\n})\nprovide(ROOT_COMMON_PICKER_INJECTION_KEY, commonPicker)\n\ndefineExpose({\n  /**\n   * @description focus input box.\n   */\n  focus,\n  /**\n   * @description blur input box.\n   */\n  blur,\n  /**\n   * @description opens picker\n   */\n  handleOpen,\n  /**\n   * @description closes picker\n   */\n  handleClose,\n  /**\n   * @description pick item manually\n   */\n  onPick,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"refPopper\"\n    :visible=\"pickerVisible\"\n    effect=\"light\"\n    pure\n    trigger=\"click\"\n    v-bind=\"$attrs\"\n    role=\"dialog\"\n    teleported\n    :transition=\"`${nsDate.namespace.value}-zoom-in-top`\"\n    :popper-class=\"[`${nsDate.namespace.value}-picker__popper`, popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :popper-options=\"elPopperOptions\"\n    :fallback-placements=\"fallbackPlacements\"\n    :gpu-acceleration=\"false\"\n    :placement=\"placement\"\n    :stop-popper-mouse-event=\"false\"\n    :hide-after=\"0\"\n    persistent\n    @before-show=\"onBeforeShow\"\n    @show=\"onShow\"\n    @hide=\"onHide\"\n  >\n    <template #default>\n      <el-input\n        v-if=\"!isRangeInput\"\n        :id=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          id as string\n        \"\n        ref=\"inputRef\"\n        container-role=\"combobox\"\n        :model-value=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          displayValue as string\n        \"\n        :name=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          name as string\n        \"\n        :size=\"pickerSize\"\n        :disabled=\"pickerDisabled\"\n        :placeholder=\"getPlaceholder\"\n        :class=\"[\n          nsDate.b('editor'),\n          nsDate.bm('editor', type),\n          nsDate.is('focus', pickerVisible),\n          $attrs.class,\n        ]\"\n        :style=\"$attrs.style\"\n        :readonly=\"\n          !editable ||\n          readonly ||\n          isDatesPicker ||\n          isMonthsPicker ||\n          isYearsPicker ||\n          type === 'week'\n        \"\n        :aria-label=\"ariaLabel\"\n        :tabindex=\"tabindex\"\n        :validate-event=\"false\"\n        :clearable=\"false\"\n        :is-select=\"false\"\n        @input=\"onUserInput\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @keydown=\"handleKeydownInput\"\n        @change=\"handleChange\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart.passive=\"onTouchStartInput\"\n        @click.stop\n      >\n        <template #prefix>\n          <el-icon\n            v-if=\"triggerIcon\"\n            :class=\"nsInput.e('icon')\"\n            @mousedown.prevent=\"onMouseDownInput\"\n            @touchstart.passive=\"onTouchStartInput\"\n          >\n            <component :is=\"triggerIcon\" />\n          </el-icon>\n        </template>\n        <template #suffix>\n          <el-icon\n            v-if=\"showClearBtn && clearIcon\"\n            :class=\"`${nsInput.e('icon')} clear-icon`\"\n            @mousedown.prevent=\"NOOP\"\n            @click=\"onClear\"\n          >\n            <component :is=\"clearIcon\" />\n          </el-icon>\n        </template>\n      </el-input>\n      <picker-range-trigger\n        v-else\n        :id=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          id as string[]\n        \"\n        ref=\"inputRef\"\n        :model-value=\"displayValue\"\n        :name=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          name as string[]\n        \"\n        :disabled=\"pickerDisabled\"\n        :readonly=\"!editable || readonly\"\n        :start-placeholder=\"getStartPlaceholder\"\n        :end-placeholder=\"getEndPlaceholder\"\n        :class=\"rangeInputKls\"\n        :style=\"$attrs.style\"\n        :aria-label=\"ariaLabel\"\n        :tabindex=\"tabindex\"\n        autocomplete=\"off\"\n        role=\"combobox\"\n        @click=\"onMouseDownInput\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @start-input=\"handleStartInput\"\n        @start-change=\"handleStartChange\"\n        @end-input=\"handleEndInput\"\n        @end-change=\"handleEndChange\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart.passive=\"onTouchStartInput\"\n        @keydown=\"handleKeydownInput\"\n      >\n        <template #prefix>\n          <el-icon\n            v-if=\"triggerIcon\"\n            :class=\"[nsInput.e('icon'), nsRange.e('icon')]\"\n          >\n            <component :is=\"triggerIcon\" />\n          </el-icon>\n        </template>\n        <template #range-separator>\n          <slot name=\"range-separator\">\n            <span :class=\"nsRange.b('separator')\">{{ rangeSeparator }}</span>\n          </slot>\n        </template>\n        <template #suffix>\n          <el-icon\n            v-if=\"clearIcon\"\n            :class=\"clearIconKls\"\n            @mousedown.prevent=\"NOOP\"\n            @click=\"onClear\"\n          >\n            <component :is=\"clearIcon\" />\n          </el-icon>\n        </template>\n      </picker-range-trigger>\n    </template>\n    <template #content>\n      <slot\n        :visible=\"pickerVisible\"\n        :actual-visible=\"pickerActualVisible\"\n        :parsed-value=\"parsedValue\"\n        :format=\"format\"\n        :date-format=\"dateFormat\"\n        :time-format=\"timeFormat\"\n        :unlink-panels=\"unlinkPanels\"\n        :type=\"type\"\n        :default-value=\"defaultValue\"\n        :show-now=\"showNow\"\n        :show-confirm=\"showConfirm\"\n        :show-footer=\"showFooter\"\n        :show-week-number=\"showWeekNumber\"\n        @pick=\"onPick\"\n        @select-range=\"setSelectionRange\"\n        @set-picker-option=\"onSetPickerOption\"\n        @calendar-change=\"onCalendarChange\"\n        @clear=\"onClear\"\n        @panel-change=\"onPanelChange\"\n        @mousedown.stop\n      />\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  provide,\n  ref,\n  unref,\n  useAttrs,\n  watch,\n} from 'vue'\nimport { onClickOutside, unrefElement } from '@vueuse/core'\nimport {\n  useEmptyValues,\n  useFocusController,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport ElInput from '@pit-element-plus/components/input'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { NOOP, debugWarn, getEventCode, isArray } from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { Calendar, Clock } from 'pit-element-icons'\nimport { dayOrDaysToDate, valueEquals } from '../utils'\nimport {\n  PICKER_BASE_INJECTION_KEY,\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n  ROOT_COMMON_PICKER_INJECTION_KEY,\n} from '../constants'\nimport { useCommonPicker } from '../composables/use-common-picker'\nimport { timePickerDefaultProps } from './props'\nimport PickerRangeTrigger from './picker-range-trigger.vue'\n\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance, Ref } from 'vue'\nimport type { Options } from '@popperjs/core'\nimport type { DayOrDays, TimePickerDefaultProps, UserInput } from './props'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\n\ndefineOptions({\n  name: 'Picker',\n})\n\nconst props = defineProps(timePickerDefaultProps)\nconst emit = defineEmits([\n  UPDATE_MODEL_EVENT,\n  CHANGE_EVENT,\n  'focus',\n  'blur',\n  'clear',\n  'calendar-change',\n  'panel-change',\n  'visible-change',\n  'keydown',\n])\nconst attrs = useAttrs()\n\nconst nsDate = useNamespace('date')\nconst nsInput = useNamespace('input')\nconst nsRange = useNamespace('range')\n\nconst { formItem } = useFormItem()\nconst elPopperOptions = inject(\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n  {} as Options\n)\nconst emptyValues = useEmptyValues(props, null)\n\nconst refPopper = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst valueOnOpen = ref<TimePickerDefaultProps['modelValue'] | null>(null)\nlet hasJustTabExitedInput = false\n\nconst pickerDisabled = useFormDisabled()\n\nconst commonPicker = useCommonPicker(props, emit)\nconst {\n  parsedValue,\n  pickerActualVisible,\n  userInput,\n  pickerVisible,\n  pickerOptions,\n  valueIsEmpty,\n  emitInput,\n  onPick,\n  onSetPickerOption,\n  onCalendarChange,\n  onPanelChange,\n} = commonPicker\n\nconst { isFocused, handleFocus, handleBlur } = useFocusController(inputRef, {\n  disabled: pickerDisabled,\n  beforeFocus() {\n    return props.readonly\n  },\n  afterFocus() {\n    if (!props.automaticDropdown) return\n    pickerVisible.value = true\n  },\n  beforeBlur(event) {\n    return (\n      !hasJustTabExitedInput && refPopper.value?.isFocusInsideContent(event)\n    )\n  },\n  afterBlur() {\n    if (isTimePicker.value && !props.saveOnBlur) {\n      if (!valueIsEmpty.value) {\n        pickerOptions.value.handleCancel?.()\n      }\n    } else {\n      handleChange()\n    }\n    pickerVisible.value = false\n    hasJustTabExitedInput = false\n    props.validateEvent &&\n      formItem?.validate('blur').catch((err) => debugWarn(err))\n  },\n})\n\nconst hovering = ref(false)\n\nconst rangeInputKls = computed(() => [\n  nsDate.b('editor'),\n  nsDate.bm('editor', props.type),\n  nsInput.e('wrapper'),\n  nsDate.is('disabled', pickerDisabled.value),\n  nsDate.is('active', pickerVisible.value),\n  nsRange.b('editor'),\n  pickerSize ? nsRange.bm('editor', pickerSize.value) : '',\n  attrs.class,\n])\n\nconst clearIconKls = computed(() => [\n  nsInput.e('icon'),\n  nsRange.e('close-icon'),\n  !showClearBtn.value ? nsRange.em('close-icon', 'hidden') : '',\n])\n\nwatch(pickerVisible, (val) => {\n  if (!val) {\n    userInput.value = null\n    nextTick(() => {\n      emitChange(props.modelValue)\n    })\n  } else {\n    nextTick(() => {\n      if (val) {\n        valueOnOpen.value = props.modelValue\n      }\n    })\n  }\n})\nconst emitChange = (\n  val: TimePickerDefaultProps['modelValue'] | null,\n  isClear?: boolean\n) => {\n  // determine user real change only\n  if (isClear || !valueEquals(val, valueOnOpen.value)) {\n    emit(CHANGE_EVENT, val)\n    // Set the value of valueOnOpen when clearing to avoid triggering change events multiple times.\n    isClear && (valueOnOpen.value = val)\n    props.validateEvent &&\n      formItem?.validate('change').catch((err) => debugWarn(err))\n  }\n}\nconst emitKeydown = (e: KeyboardEvent) => {\n  emit('keydown', e)\n}\n\nconst getPlaceholder = computed(() => {\n  const formItemPlaceholder = formItem?.label ? `请选择${formItem?.label}` : ''\n  return props.placeholder || formItemPlaceholder\n})\n\nconst getStartPlaceholder = computed(() => {\n  const formItemPlaceholder = formItem?.label\n    ? `请选择${formItem?.label}开始时间`\n    : ''\n  return props.startPlaceholder || formItemPlaceholder\n})\n\nconst getEndPlaceholder = computed(() => {\n  const formItemPlaceholder = formItem?.label\n    ? `请选择${formItem?.label}结束时间`\n    : ''\n  return props.endPlaceholder || formItemPlaceholder\n})\n\nconst refInput = computed<HTMLInputElement[]>(() => {\n  if (inputRef.value) {\n    return Array.from<HTMLInputElement>(\n      inputRef.value.$el.querySelectorAll('input')\n    )\n  }\n  return []\n})\n\n// @ts-ignore\nconst setSelectionRange = (start: number, end: number, pos?: 'min' | 'max') => {\n  const _inputs = refInput.value\n  if (!_inputs.length) return\n  if (!pos || pos === 'min') {\n    _inputs[0].setSelectionRange(start, end)\n    _inputs[0].focus()\n  } else if (pos === 'max') {\n    _inputs[1].setSelectionRange(start, end)\n    _inputs[1].focus()\n  }\n}\n\nconst onBeforeShow = () => {\n  pickerActualVisible.value = true\n}\n\nconst onShow = () => {\n  emit('visible-change', true)\n}\n\nconst onHide = () => {\n  pickerActualVisible.value = false\n  pickerVisible.value = false\n  emit('visible-change', false)\n}\n\nconst handleOpen = () => {\n  pickerVisible.value = true\n}\n\nconst handleClose = () => {\n  pickerVisible.value = false\n}\n\nconst displayValue = computed<UserInput>(() => {\n  const formattedValue = formatToString(parsedValue.value)\n  if (isArray(userInput.value)) {\n    return [\n      userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n      userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n    ]\n  } else if (userInput.value !== null) {\n    return userInput.value\n  }\n  if (isTimePicker.value && valueIsEmpty.value && !props.saveOnBlur) return ''\n  if (!isTimePicker.value && valueIsEmpty.value) return ''\n  if (!pickerVisible.value && valueIsEmpty.value) return ''\n  if (formattedValue) {\n    return isDatesPicker.value || isMonthsPicker.value || isYearsPicker.value\n      ? (formattedValue as Array<string>).join(', ')\n      : formattedValue\n  }\n  return ''\n})\n\nconst isTimeLikePicker = computed(() => props.type.includes('time'))\n\nconst isTimePicker = computed(() => props.type.startsWith('time'))\n\nconst isDatesPicker = computed(() => props.type === 'dates')\n\nconst isMonthsPicker = computed(() => props.type === 'months')\n\nconst isYearsPicker = computed(() => props.type === 'years')\n\nconst triggerIcon = computed(\n  () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n)\n\nconst showClearBtn = computed(\n  () =>\n    props.clearable &&\n    !pickerDisabled.value &&\n    !props.readonly &&\n    !valueIsEmpty.value &&\n    (hovering.value || isFocused.value)\n)\n\nconst onClear = (event?: MouseEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (showClearBtn.value) {\n    event?.stopPropagation()\n    // When the handleClear Function was provided, emit null will be executed inside it\n    // There is no need for us to execute emit null twice. #14752\n    if (pickerOptions.value.handleClear) {\n      pickerOptions.value.handleClear()\n    } else {\n      emitInput(emptyValues.valueOnClear.value)\n    }\n    emitChange(emptyValues.valueOnClear.value, true)\n    onHide()\n  }\n  emit('clear')\n}\n\nconst onMouseDownInput = async (event: MouseEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (\n    (event.target as HTMLElement)?.tagName !== 'INPUT' ||\n    isFocused.value ||\n    !props.automaticDropdown\n  ) {\n    pickerVisible.value = true\n  }\n}\nconst onMouseEnter = () => {\n  if (props.readonly || pickerDisabled.value) return\n  if (!valueIsEmpty.value && props.clearable) {\n    hovering.value = true\n  }\n}\nconst onMouseLeave = () => {\n  hovering.value = false\n}\n\nconst onTouchStartInput = (event: TouchEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (\n    (event.touches[0].target as HTMLElement)?.tagName !== 'INPUT' ||\n    isFocused.value ||\n    !props.automaticDropdown\n  ) {\n    pickerVisible.value = true\n  }\n}\n\nconst isRangeInput = computed(() => {\n  return props.type.includes('range')\n})\n\nconst pickerSize = useFormSize()\n\nconst popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n\nconst stophandle = onClickOutside(\n  inputRef as Ref<ComponentPublicInstance>,\n  (e: PointerEvent) => {\n    const unrefedPopperEl = unref(popperEl)\n    const inputEl = unrefElement(inputRef as Ref<ComponentPublicInstance>)\n    if (\n      (unrefedPopperEl &&\n        (e.target === unrefedPopperEl ||\n          e.composedPath().includes(unrefedPopperEl))) ||\n      e.target === inputEl ||\n      (inputEl && e.composedPath().includes(inputEl))\n    )\n      return\n    pickerVisible.value = false\n  }\n)\n\nonBeforeUnmount(() => {\n  stophandle?.()\n})\n\nconst handleChange = () => {\n  if (isTimePicker.value && !props.saveOnBlur) return\n\n  if (userInput.value) {\n    const value = parseUserInputToDayjs(displayValue.value)\n    if (value) {\n      if (isValidValue(value)) {\n        emitInput(dayOrDaysToDate(value))\n      }\n      userInput.value = null\n    }\n  }\n  if (userInput.value === '') {\n    emitInput(emptyValues.valueOnClear.value)\n    emitChange(emptyValues.valueOnClear.value, true)\n    userInput.value = null\n  }\n}\n\nconst parseUserInputToDayjs = (value: UserInput) => {\n  if (!value) return null\n  return pickerOptions.value.parseUserInput!(value)\n}\n\nconst formatToString = (value: DayOrDays) => {\n  if (!value) return null\n  const res = isArray(value)\n    ? value.map((_) => _.format(props.format))\n    : value.format(props.format)\n  return res as UserInput\n}\n\nconst isValidValue = (value: DayOrDays) => {\n  return pickerOptions.value.isValidValue!(value)\n}\n\nconst handleKeydownInput = async (event: Event | KeyboardEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n\n  const code = getEventCode(event as KeyboardEvent)\n  emitKeydown(event as KeyboardEvent)\n  if (code === EVENT_CODE.esc) {\n    if (pickerVisible.value === true) {\n      pickerVisible.value = false\n      event.preventDefault()\n      event.stopPropagation()\n    }\n    return\n  }\n\n  if (code === EVENT_CODE.down) {\n    if (pickerOptions.value.handleFocusPicker) {\n      event.preventDefault()\n      event.stopPropagation()\n    }\n    if (pickerVisible.value === false) {\n      pickerVisible.value = true\n      await nextTick()\n    }\n    if (pickerOptions.value.handleFocusPicker) {\n      pickerOptions.value.handleFocusPicker()\n      return\n    }\n  }\n\n  if (code === EVENT_CODE.tab) {\n    hasJustTabExitedInput = true\n    return\n  }\n\n  if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n    if (!pickerVisible.value) {\n      pickerVisible.value = true\n    } else if (\n      userInput.value === null ||\n      userInput.value === '' ||\n      isValidValue(parseUserInputToDayjs(displayValue.value) as DayOrDays)\n    ) {\n      handleChange()\n      pickerVisible.value = false\n    }\n    event.preventDefault()\n    event.stopPropagation()\n    return\n  }\n\n  // if user is typing, do not let picker handle key input\n  if (userInput.value) {\n    event.stopPropagation()\n    return\n  }\n  if (pickerOptions.value.handleKeydownInput) {\n    pickerOptions.value.handleKeydownInput(event as KeyboardEvent)\n  }\n}\nconst onUserInput = (e: string) => {\n  userInput.value = e\n  // Temporary fix when the picker is dismissed and the input box\n  // is focused, just mimic the behavior of antdesign.\n  if (!pickerVisible.value) {\n    pickerVisible.value = true\n  }\n}\n\nconst handleStartInput = (event: Event) => {\n  const target = event.target as HTMLInputElement\n  if (userInput.value) {\n    userInput.value = [target.value, userInput.value[1]]\n  } else {\n    userInput.value = [target.value, null]\n  }\n}\n\nconst handleEndInput = (event: Event) => {\n  const target = event.target as HTMLInputElement\n  if (userInput.value) {\n    userInput.value = [userInput.value[0], target.value]\n  } else {\n    userInput.value = [null, target.value]\n  }\n}\n\nconst handleStartChange = () => {\n  const values = userInput.value as string[]\n  const value = parseUserInputToDayjs(values && values[0]) as Dayjs\n  const parsedVal = unref(parsedValue) as [Dayjs, Dayjs]\n  if (value && value.isValid()) {\n    userInput.value = [\n      formatToString(value) as string,\n      displayValue.value?.[1] || null,\n    ]\n    const newValue = [value, parsedVal && (parsedVal[1] || null)] as DayOrDays\n    if (isValidValue(newValue)) {\n      emitInput(dayOrDaysToDate(newValue))\n      userInput.value = null\n    }\n  }\n}\n\nconst handleEndChange = () => {\n  const values = unref(userInput) as string[]\n  const value = parseUserInputToDayjs(values && values[1]) as Dayjs\n  const parsedVal = unref(parsedValue) as [Dayjs, Dayjs]\n  if (value && value.isValid()) {\n    userInput.value = [\n      unref(displayValue)?.[0] || null,\n      formatToString(value) as string,\n    ]\n    const newValue = [parsedVal && parsedVal[0], value] as DayOrDays\n    if (isValidValue(newValue)) {\n      emitInput(dayOrDaysToDate(newValue))\n      userInput.value = null\n    }\n  }\n}\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nprovide(PICKER_BASE_INJECTION_KEY, {\n  props,\n  emptyValues,\n})\nprovide(ROOT_COMMON_PICKER_INJECTION_KEY, commonPicker)\n\ndefineExpose({\n  /**\n   * @description focus input box.\n   */\n  focus,\n  /**\n   * @description blur input box.\n   */\n  blur,\n  /**\n   * @description opens picker\n   */\n  handleOpen,\n  /**\n   * @description closes picker\n   */\n  handleClose,\n  /**\n   * @description pick item manually\n   */\n  onPick,\n})\n</script>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { timePanelSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const panelTimePickerProps = buildProps({\n  ...timePanelSharedProps,\n  datetimeRole: String,\n  parsedValue: {\n    type: definePropType<Dayjs>(Object),\n  },\n} as const)\n\nexport type PanelTimePickerProps = ExtractPropTypes<typeof panelTimePickerProps>\nexport type PanelTimePickerPropsPublic = ExtractPublicPropTypes<\n  typeof panelTimePickerProps\n>\n","import type { Dayjs } from 'dayjs'\nimport type {\n  GetDisabledHours,\n  GetDisabledMinutes,\n  GetDisabledSeconds,\n} from '../common/props'\n\ntype UseTimePanelProps = {\n  getAvailableHours: GetDisabledHours\n  getAvailableMinutes: GetDisabledMinutes\n  getAvailableSeconds: GetDisabledSeconds\n}\n\nexport const useTimePanel = ({\n  getAvailableHours,\n  getAvailableMinutes,\n  getAvailableSeconds,\n}: UseTimePanelProps) => {\n  const getAvailableTime = (\n    date: Dayjs,\n    role: string,\n    first: boolean,\n    compareDate?: Dayjs\n  ) => {\n    const availableTimeGetters = {\n      hour: getAvailableHours,\n      minute: getAvailableMinutes,\n      second: getAvailableSeconds,\n    } as const\n    let result = date\n    ;(['hour', 'minute', 'second'] as const).forEach((type) => {\n      if (availableTimeGetters[type]) {\n        let availableTimeSlots: number[]\n        const method = availableTimeGetters[type]\n        switch (type) {\n          case 'minute': {\n            availableTimeSlots = (method as typeof getAvailableMinutes)(\n              result.hour(),\n              role,\n              compareDate\n            )\n            break\n          }\n          case 'second': {\n            availableTimeSlots = (method as typeof getAvailableSeconds)(\n              result.hour(),\n              result.minute(),\n              role,\n              compareDate\n            )\n            break\n          }\n          default: {\n            availableTimeSlots = (method as typeof getAvailableHours)(\n              role,\n              compareDate\n            )\n            break\n          }\n        }\n\n        if (\n          availableTimeSlots?.length &&\n          !availableTimeSlots.includes(result[type]())\n        ) {\n          const pos = first ? 0 : availableTimeSlots.length - 1\n          result = result[type](availableTimeSlots[pos]) as unknown as Dayjs\n        }\n      }\n    })\n    return result\n  }\n\n  const timePickerOptions: Record<string, (...args: any[]) => void> = {}\n\n  const onSetOption = ([key, val]: [string, (...args: any[]) => void]) => {\n    timePickerOptions[key] = val\n  }\n\n  return {\n    timePickerOptions,\n\n    getAvailableTime,\n    onSetOption,\n  }\n}\n","import { ref, toValue, watch } from 'vue'\nimport { makeList } from '../utils'\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type {\n  GetDisabledHours,\n  GetDisabledMinutes,\n  GetDisabledSeconds,\n} from '../common/props'\n\nconst makeAvailableArr = (disabledList: boolean[]): number[] => {\n  const trueOrNumber = (isDisabled: boolean, index: number) =>\n    isDisabled || index\n\n  const getNumber = (predicate: number | true): predicate is number =>\n    predicate !== true\n\n  return disabledList.map(trueOrNumber).filter(getNumber)\n}\n\nexport const getTimeLists = (\n  disabledHours?: GetDisabledHours,\n  disabledMinutes?: GetDisabledMinutes,\n  disabledSeconds?: GetDisabledSeconds\n) => {\n  const getHoursList = (role: string, compare?: Dayjs) => {\n    return makeList(24, disabledHours && (() => disabledHours?.(role, compare)))\n  }\n\n  const getMinutesList = (hour: number, role: string, compare?: Dayjs) => {\n    return makeList(\n      60,\n      disabledMinutes && (() => disabledMinutes?.(hour, role, compare))\n    )\n  }\n\n  const getSecondsList = (\n    hour: number,\n    minute: number,\n    role: string,\n    compare?: Dayjs\n  ) => {\n    return makeList(\n      60,\n      disabledSeconds && (() => disabledSeconds?.(hour, minute, role, compare))\n    )\n  }\n\n  return {\n    getHoursList,\n    getMinutesList,\n    getSecondsList,\n  }\n}\n\nexport const buildAvailableTimeSlotGetter = (\n  disabledHours: GetDisabledHours,\n  disabledMinutes: GetDisabledMinutes,\n  disabledSeconds: GetDisabledSeconds\n) => {\n  const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(\n    disabledHours,\n    disabledMinutes,\n    disabledSeconds\n  )\n\n  const getAvailableHours: GetDisabledHours = (role, compare?) => {\n    return makeAvailableArr(getHoursList(role, compare))\n  }\n\n  const getAvailableMinutes: GetDisabledMinutes = (hour, role, compare?) => {\n    return makeAvailableArr(getMinutesList(hour, role, compare))\n  }\n\n  const getAvailableSeconds: GetDisabledSeconds = (\n    hour,\n    minute,\n    role,\n    compare?\n  ) => {\n    return makeAvailableArr(getSecondsList(hour, minute, role, compare))\n  }\n\n  return {\n    getAvailableHours,\n    getAvailableMinutes,\n    getAvailableSeconds,\n  }\n}\n\nexport const useOldValue = (\n  props: {\n    parsedValue?: string | Dayjs | Dayjs[]\n    visible: boolean\n  },\n  options: {\n    modelValue: MaybeRefOrGetter<unknown>\n    valueOnClear: MaybeRefOrGetter<unknown>\n  }\n) => {\n  const oldValue = ref(props.parsedValue)\n\n  watch(\n    () => props.visible,\n    (val) => {\n      const modelValue = toValue(options.modelValue)\n      const valueOnClear = toValue(options.valueOnClear)\n      if (val && modelValue === valueOnClear) {\n        oldValue.value = valueOnClear as typeof oldValue.value\n        return\n      }\n      if (!val) {\n        oldValue.value = props.parsedValue\n      }\n    }\n  )\n\n  return oldValue\n}\n","import { isArray, isClient, isElement } from '@pit-element-plus/utils'\n\nimport type {\n  ComponentPublicInstance,\n  DirectiveBinding,\n  ObjectDirective,\n} from 'vue'\n\ntype DocumentHandler = <T extends MouseEvent>(mouseup: T, mousedown: T) => void\ntype FlushList = Map<\n  HTMLElement,\n  {\n    documentHandler: DocumentHandler\n    bindingFn: (...args: unknown[]) => unknown\n  }[]\n>\n\nconst nodeList: FlushList = new Map()\n\nif (isClient) {\n  let startClick: MouseEvent | undefined\n  document.addEventListener('mousedown', (e: MouseEvent) => (startClick = e))\n  document.addEventListener('mouseup', (e: MouseEvent) => {\n    if (startClick) {\n      for (const handlers of nodeList.values()) {\n        for (const { documentHandler } of handlers) {\n          documentHandler(e as MouseEvent, startClick)\n        }\n      }\n      startClick = undefined\n    }\n  })\n}\n\nfunction createDocumentHandler(\n  el: HTMLElement,\n  binding: DirectiveBinding\n): DocumentHandler {\n  let excludes: HTMLElement[] = []\n  if (isArray(binding.arg)) {\n    excludes = binding.arg\n  } else if (isElement(binding.arg)) {\n    // due to current implementation on binding type is wrong the type casting is necessary here\n    excludes.push(binding.arg as unknown as HTMLElement)\n  }\n  return function (mouseup, mousedown) {\n    const popperRef = (\n      binding.instance as ComponentPublicInstance<{\n        popperRef: HTMLElement\n      }>\n    ).popperRef\n    const mouseUpTarget = mouseup.target as Node\n    const mouseDownTarget = mousedown?.target as Node\n    const isBound = !binding || !binding.instance\n    const isTargetExists = !mouseUpTarget || !mouseDownTarget\n    const isContainedByEl =\n      el.contains(mouseUpTarget) || el.contains(mouseDownTarget)\n    const isSelf = el === mouseUpTarget\n\n    const isTargetExcluded =\n      (excludes.length &&\n        excludes.some((item) => item?.contains(mouseUpTarget))) ||\n      (excludes.length && excludes.includes(mouseDownTarget as HTMLElement))\n    const isContainedByPopper =\n      popperRef &&\n      (popperRef.contains(mouseUpTarget) || popperRef.contains(mouseDownTarget))\n    if (\n      isBound ||\n      isTargetExists ||\n      isContainedByEl ||\n      isSelf ||\n      isTargetExcluded ||\n      isContainedByPopper\n    ) {\n      return\n    }\n    binding.value(mouseup, mousedown)\n  }\n}\n\nconst ClickOutside: ObjectDirective<HTMLElement, any> = {\n  beforeMount(el, binding) {\n    // there could be multiple handlers on the element\n    if (!nodeList.has(el)) {\n      nodeList.set(el, [])\n    }\n\n    nodeList.get(el)!.push({\n      documentHandler: createDocumentHandler(el, binding),\n      bindingFn: binding.value,\n    })\n  },\n  updated(el, binding) {\n    if (!nodeList.has(el)) {\n      nodeList.set(el, [])\n    }\n\n    const handlers = nodeList.get(el)!\n    const oldHandlerIndex = handlers.findIndex(\n      (item) => item.bindingFn === binding.oldValue\n    )\n    const newHandler = {\n      documentHandler: createDocumentHandler(el, binding),\n      bindingFn: binding.value,\n    }\n\n    if (oldHandlerIndex >= 0) {\n      // replace the old handler to the new handler\n      handlers.splice(oldHandlerIndex, 1, newHandler)\n    } else {\n      handlers.push(newHandler)\n    }\n  },\n  unmounted(el) {\n    // remove all listeners when a component unmounted\n    nodeList.delete(el)\n  },\n}\n\nexport default ClickOutside\n","import { isFunction } from '@pit-element-plus/utils'\n\nimport type { ObjectDirective } from 'vue'\n\nexport const REPEAT_INTERVAL = 100\nexport const REPEAT_DELAY = 600\nconst SCOPE = '_RepeatClick'\n\ninterface RepeatClickEl extends HTMLElement {\n  [SCOPE]: null | {\n    start?: (evt: MouseEvent) => void\n    clear?: () => void\n  }\n}\n\nexport interface RepeatClickOptions {\n  interval?: number\n  delay?: number\n  handler: (...args: unknown[]) => unknown\n}\n\nexport const vRepeatClick: ObjectDirective<\n  RepeatClickEl,\n  RepeatClickOptions | RepeatClickOptions['handler']\n> = {\n  beforeMount(el, binding) {\n    const value = binding.value\n    const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = isFunction(\n      value\n    )\n      ? {}\n      : value\n\n    let intervalId: ReturnType<typeof setInterval> | undefined\n    let delayId: ReturnType<typeof setTimeout> | undefined\n\n    const handler = () => (isFunction(value) ? value() : value.handler())\n\n    const clear = () => {\n      if (delayId) {\n        clearTimeout(delayId)\n        delayId = undefined\n      }\n      if (intervalId) {\n        clearInterval(intervalId)\n        intervalId = undefined\n      }\n    }\n\n    const start = (evt: MouseEvent) => {\n      if (evt.button !== 0) return\n      clear()\n      handler()\n\n      document.addEventListener('mouseup', clear, { once: true })\n\n      delayId = setTimeout(() => {\n        intervalId = setInterval(() => {\n          handler()\n        }, interval)\n      }, delay)\n    }\n\n    el[SCOPE] = { start, clear }\n    el.addEventListener('mousedown', start)\n  },\n  unmounted(el) {\n    if (!el[SCOPE]) return\n    const { start, clear } = el[SCOPE]\n\n    if (start) {\n      el.removeEventListener('mousedown', start)\n    }\n    if (clear) {\n      clear()\n      document.removeEventListener('mouseup', clear)\n    }\n    el[SCOPE] = null\n  },\n}\n","import { nextTick } from 'vue'\nimport {\n  getEventCode,\n  obtainAllFocusableElements,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\n\nimport type { ObjectDirective } from 'vue'\n\nexport const FOCUSABLE_CHILDREN = '_trap-focus-children'\nexport const TRAP_FOCUS_HANDLER = '_trap-focus-handler'\n\nexport interface TrapFocusElement extends HTMLElement {\n  [FOCUSABLE_CHILDREN]: HTMLElement[]\n  [TRAP_FOCUS_HANDLER]: (e: KeyboardEvent) => void\n}\n\nconst FOCUS_STACK: TrapFocusElement[] = []\n\nconst FOCUS_HANDLER = (e: KeyboardEvent) => {\n  // Getting the top layer.\n  if (FOCUS_STACK.length === 0) return\n  const code = getEventCode(e)\n  const focusableElement =\n    FOCUS_STACK[FOCUS_STACK.length - 1][FOCUSABLE_CHILDREN]\n  if (focusableElement.length > 0 && code === EVENT_CODE.tab) {\n    if (focusableElement.length === 1) {\n      e.preventDefault()\n      if (document.activeElement !== focusableElement[0]) {\n        focusableElement[0].focus()\n      }\n      return\n    }\n    const goingBackward = e.shiftKey\n    const isFirst = e.target === focusableElement[0]\n    const isLast = e.target === focusableElement[focusableElement.length - 1]\n    if (isFirst && goingBackward) {\n      e.preventDefault()\n      focusableElement[focusableElement.length - 1].focus()\n    }\n    if (isLast && !goingBackward) {\n      e.preventDefault()\n      focusableElement[0].focus()\n    }\n\n    // the is critical since jsdom did not implement user actions, you can only mock it\n    // DELETE ME: when testing env switches to puppeteer\n    if (process.env.NODE_ENV === 'test') {\n      const index = focusableElement.indexOf(e.target as HTMLElement)\n      if (index !== -1) {\n        focusableElement[goingBackward ? index - 1 : index + 1]?.focus()\n      }\n    }\n  }\n}\n\nconst TrapFocus: ObjectDirective = {\n  beforeMount(el: TrapFocusElement) {\n    el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements(el)\n    FOCUS_STACK.push(el)\n    if (FOCUS_STACK.length <= 1) {\n      document.addEventListener('keydown', FOCUS_HANDLER)\n    }\n  },\n  updated(el: TrapFocusElement) {\n    nextTick(() => {\n      el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements(el)\n    })\n  },\n  unmounted() {\n    FOCUS_STACK.shift()\n    if (FOCUS_STACK.length === 0) {\n      document.removeEventListener('keydown', FOCUS_HANDLER)\n    }\n  },\n}\n\nexport default TrapFocus\n","var v=!1,o,f,s,u,d,N,l,p,m,w,D,x,E,M,F;function a(){if(!v){v=!0;var e=navigator.userAgent,n=/(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(e),i=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(x=/\\b(iPhone|iP[ao]d)/.exec(e),E=/\\b(iP[ao]d)/.exec(e),w=/Android/i.exec(e),M=/FBAN\\/\\w+;/i.exec(e),F=/Mobile/i.exec(e),D=!!/Win64/.exec(e),n){o=n[1]?parseFloat(n[1]):n[5]?parseFloat(n[5]):NaN,o&&document&&document.documentMode&&(o=document.documentMode);var r=/(?:Trident\\/(\\d+.\\d+))/.exec(e);N=r?parseFloat(r[1])+4:o,f=n[2]?parseFloat(n[2]):NaN,s=n[3]?parseFloat(n[3]):NaN,u=n[4]?parseFloat(n[4]):NaN,u?(n=/(?:Chrome\\/(\\d+\\.\\d+))/.exec(e),d=n&&n[1]?parseFloat(n[1]):NaN):d=NaN}else o=f=s=d=u=NaN;if(i){if(i[1]){var t=/(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(e);l=t?parseFloat(t[1].replace(\"_\",\".\")):!0}else l=!1;p=!!i[2],m=!!i[3]}else l=p=m=!1}}var _={ie:function(){return a()||o},ieCompatibilityMode:function(){return a()||N>o},ie64:function(){return _.ie()&&D},firefox:function(){return a()||f},opera:function(){return a()||s},webkit:function(){return a()||u},safari:function(){return _.webkit()},chrome:function(){return a()||d},windows:function(){return a()||p},osx:function(){return a()||l},linux:function(){return a()||m},iphone:function(){return a()||x},mobile:function(){return a()||x||E||w||F},nativeApp:function(){return a()||M},android:function(){return a()||w},ipad:function(){return a()||E}},A=_;var c=!!(typeof window<\"u\"&&window.document&&window.document.createElement),U={canUseDOM:c,canUseWorkers:typeof Worker<\"u\",canUseEventListeners:c&&!!(window.addEventListener||window.attachEvent),canUseViewport:c&&!!window.screen,isInWorker:!c},h=U;var X;h.canUseDOM&&(X=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(\"\",\"\")!==!0);function S(e,n){if(!h.canUseDOM||n&&!(\"addEventListener\"in document))return!1;var i=\"on\"+e,r=i in document;if(!r){var t=document.createElement(\"div\");t.setAttribute(i,\"return;\"),r=typeof t[i]==\"function\"}return!r&&X&&e===\"wheel\"&&(r=document.implementation.hasFeature(\"Events.wheel\",\"3.0\")),r}var b=S;var O=10,I=40,P=800;function T(e){var n=0,i=0,r=0,t=0;return\"detail\"in e&&(i=e.detail),\"wheelDelta\"in e&&(i=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(i=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(n=-e.wheelDeltaX/120),\"axis\"in e&&e.axis===e.HORIZONTAL_AXIS&&(n=i,i=0),r=n*O,t=i*O,\"deltaY\"in e&&(t=e.deltaY),\"deltaX\"in e&&(r=e.deltaX),(r||t)&&e.deltaMode&&(e.deltaMode==1?(r*=I,t*=I):(r*=P,t*=P)),r&&!n&&(n=r<1?-1:1),t&&!i&&(i=t<1?-1:1),{spinX:n,spinY:i,pixelX:r,pixelY:t}}T.getEventType=function(){return A.firefox()?\"DOMMouseScroll\":b(\"wheel\")?\"wheel\":\"mousewheel\"};var Y=T;export{Y as default};\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\n//# sourceMappingURL=index.mjs.map","import normalizeWheel from 'normalize-wheel-es'\n\nimport type { ObjectDirective } from 'vue'\nimport type { NormalizedWheelEvent } from 'normalize-wheel-es'\n\nexport const SCOPE = '_Mousewheel'\n\nexport interface WheelElement extends HTMLElement {\n  [SCOPE]: null | {\n    wheelHandler?: (event: WheelEvent) => void\n  }\n}\n\nexport type MousewheelCallback = (\n  e: WheelEvent,\n  normalized: NormalizedWheelEvent\n) => void\n\nconst mousewheel = function (\n  element: WheelElement,\n  callback: MousewheelCallback\n) {\n  if (element && element.addEventListener) {\n    removeWheelHandler(element)\n\n    const fn = function (this: HTMLElement, event: WheelEvent) {\n      const normalized = normalizeWheel(event)\n      callback && Reflect.apply(callback, this, [event, normalized])\n    }\n\n    element[SCOPE] = { wheelHandler: fn }\n    element.addEventListener('wheel', fn, { passive: true })\n  }\n}\n\nconst removeWheelHandler = (element: WheelElement) => {\n  if (element[SCOPE]?.wheelHandler) {\n    element.removeEventListener('wheel', element[SCOPE].wheelHandler)\n    element[SCOPE] = null\n  }\n}\n\nconst Mousewheel: ObjectDirective<WheelElement, MousewheelCallback> = {\n  beforeMount(el, binding) {\n    mousewheel(el, binding.value)\n  },\n  unmounted(el) {\n    removeWheelHandler(el)\n  },\n  updated(el, binding) {\n    if (binding.value !== binding.oldValue) {\n      mousewheel(el, binding.value)\n    }\n  },\n}\n\nexport default Mousewheel\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { disabledTimeListsProps } from '../props/shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const basicTimeSpinnerProps = buildProps({\n  role: {\n    type: String,\n    required: true,\n  },\n  spinnerDate: {\n    type: definePropType<Dayjs>(Object),\n    required: true,\n  },\n  showSeconds: {\n    type: Boolean,\n    default: true,\n  },\n  arrowControl: Boolean,\n  amPmMode: {\n    // 'a': am/pm; 'A': AM/PM\n    type: definePropType<'a' | 'A' | ''>(String),\n    default: '',\n  },\n  ...disabledTimeListsProps,\n} as const)\n\nexport type BasicTimeSpinnerProps = ExtractPropTypes<\n  typeof basicTimeSpinnerProps\n>\nexport type BasicTimeSpinnerPropsPublic = ExtractPublicPropTypes<\n  typeof basicTimeSpinnerProps\n>\n","<template>\n  <div :class=\"[ns.b('spinner'), { 'has-seconds': showSeconds }]\">\n    <template v-if=\"!arrowControl\">\n      <el-scrollbar\n        v-for=\"item in spinnerItems\"\n        :key=\"item\"\n        :ref=\"(scrollbar: unknown) => setRef(scrollbar as any, item)\"\n        :class=\"ns.be('spinner', 'wrapper')\"\n        wrap-style=\"max-height: inherit;\"\n        :view-class=\"ns.be('spinner', 'list')\"\n        noresize\n        tag=\"ul\"\n        @mouseenter=\"emitSelectRange(item)\"\n        @mousemove=\"adjustCurrentSpinner(item)\"\n      >\n        <li\n          v-for=\"(disabled, key) in timeList[item]\"\n          :key=\"key\"\n          :class=\"[\n            ns.be('spinner', 'item'),\n            ns.is('active', key === timePartials[item]),\n            ns.is('disabled', disabled),\n          ]\"\n          @click=\"handleClick(item, { value: key, disabled })\"\n        >\n          <template v-if=\"item === 'hours'\">\n            {{ ('0' + (amPmMode ? key % 12 || 12 : key)).slice(-2)\n            }}{{ getAmPmFlag(key) }}\n          </template>\n          <template v-else>\n            {{ ('0' + key).slice(-2) }}\n          </template>\n        </li>\n      </el-scrollbar>\n    </template>\n    <template v-if=\"arrowControl\">\n      <div\n        v-for=\"item in spinnerItems\"\n        :key=\"item\"\n        :class=\"[ns.be('spinner', 'wrapper'), ns.is('arrow')]\"\n        @mouseenter=\"emitSelectRange(item)\"\n      >\n        <el-icon\n          v-repeat-click=\"onDecrement\"\n          :class=\"['arrow-up', ns.be('spinner', 'arrow')]\"\n        >\n          <arrow-up />\n        </el-icon>\n        <el-icon\n          v-repeat-click=\"onIncrement\"\n          :class=\"['arrow-down', ns.be('spinner', 'arrow')]\"\n        >\n          <arrow-down />\n        </el-icon>\n        <ul :class=\"ns.be('spinner', 'list')\">\n          <li\n            v-for=\"(time, key) in arrowControlTimeList[item]\"\n            :key=\"key\"\n            :class=\"[\n              ns.be('spinner', 'item'),\n              ns.is('active', time === timePartials[item]),\n              ns.is('disabled', timeList[item][time!]),\n            ]\"\n          >\n            <template v-if=\"isNumber(time)\">\n              <template v-if=\"item === 'hours'\">\n                {{ ('0' + (amPmMode ? time % 12 || 12 : time)).slice(-2)\n                }}{{ getAmPmFlag(time) }}\n              </template>\n              <template v-else>\n                {{ ('0' + time).slice(-2) }}\n              </template>\n            </template>\n          </li>\n        </ul>\n      </div>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, ref, unref, watch } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { vRepeatClick } from '@pit-element-plus/directives'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { ArrowDown, ArrowUp } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { getStyle, isNumber, rAF } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport {\n  DEFAULT_FORMATS_TIME,\n  PICKER_BASE_INJECTION_KEY,\n  timeUnits,\n} from '../constants'\nimport { buildTimeList } from '../utils'\nimport { basicTimeSpinnerProps } from '../props/basic-time-spinner'\nimport { getTimeLists } from '../composables/use-time-picker'\n\nimport type { Ref } from 'vue'\nimport type { ScrollbarInstance } from '@pit-element-plus/components/scrollbar'\nimport type { TimeUnit } from '../constants'\nimport type { TimeList } from '../utils'\n\nconst props = defineProps(basicTimeSpinnerProps)\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst { isRange, format, saveOnBlur } = pickerBase.props\nconst emit = defineEmits([CHANGE_EVENT, 'select-range', 'set-option'])\n\nconst ns = useNamespace('time')\n\nconst { getHoursList, getMinutesList, getSecondsList } = getTimeLists(\n  props.disabledHours,\n  props.disabledMinutes,\n  props.disabledSeconds\n)\n\n// data\nlet isScrolling = false\nconst ignoreScroll = {\n  hours: false,\n  minutes: false,\n  seconds: false,\n}\n\nconst currentScrollbar = ref<TimeUnit>()\nconst listHoursRef = ref<ScrollbarInstance>()\nconst listMinutesRef = ref<ScrollbarInstance>()\nconst listSecondsRef = ref<ScrollbarInstance>()\nconst listRefsMap: Record<TimeUnit, Ref<ScrollbarInstance | undefined>> = {\n  hours: listHoursRef,\n  minutes: listMinutesRef,\n  seconds: listSecondsRef,\n}\n\n// computed\nconst spinnerItems = computed(() => {\n  return props.showSeconds ? timeUnits : timeUnits.slice(0, 2)\n})\n\nconst timePartials = computed<Record<TimeUnit, number>>(() => {\n  const { spinnerDate } = props\n  const hours = spinnerDate.hour()\n  const minutes = spinnerDate.minute()\n  const seconds = spinnerDate.second()\n  return { hours, minutes, seconds }\n})\n\nconst timeList = computed(() => {\n  const { hours, minutes } = unref(timePartials)\n  const { role, spinnerDate } = props\n  const compare = !isRange ? spinnerDate : undefined\n  return {\n    hours: getHoursList(role, compare),\n    minutes: getMinutesList(hours, role, compare),\n    seconds: getSecondsList(hours, minutes, role, compare),\n  }\n})\n\nconst arrowControlTimeList = computed<Record<TimeUnit, TimeList>>(() => {\n  const { hours, minutes, seconds } = unref(timePartials)\n\n  return {\n    hours: buildTimeList(hours, 23),\n    minutes: buildTimeList(minutes, 59),\n    seconds: buildTimeList(seconds, 59),\n  }\n})\n\nconst debouncedResetScroll = debounce((type) => {\n  isScrolling = false\n  adjustCurrentSpinner(type)\n}, 200)\n\nconst getAmPmFlag = (hour: number) => {\n  const shouldShowAmPm = !!props.amPmMode\n  if (!shouldShowAmPm) return ''\n  const isCapital = props.amPmMode === 'A'\n  // todo locale\n  let content = hour < 12 ? ' am' : ' pm'\n  if (isCapital) content = content.toUpperCase()\n  return content\n}\n\nconst emitSelectRange = (type: TimeUnit) => {\n  let range = [0, 0]\n  const actualFormat = format || DEFAULT_FORMATS_TIME\n  const hourIndex = actualFormat.indexOf('HH')\n  const minuteIndex = actualFormat.indexOf('mm')\n  const secondIndex = actualFormat.indexOf('ss')\n  switch (type) {\n    case 'hours':\n      if (hourIndex !== -1) {\n        range = [hourIndex, hourIndex + 2]\n      }\n      break\n    case 'minutes':\n      if (minuteIndex !== -1) {\n        range = [minuteIndex, minuteIndex + 2]\n      }\n      break\n    case 'seconds':\n      if (secondIndex !== -1) {\n        range = [secondIndex, secondIndex + 2]\n      }\n      break\n  }\n  const [left, right] = range\n\n  emit('select-range', left, right)\n  currentScrollbar.value = type\n}\n\nconst adjustCurrentSpinner = (type: TimeUnit) => {\n  adjustSpinner(type, unref(timePartials)[type])\n}\n\nconst adjustSpinners = () => {\n  adjustCurrentSpinner('hours')\n  adjustCurrentSpinner('minutes')\n  adjustCurrentSpinner('seconds')\n}\n\nconst getScrollbarElement = (el: HTMLElement) =>\n  el.querySelector(`.${ns.namespace.value}-scrollbar__wrap`) as HTMLElement\n\nconst adjustSpinner = (type: TimeUnit, value: number) => {\n  if (props.arrowControl) return\n  const scrollbar = unref(listRefsMap[type])\n  if (scrollbar && scrollbar.$el) {\n    if (!saveOnBlur) {\n      ignoreScroll[type] = true\n      rAF(() => {\n        ignoreScroll[type] = false\n      })\n    }\n    getScrollbarElement(scrollbar.$el).scrollTop = Math.max(\n      0,\n      value * typeItemHeight(type)\n    )\n  }\n}\n\nconst typeItemHeight = (type: TimeUnit): number => {\n  const scrollbar = unref(listRefsMap[type])\n  const listItem = scrollbar?.$el.querySelector('li')\n  if (listItem) {\n    return Number.parseFloat(getStyle(listItem, 'height')) || 0\n  }\n  return 0\n}\n\nconst onIncrement = () => {\n  scrollDown(1)\n}\n\nconst onDecrement = () => {\n  scrollDown(-1)\n}\n\nconst scrollDown = (step: number) => {\n  if (!currentScrollbar.value) {\n    emitSelectRange('hours')\n  }\n\n  const label = currentScrollbar.value!\n  const now = unref(timePartials)[label]\n  const total = currentScrollbar.value === 'hours' ? 24 : 60\n  const next = findNextUnDisabled(label, now, step, total)\n\n  modifyDateField(label, next)\n  adjustSpinner(label, next)\n  nextTick(() => emitSelectRange(label))\n}\n\nconst findNextUnDisabled = (\n  type: TimeUnit,\n  now: number,\n  step: number,\n  total: number\n) => {\n  let next = (now + step + total) % total\n  const list = unref(timeList)[type]\n  while (list[next] && next !== now) {\n    next = (next + step + total) % total\n  }\n  return next\n}\n\nconst modifyDateField = (type: TimeUnit, value: number) => {\n  const list = unref(timeList)[type]\n  const isDisabled = list[value]\n  if (isDisabled) return\n\n  const { hours, minutes, seconds } = unref(timePartials)\n\n  let changeTo\n  switch (type) {\n    case 'hours':\n      changeTo = props.spinnerDate.hour(value).minute(minutes).second(seconds)\n      break\n    case 'minutes':\n      changeTo = props.spinnerDate.hour(hours).minute(value).second(seconds)\n      break\n    case 'seconds':\n      changeTo = props.spinnerDate.hour(hours).minute(minutes).second(value)\n      break\n  }\n  emit(CHANGE_EVENT, changeTo)\n}\n\nconst handleClick = (\n  type: TimeUnit,\n  { value, disabled }: { value: number; disabled: boolean }\n) => {\n  if (!disabled) {\n    modifyDateField(type, value)\n    emitSelectRange(type)\n    adjustSpinner(type, value)\n  }\n}\n\nconst handleScroll = (type: TimeUnit) => {\n  if (!saveOnBlur && ignoreScroll[type]) return\n  const scrollbar = unref(listRefsMap[type])\n  if (!scrollbar) return\n\n  isScrolling = true\n  debouncedResetScroll(type)\n  const value = Math.min(\n    Math.round(\n      (getScrollbarElement(scrollbar.$el).scrollTop -\n        (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) +\n        3) /\n        typeItemHeight(type)\n    ),\n    type === 'hours' ? 23 : 59\n  )\n  modifyDateField(type, value)\n}\n\nconst scrollBarHeight = (type: TimeUnit) => {\n  return unref(listRefsMap[type])!.$el.offsetHeight\n}\n\nconst bindScrollEvent = () => {\n  const bindFunction = (type: TimeUnit) => {\n    const scrollbar = unref(listRefsMap[type])\n    if (scrollbar && scrollbar.$el) {\n      getScrollbarElement(scrollbar.$el).onscroll = () => {\n        // TODO: scroll is emitted when set scrollTop programmatically\n        // should find better solutions in the future!\n        handleScroll(type)\n      }\n    }\n  }\n  bindFunction('hours')\n  bindFunction('minutes')\n  bindFunction('seconds')\n}\n\nonMounted(() => {\n  nextTick(() => {\n    !props.arrowControl && bindScrollEvent()\n    adjustSpinners()\n    // set selection on the first hour part\n    if (props.role === 'start') emitSelectRange('hours')\n  })\n})\n\nconst setRef = (scrollbar: ScrollbarInstance | null, type: TimeUnit) => {\n  listRefsMap[type].value = scrollbar ?? undefined\n}\n\nemit('set-option', [`${props.role}_scrollDown`, scrollDown])\nemit('set-option', [`${props.role}_emitSelectRange`, emitSelectRange])\n\nwatch(\n  () => props.spinnerDate,\n  () => {\n    if (isScrolling) return\n    adjustSpinners()\n  }\n)\n</script>\n","<template>\n  <div :class=\"[ns.b('spinner'), { 'has-seconds': showSeconds }]\">\n    <template v-if=\"!arrowControl\">\n      <el-scrollbar\n        v-for=\"item in spinnerItems\"\n        :key=\"item\"\n        :ref=\"(scrollbar: unknown) => setRef(scrollbar as any, item)\"\n        :class=\"ns.be('spinner', 'wrapper')\"\n        wrap-style=\"max-height: inherit;\"\n        :view-class=\"ns.be('spinner', 'list')\"\n        noresize\n        tag=\"ul\"\n        @mouseenter=\"emitSelectRange(item)\"\n        @mousemove=\"adjustCurrentSpinner(item)\"\n      >\n        <li\n          v-for=\"(disabled, key) in timeList[item]\"\n          :key=\"key\"\n          :class=\"[\n            ns.be('spinner', 'item'),\n            ns.is('active', key === timePartials[item]),\n            ns.is('disabled', disabled),\n          ]\"\n          @click=\"handleClick(item, { value: key, disabled })\"\n        >\n          <template v-if=\"item === 'hours'\">\n            {{ ('0' + (amPmMode ? key % 12 || 12 : key)).slice(-2)\n            }}{{ getAmPmFlag(key) }}\n          </template>\n          <template v-else>\n            {{ ('0' + key).slice(-2) }}\n          </template>\n        </li>\n      </el-scrollbar>\n    </template>\n    <template v-if=\"arrowControl\">\n      <div\n        v-for=\"item in spinnerItems\"\n        :key=\"item\"\n        :class=\"[ns.be('spinner', 'wrapper'), ns.is('arrow')]\"\n        @mouseenter=\"emitSelectRange(item)\"\n      >\n        <el-icon\n          v-repeat-click=\"onDecrement\"\n          :class=\"['arrow-up', ns.be('spinner', 'arrow')]\"\n        >\n          <arrow-up />\n        </el-icon>\n        <el-icon\n          v-repeat-click=\"onIncrement\"\n          :class=\"['arrow-down', ns.be('spinner', 'arrow')]\"\n        >\n          <arrow-down />\n        </el-icon>\n        <ul :class=\"ns.be('spinner', 'list')\">\n          <li\n            v-for=\"(time, key) in arrowControlTimeList[item]\"\n            :key=\"key\"\n            :class=\"[\n              ns.be('spinner', 'item'),\n              ns.is('active', time === timePartials[item]),\n              ns.is('disabled', timeList[item][time!]),\n            ]\"\n          >\n            <template v-if=\"isNumber(time)\">\n              <template v-if=\"item === 'hours'\">\n                {{ ('0' + (amPmMode ? time % 12 || 12 : time)).slice(-2)\n                }}{{ getAmPmFlag(time) }}\n              </template>\n              <template v-else>\n                {{ ('0' + time).slice(-2) }}\n              </template>\n            </template>\n          </li>\n        </ul>\n      </div>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, ref, unref, watch } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { vRepeatClick } from '@pit-element-plus/directives'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { ArrowDown, ArrowUp } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { getStyle, isNumber, rAF } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport {\n  DEFAULT_FORMATS_TIME,\n  PICKER_BASE_INJECTION_KEY,\n  timeUnits,\n} from '../constants'\nimport { buildTimeList } from '../utils'\nimport { basicTimeSpinnerProps } from '../props/basic-time-spinner'\nimport { getTimeLists } from '../composables/use-time-picker'\n\nimport type { Ref } from 'vue'\nimport type { ScrollbarInstance } from '@pit-element-plus/components/scrollbar'\nimport type { TimeUnit } from '../constants'\nimport type { TimeList } from '../utils'\n\nconst props = defineProps(basicTimeSpinnerProps)\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst { isRange, format, saveOnBlur } = pickerBase.props\nconst emit = defineEmits([CHANGE_EVENT, 'select-range', 'set-option'])\n\nconst ns = useNamespace('time')\n\nconst { getHoursList, getMinutesList, getSecondsList } = getTimeLists(\n  props.disabledHours,\n  props.disabledMinutes,\n  props.disabledSeconds\n)\n\n// data\nlet isScrolling = false\nconst ignoreScroll = {\n  hours: false,\n  minutes: false,\n  seconds: false,\n}\n\nconst currentScrollbar = ref<TimeUnit>()\nconst listHoursRef = ref<ScrollbarInstance>()\nconst listMinutesRef = ref<ScrollbarInstance>()\nconst listSecondsRef = ref<ScrollbarInstance>()\nconst listRefsMap: Record<TimeUnit, Ref<ScrollbarInstance | undefined>> = {\n  hours: listHoursRef,\n  minutes: listMinutesRef,\n  seconds: listSecondsRef,\n}\n\n// computed\nconst spinnerItems = computed(() => {\n  return props.showSeconds ? timeUnits : timeUnits.slice(0, 2)\n})\n\nconst timePartials = computed<Record<TimeUnit, number>>(() => {\n  const { spinnerDate } = props\n  const hours = spinnerDate.hour()\n  const minutes = spinnerDate.minute()\n  const seconds = spinnerDate.second()\n  return { hours, minutes, seconds }\n})\n\nconst timeList = computed(() => {\n  const { hours, minutes } = unref(timePartials)\n  const { role, spinnerDate } = props\n  const compare = !isRange ? spinnerDate : undefined\n  return {\n    hours: getHoursList(role, compare),\n    minutes: getMinutesList(hours, role, compare),\n    seconds: getSecondsList(hours, minutes, role, compare),\n  }\n})\n\nconst arrowControlTimeList = computed<Record<TimeUnit, TimeList>>(() => {\n  const { hours, minutes, seconds } = unref(timePartials)\n\n  return {\n    hours: buildTimeList(hours, 23),\n    minutes: buildTimeList(minutes, 59),\n    seconds: buildTimeList(seconds, 59),\n  }\n})\n\nconst debouncedResetScroll = debounce((type) => {\n  isScrolling = false\n  adjustCurrentSpinner(type)\n}, 200)\n\nconst getAmPmFlag = (hour: number) => {\n  const shouldShowAmPm = !!props.amPmMode\n  if (!shouldShowAmPm) return ''\n  const isCapital = props.amPmMode === 'A'\n  // todo locale\n  let content = hour < 12 ? ' am' : ' pm'\n  if (isCapital) content = content.toUpperCase()\n  return content\n}\n\nconst emitSelectRange = (type: TimeUnit) => {\n  let range = [0, 0]\n  const actualFormat = format || DEFAULT_FORMATS_TIME\n  const hourIndex = actualFormat.indexOf('HH')\n  const minuteIndex = actualFormat.indexOf('mm')\n  const secondIndex = actualFormat.indexOf('ss')\n  switch (type) {\n    case 'hours':\n      if (hourIndex !== -1) {\n        range = [hourIndex, hourIndex + 2]\n      }\n      break\n    case 'minutes':\n      if (minuteIndex !== -1) {\n        range = [minuteIndex, minuteIndex + 2]\n      }\n      break\n    case 'seconds':\n      if (secondIndex !== -1) {\n        range = [secondIndex, secondIndex + 2]\n      }\n      break\n  }\n  const [left, right] = range\n\n  emit('select-range', left, right)\n  currentScrollbar.value = type\n}\n\nconst adjustCurrentSpinner = (type: TimeUnit) => {\n  adjustSpinner(type, unref(timePartials)[type])\n}\n\nconst adjustSpinners = () => {\n  adjustCurrentSpinner('hours')\n  adjustCurrentSpinner('minutes')\n  adjustCurrentSpinner('seconds')\n}\n\nconst getScrollbarElement = (el: HTMLElement) =>\n  el.querySelector(`.${ns.namespace.value}-scrollbar__wrap`) as HTMLElement\n\nconst adjustSpinner = (type: TimeUnit, value: number) => {\n  if (props.arrowControl) return\n  const scrollbar = unref(listRefsMap[type])\n  if (scrollbar && scrollbar.$el) {\n    if (!saveOnBlur) {\n      ignoreScroll[type] = true\n      rAF(() => {\n        ignoreScroll[type] = false\n      })\n    }\n    getScrollbarElement(scrollbar.$el).scrollTop = Math.max(\n      0,\n      value * typeItemHeight(type)\n    )\n  }\n}\n\nconst typeItemHeight = (type: TimeUnit): number => {\n  const scrollbar = unref(listRefsMap[type])\n  const listItem = scrollbar?.$el.querySelector('li')\n  if (listItem) {\n    return Number.parseFloat(getStyle(listItem, 'height')) || 0\n  }\n  return 0\n}\n\nconst onIncrement = () => {\n  scrollDown(1)\n}\n\nconst onDecrement = () => {\n  scrollDown(-1)\n}\n\nconst scrollDown = (step: number) => {\n  if (!currentScrollbar.value) {\n    emitSelectRange('hours')\n  }\n\n  const label = currentScrollbar.value!\n  const now = unref(timePartials)[label]\n  const total = currentScrollbar.value === 'hours' ? 24 : 60\n  const next = findNextUnDisabled(label, now, step, total)\n\n  modifyDateField(label, next)\n  adjustSpinner(label, next)\n  nextTick(() => emitSelectRange(label))\n}\n\nconst findNextUnDisabled = (\n  type: TimeUnit,\n  now: number,\n  step: number,\n  total: number\n) => {\n  let next = (now + step + total) % total\n  const list = unref(timeList)[type]\n  while (list[next] && next !== now) {\n    next = (next + step + total) % total\n  }\n  return next\n}\n\nconst modifyDateField = (type: TimeUnit, value: number) => {\n  const list = unref(timeList)[type]\n  const isDisabled = list[value]\n  if (isDisabled) return\n\n  const { hours, minutes, seconds } = unref(timePartials)\n\n  let changeTo\n  switch (type) {\n    case 'hours':\n      changeTo = props.spinnerDate.hour(value).minute(minutes).second(seconds)\n      break\n    case 'minutes':\n      changeTo = props.spinnerDate.hour(hours).minute(value).second(seconds)\n      break\n    case 'seconds':\n      changeTo = props.spinnerDate.hour(hours).minute(minutes).second(value)\n      break\n  }\n  emit(CHANGE_EVENT, changeTo)\n}\n\nconst handleClick = (\n  type: TimeUnit,\n  { value, disabled }: { value: number; disabled: boolean }\n) => {\n  if (!disabled) {\n    modifyDateField(type, value)\n    emitSelectRange(type)\n    adjustSpinner(type, value)\n  }\n}\n\nconst handleScroll = (type: TimeUnit) => {\n  if (!saveOnBlur && ignoreScroll[type]) return\n  const scrollbar = unref(listRefsMap[type])\n  if (!scrollbar) return\n\n  isScrolling = true\n  debouncedResetScroll(type)\n  const value = Math.min(\n    Math.round(\n      (getScrollbarElement(scrollbar.$el).scrollTop -\n        (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) +\n        3) /\n        typeItemHeight(type)\n    ),\n    type === 'hours' ? 23 : 59\n  )\n  modifyDateField(type, value)\n}\n\nconst scrollBarHeight = (type: TimeUnit) => {\n  return unref(listRefsMap[type])!.$el.offsetHeight\n}\n\nconst bindScrollEvent = () => {\n  const bindFunction = (type: TimeUnit) => {\n    const scrollbar = unref(listRefsMap[type])\n    if (scrollbar && scrollbar.$el) {\n      getScrollbarElement(scrollbar.$el).onscroll = () => {\n        // TODO: scroll is emitted when set scrollTop programmatically\n        // should find better solutions in the future!\n        handleScroll(type)\n      }\n    }\n  }\n  bindFunction('hours')\n  bindFunction('minutes')\n  bindFunction('seconds')\n}\n\nonMounted(() => {\n  nextTick(() => {\n    !props.arrowControl && bindScrollEvent()\n    adjustSpinners()\n    // set selection on the first hour part\n    if (props.role === 'start') emitSelectRange('hours')\n  })\n})\n\nconst setRef = (scrollbar: ScrollbarInstance | null, type: TimeUnit) => {\n  listRefsMap[type].value = scrollbar ?? undefined\n}\n\nemit('set-option', [`${props.role}_scrollDown`, scrollDown])\nemit('set-option', [`${props.role}_emitSelectRange`, emitSelectRange])\n\nwatch(\n  () => props.spinnerDate,\n  () => {\n    if (isScrolling) return\n    adjustSpinners()\n  }\n)\n</script>\n","<template>\n  <div :class=\"[ns.b('spinner'), { 'has-seconds': showSeconds }]\">\n    <template v-if=\"!arrowControl\">\n      <el-scrollbar\n        v-for=\"item in spinnerItems\"\n        :key=\"item\"\n        :ref=\"(scrollbar: unknown) => setRef(scrollbar as any, item)\"\n        :class=\"ns.be('spinner', 'wrapper')\"\n        wrap-style=\"max-height: inherit;\"\n        :view-class=\"ns.be('spinner', 'list')\"\n        noresize\n        tag=\"ul\"\n        @mouseenter=\"emitSelectRange(item)\"\n        @mousemove=\"adjustCurrentSpinner(item)\"\n      >\n        <li\n          v-for=\"(disabled, key) in timeList[item]\"\n          :key=\"key\"\n          :class=\"[\n            ns.be('spinner', 'item'),\n            ns.is('active', key === timePartials[item]),\n            ns.is('disabled', disabled),\n          ]\"\n          @click=\"handleClick(item, { value: key, disabled })\"\n        >\n          <template v-if=\"item === 'hours'\">\n            {{ ('0' + (amPmMode ? key % 12 || 12 : key)).slice(-2)\n            }}{{ getAmPmFlag(key) }}\n          </template>\n          <template v-else>\n            {{ ('0' + key).slice(-2) }}\n          </template>\n        </li>\n      </el-scrollbar>\n    </template>\n    <template v-if=\"arrowControl\">\n      <div\n        v-for=\"item in spinnerItems\"\n        :key=\"item\"\n        :class=\"[ns.be('spinner', 'wrapper'), ns.is('arrow')]\"\n        @mouseenter=\"emitSelectRange(item)\"\n      >\n        <el-icon\n          v-repeat-click=\"onDecrement\"\n          :class=\"['arrow-up', ns.be('spinner', 'arrow')]\"\n        >\n          <arrow-up />\n        </el-icon>\n        <el-icon\n          v-repeat-click=\"onIncrement\"\n          :class=\"['arrow-down', ns.be('spinner', 'arrow')]\"\n        >\n          <arrow-down />\n        </el-icon>\n        <ul :class=\"ns.be('spinner', 'list')\">\n          <li\n            v-for=\"(time, key) in arrowControlTimeList[item]\"\n            :key=\"key\"\n            :class=\"[\n              ns.be('spinner', 'item'),\n              ns.is('active', time === timePartials[item]),\n              ns.is('disabled', timeList[item][time!]),\n            ]\"\n          >\n            <template v-if=\"isNumber(time)\">\n              <template v-if=\"item === 'hours'\">\n                {{ ('0' + (amPmMode ? time % 12 || 12 : time)).slice(-2)\n                }}{{ getAmPmFlag(time) }}\n              </template>\n              <template v-else>\n                {{ ('0' + time).slice(-2) }}\n              </template>\n            </template>\n          </li>\n        </ul>\n      </div>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, ref, unref, watch } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { vRepeatClick } from '@pit-element-plus/directives'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { ArrowDown, ArrowUp } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { getStyle, isNumber, rAF } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport {\n  DEFAULT_FORMATS_TIME,\n  PICKER_BASE_INJECTION_KEY,\n  timeUnits,\n} from '../constants'\nimport { buildTimeList } from '../utils'\nimport { basicTimeSpinnerProps } from '../props/basic-time-spinner'\nimport { getTimeLists } from '../composables/use-time-picker'\n\nimport type { Ref } from 'vue'\nimport type { ScrollbarInstance } from '@pit-element-plus/components/scrollbar'\nimport type { TimeUnit } from '../constants'\nimport type { TimeList } from '../utils'\n\nconst props = defineProps(basicTimeSpinnerProps)\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst { isRange, format, saveOnBlur } = pickerBase.props\nconst emit = defineEmits([CHANGE_EVENT, 'select-range', 'set-option'])\n\nconst ns = useNamespace('time')\n\nconst { getHoursList, getMinutesList, getSecondsList } = getTimeLists(\n  props.disabledHours,\n  props.disabledMinutes,\n  props.disabledSeconds\n)\n\n// data\nlet isScrolling = false\nconst ignoreScroll = {\n  hours: false,\n  minutes: false,\n  seconds: false,\n}\n\nconst currentScrollbar = ref<TimeUnit>()\nconst listHoursRef = ref<ScrollbarInstance>()\nconst listMinutesRef = ref<ScrollbarInstance>()\nconst listSecondsRef = ref<ScrollbarInstance>()\nconst listRefsMap: Record<TimeUnit, Ref<ScrollbarInstance | undefined>> = {\n  hours: listHoursRef,\n  minutes: listMinutesRef,\n  seconds: listSecondsRef,\n}\n\n// computed\nconst spinnerItems = computed(() => {\n  return props.showSeconds ? timeUnits : timeUnits.slice(0, 2)\n})\n\nconst timePartials = computed<Record<TimeUnit, number>>(() => {\n  const { spinnerDate } = props\n  const hours = spinnerDate.hour()\n  const minutes = spinnerDate.minute()\n  const seconds = spinnerDate.second()\n  return { hours, minutes, seconds }\n})\n\nconst timeList = computed(() => {\n  const { hours, minutes } = unref(timePartials)\n  const { role, spinnerDate } = props\n  const compare = !isRange ? spinnerDate : undefined\n  return {\n    hours: getHoursList(role, compare),\n    minutes: getMinutesList(hours, role, compare),\n    seconds: getSecondsList(hours, minutes, role, compare),\n  }\n})\n\nconst arrowControlTimeList = computed<Record<TimeUnit, TimeList>>(() => {\n  const { hours, minutes, seconds } = unref(timePartials)\n\n  return {\n    hours: buildTimeList(hours, 23),\n    minutes: buildTimeList(minutes, 59),\n    seconds: buildTimeList(seconds, 59),\n  }\n})\n\nconst debouncedResetScroll = debounce((type) => {\n  isScrolling = false\n  adjustCurrentSpinner(type)\n}, 200)\n\nconst getAmPmFlag = (hour: number) => {\n  const shouldShowAmPm = !!props.amPmMode\n  if (!shouldShowAmPm) return ''\n  const isCapital = props.amPmMode === 'A'\n  // todo locale\n  let content = hour < 12 ? ' am' : ' pm'\n  if (isCapital) content = content.toUpperCase()\n  return content\n}\n\nconst emitSelectRange = (type: TimeUnit) => {\n  let range = [0, 0]\n  const actualFormat = format || DEFAULT_FORMATS_TIME\n  const hourIndex = actualFormat.indexOf('HH')\n  const minuteIndex = actualFormat.indexOf('mm')\n  const secondIndex = actualFormat.indexOf('ss')\n  switch (type) {\n    case 'hours':\n      if (hourIndex !== -1) {\n        range = [hourIndex, hourIndex + 2]\n      }\n      break\n    case 'minutes':\n      if (minuteIndex !== -1) {\n        range = [minuteIndex, minuteIndex + 2]\n      }\n      break\n    case 'seconds':\n      if (secondIndex !== -1) {\n        range = [secondIndex, secondIndex + 2]\n      }\n      break\n  }\n  const [left, right] = range\n\n  emit('select-range', left, right)\n  currentScrollbar.value = type\n}\n\nconst adjustCurrentSpinner = (type: TimeUnit) => {\n  adjustSpinner(type, unref(timePartials)[type])\n}\n\nconst adjustSpinners = () => {\n  adjustCurrentSpinner('hours')\n  adjustCurrentSpinner('minutes')\n  adjustCurrentSpinner('seconds')\n}\n\nconst getScrollbarElement = (el: HTMLElement) =>\n  el.querySelector(`.${ns.namespace.value}-scrollbar__wrap`) as HTMLElement\n\nconst adjustSpinner = (type: TimeUnit, value: number) => {\n  if (props.arrowControl) return\n  const scrollbar = unref(listRefsMap[type])\n  if (scrollbar && scrollbar.$el) {\n    if (!saveOnBlur) {\n      ignoreScroll[type] = true\n      rAF(() => {\n        ignoreScroll[type] = false\n      })\n    }\n    getScrollbarElement(scrollbar.$el).scrollTop = Math.max(\n      0,\n      value * typeItemHeight(type)\n    )\n  }\n}\n\nconst typeItemHeight = (type: TimeUnit): number => {\n  const scrollbar = unref(listRefsMap[type])\n  const listItem = scrollbar?.$el.querySelector('li')\n  if (listItem) {\n    return Number.parseFloat(getStyle(listItem, 'height')) || 0\n  }\n  return 0\n}\n\nconst onIncrement = () => {\n  scrollDown(1)\n}\n\nconst onDecrement = () => {\n  scrollDown(-1)\n}\n\nconst scrollDown = (step: number) => {\n  if (!currentScrollbar.value) {\n    emitSelectRange('hours')\n  }\n\n  const label = currentScrollbar.value!\n  const now = unref(timePartials)[label]\n  const total = currentScrollbar.value === 'hours' ? 24 : 60\n  const next = findNextUnDisabled(label, now, step, total)\n\n  modifyDateField(label, next)\n  adjustSpinner(label, next)\n  nextTick(() => emitSelectRange(label))\n}\n\nconst findNextUnDisabled = (\n  type: TimeUnit,\n  now: number,\n  step: number,\n  total: number\n) => {\n  let next = (now + step + total) % total\n  const list = unref(timeList)[type]\n  while (list[next] && next !== now) {\n    next = (next + step + total) % total\n  }\n  return next\n}\n\nconst modifyDateField = (type: TimeUnit, value: number) => {\n  const list = unref(timeList)[type]\n  const isDisabled = list[value]\n  if (isDisabled) return\n\n  const { hours, minutes, seconds } = unref(timePartials)\n\n  let changeTo\n  switch (type) {\n    case 'hours':\n      changeTo = props.spinnerDate.hour(value).minute(minutes).second(seconds)\n      break\n    case 'minutes':\n      changeTo = props.spinnerDate.hour(hours).minute(value).second(seconds)\n      break\n    case 'seconds':\n      changeTo = props.spinnerDate.hour(hours).minute(minutes).second(value)\n      break\n  }\n  emit(CHANGE_EVENT, changeTo)\n}\n\nconst handleClick = (\n  type: TimeUnit,\n  { value, disabled }: { value: number; disabled: boolean }\n) => {\n  if (!disabled) {\n    modifyDateField(type, value)\n    emitSelectRange(type)\n    adjustSpinner(type, value)\n  }\n}\n\nconst handleScroll = (type: TimeUnit) => {\n  if (!saveOnBlur && ignoreScroll[type]) return\n  const scrollbar = unref(listRefsMap[type])\n  if (!scrollbar) return\n\n  isScrolling = true\n  debouncedResetScroll(type)\n  const value = Math.min(\n    Math.round(\n      (getScrollbarElement(scrollbar.$el).scrollTop -\n        (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) +\n        3) /\n        typeItemHeight(type)\n    ),\n    type === 'hours' ? 23 : 59\n  )\n  modifyDateField(type, value)\n}\n\nconst scrollBarHeight = (type: TimeUnit) => {\n  return unref(listRefsMap[type])!.$el.offsetHeight\n}\n\nconst bindScrollEvent = () => {\n  const bindFunction = (type: TimeUnit) => {\n    const scrollbar = unref(listRefsMap[type])\n    if (scrollbar && scrollbar.$el) {\n      getScrollbarElement(scrollbar.$el).onscroll = () => {\n        // TODO: scroll is emitted when set scrollTop programmatically\n        // should find better solutions in the future!\n        handleScroll(type)\n      }\n    }\n  }\n  bindFunction('hours')\n  bindFunction('minutes')\n  bindFunction('seconds')\n}\n\nonMounted(() => {\n  nextTick(() => {\n    !props.arrowControl && bindScrollEvent()\n    adjustSpinners()\n    // set selection on the first hour part\n    if (props.role === 'start') emitSelectRange('hours')\n  })\n})\n\nconst setRef = (scrollbar: ScrollbarInstance | null, type: TimeUnit) => {\n  listRefsMap[type].value = scrollbar ?? undefined\n}\n\nemit('set-option', [`${props.role}_scrollDown`, scrollDown])\nemit('set-option', [`${props.role}_emitSelectRange`, emitSelectRange])\n\nwatch(\n  () => props.spinnerDate,\n  () => {\n    if (isScrolling) return\n    adjustSpinners()\n  }\n)\n</script>\n","<template>\n  <transition :name=\"transitionName\">\n    <div v-if=\"actualVisible || visible\" :class=\"ns.b('panel')\">\n      <div :class=\"[ns.be('panel', 'content'), { 'has-seconds': showSeconds }]\">\n        <time-spinner\n          ref=\"spinner\"\n          :role=\"datetimeRole || 'start'\"\n          :arrow-control=\"arrowControl\"\n          :show-seconds=\"showSeconds\"\n          :am-pm-mode=\"amPmMode\"\n          :spinner-date=\"\n            // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n            parsedValue as any\n          \"\n          :disabled-hours=\"disabledHours\"\n          :disabled-minutes=\"disabledMinutes\"\n          :disabled-seconds=\"disabledSeconds\"\n          @change=\"handleChange\"\n          @set-option=\"onSetOption\"\n          @select-range=\"setSelectionRange\"\n        />\n      </div>\n      <div :class=\"ns.be('panel', 'footer')\">\n        <button\n          type=\"button\"\n          :class=\"[ns.be('panel', 'btn'), 'cancel']\"\n          @click=\"handleCancel\"\n        >\n          {{ t('el.datepicker.cancel') }}\n        </button>\n        <button\n          type=\"button\"\n          :class=\"[ns.be('panel', 'btn'), 'confirm']\"\n          @click=\"handleConfirm()\"\n        >\n          {{ t('el.datepicker.confirm') }}\n        </button>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { getEventCode, isUndefined } from '@pit-element-plus/utils'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimePickerProps } from '../props/panel-time-picker'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n  buildAvailableTimeSlotGetter,\n  useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimePickerProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\n// Injections\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n  arrowControl,\n  disabledHours,\n  disabledMinutes,\n  disabledSeconds,\n  defaultValue,\n} = pickerBase.props\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n  buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds)\n\nconst ns = useNamespace('time')\nconst { t, lang } = useLocale()\n// data\nconst selectionRange = ref([0, 2])\n\nconst oldValue = useOldValue(props, {\n  modelValue: computed(() => pickerBase.props.modelValue),\n  valueOnClear: computed(() =>\n    pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null\n  ),\n})\n\n// computed\nconst transitionName = computed(() => {\n  return isUndefined(props.actualVisible)\n    ? `${ns.namespace.value}-zoom-in-top`\n    : ''\n})\nconst showSeconds = computed(() => {\n  return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n  if (props.format.includes('A')) return 'A'\n  if (props.format.includes('a')) return 'a'\n  return ''\n})\n// method\nconst isValidValue = (_date: Dayjs) => {\n  const parsedDate = dayjs(_date).locale(lang.value)\n  const result = getRangeAvailableTime(parsedDate)\n  return parsedDate.isSame(result)\n}\nconst handleCancel = () => {\n  const old = oldValue.value\n  emit('pick', old, false)\n  nextTick(() => {\n    oldValue.value = old\n  })\n}\nconst handleConfirm = (visible = false, first = false) => {\n  if (first) return\n  emit('pick', props.parsedValue, visible)\n}\nconst handleChange = (_date: Dayjs) => {\n  // visible avoids edge cases, when use scrolls during panel closing animation\n  if (!props.visible) {\n    return\n  }\n  const result = getRangeAvailableTime(_date).millisecond(0)\n  emit('pick', result, true)\n}\n\nconst setSelectionRange = (start: number, end: number) => {\n  emit('select-range', start, end)\n  selectionRange.value = [start, end]\n}\n\nconst changeSelectionRange = (step: number) => {\n  const actualFormat = props.format\n  const hourIndex = actualFormat.indexOf('HH')\n  const minuteIndex = actualFormat.indexOf('mm')\n  const secondIndex = actualFormat.indexOf('ss')\n  const list: number[] = []\n  const mapping: string[] = []\n  if (hourIndex !== -1) {\n    list.push(hourIndex)\n    mapping.push('hours')\n  }\n  if (minuteIndex !== -1) {\n    list.push(minuteIndex)\n    mapping.push('minutes')\n  }\n  if (secondIndex !== -1 && showSeconds.value) {\n    list.push(secondIndex)\n    mapping.push('seconds')\n  }\n\n  const index = list.indexOf(selectionRange.value[0])\n  const next = (index + step + list.length) % list.length\n  timePickerOptions['start_emitSelectRange'](mapping[next])\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n\n  const { left, right, up, down } = EVENT_CODE\n\n  if ([left, right].includes(code)) {\n    const step = code === left ? -1 : 1\n    changeSelectionRange(step)\n    event.preventDefault()\n    return\n  }\n\n  if ([up, down].includes(code)) {\n    const step = code === up ? -1 : 1\n    timePickerOptions['start_scrollDown'](step)\n    event.preventDefault()\n    return\n  }\n}\n\nconst { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({\n  getAvailableHours,\n  getAvailableMinutes,\n  getAvailableSeconds,\n})\n\nconst getRangeAvailableTime = (date: Dayjs) => {\n  return getAvailableTime(date, props.datetimeRole || '', true)\n}\n\nconst parseUserInput = (value: Dayjs) => {\n  if (!value) return null\n  return dayjs(value, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n  return dayjs(defaultValue).locale(lang.value)\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['handleCancel', handleCancel])\n</script>\n","<template>\n  <transition :name=\"transitionName\">\n    <div v-if=\"actualVisible || visible\" :class=\"ns.b('panel')\">\n      <div :class=\"[ns.be('panel', 'content'), { 'has-seconds': showSeconds }]\">\n        <time-spinner\n          ref=\"spinner\"\n          :role=\"datetimeRole || 'start'\"\n          :arrow-control=\"arrowControl\"\n          :show-seconds=\"showSeconds\"\n          :am-pm-mode=\"amPmMode\"\n          :spinner-date=\"\n            // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n            parsedValue as any\n          \"\n          :disabled-hours=\"disabledHours\"\n          :disabled-minutes=\"disabledMinutes\"\n          :disabled-seconds=\"disabledSeconds\"\n          @change=\"handleChange\"\n          @set-option=\"onSetOption\"\n          @select-range=\"setSelectionRange\"\n        />\n      </div>\n      <div :class=\"ns.be('panel', 'footer')\">\n        <button\n          type=\"button\"\n          :class=\"[ns.be('panel', 'btn'), 'cancel']\"\n          @click=\"handleCancel\"\n        >\n          {{ t('el.datepicker.cancel') }}\n        </button>\n        <button\n          type=\"button\"\n          :class=\"[ns.be('panel', 'btn'), 'confirm']\"\n          @click=\"handleConfirm()\"\n        >\n          {{ t('el.datepicker.confirm') }}\n        </button>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { getEventCode, isUndefined } from '@pit-element-plus/utils'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimePickerProps } from '../props/panel-time-picker'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n  buildAvailableTimeSlotGetter,\n  useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimePickerProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\n// Injections\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n  arrowControl,\n  disabledHours,\n  disabledMinutes,\n  disabledSeconds,\n  defaultValue,\n} = pickerBase.props\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n  buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds)\n\nconst ns = useNamespace('time')\nconst { t, lang } = useLocale()\n// data\nconst selectionRange = ref([0, 2])\n\nconst oldValue = useOldValue(props, {\n  modelValue: computed(() => pickerBase.props.modelValue),\n  valueOnClear: computed(() =>\n    pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null\n  ),\n})\n\n// computed\nconst transitionName = computed(() => {\n  return isUndefined(props.actualVisible)\n    ? `${ns.namespace.value}-zoom-in-top`\n    : ''\n})\nconst showSeconds = computed(() => {\n  return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n  if (props.format.includes('A')) return 'A'\n  if (props.format.includes('a')) return 'a'\n  return ''\n})\n// method\nconst isValidValue = (_date: Dayjs) => {\n  const parsedDate = dayjs(_date).locale(lang.value)\n  const result = getRangeAvailableTime(parsedDate)\n  return parsedDate.isSame(result)\n}\nconst handleCancel = () => {\n  const old = oldValue.value\n  emit('pick', old, false)\n  nextTick(() => {\n    oldValue.value = old\n  })\n}\nconst handleConfirm = (visible = false, first = false) => {\n  if (first) return\n  emit('pick', props.parsedValue, visible)\n}\nconst handleChange = (_date: Dayjs) => {\n  // visible avoids edge cases, when use scrolls during panel closing animation\n  if (!props.visible) {\n    return\n  }\n  const result = getRangeAvailableTime(_date).millisecond(0)\n  emit('pick', result, true)\n}\n\nconst setSelectionRange = (start: number, end: number) => {\n  emit('select-range', start, end)\n  selectionRange.value = [start, end]\n}\n\nconst changeSelectionRange = (step: number) => {\n  const actualFormat = props.format\n  const hourIndex = actualFormat.indexOf('HH')\n  const minuteIndex = actualFormat.indexOf('mm')\n  const secondIndex = actualFormat.indexOf('ss')\n  const list: number[] = []\n  const mapping: string[] = []\n  if (hourIndex !== -1) {\n    list.push(hourIndex)\n    mapping.push('hours')\n  }\n  if (minuteIndex !== -1) {\n    list.push(minuteIndex)\n    mapping.push('minutes')\n  }\n  if (secondIndex !== -1 && showSeconds.value) {\n    list.push(secondIndex)\n    mapping.push('seconds')\n  }\n\n  const index = list.indexOf(selectionRange.value[0])\n  const next = (index + step + list.length) % list.length\n  timePickerOptions['start_emitSelectRange'](mapping[next])\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n\n  const { left, right, up, down } = EVENT_CODE\n\n  if ([left, right].includes(code)) {\n    const step = code === left ? -1 : 1\n    changeSelectionRange(step)\n    event.preventDefault()\n    return\n  }\n\n  if ([up, down].includes(code)) {\n    const step = code === up ? -1 : 1\n    timePickerOptions['start_scrollDown'](step)\n    event.preventDefault()\n    return\n  }\n}\n\nconst { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({\n  getAvailableHours,\n  getAvailableMinutes,\n  getAvailableSeconds,\n})\n\nconst getRangeAvailableTime = (date: Dayjs) => {\n  return getAvailableTime(date, props.datetimeRole || '', true)\n}\n\nconst parseUserInput = (value: Dayjs) => {\n  if (!value) return null\n  return dayjs(value, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n  return dayjs(defaultValue).locale(lang.value)\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['handleCancel', handleCancel])\n</script>\n","<template>\n  <transition :name=\"transitionName\">\n    <div v-if=\"actualVisible || visible\" :class=\"ns.b('panel')\">\n      <div :class=\"[ns.be('panel', 'content'), { 'has-seconds': showSeconds }]\">\n        <time-spinner\n          ref=\"spinner\"\n          :role=\"datetimeRole || 'start'\"\n          :arrow-control=\"arrowControl\"\n          :show-seconds=\"showSeconds\"\n          :am-pm-mode=\"amPmMode\"\n          :spinner-date=\"\n            // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n            parsedValue as any\n          \"\n          :disabled-hours=\"disabledHours\"\n          :disabled-minutes=\"disabledMinutes\"\n          :disabled-seconds=\"disabledSeconds\"\n          @change=\"handleChange\"\n          @set-option=\"onSetOption\"\n          @select-range=\"setSelectionRange\"\n        />\n      </div>\n      <div :class=\"ns.be('panel', 'footer')\">\n        <button\n          type=\"button\"\n          :class=\"[ns.be('panel', 'btn'), 'cancel']\"\n          @click=\"handleCancel\"\n        >\n          {{ t('el.datepicker.cancel') }}\n        </button>\n        <button\n          type=\"button\"\n          :class=\"[ns.be('panel', 'btn'), 'confirm']\"\n          @click=\"handleConfirm()\"\n        >\n          {{ t('el.datepicker.confirm') }}\n        </button>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { getEventCode, isUndefined } from '@pit-element-plus/utils'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimePickerProps } from '../props/panel-time-picker'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n  buildAvailableTimeSlotGetter,\n  useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimePickerProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\n// Injections\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n  arrowControl,\n  disabledHours,\n  disabledMinutes,\n  disabledSeconds,\n  defaultValue,\n} = pickerBase.props\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n  buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds)\n\nconst ns = useNamespace('time')\nconst { t, lang } = useLocale()\n// data\nconst selectionRange = ref([0, 2])\n\nconst oldValue = useOldValue(props, {\n  modelValue: computed(() => pickerBase.props.modelValue),\n  valueOnClear: computed(() =>\n    pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null\n  ),\n})\n\n// computed\nconst transitionName = computed(() => {\n  return isUndefined(props.actualVisible)\n    ? `${ns.namespace.value}-zoom-in-top`\n    : ''\n})\nconst showSeconds = computed(() => {\n  return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n  if (props.format.includes('A')) return 'A'\n  if (props.format.includes('a')) return 'a'\n  return ''\n})\n// method\nconst isValidValue = (_date: Dayjs) => {\n  const parsedDate = dayjs(_date).locale(lang.value)\n  const result = getRangeAvailableTime(parsedDate)\n  return parsedDate.isSame(result)\n}\nconst handleCancel = () => {\n  const old = oldValue.value\n  emit('pick', old, false)\n  nextTick(() => {\n    oldValue.value = old\n  })\n}\nconst handleConfirm = (visible = false, first = false) => {\n  if (first) return\n  emit('pick', props.parsedValue, visible)\n}\nconst handleChange = (_date: Dayjs) => {\n  // visible avoids edge cases, when use scrolls during panel closing animation\n  if (!props.visible) {\n    return\n  }\n  const result = getRangeAvailableTime(_date).millisecond(0)\n  emit('pick', result, true)\n}\n\nconst setSelectionRange = (start: number, end: number) => {\n  emit('select-range', start, end)\n  selectionRange.value = [start, end]\n}\n\nconst changeSelectionRange = (step: number) => {\n  const actualFormat = props.format\n  const hourIndex = actualFormat.indexOf('HH')\n  const minuteIndex = actualFormat.indexOf('mm')\n  const secondIndex = actualFormat.indexOf('ss')\n  const list: number[] = []\n  const mapping: string[] = []\n  if (hourIndex !== -1) {\n    list.push(hourIndex)\n    mapping.push('hours')\n  }\n  if (minuteIndex !== -1) {\n    list.push(minuteIndex)\n    mapping.push('minutes')\n  }\n  if (secondIndex !== -1 && showSeconds.value) {\n    list.push(secondIndex)\n    mapping.push('seconds')\n  }\n\n  const index = list.indexOf(selectionRange.value[0])\n  const next = (index + step + list.length) % list.length\n  timePickerOptions['start_emitSelectRange'](mapping[next])\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n\n  const { left, right, up, down } = EVENT_CODE\n\n  if ([left, right].includes(code)) {\n    const step = code === left ? -1 : 1\n    changeSelectionRange(step)\n    event.preventDefault()\n    return\n  }\n\n  if ([up, down].includes(code)) {\n    const step = code === up ? -1 : 1\n    timePickerOptions['start_scrollDown'](step)\n    event.preventDefault()\n    return\n  }\n}\n\nconst { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({\n  getAvailableHours,\n  getAvailableMinutes,\n  getAvailableSeconds,\n})\n\nconst getRangeAvailableTime = (date: Dayjs) => {\n  return getAvailableTime(date, props.datetimeRole || '', true)\n}\n\nconst parseUserInput = (value: Dayjs) => {\n  if (!value) return null\n  return dayjs(value, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n  return dayjs(defaultValue).locale(lang.value)\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['handleCancel', handleCancel])\n</script>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { timePanelSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const panelTimeRangeProps = buildProps({\n  ...timePanelSharedProps,\n  parsedValue: {\n    type: definePropType<[Dayjs, Dayjs]>(Array),\n  },\n} as const)\n\nexport type PanelTimeRangeProps = ExtractPropTypes<typeof panelTimeRangeProps>\nexport type PanelTimeRangePropsPublic = ExtractPublicPropTypes<\n  typeof panelTimeRangeProps\n>\n","<template>\n  <div\n    v-if=\"actualVisible\"\n    :class=\"[nsTime.b('range-picker'), nsPicker.b('panel')]\"\n  >\n    <div :class=\"nsTime.be('range-picker', 'content')\">\n      <div :class=\"nsTime.be('range-picker', 'cell')\">\n        <div :class=\"nsTime.be('range-picker', 'header')\">\n          {{ t('el.datepicker.startTime') }}\n        </div>\n        <div :class=\"startContainerKls\">\n          <time-spinner\n            ref=\"minSpinner\"\n            role=\"start\"\n            :show-seconds=\"showSeconds\"\n            :am-pm-mode=\"amPmMode\"\n            :arrow-control=\"arrowControl\"\n            :spinner-date=\"startTime\"\n            :disabled-hours=\"disabledHours_\"\n            :disabled-minutes=\"disabledMinutes_\"\n            :disabled-seconds=\"disabledSeconds_\"\n            @change=\"handleMinChange\"\n            @set-option=\"onSetOption\"\n            @select-range=\"setMinSelectionRange\"\n          />\n        </div>\n      </div>\n      <div :class=\"nsTime.be('range-picker', 'cell')\">\n        <div :class=\"nsTime.be('range-picker', 'header')\">\n          {{ t('el.datepicker.endTime') }}\n        </div>\n        <div :class=\"endContainerKls\">\n          <time-spinner\n            ref=\"maxSpinner\"\n            role=\"end\"\n            :show-seconds=\"showSeconds\"\n            :am-pm-mode=\"amPmMode\"\n            :arrow-control=\"arrowControl\"\n            :spinner-date=\"endTime\"\n            :disabled-hours=\"disabledHours_\"\n            :disabled-minutes=\"disabledMinutes_\"\n            :disabled-seconds=\"disabledSeconds_\"\n            @change=\"handleMaxChange\"\n            @set-option=\"onSetOption\"\n            @select-range=\"setMaxSelectionRange\"\n          />\n        </div>\n      </div>\n    </div>\n    <div :class=\"nsTime.be('panel', 'footer')\">\n      <button\n        type=\"button\"\n        :class=\"[nsTime.be('panel', 'btn'), 'cancel']\"\n        @click=\"handleCancel()\"\n      >\n        {{ t('el.datepicker.cancel') }}\n      </button>\n      <button\n        type=\"button\"\n        :class=\"[nsTime.be('panel', 'btn'), 'confirm']\"\n        :disabled=\"btnConfirmDisabled\"\n        @click=\"handleConfirm()\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, unref } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { getEventCode, isArray } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimeRangeProps } from '../props/panel-time-range'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n  buildAvailableTimeSlotGetter,\n  useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimeRangeProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\nconst makeSelectRange = (start: number, end: number) => {\n  const result: number[] = []\n  for (let i = start; i <= end; i++) {\n    result.push(i)\n  }\n  return result\n}\n\nconst { t, lang } = useLocale()\nconst nsTime = useNamespace('time')\nconst nsPicker = useNamespace('picker')\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n  arrowControl,\n  disabledHours,\n  disabledMinutes,\n  disabledSeconds,\n  defaultValue,\n} = pickerBase.props\n\nconst startContainerKls = computed(() => [\n  nsTime.be('range-picker', 'body'),\n  nsTime.be('panel', 'content'),\n  nsTime.is('arrow', arrowControl),\n  showSeconds.value ? 'has-seconds' : '',\n])\nconst endContainerKls = computed(() => [\n  nsTime.be('range-picker', 'body'),\n  nsTime.be('panel', 'content'),\n  nsTime.is('arrow', arrowControl),\n  showSeconds.value ? 'has-seconds' : '',\n])\n\nconst startTime = computed(() => props.parsedValue![0])\nconst endTime = computed(() => props.parsedValue![1])\nconst oldValue = useOldValue(props, {\n  modelValue: computed(() => pickerBase.props.modelValue),\n  valueOnClear: computed(() =>\n    pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null\n  ),\n})\nconst handleCancel = () => {\n  const old = oldValue.value\n  emit('pick', old, false)\n  nextTick(() => {\n    oldValue.value = old\n  })\n}\n\nconst showSeconds = computed(() => {\n  return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n  if (props.format.includes('A')) return 'A'\n  if (props.format.includes('a')) return 'a'\n  return ''\n})\n\nconst handleConfirm = (visible = false) => {\n  emit('pick', [startTime.value, endTime.value], visible)\n}\n\nconst handleMinChange = (date: Dayjs) => {\n  handleChange(date.millisecond(0), endTime.value)\n}\nconst handleMaxChange = (date: Dayjs) => {\n  handleChange(startTime.value, date.millisecond(0))\n}\n\nconst isValidValue = (_date: Dayjs[]) => {\n  const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n  const result = getRangeAvailableTime(parsedDate)\n  return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n}\n\nconst handleChange = (start: Dayjs, end: Dayjs) => {\n  if (!props.visible) {\n    return\n  }\n  // todo getRangeAvailableTime(_date).millisecond(0)\n  emit('pick', [start, end], true)\n}\nconst btnConfirmDisabled = computed(() => {\n  return startTime.value > endTime.value\n})\n\nconst selectionRange = ref([0, 2])\nconst setMinSelectionRange = (start: number, end: number) => {\n  emit('select-range', start, end, 'min')\n  selectionRange.value = [start, end]\n}\n\nconst offset = computed(() => (showSeconds.value ? 11 : 8))\nconst setMaxSelectionRange = (start: number, end: number) => {\n  emit('select-range', start, end, 'max')\n  const _offset = unref(offset)\n  selectionRange.value = [start + _offset, end + _offset]\n}\n\nconst changeSelectionRange = (step: number) => {\n  const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n  const mapping = ['hours', 'minutes'].concat(\n    showSeconds.value ? ['seconds'] : []\n  )\n  const index = list.indexOf(selectionRange.value[0])\n  const next = (index + step + list.length) % list.length\n  const half = list.length / 2\n  if (next < half) {\n    timePickerOptions['start_emitSelectRange'](mapping[next])\n  } else {\n    timePickerOptions['end_emitSelectRange'](mapping[next - half])\n  }\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n\n  const { left, right, up, down } = EVENT_CODE\n\n  if ([left, right].includes(code)) {\n    const step = code === left ? -1 : 1\n    changeSelectionRange(step)\n    event.preventDefault()\n    return\n  }\n\n  if ([up, down].includes(code)) {\n    const step = code === up ? -1 : 1\n    const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n    timePickerOptions[`${role}_scrollDown`](step)\n    event.preventDefault()\n    return\n  }\n}\n\nconst disabledHours_ = (role: string, compare?: Dayjs) => {\n  const defaultDisable = disabledHours ? disabledHours(role) : []\n  const isStart = role === 'start'\n  const compareDate = compare || (isStart ? endTime.value : startTime.value)\n  const compareHour = compareDate.hour()\n  const nextDisable = isStart\n    ? makeSelectRange(compareHour + 1, 23)\n    : makeSelectRange(0, compareHour - 1)\n  return union(defaultDisable, nextDisable)\n}\nconst disabledMinutes_ = (hour: number, role: string, compare?: Dayjs) => {\n  const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n  const isStart = role === 'start'\n  const compareDate = compare || (isStart ? endTime.value : startTime.value)\n  const compareHour = compareDate.hour()\n  if (hour !== compareHour) {\n    return defaultDisable\n  }\n  const compareMinute = compareDate.minute()\n  const nextDisable = isStart\n    ? makeSelectRange(compareMinute + 1, 59)\n    : makeSelectRange(0, compareMinute - 1)\n  return union(defaultDisable, nextDisable)\n}\nconst disabledSeconds_ = (\n  hour: number,\n  minute: number,\n  role: string,\n  compare?: Dayjs\n) => {\n  const defaultDisable = disabledSeconds\n    ? disabledSeconds(hour, minute, role)\n    : []\n  const isStart = role === 'start'\n  const compareDate = compare || (isStart ? endTime.value : startTime.value)\n  const compareHour = compareDate.hour()\n  const compareMinute = compareDate.minute()\n  if (hour !== compareHour || minute !== compareMinute) {\n    return defaultDisable\n  }\n  const compareSecond = compareDate.second()\n  const nextDisable = isStart\n    ? makeSelectRange(compareSecond + 1, 59)\n    : makeSelectRange(0, compareSecond - 1)\n  return union(defaultDisable, nextDisable)\n}\n\nconst getRangeAvailableTime = ([start, end]: Array<Dayjs>) => {\n  return [\n    getAvailableTime(start, 'start', true, end),\n    getAvailableTime(end, 'end', false, start),\n  ] as const\n}\n\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n  buildAvailableTimeSlotGetter(\n    disabledHours_,\n    disabledMinutes_,\n    disabledSeconds_\n  )\n\nconst {\n  timePickerOptions,\n\n  getAvailableTime,\n  onSetOption,\n} = useTimePanel({\n  getAvailableHours,\n  getAvailableMinutes,\n  getAvailableSeconds,\n})\n\nconst parseUserInput = (days: Dayjs[] | Dayjs) => {\n  if (!days) return null\n  if (isArray(days)) {\n    return days.map((d) => dayjs(d, props.format).locale(lang.value))\n  }\n  return dayjs(days, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n  if (isArray(defaultValue)) {\n    return defaultValue.map((d: Date) => dayjs(d).locale(lang.value))\n  }\n  const defaultDay = dayjs(defaultValue).locale(lang.value)\n  return [defaultDay, defaultDay.add(60, 'm')]\n}\n\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['handleCancel', handleCancel])\n</script>\n","<template>\n  <div\n    v-if=\"actualVisible\"\n    :class=\"[nsTime.b('range-picker'), nsPicker.b('panel')]\"\n  >\n    <div :class=\"nsTime.be('range-picker', 'content')\">\n      <div :class=\"nsTime.be('range-picker', 'cell')\">\n        <div :class=\"nsTime.be('range-picker', 'header')\">\n          {{ t('el.datepicker.startTime') }}\n        </div>\n        <div :class=\"startContainerKls\">\n          <time-spinner\n            ref=\"minSpinner\"\n            role=\"start\"\n            :show-seconds=\"showSeconds\"\n            :am-pm-mode=\"amPmMode\"\n            :arrow-control=\"arrowControl\"\n            :spinner-date=\"startTime\"\n            :disabled-hours=\"disabledHours_\"\n            :disabled-minutes=\"disabledMinutes_\"\n            :disabled-seconds=\"disabledSeconds_\"\n            @change=\"handleMinChange\"\n            @set-option=\"onSetOption\"\n            @select-range=\"setMinSelectionRange\"\n          />\n        </div>\n      </div>\n      <div :class=\"nsTime.be('range-picker', 'cell')\">\n        <div :class=\"nsTime.be('range-picker', 'header')\">\n          {{ t('el.datepicker.endTime') }}\n        </div>\n        <div :class=\"endContainerKls\">\n          <time-spinner\n            ref=\"maxSpinner\"\n            role=\"end\"\n            :show-seconds=\"showSeconds\"\n            :am-pm-mode=\"amPmMode\"\n            :arrow-control=\"arrowControl\"\n            :spinner-date=\"endTime\"\n            :disabled-hours=\"disabledHours_\"\n            :disabled-minutes=\"disabledMinutes_\"\n            :disabled-seconds=\"disabledSeconds_\"\n            @change=\"handleMaxChange\"\n            @set-option=\"onSetOption\"\n            @select-range=\"setMaxSelectionRange\"\n          />\n        </div>\n      </div>\n    </div>\n    <div :class=\"nsTime.be('panel', 'footer')\">\n      <button\n        type=\"button\"\n        :class=\"[nsTime.be('panel', 'btn'), 'cancel']\"\n        @click=\"handleCancel()\"\n      >\n        {{ t('el.datepicker.cancel') }}\n      </button>\n      <button\n        type=\"button\"\n        :class=\"[nsTime.be('panel', 'btn'), 'confirm']\"\n        :disabled=\"btnConfirmDisabled\"\n        @click=\"handleConfirm()\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, unref } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { getEventCode, isArray } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimeRangeProps } from '../props/panel-time-range'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n  buildAvailableTimeSlotGetter,\n  useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimeRangeProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\nconst makeSelectRange = (start: number, end: number) => {\n  const result: number[] = []\n  for (let i = start; i <= end; i++) {\n    result.push(i)\n  }\n  return result\n}\n\nconst { t, lang } = useLocale()\nconst nsTime = useNamespace('time')\nconst nsPicker = useNamespace('picker')\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n  arrowControl,\n  disabledHours,\n  disabledMinutes,\n  disabledSeconds,\n  defaultValue,\n} = pickerBase.props\n\nconst startContainerKls = computed(() => [\n  nsTime.be('range-picker', 'body'),\n  nsTime.be('panel', 'content'),\n  nsTime.is('arrow', arrowControl),\n  showSeconds.value ? 'has-seconds' : '',\n])\nconst endContainerKls = computed(() => [\n  nsTime.be('range-picker', 'body'),\n  nsTime.be('panel', 'content'),\n  nsTime.is('arrow', arrowControl),\n  showSeconds.value ? 'has-seconds' : '',\n])\n\nconst startTime = computed(() => props.parsedValue![0])\nconst endTime = computed(() => props.parsedValue![1])\nconst oldValue = useOldValue(props, {\n  modelValue: computed(() => pickerBase.props.modelValue),\n  valueOnClear: computed(() =>\n    pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null\n  ),\n})\nconst handleCancel = () => {\n  const old = oldValue.value\n  emit('pick', old, false)\n  nextTick(() => {\n    oldValue.value = old\n  })\n}\n\nconst showSeconds = computed(() => {\n  return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n  if (props.format.includes('A')) return 'A'\n  if (props.format.includes('a')) return 'a'\n  return ''\n})\n\nconst handleConfirm = (visible = false) => {\n  emit('pick', [startTime.value, endTime.value], visible)\n}\n\nconst handleMinChange = (date: Dayjs) => {\n  handleChange(date.millisecond(0), endTime.value)\n}\nconst handleMaxChange = (date: Dayjs) => {\n  handleChange(startTime.value, date.millisecond(0))\n}\n\nconst isValidValue = (_date: Dayjs[]) => {\n  const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n  const result = getRangeAvailableTime(parsedDate)\n  return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n}\n\nconst handleChange = (start: Dayjs, end: Dayjs) => {\n  if (!props.visible) {\n    return\n  }\n  // todo getRangeAvailableTime(_date).millisecond(0)\n  emit('pick', [start, end], true)\n}\nconst btnConfirmDisabled = computed(() => {\n  return startTime.value > endTime.value\n})\n\nconst selectionRange = ref([0, 2])\nconst setMinSelectionRange = (start: number, end: number) => {\n  emit('select-range', start, end, 'min')\n  selectionRange.value = [start, end]\n}\n\nconst offset = computed(() => (showSeconds.value ? 11 : 8))\nconst setMaxSelectionRange = (start: number, end: number) => {\n  emit('select-range', start, end, 'max')\n  const _offset = unref(offset)\n  selectionRange.value = [start + _offset, end + _offset]\n}\n\nconst changeSelectionRange = (step: number) => {\n  const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n  const mapping = ['hours', 'minutes'].concat(\n    showSeconds.value ? ['seconds'] : []\n  )\n  const index = list.indexOf(selectionRange.value[0])\n  const next = (index + step + list.length) % list.length\n  const half = list.length / 2\n  if (next < half) {\n    timePickerOptions['start_emitSelectRange'](mapping[next])\n  } else {\n    timePickerOptions['end_emitSelectRange'](mapping[next - half])\n  }\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n\n  const { left, right, up, down } = EVENT_CODE\n\n  if ([left, right].includes(code)) {\n    const step = code === left ? -1 : 1\n    changeSelectionRange(step)\n    event.preventDefault()\n    return\n  }\n\n  if ([up, down].includes(code)) {\n    const step = code === up ? -1 : 1\n    const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n    timePickerOptions[`${role}_scrollDown`](step)\n    event.preventDefault()\n    return\n  }\n}\n\nconst disabledHours_ = (role: string, compare?: Dayjs) => {\n  const defaultDisable = disabledHours ? disabledHours(role) : []\n  const isStart = role === 'start'\n  const compareDate = compare || (isStart ? endTime.value : startTime.value)\n  const compareHour = compareDate.hour()\n  const nextDisable = isStart\n    ? makeSelectRange(compareHour + 1, 23)\n    : makeSelectRange(0, compareHour - 1)\n  return union(defaultDisable, nextDisable)\n}\nconst disabledMinutes_ = (hour: number, role: string, compare?: Dayjs) => {\n  const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n  const isStart = role === 'start'\n  const compareDate = compare || (isStart ? endTime.value : startTime.value)\n  const compareHour = compareDate.hour()\n  if (hour !== compareHour) {\n    return defaultDisable\n  }\n  const compareMinute = compareDate.minute()\n  const nextDisable = isStart\n    ? makeSelectRange(compareMinute + 1, 59)\n    : makeSelectRange(0, compareMinute - 1)\n  return union(defaultDisable, nextDisable)\n}\nconst disabledSeconds_ = (\n  hour: number,\n  minute: number,\n  role: string,\n  compare?: Dayjs\n) => {\n  const defaultDisable = disabledSeconds\n    ? disabledSeconds(hour, minute, role)\n    : []\n  const isStart = role === 'start'\n  const compareDate = compare || (isStart ? endTime.value : startTime.value)\n  const compareHour = compareDate.hour()\n  const compareMinute = compareDate.minute()\n  if (hour !== compareHour || minute !== compareMinute) {\n    return defaultDisable\n  }\n  const compareSecond = compareDate.second()\n  const nextDisable = isStart\n    ? makeSelectRange(compareSecond + 1, 59)\n    : makeSelectRange(0, compareSecond - 1)\n  return union(defaultDisable, nextDisable)\n}\n\nconst getRangeAvailableTime = ([start, end]: Array<Dayjs>) => {\n  return [\n    getAvailableTime(start, 'start', true, end),\n    getAvailableTime(end, 'end', false, start),\n  ] as const\n}\n\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n  buildAvailableTimeSlotGetter(\n    disabledHours_,\n    disabledMinutes_,\n    disabledSeconds_\n  )\n\nconst {\n  timePickerOptions,\n\n  getAvailableTime,\n  onSetOption,\n} = useTimePanel({\n  getAvailableHours,\n  getAvailableMinutes,\n  getAvailableSeconds,\n})\n\nconst parseUserInput = (days: Dayjs[] | Dayjs) => {\n  if (!days) return null\n  if (isArray(days)) {\n    return days.map((d) => dayjs(d, props.format).locale(lang.value))\n  }\n  return dayjs(days, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n  if (isArray(defaultValue)) {\n    return defaultValue.map((d: Date) => dayjs(d).locale(lang.value))\n  }\n  const defaultDay = dayjs(defaultValue).locale(lang.value)\n  return [defaultDay, defaultDay.add(60, 'm')]\n}\n\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['handleCancel', handleCancel])\n</script>\n","<template>\n  <div\n    v-if=\"actualVisible\"\n    :class=\"[nsTime.b('range-picker'), nsPicker.b('panel')]\"\n  >\n    <div :class=\"nsTime.be('range-picker', 'content')\">\n      <div :class=\"nsTime.be('range-picker', 'cell')\">\n        <div :class=\"nsTime.be('range-picker', 'header')\">\n          {{ t('el.datepicker.startTime') }}\n        </div>\n        <div :class=\"startContainerKls\">\n          <time-spinner\n            ref=\"minSpinner\"\n            role=\"start\"\n            :show-seconds=\"showSeconds\"\n            :am-pm-mode=\"amPmMode\"\n            :arrow-control=\"arrowControl\"\n            :spinner-date=\"startTime\"\n            :disabled-hours=\"disabledHours_\"\n            :disabled-minutes=\"disabledMinutes_\"\n            :disabled-seconds=\"disabledSeconds_\"\n            @change=\"handleMinChange\"\n            @set-option=\"onSetOption\"\n            @select-range=\"setMinSelectionRange\"\n          />\n        </div>\n      </div>\n      <div :class=\"nsTime.be('range-picker', 'cell')\">\n        <div :class=\"nsTime.be('range-picker', 'header')\">\n          {{ t('el.datepicker.endTime') }}\n        </div>\n        <div :class=\"endContainerKls\">\n          <time-spinner\n            ref=\"maxSpinner\"\n            role=\"end\"\n            :show-seconds=\"showSeconds\"\n            :am-pm-mode=\"amPmMode\"\n            :arrow-control=\"arrowControl\"\n            :spinner-date=\"endTime\"\n            :disabled-hours=\"disabledHours_\"\n            :disabled-minutes=\"disabledMinutes_\"\n            :disabled-seconds=\"disabledSeconds_\"\n            @change=\"handleMaxChange\"\n            @set-option=\"onSetOption\"\n            @select-range=\"setMaxSelectionRange\"\n          />\n        </div>\n      </div>\n    </div>\n    <div :class=\"nsTime.be('panel', 'footer')\">\n      <button\n        type=\"button\"\n        :class=\"[nsTime.be('panel', 'btn'), 'cancel']\"\n        @click=\"handleCancel()\"\n      >\n        {{ t('el.datepicker.cancel') }}\n      </button>\n      <button\n        type=\"button\"\n        :class=\"[nsTime.be('panel', 'btn'), 'confirm']\"\n        :disabled=\"btnConfirmDisabled\"\n        @click=\"handleConfirm()\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, unref } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { getEventCode, isArray } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimeRangeProps } from '../props/panel-time-range'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n  buildAvailableTimeSlotGetter,\n  useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimeRangeProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\nconst makeSelectRange = (start: number, end: number) => {\n  const result: number[] = []\n  for (let i = start; i <= end; i++) {\n    result.push(i)\n  }\n  return result\n}\n\nconst { t, lang } = useLocale()\nconst nsTime = useNamespace('time')\nconst nsPicker = useNamespace('picker')\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n  arrowControl,\n  disabledHours,\n  disabledMinutes,\n  disabledSeconds,\n  defaultValue,\n} = pickerBase.props\n\nconst startContainerKls = computed(() => [\n  nsTime.be('range-picker', 'body'),\n  nsTime.be('panel', 'content'),\n  nsTime.is('arrow', arrowControl),\n  showSeconds.value ? 'has-seconds' : '',\n])\nconst endContainerKls = computed(() => [\n  nsTime.be('range-picker', 'body'),\n  nsTime.be('panel', 'content'),\n  nsTime.is('arrow', arrowControl),\n  showSeconds.value ? 'has-seconds' : '',\n])\n\nconst startTime = computed(() => props.parsedValue![0])\nconst endTime = computed(() => props.parsedValue![1])\nconst oldValue = useOldValue(props, {\n  modelValue: computed(() => pickerBase.props.modelValue),\n  valueOnClear: computed(() =>\n    pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null\n  ),\n})\nconst handleCancel = () => {\n  const old = oldValue.value\n  emit('pick', old, false)\n  nextTick(() => {\n    oldValue.value = old\n  })\n}\n\nconst showSeconds = computed(() => {\n  return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n  if (props.format.includes('A')) return 'A'\n  if (props.format.includes('a')) return 'a'\n  return ''\n})\n\nconst handleConfirm = (visible = false) => {\n  emit('pick', [startTime.value, endTime.value], visible)\n}\n\nconst handleMinChange = (date: Dayjs) => {\n  handleChange(date.millisecond(0), endTime.value)\n}\nconst handleMaxChange = (date: Dayjs) => {\n  handleChange(startTime.value, date.millisecond(0))\n}\n\nconst isValidValue = (_date: Dayjs[]) => {\n  const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n  const result = getRangeAvailableTime(parsedDate)\n  return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n}\n\nconst handleChange = (start: Dayjs, end: Dayjs) => {\n  if (!props.visible) {\n    return\n  }\n  // todo getRangeAvailableTime(_date).millisecond(0)\n  emit('pick', [start, end], true)\n}\nconst btnConfirmDisabled = computed(() => {\n  return startTime.value > endTime.value\n})\n\nconst selectionRange = ref([0, 2])\nconst setMinSelectionRange = (start: number, end: number) => {\n  emit('select-range', start, end, 'min')\n  selectionRange.value = [start, end]\n}\n\nconst offset = computed(() => (showSeconds.value ? 11 : 8))\nconst setMaxSelectionRange = (start: number, end: number) => {\n  emit('select-range', start, end, 'max')\n  const _offset = unref(offset)\n  selectionRange.value = [start + _offset, end + _offset]\n}\n\nconst changeSelectionRange = (step: number) => {\n  const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n  const mapping = ['hours', 'minutes'].concat(\n    showSeconds.value ? ['seconds'] : []\n  )\n  const index = list.indexOf(selectionRange.value[0])\n  const next = (index + step + list.length) % list.length\n  const half = list.length / 2\n  if (next < half) {\n    timePickerOptions['start_emitSelectRange'](mapping[next])\n  } else {\n    timePickerOptions['end_emitSelectRange'](mapping[next - half])\n  }\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n\n  const { left, right, up, down } = EVENT_CODE\n\n  if ([left, right].includes(code)) {\n    const step = code === left ? -1 : 1\n    changeSelectionRange(step)\n    event.preventDefault()\n    return\n  }\n\n  if ([up, down].includes(code)) {\n    const step = code === up ? -1 : 1\n    const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n    timePickerOptions[`${role}_scrollDown`](step)\n    event.preventDefault()\n    return\n  }\n}\n\nconst disabledHours_ = (role: string, compare?: Dayjs) => {\n  const defaultDisable = disabledHours ? disabledHours(role) : []\n  const isStart = role === 'start'\n  const compareDate = compare || (isStart ? endTime.value : startTime.value)\n  const compareHour = compareDate.hour()\n  const nextDisable = isStart\n    ? makeSelectRange(compareHour + 1, 23)\n    : makeSelectRange(0, compareHour - 1)\n  return union(defaultDisable, nextDisable)\n}\nconst disabledMinutes_ = (hour: number, role: string, compare?: Dayjs) => {\n  const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n  const isStart = role === 'start'\n  const compareDate = compare || (isStart ? endTime.value : startTime.value)\n  const compareHour = compareDate.hour()\n  if (hour !== compareHour) {\n    return defaultDisable\n  }\n  const compareMinute = compareDate.minute()\n  const nextDisable = isStart\n    ? makeSelectRange(compareMinute + 1, 59)\n    : makeSelectRange(0, compareMinute - 1)\n  return union(defaultDisable, nextDisable)\n}\nconst disabledSeconds_ = (\n  hour: number,\n  minute: number,\n  role: string,\n  compare?: Dayjs\n) => {\n  const defaultDisable = disabledSeconds\n    ? disabledSeconds(hour, minute, role)\n    : []\n  const isStart = role === 'start'\n  const compareDate = compare || (isStart ? endTime.value : startTime.value)\n  const compareHour = compareDate.hour()\n  const compareMinute = compareDate.minute()\n  if (hour !== compareHour || minute !== compareMinute) {\n    return defaultDisable\n  }\n  const compareSecond = compareDate.second()\n  const nextDisable = isStart\n    ? makeSelectRange(compareSecond + 1, 59)\n    : makeSelectRange(0, compareSecond - 1)\n  return union(defaultDisable, nextDisable)\n}\n\nconst getRangeAvailableTime = ([start, end]: Array<Dayjs>) => {\n  return [\n    getAvailableTime(start, 'start', true, end),\n    getAvailableTime(end, 'end', false, start),\n  ] as const\n}\n\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n  buildAvailableTimeSlotGetter(\n    disabledHours_,\n    disabledMinutes_,\n    disabledSeconds_\n  )\n\nconst {\n  timePickerOptions,\n\n  getAvailableTime,\n  onSetOption,\n} = useTimePanel({\n  getAvailableHours,\n  getAvailableMinutes,\n  getAvailableSeconds,\n})\n\nconst parseUserInput = (days: Dayjs[] | Dayjs) => {\n  if (!days) return null\n  if (isArray(days)) {\n    return days.map((d) => dayjs(d, props.format).locale(lang.value))\n  }\n  return dayjs(days, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n  if (isArray(defaultValue)) {\n    return defaultValue.map((d: Date) => dayjs(d).locale(lang.value))\n  }\n  const defaultDay = dayjs(defaultValue).locale(lang.value)\n  return [defaultDay, defaultDay.add(60, 'm')]\n}\n\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['handleCancel', handleCancel])\n</script>\n","import { defineComponent, provide, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport {\n  DEFAULT_FORMATS_TIME,\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n} from './constants'\nimport Picker from './common/picker.vue'\nimport TimePickPanel from './time-picker-com/panel-time-pick.vue'\nimport TimeRangePanel from './time-picker-com/panel-time-range.vue'\nimport { timePickerDefaultProps } from './common/props'\n\ndayjs.extend(customParseFormat)\n\nexport default defineComponent({\n  name: 'ElTimePicker',\n  install: null,\n  props: {\n    ...timePickerDefaultProps,\n    /**\n     * @description whether to pick a time range\n     */\n    isRange: Boolean,\n  },\n  emits: [UPDATE_MODEL_EVENT],\n  setup(props, ctx) {\n    const commonPicker = ref<InstanceType<typeof Picker>>()\n    const [type, Panel] = props.isRange\n      ? ['timerange', TimeRangePanel]\n      : ['time', TimePickPanel]\n\n    const modelUpdater = (value: any) => ctx.emit(UPDATE_MODEL_EVENT, value)\n    provide(PICKER_POPPER_OPTIONS_INJECTION_KEY, props.popperOptions)\n    ctx.expose({\n      /**\n       * @description focus the Input component\n       */\n      focus: () => {\n        commonPicker.value?.focus()\n      },\n      /**\n       * @description blur the Input component\n       */\n      blur: () => {\n        commonPicker.value?.blur()\n      },\n      /**\n       * @description open the TimePicker popper\n       */\n      handleOpen: () => {\n        commonPicker.value?.handleOpen()\n      },\n      /**\n       * @description close the TimePicker popper\n       */\n      handleClose: () => {\n        commonPicker.value?.handleClose()\n      },\n    })\n\n    return () => {\n      const format = props.format ?? DEFAULT_FORMATS_TIME\n\n      return (\n        <Picker\n          {...props}\n          ref={commonPicker}\n          type={type}\n          format={format}\n          onUpdate:modelValue={modelUpdater}\n        >\n          {{\n            default: (props: any) => <Panel {...props} />,\n          }}\n        </Picker>\n      )\n    }\n  },\n})\n","import { withInstall } from '@pit-element-plus/utils'\nimport TimePicker from './src/time-picker'\nimport CommonPicker from './src/common/picker.vue'\nimport TimePickPanel from './src/time-picker-com/panel-time-pick.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport type TimePickerInstance = InstanceType<typeof TimePicker> &\n  TimePickerExpose\nexport type TimePickerExpose = {\n  focus: () => void\n  blur: () => void\n  handleOpen: () => void\n  handleClose: () => void\n}\nexport * from './src/utils'\nexport * from './src/constants'\nexport * from './src/common/props'\n\nexport const ElTimePicker: SFCWithInstall<typeof TimePicker> =\n  withInstall(TimePicker)\n\nexport { CommonPicker, TimePickPanel }\nexport default ElTimePicker\n","import { buildProps, definePropType, isObject } from '@pit-element-plus/utils'\nimport { rangeArr } from '@pit-element-plus/components/time-picker'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport type CalendarDateCellType = 'next' | 'prev' | 'current'\nexport type CalendarDateCell = {\n  text: number\n  type: CalendarDateCellType\n}\n\nexport const getPrevMonthLastDays = (date: Dayjs, count: number) => {\n  const lastDay = date.subtract(1, 'month').endOf('month').date()\n  return rangeArr(count).map((_, index) => lastDay - (count - index - 1))\n}\n\nexport const getMonthDays = (date: Dayjs) => {\n  const days = date.daysInMonth()\n  return rangeArr(days).map((_, index) => index + 1)\n}\n\nexport const toNestedArr = (days: CalendarDateCell[]) =>\n  rangeArr(days.length / 7).map((index) => {\n    const start = index * 7\n    return days.slice(start, start + 7)\n  })\n\nexport interface DateTableProps {\n  selectedDay?: Dayjs\n  range?: [Dayjs, Dayjs]\n  date: Dayjs\n  hideHeader?: boolean\n}\n\n/**\n *  @deprecated Removed after 3.0.0, Use `DateTableProps` instead.\n */\nexport const dateTableProps = buildProps({\n  selectedDay: {\n    type: definePropType<Dayjs>(Object),\n  },\n  range: {\n    type: definePropType<[Dayjs, Dayjs]>(Array),\n  },\n  date: {\n    type: definePropType<Dayjs>(Object),\n    required: true,\n  },\n  hideHeader: {\n    type: Boolean,\n  },\n} as const)\n\n/**\n *  @deprecated Removed after 3.0.0, Use `DateTableProps` instead.\n */\nexport type DateTablePropsPublic = ExtractPublicPropTypes<typeof dateTableProps>\n\nexport const dateTableEmits = {\n  pick: (value: Dayjs) => isObject(value),\n}\nexport type DateTableEmits = typeof dateTableEmits\n","!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){\"use strict\";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)}}}));","import { computed } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData.js'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { rangeArr } from '@pit-element-plus/components/time-picker'\nimport { WEEK_DAYS } from '@pit-element-plus/constants'\nimport { getMonthDays, getPrevMonthLastDays, toNestedArr } from './date-table'\n\nimport type { SetupContext } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type {\n  CalendarDateCell,\n  CalendarDateCellType,\n  DateTableEmits,\n  DateTableProps,\n} from './date-table'\n\nexport const useDateTable = (\n  props: DateTableProps,\n  emit: SetupContext<DateTableEmits>['emit']\n) => {\n  dayjs.extend(localeData)\n  // https://day.js.org/docs/en/i18n/locale-data\n  const firstDayOfWeek: number = dayjs.localeData().firstDayOfWeek()\n\n  const { t, lang } = useLocale()\n  const now = dayjs().locale(lang.value)\n\n  const isInRange = computed(() => !!props.range && !!props.range.length)\n\n  const rows = computed(() => {\n    let days: CalendarDateCell[] = []\n    if (isInRange.value) {\n      const [start, end] = props.range!\n      const currentMonthRange: CalendarDateCell[] = rangeArr(\n        end.date() - start.date() + 1\n      ).map((index) => ({\n        text: start.date() + index,\n        type: 'current',\n      }))\n\n      let remaining = currentMonthRange.length % 7\n      remaining = remaining === 0 ? 0 : 7 - remaining\n      const nextMonthRange: CalendarDateCell[] = rangeArr(remaining).map(\n        (_, index) => ({\n          text: index + 1,\n          type: 'next',\n        })\n      )\n      days = currentMonthRange.concat(nextMonthRange)\n    } else {\n      const firstDay = props.date.startOf('month').day()\n      const prevMonthDays: CalendarDateCell[] = getPrevMonthLastDays(\n        props.date,\n        (firstDay - firstDayOfWeek + 7) % 7\n      ).map((day) => ({\n        text: day,\n        type: 'prev',\n      }))\n      const currentMonthDays: CalendarDateCell[] = getMonthDays(props.date).map(\n        (day) => ({\n          text: day,\n          type: 'current',\n        })\n      )\n      days = [...prevMonthDays, ...currentMonthDays]\n      const remaining = 7 - (days.length % 7 || 7)\n      const nextMonthDays: CalendarDateCell[] = rangeArr(remaining).map(\n        (_, index) => ({\n          text: index + 1,\n          type: 'next',\n        })\n      )\n      days = days.concat(nextMonthDays)\n    }\n    return toNestedArr(days)\n  })\n\n  const weekDays = computed(() => {\n    const start = firstDayOfWeek\n    if (start === 0) {\n      return WEEK_DAYS.map((_) => t(`el.datepicker.weeks.${_}`))\n    } else {\n      return WEEK_DAYS.slice(start)\n        .concat(WEEK_DAYS.slice(0, start))\n        .map((_) => t(`el.datepicker.weeks.${_}`))\n    }\n  })\n\n  const getFormattedDate = (day: number, type: CalendarDateCellType): Dayjs => {\n    switch (type) {\n      case 'prev':\n        return props.date.startOf('month').subtract(1, 'month').date(day)\n      case 'next':\n        return props.date.startOf('month').add(1, 'month').date(day)\n      case 'current':\n        return props.date.date(day)\n    }\n  }\n\n  const handlePickDay = ({ text, type }: CalendarDateCell) => {\n    const date = getFormattedDate(text, type)\n    emit('pick', date)\n  }\n\n  const getSlotData = ({ text, type }: CalendarDateCell) => {\n    const day = getFormattedDate(text, type)\n    return {\n      isSelected: day.isSame(props.selectedDay),\n      type: `${type}-month`,\n      day: day.format('YYYY-MM-DD'),\n      date: day.toDate(),\n    }\n  }\n\n  return {\n    now,\n    isInRange,\n    rows,\n    weekDays,\n    getFormattedDate,\n    handlePickDay,\n    getSlotData,\n  }\n}\n","<template>\n  <table\n    :class=\"[nsTable.b(), nsTable.is('range', isInRange)]\"\n    cellspacing=\"0\"\n    cellpadding=\"0\"\n  >\n    <thead v-if=\"!hideHeader\">\n      <tr>\n        <th v-for=\"day in weekDays\" :key=\"day\" scope=\"col\">{{ day }}</th>\n      </tr>\n    </thead>\n\n    <tbody>\n      <tr\n        v-for=\"(row, index) in rows\"\n        :key=\"index\"\n        :class=\"{\n          [nsTable.e('row')]: true,\n          [nsTable.em('row', 'hide-border')]: index === 0 && hideHeader,\n        }\"\n      >\n        <td\n          v-for=\"(cell, key) in row\"\n          :key=\"key\"\n          :class=\"getCellClass(cell)\"\n          @click=\"handlePickDay(cell)\"\n        >\n          <div :class=\"nsDay.b()\">\n            <slot name=\"date-cell\" :data=\"getSlotData(cell)\">\n              <span>{{ cell.text }}</span>\n            </slot>\n          </div>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { dateTableEmits } from './date-table'\nimport { useDateTable } from './use-date-table'\n\nimport type { CalendarDateCell, DateTableProps } from './date-table'\n\ndefineOptions({\n  name: 'DateTable',\n})\n\nconst props = defineProps<DateTableProps>()\nconst emit = defineEmits(dateTableEmits)\n\nconst {\n  isInRange,\n  now,\n  rows,\n  weekDays,\n  getFormattedDate,\n  handlePickDay,\n  getSlotData,\n} = useDateTable(props, emit)\n\nconst nsTable = useNamespace('calendar-table')\nconst nsDay = useNamespace('calendar-day')\n\nconst getCellClass = ({ text, type }: CalendarDateCell) => {\n  const classes: string[] = [type]\n  if (type === 'current') {\n    const date = getFormattedDate(text, type)\n    if (date.isSame(props.selectedDay, 'day')) {\n      classes.push(nsDay.is('selected'))\n    }\n    if (date.isSame(now, 'day')) {\n      classes.push(nsDay.is('today'))\n    }\n  }\n  return classes\n}\n\ndefineExpose({\n  /** @description toggle date panel */\n  getFormattedDate,\n})\n</script>\n","<template>\n  <table\n    :class=\"[nsTable.b(), nsTable.is('range', isInRange)]\"\n    cellspacing=\"0\"\n    cellpadding=\"0\"\n  >\n    <thead v-if=\"!hideHeader\">\n      <tr>\n        <th v-for=\"day in weekDays\" :key=\"day\" scope=\"col\">{{ day }}</th>\n      </tr>\n    </thead>\n\n    <tbody>\n      <tr\n        v-for=\"(row, index) in rows\"\n        :key=\"index\"\n        :class=\"{\n          [nsTable.e('row')]: true,\n          [nsTable.em('row', 'hide-border')]: index === 0 && hideHeader,\n        }\"\n      >\n        <td\n          v-for=\"(cell, key) in row\"\n          :key=\"key\"\n          :class=\"getCellClass(cell)\"\n          @click=\"handlePickDay(cell)\"\n        >\n          <div :class=\"nsDay.b()\">\n            <slot name=\"date-cell\" :data=\"getSlotData(cell)\">\n              <span>{{ cell.text }}</span>\n            </slot>\n          </div>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { dateTableEmits } from './date-table'\nimport { useDateTable } from './use-date-table'\n\nimport type { CalendarDateCell, DateTableProps } from './date-table'\n\ndefineOptions({\n  name: 'DateTable',\n})\n\nconst props = defineProps<DateTableProps>()\nconst emit = defineEmits(dateTableEmits)\n\nconst {\n  isInRange,\n  now,\n  rows,\n  weekDays,\n  getFormattedDate,\n  handlePickDay,\n  getSlotData,\n} = useDateTable(props, emit)\n\nconst nsTable = useNamespace('calendar-table')\nconst nsDay = useNamespace('calendar-day')\n\nconst getCellClass = ({ text, type }: CalendarDateCell) => {\n  const classes: string[] = [type]\n  if (type === 'current') {\n    const date = getFormattedDate(text, type)\n    if (date.isSame(props.selectedDay, 'day')) {\n      classes.push(nsDay.is('selected'))\n    }\n    if (date.isSame(now, 'day')) {\n      classes.push(nsDay.is('today'))\n    }\n  }\n  return classes\n}\n\ndefineExpose({\n  /** @description toggle date panel */\n  getFormattedDate,\n})\n</script>\n","<template>\n  <table\n    :class=\"[nsTable.b(), nsTable.is('range', isInRange)]\"\n    cellspacing=\"0\"\n    cellpadding=\"0\"\n  >\n    <thead v-if=\"!hideHeader\">\n      <tr>\n        <th v-for=\"day in weekDays\" :key=\"day\" scope=\"col\">{{ day }}</th>\n      </tr>\n    </thead>\n\n    <tbody>\n      <tr\n        v-for=\"(row, index) in rows\"\n        :key=\"index\"\n        :class=\"{\n          [nsTable.e('row')]: true,\n          [nsTable.em('row', 'hide-border')]: index === 0 && hideHeader,\n        }\"\n      >\n        <td\n          v-for=\"(cell, key) in row\"\n          :key=\"key\"\n          :class=\"getCellClass(cell)\"\n          @click=\"handlePickDay(cell)\"\n        >\n          <div :class=\"nsDay.b()\">\n            <slot name=\"date-cell\" :data=\"getSlotData(cell)\">\n              <span>{{ cell.text }}</span>\n            </slot>\n          </div>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { dateTableEmits } from './date-table'\nimport { useDateTable } from './use-date-table'\n\nimport type { CalendarDateCell, DateTableProps } from './date-table'\n\ndefineOptions({\n  name: 'DateTable',\n})\n\nconst props = defineProps<DateTableProps>()\nconst emit = defineEmits(dateTableEmits)\n\nconst {\n  isInRange,\n  now,\n  rows,\n  weekDays,\n  getFormattedDate,\n  handlePickDay,\n  getSlotData,\n} = useDateTable(props, emit)\n\nconst nsTable = useNamespace('calendar-table')\nconst nsDay = useNamespace('calendar-day')\n\nconst getCellClass = ({ text, type }: CalendarDateCell) => {\n  const classes: string[] = [type]\n  if (type === 'current') {\n    const date = getFormattedDate(text, type)\n    if (date.isSame(props.selectedDay, 'day')) {\n      classes.push(nsDay.is('selected'))\n    }\n    if (date.isSame(now, 'day')) {\n      classes.push(nsDay.is('today'))\n    }\n  }\n  return classes\n}\n\ndefineExpose({\n  /** @description toggle date panel */\n  getFormattedDate,\n})\n</script>\n","import { computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { debugWarn, isArray, isDate } from '@pit-element-plus/utils'\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\nimport type { ComputedRef, SetupContext } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { CalendarDateType, CalendarEmits, CalendarProps } from './calendar'\n\nconst adjacentMonth = (start: Dayjs, end: Dayjs): [Dayjs, Dayjs][] => {\n  const firstMonthLastDay = start.endOf('month')\n  const lastMonthFirstDay = end.startOf('month')\n\n  // Whether the last day of the first month and the first day of the last month is in the same week\n  const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, 'week')\n  const lastMonthStartDay = isSameWeek\n    ? lastMonthFirstDay.add(1, 'week')\n    : lastMonthFirstDay\n\n  return [\n    [start, firstMonthLastDay],\n    [lastMonthStartDay.startOf('week'), end],\n  ]\n}\n\nconst threeConsecutiveMonth = (start: Dayjs, end: Dayjs): [Dayjs, Dayjs][] => {\n  const firstMonthLastDay = start.endOf('month')\n  const secondMonthFirstDay = start.add(1, 'month').startOf('month')\n\n  // Whether the last day of the first month and the second month is in the same week\n  const secondMonthStartDay = firstMonthLastDay.isSame(\n    secondMonthFirstDay,\n    'week'\n  )\n    ? secondMonthFirstDay.add(1, 'week')\n    : secondMonthFirstDay\n\n  const secondMonthLastDay = secondMonthStartDay.endOf('month')\n  const lastMonthFirstDay = end.startOf('month')\n\n  // Whether the last day of the second month and the last day of the last month is in the same week\n  const lastMonthStartDay = secondMonthLastDay.isSame(lastMonthFirstDay, 'week')\n    ? lastMonthFirstDay.add(1, 'week')\n    : lastMonthFirstDay\n\n  return [\n    [start, firstMonthLastDay],\n    [secondMonthStartDay.startOf('week'), secondMonthLastDay],\n    [lastMonthStartDay.startOf('week'), end],\n  ]\n}\n\nexport const useCalendar = (\n  props: CalendarProps,\n  emit: SetupContext<CalendarEmits>['emit'],\n  componentName: string\n) => {\n  const { lang } = useLocale()\n\n  const selectedDay = ref<Dayjs>()\n  const now = dayjs().locale(lang.value)\n\n  const realSelectedDay = computed<Dayjs | undefined>({\n    get() {\n      if (!props.modelValue) return selectedDay.value\n      return date.value\n    },\n    set(val) {\n      if (!val) return\n      selectedDay.value = val\n      const result = val.toDate()\n\n      emit(INPUT_EVENT, result)\n      emit(UPDATE_MODEL_EVENT, result)\n    },\n  })\n\n  // if range is valid, we get a two-digit array\n  const validatedRange = computed(() => {\n    if (\n      !props.range ||\n      !isArray(props.range) ||\n      props.range.length !== 2 ||\n      props.range.some((item) => !isDate(item))\n    )\n      return []\n    const rangeArrDayjs = props.range.map((_) => dayjs(_).locale(lang.value))\n    const [startDayjs, endDayjs] = rangeArrDayjs\n    if (startDayjs.isAfter(endDayjs)) {\n      debugWarn(componentName, 'end time should be greater than start time')\n      return []\n    }\n    if (startDayjs.isSame(endDayjs, 'month')) {\n      // same month\n      return calculateValidatedDateRange(startDayjs, endDayjs)\n    } else {\n      // two months\n      if (startDayjs.add(1, 'month').month() !== endDayjs.month()) {\n        debugWarn(\n          componentName,\n          'start time and end time interval must not exceed two months'\n        )\n        return []\n      }\n      return calculateValidatedDateRange(startDayjs, endDayjs)\n    }\n  })\n\n  const date: ComputedRef<Dayjs> = computed(() => {\n    if (!props.modelValue) {\n      return (\n        realSelectedDay.value ||\n        (validatedRange.value.length ? validatedRange.value[0][0] : now)\n      )\n    } else {\n      return dayjs(props.modelValue).locale(lang.value)\n    }\n  })\n  const prevMonthDayjs = computed(() => date.value.subtract(1, 'month').date(1))\n  const nextMonthDayjs = computed(() => date.value.add(1, 'month').date(1))\n  const prevYearDayjs = computed(() => date.value.subtract(1, 'year').date(1))\n  const nextYearDayjs = computed(() => date.value.add(1, 'year').date(1))\n\n  // https://github.com/element-plus/element-plus/issues/3155\n  // Calculate the validate date range according to the start and end dates\n  const calculateValidatedDateRange = (\n    startDayjs: Dayjs,\n    endDayjs: Dayjs\n  ): [Dayjs, Dayjs][] => {\n    const firstDay = startDayjs.startOf('week')\n    const lastDay = endDayjs.endOf('week')\n    const firstMonth = firstDay.get('month')\n    const lastMonth = lastDay.get('month')\n\n    // Current month\n    if (firstMonth === lastMonth) {\n      return [[firstDay, lastDay]]\n    }\n    // Two adjacent months\n    else if ((firstMonth + 1) % 12 === lastMonth) {\n      return adjacentMonth(firstDay, lastDay)\n    }\n    // Three consecutive months (compatible: 2021-01-30 to 2021-02-28)\n    else if (\n      firstMonth + 2 === lastMonth ||\n      (firstMonth + 1) % 11 === lastMonth\n    ) {\n      return threeConsecutiveMonth(firstDay, lastDay)\n    }\n    // Other cases\n    else {\n      debugWarn(\n        componentName,\n        'start time and end time interval must not exceed two months'\n      )\n      return []\n    }\n  }\n\n  const pickDay = (day: Dayjs) => {\n    realSelectedDay.value = day\n  }\n\n  const selectDate = (type: CalendarDateType) => {\n    const dateMap: Record<CalendarDateType, Dayjs> = {\n      'prev-month': prevMonthDayjs.value,\n      'next-month': nextMonthDayjs.value,\n      'prev-year': prevYearDayjs.value,\n      'next-year': nextYearDayjs.value,\n      today: now,\n    }\n\n    const day = dateMap[type]\n\n    if (!day.isSame(date.value, 'day')) {\n      pickDay(day)\n    }\n  }\n\n  const handleDateChange = (date: Dayjs | 'today') => {\n    if (date === 'today') {\n      selectDate('today')\n    } else {\n      pickDay(date)\n    }\n  }\n\n  return {\n    calculateValidatedDateRange,\n    date,\n    realSelectedDay,\n    pickDay,\n    selectDate,\n    validatedRange,\n    handleDateChange,\n  }\n}\n","import {\n  buildProps,\n  definePropType,\n  isObject,\n  isString,\n} from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport interface SelectControllerProps {\n  date: Dayjs\n  formatter?: (value: number, type: 'year' | 'month') => string | number\n}\n\n/**\n *  @deprecated Removed after 3.0.0, Use `SelectControllerProps` instead.\n */\nexport const selectControllerProps = buildProps({\n  date: {\n    type: definePropType<Dayjs>(Object),\n    required: true,\n  },\n  formatter: {\n    type: definePropType<\n      (value: number, type: 'year' | 'month') => string | number\n    >(Function),\n  },\n} as const)\n\n/**\n *  @deprecated Removed after 3.0.0, Use `SelectControllerProps` instead.\n */\nexport type SelectControllerPropsPublic = ExtractPublicPropTypes<\n  typeof selectControllerProps\n>\n\nexport const selectControllerEmits = {\n  'date-change': (date: Dayjs | 'today') => isObject(date) || isString(date),\n}\nexport type SelectControllerEmits = typeof selectControllerEmits\n","import { buildProps } from '@pit-element-plus/utils'\nimport { componentSizes } from '@pit-element-plus/constants'\n\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type Tag from './tag.vue'\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport interface TagProps {\n  /**\n   * @description type of Tag\n   */\n  type?: 'primary' | 'success' | 'info' | 'warning' | 'danger'\n  /**\n   * @description whether Tag can be removed\n   */\n  closable?: boolean\n  /**\n   * @description whether to disable animations\n   */\n  disableTransitions?: boolean\n  /**\n   * @description whether Tag has a highlighted border\n   */\n  hit?: boolean\n  /**\n   * @description background color of the Tag\n   */\n  color?: string\n  /**\n   * @description size of Tag\n   */\n  size?: ComponentSize\n  /**\n   * @description theme of Tag\n   */\n  effect?: 'dark' | 'light' | 'plain'\n  /**\n   * @description whether Tag is rounded\n   */\n  round?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TagProps` instead.\n */\nexport const tagProps = buildProps({\n  /**\n   * @description type of Tag\n   */\n  type: {\n    type: String,\n    values: ['primary', 'success', 'info', 'warning', 'danger'],\n    default: 'primary',\n  },\n  /**\n   * @description whether Tag can be removed\n   */\n  closable: Boolean,\n  /**\n   * @description whether to disable animations\n   */\n  disableTransitions: Boolean,\n  /**\n   * @description whether Tag has a highlighted border\n   */\n  hit: Boolean,\n  /**\n   * @description background color of the Tag\n   */\n  color: String,\n  /**\n   * @description size of Tag\n   */\n  size: {\n    type: String,\n    values: componentSizes,\n  },\n  /**\n   * @description theme of Tag\n   */\n  effect: {\n    type: String,\n    values: ['dark', 'light', 'plain'],\n    default: 'light',\n  },\n  /**\n   * @description whether Tag is rounded\n   */\n  round: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `TagProps` instead.\n */\nexport type TagPropsPublic = ExtractPublicPropTypes<typeof tagProps>\n\nexport const tagEmits = {\n  close: (evt: MouseEvent) => evt instanceof MouseEvent,\n  click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\nexport type TagEmits = typeof tagEmits\n\nexport type TagInstance = InstanceType<typeof Tag> & unknown\n","<template>\n  <span\n    v-if=\"disableTransitions\"\n    :class=\"containerKls\"\n    :style=\"{ backgroundColor: color }\"\n    @click=\"handleClick\"\n  >\n    <span :class=\"ns.e('content')\">\n      <slot />\n    </span>\n    <button\n      v-if=\"closable\"\n      :aria-label=\"t('el.tag.close')\"\n      :class=\"ns.e('close')\"\n      type=\"button\"\n      @click.stop=\"handleClose\"\n    >\n      <el-icon>\n        <Close />\n      </el-icon>\n    </button>\n  </span>\n  <transition\n    v-else\n    :name=\"`${ns.namespace.value}-zoom-in-center`\"\n    appear\n    @vue:mounted=\"handleVNodeMounted\"\n  >\n    <span\n      :class=\"containerKls\"\n      :style=\"{ backgroundColor: color }\"\n      @click=\"handleClick\"\n    >\n      <span :class=\"ns.e('content')\">\n        <slot />\n      </span>\n      <button\n        v-if=\"closable\"\n        :aria-label=\"t('el.tag.close')\"\n        :class=\"ns.e('close')\"\n        type=\"button\"\n        @click.stop=\"handleClose\"\n      >\n        <el-icon>\n          <Close />\n        </el-icon>\n      </button>\n    </span>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { Close } from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport { tagEmits } from './tag'\n\nimport type { VNode } from 'vue'\nimport type { TagProps } from './tag'\n\ndefineOptions({\n  name: 'ElTag',\n})\nconst props = withDefaults(defineProps<TagProps>(), {\n  type: 'primary',\n  effect: 'light',\n})\nconst emit = defineEmits(tagEmits)\n\nconst tagSize = useFormSize()\nconst { t } = useLocale()\nconst ns = useNamespace('tag')\nconst containerKls = computed(() => {\n  const { type, hit, effect, closable, round } = props\n  return [\n    ns.b(),\n    ns.is('closable', closable),\n    ns.m(type || 'primary'),\n    ns.m(tagSize.value),\n    ns.m(effect),\n    ns.is('hit', hit),\n    ns.is('round', round),\n  ]\n})\n\n// methods\nconst handleClose = (event: MouseEvent) => {\n  emit('close', event)\n}\n\nconst handleClick = (event: MouseEvent) => {\n  emit('click', event)\n}\n\nconst handleVNodeMounted = (vnode: VNode) => {\n  // @ts-ignore\n  if (vnode?.component?.subTree?.component?.bum) {\n    // @ts-ignore\n    vnode.component.subTree.component.bum = null\n  }\n}\n</script>\n","<template>\n  <span\n    v-if=\"disableTransitions\"\n    :class=\"containerKls\"\n    :style=\"{ backgroundColor: color }\"\n    @click=\"handleClick\"\n  >\n    <span :class=\"ns.e('content')\">\n      <slot />\n    </span>\n    <button\n      v-if=\"closable\"\n      :aria-label=\"t('el.tag.close')\"\n      :class=\"ns.e('close')\"\n      type=\"button\"\n      @click.stop=\"handleClose\"\n    >\n      <el-icon>\n        <Close />\n      </el-icon>\n    </button>\n  </span>\n  <transition\n    v-else\n    :name=\"`${ns.namespace.value}-zoom-in-center`\"\n    appear\n    @vue:mounted=\"handleVNodeMounted\"\n  >\n    <span\n      :class=\"containerKls\"\n      :style=\"{ backgroundColor: color }\"\n      @click=\"handleClick\"\n    >\n      <span :class=\"ns.e('content')\">\n        <slot />\n      </span>\n      <button\n        v-if=\"closable\"\n        :aria-label=\"t('el.tag.close')\"\n        :class=\"ns.e('close')\"\n        type=\"button\"\n        @click.stop=\"handleClose\"\n      >\n        <el-icon>\n          <Close />\n        </el-icon>\n      </button>\n    </span>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { Close } from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport { tagEmits } from './tag'\n\nimport type { VNode } from 'vue'\nimport type { TagProps } from './tag'\n\ndefineOptions({\n  name: 'ElTag',\n})\nconst props = withDefaults(defineProps<TagProps>(), {\n  type: 'primary',\n  effect: 'light',\n})\nconst emit = defineEmits(tagEmits)\n\nconst tagSize = useFormSize()\nconst { t } = useLocale()\nconst ns = useNamespace('tag')\nconst containerKls = computed(() => {\n  const { type, hit, effect, closable, round } = props\n  return [\n    ns.b(),\n    ns.is('closable', closable),\n    ns.m(type || 'primary'),\n    ns.m(tagSize.value),\n    ns.m(effect),\n    ns.is('hit', hit),\n    ns.is('round', round),\n  ]\n})\n\n// methods\nconst handleClose = (event: MouseEvent) => {\n  emit('close', event)\n}\n\nconst handleClick = (event: MouseEvent) => {\n  emit('click', event)\n}\n\nconst handleVNodeMounted = (vnode: VNode) => {\n  // @ts-ignore\n  if (vnode?.component?.subTree?.component?.bum) {\n    // @ts-ignore\n    vnode.component.subTree.component.bum = null\n  }\n}\n</script>\n","<template>\n  <span\n    v-if=\"disableTransitions\"\n    :class=\"containerKls\"\n    :style=\"{ backgroundColor: color }\"\n    @click=\"handleClick\"\n  >\n    <span :class=\"ns.e('content')\">\n      <slot />\n    </span>\n    <button\n      v-if=\"closable\"\n      :aria-label=\"t('el.tag.close')\"\n      :class=\"ns.e('close')\"\n      type=\"button\"\n      @click.stop=\"handleClose\"\n    >\n      <el-icon>\n        <Close />\n      </el-icon>\n    </button>\n  </span>\n  <transition\n    v-else\n    :name=\"`${ns.namespace.value}-zoom-in-center`\"\n    appear\n    @vue:mounted=\"handleVNodeMounted\"\n  >\n    <span\n      :class=\"containerKls\"\n      :style=\"{ backgroundColor: color }\"\n      @click=\"handleClick\"\n    >\n      <span :class=\"ns.e('content')\">\n        <slot />\n      </span>\n      <button\n        v-if=\"closable\"\n        :aria-label=\"t('el.tag.close')\"\n        :class=\"ns.e('close')\"\n        type=\"button\"\n        @click.stop=\"handleClose\"\n      >\n        <el-icon>\n          <Close />\n        </el-icon>\n      </button>\n    </span>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { Close } from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport { tagEmits } from './tag'\n\nimport type { VNode } from 'vue'\nimport type { TagProps } from './tag'\n\ndefineOptions({\n  name: 'ElTag',\n})\nconst props = withDefaults(defineProps<TagProps>(), {\n  type: 'primary',\n  effect: 'light',\n})\nconst emit = defineEmits(tagEmits)\n\nconst tagSize = useFormSize()\nconst { t } = useLocale()\nconst ns = useNamespace('tag')\nconst containerKls = computed(() => {\n  const { type, hit, effect, closable, round } = props\n  return [\n    ns.b(),\n    ns.is('closable', closable),\n    ns.m(type || 'primary'),\n    ns.m(tagSize.value),\n    ns.m(effect),\n    ns.is('hit', hit),\n    ns.is('round', round),\n  ]\n})\n\n// methods\nconst handleClose = (event: MouseEvent) => {\n  emit('close', event)\n}\n\nconst handleClick = (event: MouseEvent) => {\n  emit('click', event)\n}\n\nconst handleVNodeMounted = (vnode: VNode) => {\n  // @ts-ignore\n  if (vnode?.component?.subTree?.component?.bum) {\n    // @ts-ignore\n    vnode.component.subTree.component.bum = null\n  }\n}\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Tag from './src/tag.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTag: SFCWithInstall<typeof Tag> = withInstall(Tag)\nexport default ElTag\n\nexport * from './src/tag'\n","import { ref, watch } from 'vue'\nimport { get, isEqual } from 'lodash-unified'\n\nimport type { SelectV2Props } from './token'\nimport type { Option } from './select.types'\n\nexport interface Props {\n  label?: string\n  value?: string\n  disabled?: string\n  options?: string\n}\n\nexport const defaultProps: Required<Props> = {\n  label: 'label',\n  value: 'value',\n  disabled: 'disabled',\n  options: 'options',\n}\n\nexport function useProps(props: Pick<SelectV2Props, 'props'>) {\n  const aliasProps = ref({ ...defaultProps, ...props.props })\n  let cache = { ...props.props }\n\n  watch(\n    () => props.props,\n    (val) => {\n      // The props is an object, and its properties may be modified without changing the reference. In this case, the watch values before and after are equal. Here, we compare using the cached previous value.\n      if (!isEqual(val, cache)) {\n        aliasProps.value = { ...defaultProps, ...val }\n        cache = { ...val }\n      }\n    },\n    { deep: true }\n  )\n\n  const getLabel = (option: Option) => get(option, aliasProps.value.label)\n  const getValue = (option: Option) => get(option, aliasProps.value.value)\n  const getDisabled = (option: Option) => get(option, aliasProps.value.disabled)\n  const getOptions = (option: Option) => get(option, aliasProps.value.options)\n\n  return {\n    aliasProps,\n    getLabel,\n    getValue,\n    getDisabled,\n    getOptions,\n  }\n}\n","import type { InjectionKey } from 'vue'\nimport type { SelectContext, SelectGroupContext } from './type'\n\n// For individual build sharing injection key, we had to make `Symbol` to string\nexport const selectGroupKey: InjectionKey<SelectGroupContext> =\n  Symbol('ElSelectGroup')\n\nexport const selectKey: InjectionKey<SelectContext> = Symbol('ElSelect')\n","import { buildProps } from '@pit-element-plus/utils'\n\nexport const COMPONENT_NAME = 'ElOption'\nexport const optionProps = buildProps({\n  /**\n   * @description value of option\n   */\n  value: {\n    type: [String, Number, Boolean, Object],\n    required: true as const,\n  },\n  /**\n   * @description label of option, same as `value` if omitted\n   */\n  label: {\n    type: [String, Number],\n  },\n  created: Boolean,\n  /**\n   * @description whether option is disabled\n   */\n  disabled: Boolean,\n})\n","import { computed, getCurrentInstance, inject, toRaw, watch } from 'vue'\nimport { get, isEqual } from 'lodash-unified'\nimport {\n  ensureArray,\n  escapeStringRegexp,\n  isObject,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { selectGroupKey, selectKey } from './token'\nimport { COMPONENT_NAME } from './option'\n\nimport type { OptionInternalInstance, OptionProps, OptionStates } from './type'\n\nexport function useOption(props: OptionProps, states: OptionStates) {\n  // inject\n  const select = inject(selectKey)\n  if (!select) {\n    throwError(COMPONENT_NAME, 'usage: <el-select><el-option /></el-select/>')\n  }\n  const selectGroup = inject(selectGroupKey, { disabled: false })\n\n  // computed\n  const itemSelected = computed(() => {\n    return contains(ensureArray(select.props.modelValue), props.value)\n  })\n\n  const limitReached = computed(() => {\n    if (select.props.multiple) {\n      const modelValue = ensureArray(select.props.modelValue ?? [])\n      return (\n        !itemSelected.value &&\n        modelValue.length >= select.props.multipleLimit &&\n        select.props.multipleLimit > 0\n      )\n    } else {\n      return false\n    }\n  })\n\n  const currentLabel = computed(() => {\n    return props.label ?? (isObject(props.value) ? '' : props.value)\n  })\n\n  const currentValue = computed(() => {\n    return props.value || props.label || ''\n  })\n\n  const isDisabled = computed(() => {\n    return props.disabled || states.groupDisabled || limitReached.value\n  })\n\n  const instance = getCurrentInstance()! as OptionInternalInstance\n  const contains = <T>(arr: T[] = [], target: T) => {\n    if (!isObject(props.value)) {\n      return arr && arr.includes(target)\n    } else {\n      const valueKey = select.props.valueKey\n      return (\n        arr &&\n        arr.some((item) => {\n          return toRaw(get(item, valueKey)) === get(target, valueKey)\n        })\n      )\n    }\n  }\n\n  const hoverItem = () => {\n    if (!isDisabled.value) {\n      select.states.hoveringIndex = select.optionsArray.indexOf(instance.proxy)\n    }\n  }\n\n  const updateOption = (query: string) => {\n    const regexp = new RegExp(escapeStringRegexp(query), 'i')\n    states.visible = regexp.test(String(currentLabel.value)) || props.created\n  }\n\n  watch(\n    () => currentLabel.value,\n    () => {\n      if (!props.created && !select.props.remote) select.setSelected()\n    }\n  )\n\n  watch(\n    () => props.value,\n    (val, oldVal) => {\n      const { remote, valueKey } = select.props\n      const shouldUpdate = remote ? val !== oldVal : !isEqual(val, oldVal)\n      if (shouldUpdate) {\n        select.onOptionDestroy(oldVal, instance.proxy)\n        select.onOptionCreate(instance.proxy)\n      }\n\n      if (!props.created && !remote) {\n        if (\n          valueKey &&\n          isObject(val) &&\n          isObject(oldVal) &&\n          val[valueKey] === oldVal[valueKey]\n        ) {\n          return\n        }\n        select.setSelected()\n      }\n    }\n  )\n\n  watch(\n    () => selectGroup.disabled,\n    () => {\n      states.groupDisabled = selectGroup.disabled\n    },\n    { immediate: true }\n  )\n\n  return {\n    select,\n    currentLabel,\n    currentValue,\n    itemSelected,\n    isDisabled,\n    hoverItem,\n    updateOption,\n  }\n}\n","<template>\n  <li\n    v-show=\"visible\"\n    :id=\"id\"\n    :class=\"containerKls\"\n    role=\"option\"\n    :aria-disabled=\"isDisabled || undefined\"\n    :aria-selected=\"itemSelected\"\n    @mousemove=\"hoverItem\"\n    @click.stop=\"selectOptionClick\"\n  >\n    <slot>\n      <span>{{ currentLabel }}</span>\n    </slot>\n  </li>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  onBeforeUnmount,\n  reactive,\n  toRefs,\n  unref,\n} from 'vue'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport { useOption } from './useOption'\nimport { COMPONENT_NAME, optionProps } from './option'\n\nimport type {\n  OptionExposed,\n  OptionInternalInstance,\n  OptionStates,\n} from './type'\n\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  componentName: COMPONENT_NAME,\n\n  props: optionProps,\n\n  setup(props) {\n    const ns = useNamespace('select')\n    const id = useId()\n\n    const containerKls = computed(() => [\n      ns.be('dropdown', 'item'),\n      ns.is('disabled', unref(isDisabled)),\n      ns.is('selected', unref(itemSelected)),\n      ns.is('hovering', unref(hover)),\n    ])\n\n    const states = reactive<OptionStates>({\n      index: -1,\n      groupDisabled: false,\n      visible: true,\n      hover: false,\n    })\n\n    const {\n      currentLabel,\n      itemSelected,\n      isDisabled,\n      select,\n      hoverItem,\n      updateOption,\n    } = useOption(props, states)\n\n    const { visible, hover } = toRefs(states)\n\n    const vm = (getCurrentInstance()! as OptionInternalInstance).proxy\n\n    select.onOptionCreate(vm)\n\n    onBeforeUnmount(() => {\n      const key = vm.value\n\n      // if option is not selected, remove it from cache\n      nextTick(() => {\n        const { selected: selectedOptions } = select.states\n        const doesSelected = selectedOptions.some((item) => {\n          return item.value === vm.value\n        })\n        if (select.states.cachedOptions.get(key) === vm && !doesSelected) {\n          select.states.cachedOptions.delete(key)\n        }\n      })\n      select.onOptionDestroy(key, vm)\n    })\n\n    function selectOptionClick() {\n      if (!isDisabled.value) {\n        select.handleOptionSelect(vm)\n      }\n    }\n\n    return {\n      ns,\n      id,\n      containerKls,\n      currentLabel,\n      itemSelected,\n      isDisabled,\n      select,\n      visible,\n      hover,\n      states,\n\n      hoverItem,\n      updateOption,\n      selectOptionClick,\n    } satisfies OptionExposed\n  },\n})\n</script>\n","<template>\n  <li\n    v-show=\"visible\"\n    :id=\"id\"\n    :class=\"containerKls\"\n    role=\"option\"\n    :aria-disabled=\"isDisabled || undefined\"\n    :aria-selected=\"itemSelected\"\n    @mousemove=\"hoverItem\"\n    @click.stop=\"selectOptionClick\"\n  >\n    <slot>\n      <span>{{ currentLabel }}</span>\n    </slot>\n  </li>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  onBeforeUnmount,\n  reactive,\n  toRefs,\n  unref,\n} from 'vue'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport { useOption } from './useOption'\nimport { COMPONENT_NAME, optionProps } from './option'\n\nimport type {\n  OptionExposed,\n  OptionInternalInstance,\n  OptionStates,\n} from './type'\n\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  componentName: COMPONENT_NAME,\n\n  props: optionProps,\n\n  setup(props) {\n    const ns = useNamespace('select')\n    const id = useId()\n\n    const containerKls = computed(() => [\n      ns.be('dropdown', 'item'),\n      ns.is('disabled', unref(isDisabled)),\n      ns.is('selected', unref(itemSelected)),\n      ns.is('hovering', unref(hover)),\n    ])\n\n    const states = reactive<OptionStates>({\n      index: -1,\n      groupDisabled: false,\n      visible: true,\n      hover: false,\n    })\n\n    const {\n      currentLabel,\n      itemSelected,\n      isDisabled,\n      select,\n      hoverItem,\n      updateOption,\n    } = useOption(props, states)\n\n    const { visible, hover } = toRefs(states)\n\n    const vm = (getCurrentInstance()! as OptionInternalInstance).proxy\n\n    select.onOptionCreate(vm)\n\n    onBeforeUnmount(() => {\n      const key = vm.value\n\n      // if option is not selected, remove it from cache\n      nextTick(() => {\n        const { selected: selectedOptions } = select.states\n        const doesSelected = selectedOptions.some((item) => {\n          return item.value === vm.value\n        })\n        if (select.states.cachedOptions.get(key) === vm && !doesSelected) {\n          select.states.cachedOptions.delete(key)\n        }\n      })\n      select.onOptionDestroy(key, vm)\n    })\n\n    function selectOptionClick() {\n      if (!isDisabled.value) {\n        select.handleOptionSelect(vm)\n      }\n    }\n\n    return {\n      ns,\n      id,\n      containerKls,\n      currentLabel,\n      itemSelected,\n      isDisabled,\n      select,\n      visible,\n      hover,\n      states,\n\n      hoverItem,\n      updateOption,\n      selectOptionClick,\n    } satisfies OptionExposed\n  },\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b('dropdown'), ns.is('multiple', isMultiple), popperClass]\"\n    :style=\"{ [isFitInputWidth ? 'width' : 'minWidth']: minWidth }\"\n  >\n    <div v-if=\"$slots.header\" :class=\"ns.be('dropdown', 'header')\">\n      <slot name=\"header\" />\n    </div>\n    <slot />\n    <div v-if=\"$slots.footer\" :class=\"ns.be('dropdown', 'footer')\">\n      <slot name=\"footer\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, onMounted, ref } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { selectKey } from './token'\nimport { BORDER_HORIZONTAL_WIDTH } from '@pit-element-plus/constants'\n\nexport default defineComponent({\n  name: 'ElSelectDropdown',\n\n  componentName: 'ElSelectDropdown',\n\n  setup() {\n    const select = inject(selectKey)!\n    const ns = useNamespace('select')\n\n    // computed\n    const popperClass = computed(() => select.props.popperClass)\n    const isMultiple = computed(() => select.props.multiple)\n    const isFitInputWidth = computed(() => select.props.fitInputWidth)\n    const minWidth = ref('')\n\n    function updateMinWidth() {\n      const offsetWidth = select.selectRef?.offsetWidth\n      if (offsetWidth) {\n        minWidth.value = `${offsetWidth - BORDER_HORIZONTAL_WIDTH}px`\n      } else {\n        minWidth.value = ''\n      }\n    }\n\n    onMounted(() => {\n      // TODO: updatePopper\n      // popper.value.update()\n      updateMinWidth()\n      useResizeObserver(select.selectRef, updateMinWidth)\n    })\n\n    return {\n      ns,\n      minWidth,\n      popperClass,\n      isMultiple,\n      isFitInputWidth,\n    }\n  },\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b('dropdown'), ns.is('multiple', isMultiple), popperClass]\"\n    :style=\"{ [isFitInputWidth ? 'width' : 'minWidth']: minWidth }\"\n  >\n    <div v-if=\"$slots.header\" :class=\"ns.be('dropdown', 'header')\">\n      <slot name=\"header\" />\n    </div>\n    <slot />\n    <div v-if=\"$slots.footer\" :class=\"ns.be('dropdown', 'footer')\">\n      <slot name=\"footer\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, onMounted, ref } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { selectKey } from './token'\nimport { BORDER_HORIZONTAL_WIDTH } from '@pit-element-plus/constants'\n\nexport default defineComponent({\n  name: 'ElSelectDropdown',\n\n  componentName: 'ElSelectDropdown',\n\n  setup() {\n    const select = inject(selectKey)!\n    const ns = useNamespace('select')\n\n    // computed\n    const popperClass = computed(() => select.props.popperClass)\n    const isMultiple = computed(() => select.props.multiple)\n    const isFitInputWidth = computed(() => select.props.fitInputWidth)\n    const minWidth = ref('')\n\n    function updateMinWidth() {\n      const offsetWidth = select.selectRef?.offsetWidth\n      if (offsetWidth) {\n        minWidth.value = `${offsetWidth - BORDER_HORIZONTAL_WIDTH}px`\n      } else {\n        minWidth.value = ''\n      }\n    }\n\n    onMounted(() => {\n      // TODO: updatePopper\n      // popper.value.update()\n      updateMinWidth()\n      useResizeObserver(select.selectRef, updateMinWidth)\n    })\n\n    return {\n      ns,\n      minWidth,\n      popperClass,\n      isMultiple,\n      isFitInputWidth,\n    }\n  },\n})\n</script>\n","import {\n  computed,\n  nextTick,\n  onMounted,\n  reactive,\n  ref,\n  useSlots,\n  watch,\n  watchEffect,\n} from 'vue'\nimport { clamp, findLastIndex, get, isEqual, isNil } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n  ValidateComponentsMap,\n  debugWarn,\n  ensureArray,\n  getEventCode,\n  isArray,\n  isClient,\n  isEmpty,\n  isFunction,\n  isIOS,\n  isNumber,\n  isObject,\n  isPlainObject,\n  isUndefined,\n  scrollIntoView,\n} from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  MINIMUM_INPUT_WIDTH,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport {\n  useComposition,\n  useEmptyValues,\n  useFocusController,\n  useId,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\n\nimport type { Component } from 'vue'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { ScrollbarInstance } from '@pit-element-plus/components/scrollbar'\nimport type { SelectEmits, SelectProps } from './select'\nimport type {\n  OptionBasic,\n  OptionPublicInstance,\n  OptionValue,\n  SelectStates,\n} from './type'\n\nexport const useSelect = (props: SelectProps, emit: SelectEmits) => {\n  const { t } = useLocale()\n  const slots = useSlots()\n  const contentId = useId()\n  const nsSelect = useNamespace('select')\n  const nsInput = useNamespace('input')\n\n  const states = reactive<SelectStates>({\n    inputValue: '',\n    options: new Map(),\n    cachedOptions: new Map(),\n    optionValues: [], // sorted value of options\n    selected: [],\n    selectionWidth: 0,\n    collapseItemWidth: 0,\n    selectedLabel: '',\n    hoveringIndex: -1,\n    previousQuery: null,\n    inputHovering: false,\n    menuVisibleOnFocus: false,\n    isBeforeHide: false,\n  })\n\n  // template refs\n  const selectRef = ref<HTMLElement>()\n  const selectionRef = ref<HTMLElement>()\n  const tooltipRef = ref<TooltipInstance>()\n  const tagTooltipRef = ref<TooltipInstance>()\n  const inputRef = ref<HTMLInputElement>()\n  const prefixRef = ref<HTMLElement>()\n  const suffixRef = ref<HTMLElement>()\n  const menuRef = ref<HTMLElement>()\n  const tagMenuRef = ref<HTMLElement>()\n  const collapseItemRef = ref<HTMLElement>()\n  const scrollbarRef = ref<ScrollbarInstance>()\n  // the controller of the expanded popup\n  const expanded = ref(false)\n  const hoverOption = ref()\n  const debouncing = ref(false)\n\n  const { form, formItem } = useFormItem()\n  const { inputId } = useFormItemInputId(props, {\n    formItemContext: formItem,\n  })\n  const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n  const {\n    isComposing,\n    handleCompositionStart,\n    handleCompositionUpdate,\n    handleCompositionEnd,\n  } = useComposition({\n    afterComposition: (e) => onInput(e),\n  })\n\n  const selectDisabled = useFormDisabled()\n\n  const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n    disabled: selectDisabled,\n    afterFocus() {\n      if (props.automaticDropdown && !expanded.value) {\n        expanded.value = true\n        states.menuVisibleOnFocus = true\n      }\n    },\n    beforeBlur(event) {\n      return (\n        tooltipRef.value?.isFocusInsideContent(event) ||\n        tagTooltipRef.value?.isFocusInsideContent(event)\n      )\n    },\n    afterBlur() {\n      expanded.value = false\n      states.menuVisibleOnFocus = false\n      if (props.validateEvent) {\n        formItem?.validate?.('blur').catch((err) => debugWarn(err))\n      }\n    },\n  })\n\n  const hasModelValue = computed(() => {\n    return isArray(props.modelValue)\n      ? props.modelValue.length > 0\n      : !isEmptyValue(props.modelValue)\n  })\n\n  const needStatusIcon = computed(() => form?.statusIcon ?? false)\n\n  const showClearBtn = computed(() => {\n    return (\n      props.clearable &&\n      !selectDisabled.value &&\n      hasModelValue.value &&\n      (isFocused.value || states.inputHovering)\n    )\n  })\n  const iconComponent = computed(() =>\n    props.remote && props.filterable && !props.remoteShowSuffix\n      ? ''\n      : props.suffixIcon\n  )\n  const iconReverse = computed(() =>\n    nsSelect.is('reverse', !!(iconComponent.value && expanded.value))\n  )\n\n  const validateState = computed(() => formItem?.validateState || '')\n  const validateIcon = computed(\n    () =>\n      validateState.value &&\n      (ValidateComponentsMap[validateState.value] as Component)\n  )\n\n  const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n  const isRemoteSearchEmpty = computed(\n    () => props.remote && !states.inputValue && states.options.size === 0\n  )\n\n  const emptyText = computed(() => {\n    if (props.loading) {\n      return props.loadingText || t('el.select.loading')\n    } else {\n      if (\n        props.filterable &&\n        states.inputValue &&\n        states.options.size > 0 &&\n        filteredOptionsCount.value === 0\n      ) {\n        return props.noMatchText || t('el.select.noMatch')\n      }\n      if (states.options.size === 0) {\n        return props.noDataText || t('el.select.noData')\n      }\n    }\n    return null\n  })\n\n  const filteredOptionsCount = computed(\n    () => optionsArray.value.filter((option) => option.visible).length\n  )\n\n  const optionsArray = computed(() => {\n    const list = Array.from(states.options.values())\n    const newList: OptionPublicInstance[] = []\n    states.optionValues.forEach((item) => {\n      const index = list.findIndex((i) => i.value === item)\n      if (index > -1) {\n        newList.push(list[index])\n      }\n    })\n    return newList.length >= list.length ? newList : list\n  })\n\n  const cachedOptionsArray = computed(() =>\n    Array.from(states.cachedOptions.values())\n  )\n\n  const showNewOption = computed(() => {\n    const hasExistingOption = optionsArray.value\n      .filter((option) => {\n        return !option.created\n      })\n      .some((option) => {\n        return option.currentLabel === states.inputValue\n      })\n    return (\n      props.filterable &&\n      props.allowCreate &&\n      states.inputValue !== '' &&\n      !hasExistingOption\n    )\n  })\n\n  const updateOptions = () => {\n    if (props.filterable && isFunction(props.filterMethod)) return\n    if (props.filterable && props.remote && isFunction(props.remoteMethod))\n      return\n    optionsArray.value.forEach((option) => {\n      option.updateOption?.(states.inputValue)\n    })\n  }\n\n  const selectSize = useFormSize()\n\n  const collapseTagSize = computed(() =>\n    ['small'].includes(selectSize.value) ? 'small' : 'default'\n  )\n\n  const dropdownMenuVisible = computed({\n    get() {\n      return (\n        expanded.value &&\n        (props.loading ||\n          !isRemoteSearchEmpty.value ||\n          (props.remote && !!slots.empty)) &&\n        (!debouncing.value || !isEmpty(states.previousQuery))\n      )\n    },\n    set(val: boolean) {\n      expanded.value = val\n    },\n  })\n\n  const shouldShowPlaceholder = computed(() => {\n    if (props.multiple && !isUndefined(props.modelValue)) {\n      return ensureArray(props.modelValue).length === 0 && !states.inputValue\n    }\n    const value = isArray(props.modelValue)\n      ? props.modelValue[0]\n      : props.modelValue\n    return props.filterable || isUndefined(value) ? !states.inputValue : true\n  })\n\n  const currentPlaceholder = computed(() => {\n    const _placeholder =\n      props.placeholder ||\n      `请选择${formItem?.label}` ||\n      t('el.select.placeholder')\n    return props.multiple || !hasModelValue.value\n      ? _placeholder\n      : states.selectedLabel\n  })\n\n  // iOS Safari does not handle click events when a mouseenter event is registered and a DOM-change happens in a child\n  // We use a Vue custom event binding to only register the event on non-iOS devices\n  // ref.: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n  // Github Issue: https://github.com/vuejs/vue/issues/9859\n  const mouseEnterEventName = computed(() => (isIOS ? null : 'mouseenter'))\n\n  watch(\n    () => props.modelValue,\n    (val, oldVal) => {\n      if (props.multiple) {\n        if (props.filterable && !props.reserveKeyword) {\n          states.inputValue = ''\n          handleQueryChange('')\n        }\n      }\n      setSelected()\n      if (!isEqual(val, oldVal) && props.validateEvent) {\n        formItem?.validate('change').catch((err) => debugWarn(err))\n      }\n    },\n    {\n      flush: 'post',\n      deep: true,\n    }\n  )\n\n  watch(\n    () => expanded.value,\n    (val) => {\n      if (val) {\n        handleQueryChange(states.inputValue)\n      } else {\n        states.inputValue = ''\n        states.previousQuery = null\n        states.isBeforeHide = true\n        states.menuVisibleOnFocus = false\n      }\n    }\n  )\n\n  watch(\n    // fix `Array.prototype.push/splice/..` cannot trigger non-deep watcher\n    // https://github.com/vuejs/vue-next/issues/2116\n    () => states.options.entries(),\n    () => {\n      if (!isClient) return\n      // tooltipRef.value?.updatePopper?.()\n      setSelected()\n      if (\n        props.defaultFirstOption &&\n        (props.filterable || props.remote) &&\n        filteredOptionsCount.value\n      ) {\n        checkDefaultFirstOption()\n      }\n    },\n    {\n      flush: 'post',\n    }\n  )\n\n  watch([() => states.hoveringIndex, optionsArray], ([val]) => {\n    if (isNumber(val) && val > -1) {\n      hoverOption.value = optionsArray.value[val] || {}\n    } else {\n      hoverOption.value = {}\n    }\n    optionsArray.value.forEach((option) => {\n      option.hover = hoverOption.value === option\n    })\n  })\n\n  watchEffect(() => {\n    // Anything could cause options changed, then update options\n    // If you want to control it by condition, write here\n    if (states.isBeforeHide) return\n    updateOptions()\n  })\n\n  const handleQueryChange = (val: string) => {\n    if (states.previousQuery === val || isComposing.value) {\n      return\n    }\n    states.previousQuery = val\n    if (props.filterable && isFunction(props.filterMethod)) {\n      props.filterMethod(val)\n    } else if (\n      props.filterable &&\n      props.remote &&\n      isFunction(props.remoteMethod)\n    ) {\n      props.remoteMethod(val)\n    }\n    if (\n      props.defaultFirstOption &&\n      (props.filterable || props.remote) &&\n      filteredOptionsCount.value\n    ) {\n      nextTick(checkDefaultFirstOption)\n    } else {\n      nextTick(updateHoveringIndex)\n    }\n  }\n\n  /**\n   * find and highlight first option as default selected\n   * @remark\n   * - if the first option in dropdown list is user-created,\n   *   it would be at the end of the optionsArray\n   *   so find it and set hover.\n   *   (NOTE: there must be only one user-created option in dropdown list with query)\n   * - if there's no user-created option in list, just find the first one as usual\n   *   (NOTE: exclude options that are disabled or in disabled-group)\n   */\n  const checkDefaultFirstOption = () => {\n    const optionsInDropdown = optionsArray.value.filter(\n      (n) => n.visible && !n.disabled && !n.states.groupDisabled\n    )\n    const userCreatedOption = optionsInDropdown.find((n) => n.created)\n    const firstOriginOption = optionsInDropdown[0]\n    const valueList = optionsArray.value.map((item) => item.value)\n    states.hoveringIndex = getValueIndex(\n      valueList,\n      userCreatedOption || firstOriginOption\n    )\n  }\n\n  const setSelected = () => {\n    if (!props.multiple) {\n      const value = isArray(props.modelValue)\n        ? props.modelValue[0]\n        : props.modelValue\n      const option = getOption(value)\n      states.selectedLabel = option.currentLabel\n      states.selected = [option]\n      return\n    } else {\n      states.selectedLabel = ''\n    }\n    const result: SelectStates['selected'] = []\n    if (!isUndefined(props.modelValue)) {\n      ensureArray(props.modelValue).forEach((value) => {\n        result.push(getOption(value))\n      })\n    }\n    states.selected = result\n  }\n\n  const getOption = (value: OptionValue) => {\n    let option\n    const isObjectValue = isPlainObject(value)\n\n    for (let i = states.cachedOptions.size - 1; i >= 0; i--) {\n      const cachedOption = cachedOptionsArray.value[i]\n      const isEqualValue = isObjectValue\n        ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey)\n        : cachedOption.value === value\n      if (isEqualValue) {\n        option = {\n          index: optionsArray.value\n            .filter((opt) => !opt.created)\n            .indexOf(cachedOption),\n          value,\n          currentLabel: cachedOption.currentLabel,\n          get isDisabled() {\n            return cachedOption.isDisabled\n          },\n        }\n        break\n      }\n    }\n    if (option) return option\n    const label = isObjectValue ? value.label : (value ?? '')\n    const newOption = {\n      index: -1,\n      value,\n      currentLabel: label,\n    }\n    return newOption\n  }\n\n  const updateHoveringIndex = () => {\n    const length = states.selected.length\n    if (length > 0) {\n      const lastOption = states.selected[length - 1]\n      states.hoveringIndex = optionsArray.value.findIndex(\n        (item) => getValueKey(lastOption) === getValueKey(item)\n      )\n    } else {\n      states.hoveringIndex = -1\n    }\n  }\n\n  const resetSelectionWidth = () => {\n    states.selectionWidth = Number.parseFloat(\n      window.getComputedStyle(selectionRef.value!).width\n    )\n  }\n\n  const resetCollapseItemWidth = () => {\n    states.collapseItemWidth =\n      collapseItemRef.value!.getBoundingClientRect().width\n  }\n\n  const updateTooltip = () => {\n    tooltipRef.value?.updatePopper?.()\n  }\n\n  const updateTagTooltip = () => {\n    tagTooltipRef.value?.updatePopper?.()\n  }\n\n  const onInputChange = () => {\n    if (states.inputValue.length > 0 && !expanded.value) {\n      expanded.value = true\n    }\n    handleQueryChange(states.inputValue)\n  }\n\n  const onInput = (event: Event) => {\n    states.inputValue = (event.target as HTMLInputElement).value\n    if (props.remote) {\n      debouncing.value = true\n      debouncedOnInputChange()\n    } else {\n      return onInputChange()\n    }\n  }\n\n  const debouncedOnInputChange = useDebounceFn(() => {\n    onInputChange()\n    debouncing.value = false\n  }, debounce)\n\n  const emitChange = (val: OptionValue | OptionValue[]) => {\n    if (!isEqual(props.modelValue, val)) {\n      emit(CHANGE_EVENT, val)\n    }\n  }\n\n  const getLastNotDisabledIndex = (value: OptionValue[]) =>\n    findLastIndex(value, (it) => {\n      const option = states.cachedOptions.get(it)\n      return !option?.disabled && !option?.states.groupDisabled\n    })\n\n  const deletePrevTag = (e: KeyboardEvent) => {\n    const code = getEventCode(e)\n    if (!props.multiple) return\n    if (code === EVENT_CODE.delete) return\n    if ((e.target as HTMLInputElement).value.length <= 0) {\n      const value = ensureArray(props.modelValue).slice()\n      const lastNotDisabledIndex = getLastNotDisabledIndex(value)\n      if (lastNotDisabledIndex < 0) return\n      const removeTagValue = value[lastNotDisabledIndex]\n      value.splice(lastNotDisabledIndex, 1)\n      emit(UPDATE_MODEL_EVENT, value)\n      emitChange(value)\n      emit('remove-tag', removeTagValue)\n    }\n  }\n\n  const deleteTag = (event: MouseEvent, tag: OptionBasic) => {\n    const index = states.selected.indexOf(tag)\n    if (index > -1 && !selectDisabled.value) {\n      const value = ensureArray(props.modelValue).slice()\n      value.splice(index, 1)\n      emit(UPDATE_MODEL_EVENT, value)\n      emitChange(value)\n      emit('remove-tag', tag.value)\n    }\n    event.stopPropagation()\n    focus()\n  }\n\n  const deleteSelected = (event: Event) => {\n    event.stopPropagation()\n    const value = props.multiple ? [] : valueOnClear.value\n    if (props.multiple) {\n      for (const item of states.selected) {\n        if (item.isDisabled) value.push(item.value)\n      }\n    }\n    emit(UPDATE_MODEL_EVENT, value)\n    emitChange(value)\n    states.hoveringIndex = -1\n    expanded.value = false\n    emit('clear')\n    focus()\n  }\n\n  const handleOptionSelect = (option: OptionPublicInstance) => {\n    if (props.multiple) {\n      const value = ensureArray(props.modelValue ?? []).slice()\n      const optionIndex = getValueIndex(value, option)\n      if (optionIndex > -1) {\n        value.splice(optionIndex, 1)\n      } else if (\n        props.multipleLimit <= 0 ||\n        value.length < props.multipleLimit\n      ) {\n        value.push(option.value)\n      }\n      emit(UPDATE_MODEL_EVENT, value)\n      emitChange(value)\n      if (option.created) {\n        handleQueryChange('')\n      }\n      if (props.filterable && (option.created || !props.reserveKeyword)) {\n        states.inputValue = ''\n      }\n    } else {\n      !isEqual(props.modelValue, option.value) &&\n        emit(UPDATE_MODEL_EVENT, option.value)\n      emitChange(option.value)\n      expanded.value = false\n    }\n    focus()\n    if (expanded.value) return\n    nextTick(() => {\n      scrollToOption(option)\n    })\n  }\n\n  const getValueIndex = (arr: OptionValue[], option: OptionPublicInstance) => {\n    if (isUndefined(option)) return -1\n    if (!isObject(option.value)) return arr.indexOf(option.value)\n\n    return arr.findIndex((item) => {\n      return isEqual(get(item, props.valueKey), getValueKey(option))\n    })\n  }\n\n  const scrollToOption = (\n    option:\n      | OptionPublicInstance\n      | OptionPublicInstance[]\n      | SelectStates['selected']\n  ) => {\n    const targetOption = isArray(option) ? option[option.length - 1] : option\n    let target = null\n\n    if (!isNil(targetOption?.value)) {\n      const options = optionsArray.value.filter(\n        (item) => item.value === targetOption.value\n      )\n      if (options.length > 0) {\n        target = options[0].$el\n      }\n    }\n\n    if (tooltipRef.value && target) {\n      const menu = tooltipRef.value?.popperRef?.contentRef?.querySelector?.(\n        `.${nsSelect.be('dropdown', 'wrap')}`\n      )\n      if (menu) {\n        scrollIntoView(menu as HTMLElement, target)\n      }\n    }\n    scrollbarRef.value?.handleScroll()\n  }\n\n  const onOptionCreate = (vm: OptionPublicInstance) => {\n    states.options.set(vm.value, vm)\n    states.cachedOptions.set(vm.value, vm)\n  }\n\n  const onOptionDestroy = (key: OptionValue, vm: OptionPublicInstance) => {\n    if (states.options.get(key) === vm) {\n      states.options.delete(key)\n    }\n  }\n\n  const popperRef = computed(() => {\n    return tooltipRef.value?.popperRef?.contentRef\n  })\n\n  const handleMenuEnter = () => {\n    states.isBeforeHide = false\n    nextTick(() => {\n      scrollbarRef.value?.update()\n      scrollToOption(states.selected)\n    })\n  }\n\n  const focus = () => {\n    inputRef.value?.focus()\n  }\n\n  const blur = () => {\n    if (expanded.value) {\n      expanded.value = false\n      nextTick(() => inputRef.value?.blur())\n      return\n    }\n    inputRef.value?.blur()\n  }\n\n  const handleClearClick = (event: Event) => {\n    deleteSelected(event)\n  }\n\n  const handleClickOutside = (event: Event) => {\n    expanded.value = false\n\n    if (isFocused.value) {\n      const _event = new FocusEvent('blur', event)\n      nextTick(() => handleBlur(_event))\n    }\n  }\n\n  const handleEsc = () => {\n    if (states.inputValue.length > 0) {\n      states.inputValue = ''\n    } else {\n      expanded.value = false\n    }\n  }\n\n  const toggleMenu = (event?: Event) => {\n    if (\n      selectDisabled.value ||\n      (props.filterable &&\n        expanded.value &&\n        event &&\n        !suffixRef.value?.contains(event.target as Node))\n    )\n      return\n\n    // We only set the inputHovering state to true on mouseenter event on iOS devices\n    // To keep the state updated we set it here to true\n    if (isIOS) states.inputHovering = true\n\n    if (states.menuVisibleOnFocus) {\n      // controlled by automaticDropdown\n      states.menuVisibleOnFocus = false\n    } else {\n      expanded.value = !expanded.value\n    }\n  }\n\n  const selectOption = () => {\n    if (!expanded.value) {\n      toggleMenu()\n    } else {\n      const option = optionsArray.value[states.hoveringIndex]\n      if (option && !option.isDisabled) {\n        handleOptionSelect(option)\n      }\n    }\n  }\n\n  const getValueKey = (\n    item: OptionPublicInstance | SelectStates['selected'][0]\n  ) => {\n    return isObject(item.value) ? get(item.value, props.valueKey) : item.value\n  }\n\n  const optionsAllDisabled = computed(() =>\n    optionsArray.value\n      .filter((option) => option.visible)\n      .every((option) => option.isDisabled)\n  )\n\n  const showTagList = computed(() => {\n    if (!props.multiple) {\n      return []\n    }\n    return props.collapseTags\n      ? states.selected.slice(0, props.maxCollapseTags)\n      : states.selected\n  })\n\n  const collapseTagList = computed(() => {\n    if (!props.multiple) {\n      return []\n    }\n    return props.collapseTags\n      ? states.selected.slice(props.maxCollapseTags)\n      : []\n  })\n\n  const navigateOptions = (direction: 'prev' | 'next') => {\n    if (!expanded.value) {\n      expanded.value = true\n      return\n    }\n    if (\n      states.options.size === 0 ||\n      filteredOptionsCount.value === 0 ||\n      isComposing.value\n    )\n      return\n\n    if (!optionsAllDisabled.value) {\n      if (direction === 'next') {\n        states.hoveringIndex++\n        if (states.hoveringIndex === states.options.size) {\n          states.hoveringIndex = 0\n        }\n      } else if (direction === 'prev') {\n        states.hoveringIndex--\n        if (states.hoveringIndex < 0) {\n          states.hoveringIndex = states.options.size - 1\n        }\n      }\n      const option = optionsArray.value[states.hoveringIndex]\n      if (option.isDisabled || !option.visible) {\n        navigateOptions(direction)\n      }\n      nextTick(() => scrollToOption(hoverOption.value))\n    }\n  }\n\n  const findFocusableIndex = (\n    arr: any[],\n    start: number,\n    step: number,\n    len: number\n  ) => {\n    for (let i = start; i >= 0 && i < len; i += step) {\n      const obj = arr[i]\n      if (!obj?.isDisabled && obj?.visible) {\n        return i\n      }\n    }\n    return null\n  }\n\n  const focusOption = (targetIndex: number, mode: 'up' | 'down') => {\n    const len = states.options.size\n    if (len === 0) return\n    const start = clamp(targetIndex, 0, len - 1)\n    const options = optionsArray.value\n    const direction = mode === 'up' ? -1 : 1\n    const newIndex =\n      findFocusableIndex(options, start, direction, len) ??\n      findFocusableIndex(options, start - direction, -direction, len)\n\n    if (newIndex != null) {\n      states.hoveringIndex = newIndex\n      nextTick(() => scrollToOption(hoverOption.value))\n    }\n  }\n\n  const handleKeydown = (e: KeyboardEvent) => {\n    const code = getEventCode(e)\n    let isPreventDefault = true\n    switch (code) {\n      case EVENT_CODE.up:\n        navigateOptions('prev')\n        break\n      case EVENT_CODE.down:\n        navigateOptions('next')\n        break\n      case EVENT_CODE.enter:\n      case EVENT_CODE.numpadEnter:\n        if (!isComposing.value) {\n          selectOption()\n        }\n        break\n      case EVENT_CODE.esc:\n        handleEsc()\n        break\n      case EVENT_CODE.backspace:\n        isPreventDefault = false\n        deletePrevTag(e)\n        return\n      case EVENT_CODE.home:\n        if (!expanded.value) return\n        focusOption(0, 'down')\n        break\n      case EVENT_CODE.end:\n        if (!expanded.value) return\n        focusOption(states.options.size - 1, 'up')\n        break\n      case EVENT_CODE.pageUp:\n        if (!expanded.value) return\n        focusOption(states.hoveringIndex - 10, 'up')\n        break\n      case EVENT_CODE.pageDown:\n        if (!expanded.value) return\n        focusOption(states.hoveringIndex + 10, 'down')\n        break\n      default:\n        isPreventDefault = false\n        break\n    }\n    if (isPreventDefault) {\n      e.preventDefault()\n      e.stopPropagation()\n    }\n  }\n\n  const getGapWidth = () => {\n    if (!selectionRef.value) return 0\n    const style = window.getComputedStyle(selectionRef.value)\n    return Number.parseFloat(style.gap || '6px')\n  }\n\n  // computed style\n  const tagStyle = computed(() => {\n    const gapWidth = getGapWidth()\n    const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n    const maxWidth =\n      collapseItemRef.value && props.maxCollapseTags === 1\n        ? states.selectionWidth -\n          states.collapseItemWidth -\n          gapWidth -\n          inputSlotWidth\n        : states.selectionWidth - inputSlotWidth\n    return { maxWidth: `${maxWidth}px` }\n  })\n\n  const collapseTagStyle = computed(() => {\n    return { maxWidth: `${states.selectionWidth}px` }\n  })\n\n  const popupScroll = (data: { scrollTop: number; scrollLeft: number }) => {\n    emit('popup-scroll', data)\n  }\n\n  useResizeObserver(selectionRef, resetSelectionWidth)\n  useResizeObserver(wrapperRef, updateTooltip)\n  useResizeObserver(tagMenuRef, updateTagTooltip)\n  useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n  // #21498\n  let stop: (() => void) | undefined\n  watch(\n    () => dropdownMenuVisible.value,\n    (newVal) => {\n      if (newVal) {\n        stop = useResizeObserver(menuRef, updateTooltip).stop\n      } else {\n        stop?.()\n        stop = undefined\n      }\n      emit('visible-change', newVal)\n    }\n  )\n\n  onMounted(() => {\n    setSelected()\n  })\n\n  return {\n    inputId,\n    contentId,\n    nsSelect,\n    nsInput,\n    states,\n    isFocused,\n    expanded,\n    optionsArray,\n    hoverOption,\n    selectSize,\n    filteredOptionsCount,\n    updateTooltip,\n    updateTagTooltip,\n    debouncedOnInputChange,\n    onInput,\n    deletePrevTag,\n    deleteTag,\n    deleteSelected,\n    handleOptionSelect,\n    scrollToOption,\n    hasModelValue,\n    shouldShowPlaceholder,\n    currentPlaceholder,\n    mouseEnterEventName,\n    needStatusIcon,\n    showClearBtn,\n    iconComponent,\n    iconReverse,\n    validateState,\n    validateIcon,\n    showNewOption,\n    updateOptions,\n    collapseTagSize,\n    setSelected,\n    selectDisabled,\n    emptyText,\n    handleCompositionStart,\n    handleCompositionUpdate,\n    handleCompositionEnd,\n    handleKeydown,\n    onOptionCreate,\n    onOptionDestroy,\n    handleMenuEnter,\n    focus,\n    blur,\n    handleClearClick,\n    handleClickOutside,\n    handleEsc,\n    toggleMenu,\n    selectOption,\n    getValueKey,\n    navigateOptions,\n    dropdownMenuVisible,\n    showTagList,\n    collapseTagList,\n    popupScroll,\n    getOption,\n\n    // computed style\n    tagStyle,\n    collapseTagStyle,\n\n    // DOM ref\n    popperRef,\n    inputRef,\n    tooltipRef,\n    tagTooltipRef,\n    prefixRef,\n    suffixRef,\n    selectRef,\n    wrapperRef,\n    selectionRef,\n    scrollbarRef,\n    menuRef,\n    tagMenuRef,\n    collapseItemRef,\n  }\n}\n","import { defineComponent, inject } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { isArray, isFunction, isString } from '@pit-element-plus/utils'\nimport { selectKey } from './token'\n\nimport type { Component, VNode, VNodeNormalizedChildren } from 'vue'\nimport type { OptionValue } from './type'\n\nexport default defineComponent({\n  name: 'ElOptions',\n  setup(_, { slots }) {\n    const select = inject(selectKey)\n    let cachedValueList: OptionValue[] = []\n\n    return () => {\n      const children = slots.default?.()!\n      const valueList: OptionValue[] = []\n\n      function filterOptions(children?: VNodeNormalizedChildren) {\n        if (!isArray(children)) return\n        ;(children as VNode[]).forEach((item) => {\n          const name = ((item?.type || {}) as Component)?.name\n\n          if (name === 'ElOptionGroup') {\n            filterOptions(\n              !isString(item.children) &&\n                !isArray(item.children) &&\n                isFunction(item.children?.default)\n                ? item.children?.default()\n                : item.children\n            )\n          } else if (name === 'ElOption') {\n            valueList.push(item.props?.value)\n          } else if (isArray(item.children)) {\n            filterOptions(item.children)\n          }\n        })\n      }\n\n      if (children.length) {\n        filterOptions(children[0]?.children)\n      }\n\n      if (!isEqual(valueList, cachedValueList)) {\n        cachedValueList = valueList\n        if (select) {\n          select.states.optionValues = valueList\n        }\n      }\n\n      return children\n    }\n  },\n})\n","import { placements } from '@popperjs/core'\nimport { scrollbarEmits } from '@pit-element-plus/components/scrollbar'\nimport {\n  useAriaProps,\n  useEmptyValuesProps,\n  useSizeProp,\n} from '@pit-element-plus/hooks'\nimport {\n  buildProps,\n  definePropType,\n  iconPropType,\n} from '@pit-element-plus/utils'\nimport { useTooltipContentProps } from '@pit-element-plus/components/tooltip'\nimport { ArrowDown, CircleClose } from 'pit-element-icons'\nimport { tagProps } from '@pit-element-plus/components/tag'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { defaultProps } from '@pit-element-plus/components/select-v2/src/useProps'\n\nimport type { EmitFn } from '@pit-element-plus/utils'\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\nimport type Select from './select.vue'\nimport type {\n  Options,\n  Placement,\n  PopperEffect,\n} from '@pit-element-plus/components/popper'\nimport type { OptionValue } from './type'\nimport type { Props } from '@pit-element-plus/components/select-v2/src/useProps'\n\n/**\n * @description Tag tooltip configuration interface\n */\nexport interface TagTooltipProps {\n  appendTo?: string | HTMLElement\n  placement?: Placement\n  fallbackPlacements?: Placement[]\n  effect?: PopperEffect\n  popperClass?: string\n  popperStyle?: string | CSSProperties\n  transition?: string\n  teleported?: boolean\n  popperOptions?: Partial<Options>\n  showAfter?: number\n  hideAfter?: number\n  autoClose?: number\n  offset?: number\n}\n\nexport const selectProps = buildProps({\n  /**\n   * @description the name attribute of select input\n   */\n  name: String,\n  /**\n   * @description native input id\n   */\n  id: String,\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<OptionValue | OptionValue[] | null>([\n      Array,\n      String,\n      Number,\n      Boolean,\n      Object,\n    ]),\n    default: undefined,\n  },\n  /**\n   * @description the autocomplete attribute of select input\n   */\n  autocomplete: {\n    type: String,\n    default: 'off',\n  },\n  /**\n   * @description for non-filterable Select, this prop decides if the option menu pops up when the input is focused\n   */\n  automaticDropdown: Boolean,\n  /**\n   * @description size of Input\n   */\n  size: useSizeProp,\n  /**\n   * @description tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    type: definePropType<PopperEffect>(String),\n    default: 'light',\n  },\n  /**\n   * @description whether Select is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether select can be cleared\n   */\n  clearable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether Select is filterable\n   */\n  filterable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether creating new items is allowed. To use this, `filterable` must be true\n   */\n  allowCreate: Boolean,\n  /**\n   * @description whether Select is loading data from server\n   */\n  loading: Boolean,\n  /**\n   * @description custom class name for Select's dropdown\n   */\n  popperClass: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description custom style for Select's dropdown\n   */\n  popperStyle: {\n    type: definePropType<string | CSSProperties>([String, Object]),\n  },\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions: {\n    type: definePropType<Partial<Options>>(Object),\n    default: () => ({}) as Partial<Options>,\n  },\n  /**\n   * @description whether options are loaded from server\n   */\n  remote: Boolean,\n  /**\n   * @description debounce delay during remote search, in milliseconds\n   */\n  debounce: {\n    type: Number,\n    default: 300,\n  },\n  /**\n   * @description displayed text while loading data from server, default is 'Loading'\n   */\n  loadingText: String,\n  /**\n   * @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data'\n   */\n  noMatchText: String,\n  /**\n   * @description displayed text when there is no options, you can also use slot `empty`, default is 'No data'\n   */\n  noDataText: String,\n  /**\n   * @description function that gets called when the input value changes. Its parameter is the current input value. To use this, `filterable` must be true\n   */\n  remoteMethod: {\n    type: definePropType<(query: string) => void>(Function),\n  },\n  /**\n   * @description custom filter method, the first parameter is the current input value. To use this, `filterable` must be true\n   */\n  filterMethod: {\n    type: definePropType<(query: string) => void>(Function),\n  },\n  /**\n   * @description whether multiple-select is activated\n   */\n  multiple: Boolean,\n  /**\n   * @description maximum number of options user can select when `multiple` is `true`. No limit when set to 0\n   */\n  multipleLimit: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description placeholder, default is 'Select'\n   */\n  placeholder: {\n    type: String,\n  },\n  /**\n   * @description select first matching option on enter key. Use with `filterable` or `remote`\n   */\n  defaultFirstOption: Boolean,\n  /**\n   * @description when `multiple` and `filter` is true, whether to reserve current keyword after selecting an option\n   */\n  reserveKeyword: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description unique identity key name for value, required when value is an object\n   */\n  valueKey: {\n    type: String,\n    default: 'value',\n  },\n  /**\n   * @description whether to collapse tags to a text when multiple selecting\n   */\n  collapseTags: Boolean,\n  /**\n   * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true\n   */\n  collapseTagsTooltip: Boolean,\n  /**\n   * @description configuration object for the collapse-tags tooltip. To use this, `collapse-tags` and `collapse-tags-tooltip` must be true\n   */\n  tagTooltip: {\n    type: definePropType<TagTooltipProps>(Object),\n    default: () => ({}),\n  },\n  /**\n   * @description the max tags number to be shown. To use this, `collapse-tags` must be true\n   */\n  maxCollapseTags: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description whether select dropdown is teleported, if `true` it will be teleported to where `append-to` sets\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description when select dropdown is inactive and `persistent` is `false`, select dropdown will be destroyed\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon: {\n    type: iconPropType,\n    default: CircleClose,\n  },\n  /**\n   * @description whether the width of the dropdown is the same as the input\n   */\n  fitInputWidth: Boolean,\n  /**\n   * @description custom suffix icon component\n   */\n  suffixIcon: {\n    type: iconPropType,\n    default: ArrowDown,\n  },\n  /**\n   * @description tag type\n   */\n\n  tagType: { ...tagProps.type, default: 'info' },\n  /**\n   * @description tag effect\n   */\n  tagEffect: { ...tagProps.effect, default: 'light' },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description in remote search method show suffix icon\n   */\n  remoteShowSuffix: Boolean,\n  /**\n   * @description determines whether the arrow is displayed\n   */\n  showArrow: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description offset of the dropdown\n   */\n  offset: {\n    type: Number,\n    default: 12,\n  },\n  /**\n   * @description position of dropdown\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    values: placements,\n    default: 'bottom-start',\n  },\n  /**\n   * @description list of possible positions for dropdown\n   */\n  fallbackPlacements: {\n    type: definePropType<Placement[]>(Array),\n    default: ['bottom-start', 'top-start', 'right', 'left'],\n  },\n  /**\n   * @description tabindex for input\n   */\n  tabindex: {\n    type: [String, Number],\n    default: 0,\n  },\n  /**\n   * @description which element the selection dropdown appends to\n   */\n  appendTo: useTooltipContentProps.appendTo,\n  options: {\n    type: definePropType<Record<string, any>[]>(Array),\n  },\n  props: {\n    type: definePropType<SelectOptionProps>(Object),\n    default: () => defaultProps,\n  },\n  ...useEmptyValuesProps,\n  ...useAriaProps(['ariaLabel']),\n})\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const selectEmits = {\n  [UPDATE_MODEL_EVENT]: (val: SelectProps['modelValue']) => true,\n  [CHANGE_EVENT]: (val: SelectProps['modelValue']) => true,\n  'popup-scroll': scrollbarEmits.scroll,\n  'remove-tag': (val: unknown) => true,\n  'visible-change': (visible: boolean) => true,\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nexport type SelectProps = ExtractPropTypes<typeof selectProps>\nexport type SelectPropsPublic = ExtractPublicPropTypes<typeof selectProps>\nexport type SelectEmits = EmitFn<typeof selectEmits>\nexport type SelectInstance = InstanceType<typeof Select> & unknown\nexport type SelectOptionProps = Props\n","<template>\n  <ul v-show=\"visible\" ref=\"groupRef\" :class=\"ns.be('group', 'wrap')\">\n    <li :class=\"ns.be('group', 'title')\">{{ label }}</li>\n    <li>\n      <ul :class=\"ns.b('group')\">\n        <slot />\n      </ul>\n    </li>\n  </ul>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  isVNode,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n} from 'vue'\nimport { useMutationObserver } from '@vueuse/core'\nimport { ensureArray, isArray } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { selectGroupKey } from './token'\n\nimport type { Component, VNode, VNodeArrayChildren } from 'vue'\nimport type { OptionInternalInstance, OptionPublicInstance } from './type'\n\nexport default defineComponent({\n  name: 'ElOptionGroup',\n  componentName: 'ElOptionGroup',\n\n  props: {\n    /**\n     * @description name of the group\n     */\n    label: String,\n    /**\n     * @description whether to disable all options in this group\n     */\n    disabled: Boolean,\n  },\n  setup(props) {\n    const ns = useNamespace('select')\n    const groupRef = ref<HTMLElement>()\n    const instance = getCurrentInstance()!\n    const children = ref<OptionPublicInstance[]>([])\n\n    provide(\n      selectGroupKey,\n      reactive({\n        ...toRefs(props),\n      })\n    )\n\n    const visible = computed(() =>\n      children.value.some((option) => option.visible === true)\n    )\n\n    const isOption = (\n      node: VNode\n    ): node is VNode & { component: OptionInternalInstance } =>\n      (node.type as Component).name === 'ElOption' && !!node.component?.proxy\n\n    // get all instances of options\n    const flattedChildren = (node: VNode | VNodeArrayChildren) => {\n      const nodes = ensureArray(node) as VNode[] | VNodeArrayChildren\n      const children: OptionPublicInstance[] = []\n\n      nodes.forEach((child) => {\n        if (!isVNode(child)) return\n\n        if (isOption(child)) {\n          children.push(child.component.proxy)\n        } else if (isArray(child.children) && child.children.length) {\n          children.push(...flattedChildren(child.children))\n        } else if (child.component?.subTree) {\n          children.push(...flattedChildren(child.component.subTree))\n        }\n      })\n\n      return children\n    }\n\n    const updateChildren = () => {\n      children.value = flattedChildren(instance.subTree)\n    }\n\n    onMounted(() => {\n      updateChildren()\n    })\n\n    useMutationObserver(groupRef, updateChildren, {\n      attributes: true,\n      subtree: true,\n      childList: true,\n    })\n\n    return {\n      groupRef,\n      visible,\n      ns,\n    }\n  },\n})\n</script>\n","<template>\n  <ul v-show=\"visible\" ref=\"groupRef\" :class=\"ns.be('group', 'wrap')\">\n    <li :class=\"ns.be('group', 'title')\">{{ label }}</li>\n    <li>\n      <ul :class=\"ns.b('group')\">\n        <slot />\n      </ul>\n    </li>\n  </ul>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  isVNode,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n} from 'vue'\nimport { useMutationObserver } from '@vueuse/core'\nimport { ensureArray, isArray } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { selectGroupKey } from './token'\n\nimport type { Component, VNode, VNodeArrayChildren } from 'vue'\nimport type { OptionInternalInstance, OptionPublicInstance } from './type'\n\nexport default defineComponent({\n  name: 'ElOptionGroup',\n  componentName: 'ElOptionGroup',\n\n  props: {\n    /**\n     * @description name of the group\n     */\n    label: String,\n    /**\n     * @description whether to disable all options in this group\n     */\n    disabled: Boolean,\n  },\n  setup(props) {\n    const ns = useNamespace('select')\n    const groupRef = ref<HTMLElement>()\n    const instance = getCurrentInstance()!\n    const children = ref<OptionPublicInstance[]>([])\n\n    provide(\n      selectGroupKey,\n      reactive({\n        ...toRefs(props),\n      })\n    )\n\n    const visible = computed(() =>\n      children.value.some((option) => option.visible === true)\n    )\n\n    const isOption = (\n      node: VNode\n    ): node is VNode & { component: OptionInternalInstance } =>\n      (node.type as Component).name === 'ElOption' && !!node.component?.proxy\n\n    // get all instances of options\n    const flattedChildren = (node: VNode | VNodeArrayChildren) => {\n      const nodes = ensureArray(node) as VNode[] | VNodeArrayChildren\n      const children: OptionPublicInstance[] = []\n\n      nodes.forEach((child) => {\n        if (!isVNode(child)) return\n\n        if (isOption(child)) {\n          children.push(child.component.proxy)\n        } else if (isArray(child.children) && child.children.length) {\n          children.push(...flattedChildren(child.children))\n        } else if (child.component?.subTree) {\n          children.push(...flattedChildren(child.component.subTree))\n        }\n      })\n\n      return children\n    }\n\n    const updateChildren = () => {\n      children.value = flattedChildren(instance.subTree)\n    }\n\n    onMounted(() => {\n      updateChildren()\n    })\n\n    useMutationObserver(groupRef, updateChildren, {\n      attributes: true,\n      subtree: true,\n      childList: true,\n    })\n\n    return {\n      groupRef,\n      visible,\n      ns,\n    }\n  },\n})\n</script>\n","<template>\n  <div\n    ref=\"selectRef\"\n    v-click-outside:[popperRef]=\"handleClickOutside\"\n    :class=\"[nsSelect.b(), nsSelect.m(selectSize)]\"\n    @[mouseEnterEventName]=\"states.inputHovering = true\"\n    @mouseleave=\"states.inputHovering = false\"\n  >\n    <el-tooltip\n      ref=\"tooltipRef\"\n      :visible=\"dropdownMenuVisible\"\n      :placement=\"placement\"\n      :teleported=\"teleported\"\n      :popper-class=\"[nsSelect.e('popper'), popperClass]\"\n      :popper-style=\"popperStyle\"\n      :popper-options=\"popperOptions\"\n      :fallback-placements=\"fallbackPlacements\"\n      :effect=\"effect\"\n      pure\n      trigger=\"click\"\n      :transition=\"`${nsSelect.namespace.value}-zoom-in-top`\"\n      :stop-popper-mouse-event=\"false\"\n      :gpu-acceleration=\"false\"\n      :persistent=\"persistent\"\n      :append-to=\"appendTo\"\n      :show-arrow=\"showArrow\"\n      :offset=\"offset\"\n      @before-show=\"handleMenuEnter\"\n      @hide=\"states.isBeforeHide = false\"\n    >\n      <template #default>\n        <div\n          ref=\"wrapperRef\"\n          :class=\"[\n            nsSelect.e('wrapper'),\n            nsSelect.is('focused', isFocused),\n            nsSelect.is('hovering', states.inputHovering),\n            nsSelect.is('filterable', filterable),\n            nsSelect.is('disabled', selectDisabled),\n          ]\"\n          @click.prevent=\"toggleMenu\"\n        >\n          <div\n            v-if=\"$slots.prefix\"\n            ref=\"prefixRef\"\n            :class=\"nsSelect.e('prefix')\"\n          >\n            <slot name=\"prefix\" />\n          </div>\n          <div\n            ref=\"selectionRef\"\n            :class=\"[\n              nsSelect.e('selection'),\n              nsSelect.is(\n                'near',\n                multiple && !$slots.prefix && !!states.selected.length\n              ),\n            ]\"\n          >\n            <slot\n              v-if=\"multiple\"\n              name=\"tag\"\n              :data=\"states.selected\"\n              :delete-tag=\"deleteTag\"\n              :select-disabled=\"selectDisabled\"\n            >\n              <div\n                v-for=\"item in showTagList\"\n                :key=\"getValueKey(item)\"\n                :class=\"nsSelect.e('selected-item')\"\n              >\n                <el-tag\n                  :closable=\"!selectDisabled && !item.isDisabled\"\n                  :size=\"collapseTagSize\"\n                  :type=\"tagType\"\n                  :effect=\"tagEffect\"\n                  disable-transitions\n                  :style=\"tagStyle\"\n                  @close=\"deleteTag($event, item)\"\n                >\n                  <span :class=\"nsSelect.e('tags-text')\">\n                    <slot\n                      name=\"label\"\n                      :index=\"item.index\"\n                      :label=\"item.currentLabel\"\n                      :value=\"item.value\"\n                    >\n                      {{ item.currentLabel }}\n                    </slot>\n                  </span>\n                </el-tag>\n              </div>\n\n              <el-tooltip\n                v-if=\"collapseTags && states.selected.length > maxCollapseTags\"\n                ref=\"tagTooltipRef\"\n                :disabled=\"dropdownMenuVisible || !collapseTagsTooltip\"\n                :fallback-placements=\"\n                  tagTooltip?.fallbackPlacements ?? [\n                    'bottom',\n                    'top',\n                    'right',\n                    'left',\n                  ]\n                \"\n                :effect=\"tagTooltip?.effect ?? effect\"\n                :placement=\"tagTooltip?.placement ?? 'bottom'\"\n                :popper-class=\"tagTooltip?.popperClass ?? popperClass\"\n                :popper-style=\"tagTooltip?.popperStyle ?? popperStyle\"\n                :teleported=\"tagTooltip?.teleported ?? teleported\"\n                :append-to=\"tagTooltip?.appendTo ?? appendTo\"\n                :popper-options=\"tagTooltip?.popperOptions ?? popperOptions\"\n                :transition=\"tagTooltip?.transition\"\n                :show-after=\"tagTooltip?.showAfter\"\n                :hide-after=\"tagTooltip?.hideAfter\"\n                :auto-close=\"tagTooltip?.autoClose\"\n                :offset=\"tagTooltip?.offset\"\n              >\n                <template #default>\n                  <div\n                    ref=\"collapseItemRef\"\n                    :class=\"nsSelect.e('selected-item')\"\n                  >\n                    <el-tag\n                      :closable=\"false\"\n                      :size=\"collapseTagSize\"\n                      :type=\"tagType\"\n                      :effect=\"tagEffect\"\n                      disable-transitions\n                      :style=\"collapseTagStyle\"\n                    >\n                      <span :class=\"nsSelect.e('tags-text')\">\n                        + {{ states.selected.length - maxCollapseTags }}\n                      </span>\n                    </el-tag>\n                  </div>\n                </template>\n                <template #content>\n                  <div ref=\"tagMenuRef\" :class=\"nsSelect.e('selection')\">\n                    <div\n                      v-for=\"item in collapseTagList\"\n                      :key=\"getValueKey(item)\"\n                      :class=\"nsSelect.e('selected-item')\"\n                    >\n                      <el-tag\n                        class=\"in-tooltip\"\n                        :closable=\"!selectDisabled && !item.isDisabled\"\n                        :size=\"collapseTagSize\"\n                        :type=\"tagType\"\n                        :effect=\"tagEffect\"\n                        disable-transitions\n                        @close=\"deleteTag($event, item)\"\n                      >\n                        <span :class=\"nsSelect.e('tags-text')\">\n                          <slot\n                            name=\"label\"\n                            :index=\"item.index\"\n                            :label=\"item.currentLabel\"\n                            :value=\"item.value\"\n                          >\n                            {{ item.currentLabel }}\n                          </slot>\n                        </span>\n                      </el-tag>\n                    </div>\n                  </div>\n                </template>\n              </el-tooltip>\n            </slot>\n            <div\n              :class=\"[\n                nsSelect.e('selected-item'),\n                nsSelect.e('input-wrapper'),\n                nsSelect.is(\n                  'hidden',\n                  !filterable ||\n                    selectDisabled ||\n                    (!states.inputValue && !isFocused)\n                ),\n              ]\"\n            >\n              <input\n                :id=\"inputId\"\n                ref=\"inputRef\"\n                :value=\"states.inputValue\"\n                type=\"text\"\n                :name=\"name\"\n                :class=\"[nsSelect.e('input'), nsSelect.is(selectSize)]\"\n                :disabled=\"selectDisabled\"\n                :autocomplete=\"autocomplete\"\n                :style=\"inputStyle\"\n                :tabindex=\"tabindex\"\n                role=\"combobox\"\n                :readonly=\"!filterable\"\n                spellcheck=\"false\"\n                :aria-activedescendant=\"hoverOption?.id || ''\"\n                :aria-controls=\"contentId\"\n                :aria-expanded=\"dropdownMenuVisible\"\n                :aria-label=\"ariaLabel\"\n                aria-autocomplete=\"none\"\n                aria-haspopup=\"listbox\"\n                @keydown=\"handleKeydown\"\n                @compositionstart=\"handleCompositionStart\"\n                @compositionupdate=\"handleCompositionUpdate\"\n                @compositionend=\"handleCompositionEnd\"\n                @input=\"onInput\"\n                @change.stop\n                @click.stop=\"toggleMenu\"\n              />\n              <span\n                v-if=\"filterable\"\n                ref=\"calculatorRef\"\n                aria-hidden=\"true\"\n                :class=\"nsSelect.e('input-calculator')\"\n                v-text=\"states.inputValue\"\n              />\n            </div>\n            <div\n              v-if=\"shouldShowPlaceholder\"\n              :class=\"[\n                nsSelect.e('selected-item'),\n                nsSelect.e('placeholder'),\n                nsSelect.is(\n                  'transparent',\n                  !hasModelValue || (expanded && !states.inputValue)\n                ),\n              ]\"\n            >\n              <slot\n                v-if=\"hasModelValue\"\n                name=\"label\"\n                :index=\"getOption(modelValue!).index\"\n                :label=\"currentPlaceholder\"\n                :value=\"modelValue\"\n              >\n                <span>{{ currentPlaceholder }}</span>\n              </slot>\n              <span v-else>{{ currentPlaceholder }}</span>\n            </div>\n          </div>\n          <div ref=\"suffixRef\" :class=\"nsSelect.e('suffix')\">\n            <el-icon\n              v-if=\"iconComponent && !showClearBtn\"\n              :class=\"[nsSelect.e('caret'), nsSelect.e('icon'), iconReverse]\"\n            >\n              <component :is=\"iconComponent\" />\n            </el-icon>\n            <el-icon\n              v-if=\"showClearBtn && clearIcon\"\n              :class=\"[\n                nsSelect.e('caret'),\n                nsSelect.e('icon'),\n                nsSelect.e('clear'),\n              ]\"\n              @click=\"handleClearClick\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-if=\"validateState && validateIcon && needStatusIcon\"\n              :class=\"[\n                nsInput.e('icon'),\n                nsInput.e('validateIcon'),\n                nsInput.is('loading', validateState === 'validating'),\n              ]\"\n            >\n              <component :is=\"validateIcon\" />\n            </el-icon>\n          </div>\n        </div>\n      </template>\n      <template #content>\n        <el-select-menu ref=\"menuRef\">\n          <div\n            v-if=\"$slots.header\"\n            :class=\"nsSelect.be('dropdown', 'header')\"\n            @click.stop\n          >\n            <slot name=\"header\" />\n          </div>\n          <el-scrollbar\n            v-show=\"states.options.size > 0 && !loading\"\n            :id=\"contentId\"\n            ref=\"scrollbarRef\"\n            tag=\"ul\"\n            :wrap-class=\"nsSelect.be('dropdown', 'wrap')\"\n            :view-class=\"nsSelect.be('dropdown', 'list')\"\n            :class=\"[nsSelect.is('empty', filteredOptionsCount === 0)]\"\n            role=\"listbox\"\n            :aria-label=\"ariaLabel\"\n            aria-orientation=\"vertical\"\n            @scroll=\"popupScroll\"\n          >\n            <el-option\n              v-if=\"showNewOption\"\n              :value=\"states.inputValue\"\n              :created=\"true\"\n            />\n            <el-options>\n              <slot>\n                <template v-for=\"(option, index) in options\" :key=\"index\">\n                  <el-option-group\n                    v-if=\"getOptions(option)?.length\"\n                    :label=\"getLabel(option)\"\n                    :disabled=\"getDisabled(option)\"\n                  >\n                    <el-option\n                      v-for=\"item in getOptions(option)\"\n                      :key=\"getValue(item)\"\n                      v-bind=\"getOptionProps(item)\"\n                    />\n                  </el-option-group>\n                  <el-option v-else v-bind=\"getOptionProps(option)\" />\n                </template>\n              </slot>\n            </el-options>\n          </el-scrollbar>\n          <div\n            v-if=\"$slots.loading && loading\"\n            :class=\"nsSelect.be('dropdown', 'loading')\"\n          >\n            <slot name=\"loading\" />\n          </div>\n          <div\n            v-else-if=\"loading || filteredOptionsCount === 0\"\n            :class=\"nsSelect.be('dropdown', 'empty')\"\n          >\n            <slot name=\"empty\">\n              <span>{{ emptyText }}</span>\n            </slot>\n          </div>\n          <div\n            v-if=\"$slots.footer\"\n            :class=\"nsSelect.be('dropdown', 'footer')\"\n            @click.stop\n          >\n            <slot name=\"footer\" />\n          </div>\n        </el-select-menu>\n      </template>\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  onBeforeUnmount,\n  provide,\n  reactive,\n  toRefs,\n  watch,\n} from 'vue'\nimport { ClickOutside } from '@pit-element-plus/directives'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElTag from '@pit-element-plus/components/tag'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { flattedChildren, isArray, isObject } from '@pit-element-plus/utils'\nimport { useCalcInputWidth } from '@pit-element-plus/hooks'\nimport { useProps } from '@pit-element-plus/components/select-v2/src/useProps'\nimport ElOption from './option.vue'\nimport ElSelectMenu from './select-dropdown.vue'\nimport { useSelect } from './useSelect'\nimport { selectKey } from './token'\nimport ElOptions from './options'\nimport { selectProps } from './select'\nimport ElOptionGroup from './option-group.vue'\n\nimport type { AppConfig, AppContext, VNode } from 'vue'\nimport type { SelectContext } from './type'\n\nconst COMPONENT_NAME = 'ElSelect'\n\ntype WarnHandler = AppConfig['warnHandler']\n\ninterface WarnHandlerRecord {\n  originalWarnHandler: WarnHandler\n  handler: WarnHandler\n  count: number\n}\n\nconst warnHandlerMap = new WeakMap<AppContext, WarnHandlerRecord>()\n\nconst createSelectWarnHandler = (appContext: AppContext): WarnHandler => {\n  return (...args) => {\n    // Overrides warnings about slots not being executable outside of a render function.\n    // We call slot below just to simulate data when persist is false, this warning message should be ignored\n    const message = args[0]\n    if (\n      !message ||\n      (message.includes(\n        'Slot \"default\" invoked outside of the render function'\n      ) &&\n        args[2]?.includes('ElTreeSelect'))\n    )\n      return\n    const original = warnHandlerMap.get(appContext)?.originalWarnHandler\n    if (original) {\n      original(...args)\n      return\n    }\n    // eslint-disable-next-line no-console\n    console.warn(...args)\n  }\n}\n\nconst getWarnHandlerRecord = (appContext: AppContext): WarnHandlerRecord => {\n  let record = warnHandlerMap.get(appContext)\n  if (!record) {\n    record = {\n      originalWarnHandler: appContext.config.warnHandler,\n      handler: createSelectWarnHandler(appContext),\n      count: 0,\n    }\n    warnHandlerMap.set(appContext, record)\n  }\n  return record\n}\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  componentName: COMPONENT_NAME,\n  components: {\n    ElSelectMenu,\n    ElOption,\n    ElOptions,\n    ElOptionGroup,\n    ElTag,\n    ElScrollbar,\n    ElTooltip,\n    ElIcon,\n  },\n  directives: { ClickOutside },\n  props: selectProps,\n  emits: [\n    UPDATE_MODEL_EVENT,\n    CHANGE_EVENT,\n    'remove-tag',\n    'clear',\n    'visible-change',\n    'focus',\n    'blur',\n    'popup-scroll',\n  ],\n\n  setup(props, { emit, slots }) {\n    const instance = getCurrentInstance()!\n    const warnRecord = getWarnHandlerRecord(instance.appContext)\n    warnRecord.count += 1\n    instance.appContext.config.warnHandler = warnRecord.handler\n    const modelValue = computed(() => {\n      const { modelValue: rawModelValue, multiple } = props\n      const fallback = multiple ? [] : undefined\n      // When it is array, we check if this is multi-select.\n      // Based on the result we get\n      if (isArray(rawModelValue)) {\n        return multiple ? rawModelValue : fallback\n      }\n\n      return multiple ? fallback : rawModelValue\n    })\n\n    const _props = reactive({\n      ...toRefs(props),\n      modelValue,\n    })\n\n    const API = useSelect(_props, emit)\n    const { calculatorRef, inputStyle } = useCalcInputWidth()\n    const { getLabel, getValue, getOptions, getDisabled } = useProps(props)\n\n    const getOptionProps = (option: Record<string, any>) => ({\n      label: getLabel(option),\n      value: getValue(option),\n      disabled: getDisabled(option),\n    })\n\n    const flatTreeSelectData = (data: any[]) => {\n      return data.reduce((acc, item) => {\n        acc.push(item)\n        if (item.children && item.children.length > 0) {\n          acc.push(...flatTreeSelectData(item.children))\n        }\n        return acc\n      }, [])\n    }\n\n    const manuallyRenderSlots = (vnodes: VNode[] | undefined) => {\n      // After option rendering is completed, the useSelect internal state can collect the value of each option.\n      // If the persistent value is false, option will not be rendered by default, so in this case,\n      // manually render and load option data here.\n      const children = flattedChildren(vnodes || []) as VNode[]\n      children.forEach((item) => {\n        if (\n          isObject(item) &&\n          // @ts-expect-error\n          (item.type.name === 'ElOption' || item.type.name === 'ElTree')\n        ) {\n          // @ts-expect-error\n          const _name = item.type.name\n          if (_name === 'ElTree') {\n            // tree-select component is a special case.\n            // So we need to handle it separately.\n            const treeData = item.props?.data || []\n            const flatData = flatTreeSelectData(treeData)\n            flatData.forEach((treeItem: any) => {\n              treeItem.currentLabel =\n                treeItem.label ||\n                (isObject(treeItem.value) ? '' : treeItem.value)\n              API.onOptionCreate(treeItem)\n            })\n          } else if (_name === 'ElOption') {\n            const obj = { ...item.props } as any\n            obj.currentLabel =\n              obj.label || (isObject(obj.value) ? '' : obj.value)\n            API.onOptionCreate(obj)\n          }\n        }\n      })\n    }\n    watch(\n      () => [\n        props.persistent || API.expanded.value || !slots.default\n          ? undefined\n          : slots.default?.(),\n        modelValue.value,\n      ],\n      () => {\n        // When persistent is false and the dropdown is closed, the menu is unmounted.\n        // We should always re-hydrate option data from slots so labels stay in sync\n        // with dynamic option list updates. Skip only when persistent is true or\n        // when the dropdown is currently expanded (mounted options will manage themselves).\n        if (props.persistent || API.expanded.value) {\n          // If persistent is true, we don't need to manually render slots.\n          return\n        }\n        // Reset current options snapshot before re-collecting from slots.\n        API.states.options.clear()\n        manuallyRenderSlots(slots.default?.())\n      },\n      {\n        immediate: true,\n      }\n    )\n\n    provide(\n      selectKey,\n      reactive({\n        props: _props,\n        states: API.states,\n        selectRef: API.selectRef,\n        optionsArray: API.optionsArray,\n        setSelected: API.setSelected,\n        handleOptionSelect: API.handleOptionSelect,\n        onOptionCreate: API.onOptionCreate,\n        onOptionDestroy: API.onOptionDestroy,\n      }) satisfies SelectContext\n    )\n\n    const selectedLabel = computed(() => {\n      if (!props.multiple) {\n        return API.states.selectedLabel\n      }\n      return API.states.selected.map((i) => i.currentLabel as string)\n    })\n\n    onBeforeUnmount(() => {\n      // https://github.com/element-plus/element-plus/issues/21279\n      const record = warnHandlerMap.get(instance.appContext)\n      if (!record) return\n      record.count -= 1\n      if (record.count <= 0) {\n        instance.appContext.config.warnHandler = record.originalWarnHandler\n        warnHandlerMap.delete(instance.appContext)\n      }\n    })\n\n    return {\n      ...API,\n      modelValue,\n      selectedLabel,\n      calculatorRef,\n      inputStyle,\n      getLabel,\n      getValue,\n      getOptions,\n      getDisabled,\n      getOptionProps,\n    }\n  },\n})\n</script>\n","<template>\n  <div\n    ref=\"selectRef\"\n    v-click-outside:[popperRef]=\"handleClickOutside\"\n    :class=\"[nsSelect.b(), nsSelect.m(selectSize)]\"\n    @[mouseEnterEventName]=\"states.inputHovering = true\"\n    @mouseleave=\"states.inputHovering = false\"\n  >\n    <el-tooltip\n      ref=\"tooltipRef\"\n      :visible=\"dropdownMenuVisible\"\n      :placement=\"placement\"\n      :teleported=\"teleported\"\n      :popper-class=\"[nsSelect.e('popper'), popperClass]\"\n      :popper-style=\"popperStyle\"\n      :popper-options=\"popperOptions\"\n      :fallback-placements=\"fallbackPlacements\"\n      :effect=\"effect\"\n      pure\n      trigger=\"click\"\n      :transition=\"`${nsSelect.namespace.value}-zoom-in-top`\"\n      :stop-popper-mouse-event=\"false\"\n      :gpu-acceleration=\"false\"\n      :persistent=\"persistent\"\n      :append-to=\"appendTo\"\n      :show-arrow=\"showArrow\"\n      :offset=\"offset\"\n      @before-show=\"handleMenuEnter\"\n      @hide=\"states.isBeforeHide = false\"\n    >\n      <template #default>\n        <div\n          ref=\"wrapperRef\"\n          :class=\"[\n            nsSelect.e('wrapper'),\n            nsSelect.is('focused', isFocused),\n            nsSelect.is('hovering', states.inputHovering),\n            nsSelect.is('filterable', filterable),\n            nsSelect.is('disabled', selectDisabled),\n          ]\"\n          @click.prevent=\"toggleMenu\"\n        >\n          <div\n            v-if=\"$slots.prefix\"\n            ref=\"prefixRef\"\n            :class=\"nsSelect.e('prefix')\"\n          >\n            <slot name=\"prefix\" />\n          </div>\n          <div\n            ref=\"selectionRef\"\n            :class=\"[\n              nsSelect.e('selection'),\n              nsSelect.is(\n                'near',\n                multiple && !$slots.prefix && !!states.selected.length\n              ),\n            ]\"\n          >\n            <slot\n              v-if=\"multiple\"\n              name=\"tag\"\n              :data=\"states.selected\"\n              :delete-tag=\"deleteTag\"\n              :select-disabled=\"selectDisabled\"\n            >\n              <div\n                v-for=\"item in showTagList\"\n                :key=\"getValueKey(item)\"\n                :class=\"nsSelect.e('selected-item')\"\n              >\n                <el-tag\n                  :closable=\"!selectDisabled && !item.isDisabled\"\n                  :size=\"collapseTagSize\"\n                  :type=\"tagType\"\n                  :effect=\"tagEffect\"\n                  disable-transitions\n                  :style=\"tagStyle\"\n                  @close=\"deleteTag($event, item)\"\n                >\n                  <span :class=\"nsSelect.e('tags-text')\">\n                    <slot\n                      name=\"label\"\n                      :index=\"item.index\"\n                      :label=\"item.currentLabel\"\n                      :value=\"item.value\"\n                    >\n                      {{ item.currentLabel }}\n                    </slot>\n                  </span>\n                </el-tag>\n              </div>\n\n              <el-tooltip\n                v-if=\"collapseTags && states.selected.length > maxCollapseTags\"\n                ref=\"tagTooltipRef\"\n                :disabled=\"dropdownMenuVisible || !collapseTagsTooltip\"\n                :fallback-placements=\"\n                  tagTooltip?.fallbackPlacements ?? [\n                    'bottom',\n                    'top',\n                    'right',\n                    'left',\n                  ]\n                \"\n                :effect=\"tagTooltip?.effect ?? effect\"\n                :placement=\"tagTooltip?.placement ?? 'bottom'\"\n                :popper-class=\"tagTooltip?.popperClass ?? popperClass\"\n                :popper-style=\"tagTooltip?.popperStyle ?? popperStyle\"\n                :teleported=\"tagTooltip?.teleported ?? teleported\"\n                :append-to=\"tagTooltip?.appendTo ?? appendTo\"\n                :popper-options=\"tagTooltip?.popperOptions ?? popperOptions\"\n                :transition=\"tagTooltip?.transition\"\n                :show-after=\"tagTooltip?.showAfter\"\n                :hide-after=\"tagTooltip?.hideAfter\"\n                :auto-close=\"tagTooltip?.autoClose\"\n                :offset=\"tagTooltip?.offset\"\n              >\n                <template #default>\n                  <div\n                    ref=\"collapseItemRef\"\n                    :class=\"nsSelect.e('selected-item')\"\n                  >\n                    <el-tag\n                      :closable=\"false\"\n                      :size=\"collapseTagSize\"\n                      :type=\"tagType\"\n                      :effect=\"tagEffect\"\n                      disable-transitions\n                      :style=\"collapseTagStyle\"\n                    >\n                      <span :class=\"nsSelect.e('tags-text')\">\n                        + {{ states.selected.length - maxCollapseTags }}\n                      </span>\n                    </el-tag>\n                  </div>\n                </template>\n                <template #content>\n                  <div ref=\"tagMenuRef\" :class=\"nsSelect.e('selection')\">\n                    <div\n                      v-for=\"item in collapseTagList\"\n                      :key=\"getValueKey(item)\"\n                      :class=\"nsSelect.e('selected-item')\"\n                    >\n                      <el-tag\n                        class=\"in-tooltip\"\n                        :closable=\"!selectDisabled && !item.isDisabled\"\n                        :size=\"collapseTagSize\"\n                        :type=\"tagType\"\n                        :effect=\"tagEffect\"\n                        disable-transitions\n                        @close=\"deleteTag($event, item)\"\n                      >\n                        <span :class=\"nsSelect.e('tags-text')\">\n                          <slot\n                            name=\"label\"\n                            :index=\"item.index\"\n                            :label=\"item.currentLabel\"\n                            :value=\"item.value\"\n                          >\n                            {{ item.currentLabel }}\n                          </slot>\n                        </span>\n                      </el-tag>\n                    </div>\n                  </div>\n                </template>\n              </el-tooltip>\n            </slot>\n            <div\n              :class=\"[\n                nsSelect.e('selected-item'),\n                nsSelect.e('input-wrapper'),\n                nsSelect.is(\n                  'hidden',\n                  !filterable ||\n                    selectDisabled ||\n                    (!states.inputValue && !isFocused)\n                ),\n              ]\"\n            >\n              <input\n                :id=\"inputId\"\n                ref=\"inputRef\"\n                :value=\"states.inputValue\"\n                type=\"text\"\n                :name=\"name\"\n                :class=\"[nsSelect.e('input'), nsSelect.is(selectSize)]\"\n                :disabled=\"selectDisabled\"\n                :autocomplete=\"autocomplete\"\n                :style=\"inputStyle\"\n                :tabindex=\"tabindex\"\n                role=\"combobox\"\n                :readonly=\"!filterable\"\n                spellcheck=\"false\"\n                :aria-activedescendant=\"hoverOption?.id || ''\"\n                :aria-controls=\"contentId\"\n                :aria-expanded=\"dropdownMenuVisible\"\n                :aria-label=\"ariaLabel\"\n                aria-autocomplete=\"none\"\n                aria-haspopup=\"listbox\"\n                @keydown=\"handleKeydown\"\n                @compositionstart=\"handleCompositionStart\"\n                @compositionupdate=\"handleCompositionUpdate\"\n                @compositionend=\"handleCompositionEnd\"\n                @input=\"onInput\"\n                @change.stop\n                @click.stop=\"toggleMenu\"\n              />\n              <span\n                v-if=\"filterable\"\n                ref=\"calculatorRef\"\n                aria-hidden=\"true\"\n                :class=\"nsSelect.e('input-calculator')\"\n                v-text=\"states.inputValue\"\n              />\n            </div>\n            <div\n              v-if=\"shouldShowPlaceholder\"\n              :class=\"[\n                nsSelect.e('selected-item'),\n                nsSelect.e('placeholder'),\n                nsSelect.is(\n                  'transparent',\n                  !hasModelValue || (expanded && !states.inputValue)\n                ),\n              ]\"\n            >\n              <slot\n                v-if=\"hasModelValue\"\n                name=\"label\"\n                :index=\"getOption(modelValue!).index\"\n                :label=\"currentPlaceholder\"\n                :value=\"modelValue\"\n              >\n                <span>{{ currentPlaceholder }}</span>\n              </slot>\n              <span v-else>{{ currentPlaceholder }}</span>\n            </div>\n          </div>\n          <div ref=\"suffixRef\" :class=\"nsSelect.e('suffix')\">\n            <el-icon\n              v-if=\"iconComponent && !showClearBtn\"\n              :class=\"[nsSelect.e('caret'), nsSelect.e('icon'), iconReverse]\"\n            >\n              <component :is=\"iconComponent\" />\n            </el-icon>\n            <el-icon\n              v-if=\"showClearBtn && clearIcon\"\n              :class=\"[\n                nsSelect.e('caret'),\n                nsSelect.e('icon'),\n                nsSelect.e('clear'),\n              ]\"\n              @click=\"handleClearClick\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-if=\"validateState && validateIcon && needStatusIcon\"\n              :class=\"[\n                nsInput.e('icon'),\n                nsInput.e('validateIcon'),\n                nsInput.is('loading', validateState === 'validating'),\n              ]\"\n            >\n              <component :is=\"validateIcon\" />\n            </el-icon>\n          </div>\n        </div>\n      </template>\n      <template #content>\n        <el-select-menu ref=\"menuRef\">\n          <div\n            v-if=\"$slots.header\"\n            :class=\"nsSelect.be('dropdown', 'header')\"\n            @click.stop\n          >\n            <slot name=\"header\" />\n          </div>\n          <el-scrollbar\n            v-show=\"states.options.size > 0 && !loading\"\n            :id=\"contentId\"\n            ref=\"scrollbarRef\"\n            tag=\"ul\"\n            :wrap-class=\"nsSelect.be('dropdown', 'wrap')\"\n            :view-class=\"nsSelect.be('dropdown', 'list')\"\n            :class=\"[nsSelect.is('empty', filteredOptionsCount === 0)]\"\n            role=\"listbox\"\n            :aria-label=\"ariaLabel\"\n            aria-orientation=\"vertical\"\n            @scroll=\"popupScroll\"\n          >\n            <el-option\n              v-if=\"showNewOption\"\n              :value=\"states.inputValue\"\n              :created=\"true\"\n            />\n            <el-options>\n              <slot>\n                <template v-for=\"(option, index) in options\" :key=\"index\">\n                  <el-option-group\n                    v-if=\"getOptions(option)?.length\"\n                    :label=\"getLabel(option)\"\n                    :disabled=\"getDisabled(option)\"\n                  >\n                    <el-option\n                      v-for=\"item in getOptions(option)\"\n                      :key=\"getValue(item)\"\n                      v-bind=\"getOptionProps(item)\"\n                    />\n                  </el-option-group>\n                  <el-option v-else v-bind=\"getOptionProps(option)\" />\n                </template>\n              </slot>\n            </el-options>\n          </el-scrollbar>\n          <div\n            v-if=\"$slots.loading && loading\"\n            :class=\"nsSelect.be('dropdown', 'loading')\"\n          >\n            <slot name=\"loading\" />\n          </div>\n          <div\n            v-else-if=\"loading || filteredOptionsCount === 0\"\n            :class=\"nsSelect.be('dropdown', 'empty')\"\n          >\n            <slot name=\"empty\">\n              <span>{{ emptyText }}</span>\n            </slot>\n          </div>\n          <div\n            v-if=\"$slots.footer\"\n            :class=\"nsSelect.be('dropdown', 'footer')\"\n            @click.stop\n          >\n            <slot name=\"footer\" />\n          </div>\n        </el-select-menu>\n      </template>\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  onBeforeUnmount,\n  provide,\n  reactive,\n  toRefs,\n  watch,\n} from 'vue'\nimport { ClickOutside } from '@pit-element-plus/directives'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElTag from '@pit-element-plus/components/tag'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { flattedChildren, isArray, isObject } from '@pit-element-plus/utils'\nimport { useCalcInputWidth } from '@pit-element-plus/hooks'\nimport { useProps } from '@pit-element-plus/components/select-v2/src/useProps'\nimport ElOption from './option.vue'\nimport ElSelectMenu from './select-dropdown.vue'\nimport { useSelect } from './useSelect'\nimport { selectKey } from './token'\nimport ElOptions from './options'\nimport { selectProps } from './select'\nimport ElOptionGroup from './option-group.vue'\n\nimport type { AppConfig, AppContext, VNode } from 'vue'\nimport type { SelectContext } from './type'\n\nconst COMPONENT_NAME = 'ElSelect'\n\ntype WarnHandler = AppConfig['warnHandler']\n\ninterface WarnHandlerRecord {\n  originalWarnHandler: WarnHandler\n  handler: WarnHandler\n  count: number\n}\n\nconst warnHandlerMap = new WeakMap<AppContext, WarnHandlerRecord>()\n\nconst createSelectWarnHandler = (appContext: AppContext): WarnHandler => {\n  return (...args) => {\n    // Overrides warnings about slots not being executable outside of a render function.\n    // We call slot below just to simulate data when persist is false, this warning message should be ignored\n    const message = args[0]\n    if (\n      !message ||\n      (message.includes(\n        'Slot \"default\" invoked outside of the render function'\n      ) &&\n        args[2]?.includes('ElTreeSelect'))\n    )\n      return\n    const original = warnHandlerMap.get(appContext)?.originalWarnHandler\n    if (original) {\n      original(...args)\n      return\n    }\n    // eslint-disable-next-line no-console\n    console.warn(...args)\n  }\n}\n\nconst getWarnHandlerRecord = (appContext: AppContext): WarnHandlerRecord => {\n  let record = warnHandlerMap.get(appContext)\n  if (!record) {\n    record = {\n      originalWarnHandler: appContext.config.warnHandler,\n      handler: createSelectWarnHandler(appContext),\n      count: 0,\n    }\n    warnHandlerMap.set(appContext, record)\n  }\n  return record\n}\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  componentName: COMPONENT_NAME,\n  components: {\n    ElSelectMenu,\n    ElOption,\n    ElOptions,\n    ElOptionGroup,\n    ElTag,\n    ElScrollbar,\n    ElTooltip,\n    ElIcon,\n  },\n  directives: { ClickOutside },\n  props: selectProps,\n  emits: [\n    UPDATE_MODEL_EVENT,\n    CHANGE_EVENT,\n    'remove-tag',\n    'clear',\n    'visible-change',\n    'focus',\n    'blur',\n    'popup-scroll',\n  ],\n\n  setup(props, { emit, slots }) {\n    const instance = getCurrentInstance()!\n    const warnRecord = getWarnHandlerRecord(instance.appContext)\n    warnRecord.count += 1\n    instance.appContext.config.warnHandler = warnRecord.handler\n    const modelValue = computed(() => {\n      const { modelValue: rawModelValue, multiple } = props\n      const fallback = multiple ? [] : undefined\n      // When it is array, we check if this is multi-select.\n      // Based on the result we get\n      if (isArray(rawModelValue)) {\n        return multiple ? rawModelValue : fallback\n      }\n\n      return multiple ? fallback : rawModelValue\n    })\n\n    const _props = reactive({\n      ...toRefs(props),\n      modelValue,\n    })\n\n    const API = useSelect(_props, emit)\n    const { calculatorRef, inputStyle } = useCalcInputWidth()\n    const { getLabel, getValue, getOptions, getDisabled } = useProps(props)\n\n    const getOptionProps = (option: Record<string, any>) => ({\n      label: getLabel(option),\n      value: getValue(option),\n      disabled: getDisabled(option),\n    })\n\n    const flatTreeSelectData = (data: any[]) => {\n      return data.reduce((acc, item) => {\n        acc.push(item)\n        if (item.children && item.children.length > 0) {\n          acc.push(...flatTreeSelectData(item.children))\n        }\n        return acc\n      }, [])\n    }\n\n    const manuallyRenderSlots = (vnodes: VNode[] | undefined) => {\n      // After option rendering is completed, the useSelect internal state can collect the value of each option.\n      // If the persistent value is false, option will not be rendered by default, so in this case,\n      // manually render and load option data here.\n      const children = flattedChildren(vnodes || []) as VNode[]\n      children.forEach((item) => {\n        if (\n          isObject(item) &&\n          // @ts-expect-error\n          (item.type.name === 'ElOption' || item.type.name === 'ElTree')\n        ) {\n          // @ts-expect-error\n          const _name = item.type.name\n          if (_name === 'ElTree') {\n            // tree-select component is a special case.\n            // So we need to handle it separately.\n            const treeData = item.props?.data || []\n            const flatData = flatTreeSelectData(treeData)\n            flatData.forEach((treeItem: any) => {\n              treeItem.currentLabel =\n                treeItem.label ||\n                (isObject(treeItem.value) ? '' : treeItem.value)\n              API.onOptionCreate(treeItem)\n            })\n          } else if (_name === 'ElOption') {\n            const obj = { ...item.props } as any\n            obj.currentLabel =\n              obj.label || (isObject(obj.value) ? '' : obj.value)\n            API.onOptionCreate(obj)\n          }\n        }\n      })\n    }\n    watch(\n      () => [\n        props.persistent || API.expanded.value || !slots.default\n          ? undefined\n          : slots.default?.(),\n        modelValue.value,\n      ],\n      () => {\n        // When persistent is false and the dropdown is closed, the menu is unmounted.\n        // We should always re-hydrate option data from slots so labels stay in sync\n        // with dynamic option list updates. Skip only when persistent is true or\n        // when the dropdown is currently expanded (mounted options will manage themselves).\n        if (props.persistent || API.expanded.value) {\n          // If persistent is true, we don't need to manually render slots.\n          return\n        }\n        // Reset current options snapshot before re-collecting from slots.\n        API.states.options.clear()\n        manuallyRenderSlots(slots.default?.())\n      },\n      {\n        immediate: true,\n      }\n    )\n\n    provide(\n      selectKey,\n      reactive({\n        props: _props,\n        states: API.states,\n        selectRef: API.selectRef,\n        optionsArray: API.optionsArray,\n        setSelected: API.setSelected,\n        handleOptionSelect: API.handleOptionSelect,\n        onOptionCreate: API.onOptionCreate,\n        onOptionDestroy: API.onOptionDestroy,\n      }) satisfies SelectContext\n    )\n\n    const selectedLabel = computed(() => {\n      if (!props.multiple) {\n        return API.states.selectedLabel\n      }\n      return API.states.selected.map((i) => i.currentLabel as string)\n    })\n\n    onBeforeUnmount(() => {\n      // https://github.com/element-plus/element-plus/issues/21279\n      const record = warnHandlerMap.get(instance.appContext)\n      if (!record) return\n      record.count -= 1\n      if (record.count <= 0) {\n        instance.appContext.config.warnHandler = record.originalWarnHandler\n        warnHandlerMap.delete(instance.appContext)\n      }\n    })\n\n    return {\n      ...API,\n      modelValue,\n      selectedLabel,\n      calculatorRef,\n      inputStyle,\n      getLabel,\n      getValue,\n      getOptions,\n      getDisabled,\n      getOptionProps,\n    }\n  },\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Select from './src/select.vue'\nimport Option from './src/option.vue'\nimport OptionGroup from './src/option-group.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElSelect: SFCWithInstall<typeof Select> & {\n  Option: typeof Option\n  OptionGroup: typeof OptionGroup\n} = withInstall(Select, {\n  Option,\n  OptionGroup,\n})\nexport default ElSelect\nexport const ElOption: SFCWithInstall<typeof Option> = withNoopInstall(Option)\nexport const ElOptionGroup: SFCWithInstall<typeof OptionGroup> =\n  withNoopInstall(OptionGroup)\n\nexport * from './src/token'\nexport * from './src/select'\n\nexport type {\n  SelectContext,\n  OptionPublicInstance as SelectOptionProxy,\n  OptionBasic,\n} from './src/type'\n","<template>\n  <el-select\n    :model-value=\"yearValue\"\n    size=\"small\"\n    :class=\"nsSelect.e('year')\"\n    :validate-event=\"false\"\n    :options=\"yearOptions\"\n    @change=\"handleYearChange\"\n  />\n  <el-select\n    :model-value=\"monthValue\"\n    size=\"small\"\n    :class=\"nsSelect.e('month')\"\n    :validate-event=\"false\"\n    :options=\"monthOptions\"\n    @change=\"handleMonthChange\"\n  />\n  <el-button size=\"small\" @click=\"selectToday\">\n    {{ t('el.datepicker.today') }}\n  </el-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElSelect from '@pit-element-plus/components/select'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport { isFunction } from '@pit-element-plus/utils'\nimport { selectControllerEmits } from './select-controller'\n\nimport type { SelectControllerProps } from './select-controller'\n\ndefineOptions({\n  name: 'SelectController',\n})\n\nconst props = defineProps<SelectControllerProps>()\nconst emit = defineEmits(selectControllerEmits)\n\nconst nsSelect = useNamespace('calendar-select')\nconst { t, lang } = useLocale()\n\nconst monthOptions = Array.from({ length: 12 }, (_, index) => {\n  const actualMonth = index + 1\n  const label = isFunction(props.formatter)\n    ? props.formatter(actualMonth, 'month')\n    : actualMonth\n  return {\n    value: actualMonth,\n    label,\n  }\n})\n\nconst yearValue = computed(() => props.date.year())\nconst monthValue = computed(() => props.date.month() + 1)\n// Get an array of 20 years\nconst yearOptions = computed(() => {\n  const years = []\n  for (let i = -10; i < 10; i++) {\n    const year = yearValue.value + i\n    if (year > 0) {\n      const label = isFunction(props.formatter)\n        ? props.formatter(year, 'year')\n        : year\n      years.push({ value: year, label })\n    }\n  }\n  return years\n})\n\nconst handleYearChange = (year: number) => {\n  emit(\n    'date-change',\n    dayjs(new Date(year, monthValue.value - 1, 1)).locale(lang.value)\n  )\n}\n\nconst handleMonthChange = (month: number) => {\n  emit(\n    'date-change',\n    dayjs(new Date(yearValue.value, month - 1, 1)).locale(lang.value)\n  )\n}\n\nconst selectToday = () => {\n  emit('date-change', 'today')\n}\n</script>\n","<template>\n  <el-select\n    :model-value=\"yearValue\"\n    size=\"small\"\n    :class=\"nsSelect.e('year')\"\n    :validate-event=\"false\"\n    :options=\"yearOptions\"\n    @change=\"handleYearChange\"\n  />\n  <el-select\n    :model-value=\"monthValue\"\n    size=\"small\"\n    :class=\"nsSelect.e('month')\"\n    :validate-event=\"false\"\n    :options=\"monthOptions\"\n    @change=\"handleMonthChange\"\n  />\n  <el-button size=\"small\" @click=\"selectToday\">\n    {{ t('el.datepicker.today') }}\n  </el-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElSelect from '@pit-element-plus/components/select'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport { isFunction } from '@pit-element-plus/utils'\nimport { selectControllerEmits } from './select-controller'\n\nimport type { SelectControllerProps } from './select-controller'\n\ndefineOptions({\n  name: 'SelectController',\n})\n\nconst props = defineProps<SelectControllerProps>()\nconst emit = defineEmits(selectControllerEmits)\n\nconst nsSelect = useNamespace('calendar-select')\nconst { t, lang } = useLocale()\n\nconst monthOptions = Array.from({ length: 12 }, (_, index) => {\n  const actualMonth = index + 1\n  const label = isFunction(props.formatter)\n    ? props.formatter(actualMonth, 'month')\n    : actualMonth\n  return {\n    value: actualMonth,\n    label,\n  }\n})\n\nconst yearValue = computed(() => props.date.year())\nconst monthValue = computed(() => props.date.month() + 1)\n// Get an array of 20 years\nconst yearOptions = computed(() => {\n  const years = []\n  for (let i = -10; i < 10; i++) {\n    const year = yearValue.value + i\n    if (year > 0) {\n      const label = isFunction(props.formatter)\n        ? props.formatter(year, 'year')\n        : year\n      years.push({ value: year, label })\n    }\n  }\n  return years\n})\n\nconst handleYearChange = (year: number) => {\n  emit(\n    'date-change',\n    dayjs(new Date(year, monthValue.value - 1, 1)).locale(lang.value)\n  )\n}\n\nconst handleMonthChange = (month: number) => {\n  emit(\n    'date-change',\n    dayjs(new Date(yearValue.value, month - 1, 1)).locale(lang.value)\n  )\n}\n\nconst selectToday = () => {\n  emit('date-change', 'today')\n}\n</script>\n","<template>\n  <el-select\n    :model-value=\"yearValue\"\n    size=\"small\"\n    :class=\"nsSelect.e('year')\"\n    :validate-event=\"false\"\n    :options=\"yearOptions\"\n    @change=\"handleYearChange\"\n  />\n  <el-select\n    :model-value=\"monthValue\"\n    size=\"small\"\n    :class=\"nsSelect.e('month')\"\n    :validate-event=\"false\"\n    :options=\"monthOptions\"\n    @change=\"handleMonthChange\"\n  />\n  <el-button size=\"small\" @click=\"selectToday\">\n    {{ t('el.datepicker.today') }}\n  </el-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElSelect from '@pit-element-plus/components/select'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport { isFunction } from '@pit-element-plus/utils'\nimport { selectControllerEmits } from './select-controller'\n\nimport type { SelectControllerProps } from './select-controller'\n\ndefineOptions({\n  name: 'SelectController',\n})\n\nconst props = defineProps<SelectControllerProps>()\nconst emit = defineEmits(selectControllerEmits)\n\nconst nsSelect = useNamespace('calendar-select')\nconst { t, lang } = useLocale()\n\nconst monthOptions = Array.from({ length: 12 }, (_, index) => {\n  const actualMonth = index + 1\n  const label = isFunction(props.formatter)\n    ? props.formatter(actualMonth, 'month')\n    : actualMonth\n  return {\n    value: actualMonth,\n    label,\n  }\n})\n\nconst yearValue = computed(() => props.date.year())\nconst monthValue = computed(() => props.date.month() + 1)\n// Get an array of 20 years\nconst yearOptions = computed(() => {\n  const years = []\n  for (let i = -10; i < 10; i++) {\n    const year = yearValue.value + i\n    if (year > 0) {\n      const label = isFunction(props.formatter)\n        ? props.formatter(year, 'year')\n        : year\n      years.push({ value: year, label })\n    }\n  }\n  return years\n})\n\nconst handleYearChange = (year: number) => {\n  emit(\n    'date-change',\n    dayjs(new Date(year, monthValue.value - 1, 1)).locale(lang.value)\n  )\n}\n\nconst handleMonthChange = (month: number) => {\n  emit(\n    'date-change',\n    dayjs(new Date(yearValue.value, month - 1, 1)).locale(lang.value)\n  )\n}\n\nconst selectToday = () => {\n  emit('date-change', 'today')\n}\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div :class=\"ns.e('header')\">\n      <slot name=\"header\" :date=\"i18nDate\">\n        <div :class=\"ns.e('title')\">{{ i18nDate }}</div>\n        <div\n          v-if=\"validatedRange.length === 0 && controllerType === 'button'\"\n          :class=\"ns.e('button-group')\"\n        >\n          <el-button-group>\n            <el-button size=\"small\" @click=\"selectDate('prev-month')\">\n              {{ t('el.datepicker.prevMonth') }}\n            </el-button>\n            <el-button size=\"small\" @click=\"selectDate('today')\">\n              {{ t('el.datepicker.today') }}\n            </el-button>\n            <el-button size=\"small\" @click=\"selectDate('next-month')\">\n              {{ t('el.datepicker.nextMonth') }}\n            </el-button>\n          </el-button-group>\n        </div>\n        <div\n          v-else-if=\"validatedRange.length === 0 && controllerType === 'select'\"\n          :class=\"ns.e('select-controller')\"\n        >\n          <select-controller\n            :date=\"date\"\n            :formatter=\"formatter\"\n            @date-change=\"handleDateChange\"\n          />\n        </div>\n      </slot>\n    </div>\n    <div v-if=\"validatedRange.length === 0\" :class=\"ns.e('body')\">\n      <date-table :date=\"date\" :selected-day=\"realSelectedDay\" @pick=\"pickDay\">\n        <template v-if=\"$slots['date-cell']\" #date-cell=\"data\">\n          <slot name=\"date-cell\" v-bind=\"data\" />\n        </template>\n      </date-table>\n    </div>\n    <div v-else :class=\"ns.e('body')\">\n      <date-table\n        v-for=\"(range_, index) in validatedRange\"\n        :key=\"index\"\n        :date=\"range_[0]\"\n        :selected-day=\"realSelectedDay\"\n        :range=\"range_\"\n        :hide-header=\"index !== 0\"\n        @pick=\"pickDay\"\n      >\n        <template v-if=\"$slots['date-cell']\" #date-cell=\"data\">\n          <slot name=\"date-cell\" v-bind=\"data\" />\n        </template>\n      </date-table>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElButton, ElButtonGroup } from '@pit-element-plus/components/button'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport DateTable from './date-table.vue'\nimport { useCalendar } from './use-calendar'\nimport { calendarEmits } from './calendar'\nimport SelectController from './select-controller.vue'\n\nimport type { CalendarProps } from './calendar'\n\nconst ns = useNamespace('calendar')\n\nconst COMPONENT_NAME = 'ElCalendar'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<CalendarProps>(), {\n  controllerType: 'button',\n})\nconst emit = defineEmits(calendarEmits)\n\nconst {\n  calculateValidatedDateRange,\n  date,\n  pickDay,\n  realSelectedDay,\n  selectDate,\n  validatedRange,\n  handleDateChange,\n} = useCalendar(props, emit, COMPONENT_NAME)\n\nconst { t } = useLocale()\n\nconst i18nDate = computed(() => {\n  const pickedMonth = `el.datepicker.month${date.value.format('M')}`\n  return `${date.value.year()} ${t('el.datepicker.year')} ${t(pickedMonth)}`\n})\n\ndefineExpose({\n  /** @description currently selected date */\n  selectedDay: realSelectedDay,\n  /** @description select a specific date */\n  pickDay,\n  /** @description select date */\n  selectDate,\n  /** @description Calculate the validate date range according to the start and end dates */\n  calculateValidatedDateRange,\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div :class=\"ns.e('header')\">\n      <slot name=\"header\" :date=\"i18nDate\">\n        <div :class=\"ns.e('title')\">{{ i18nDate }}</div>\n        <div\n          v-if=\"validatedRange.length === 0 && controllerType === 'button'\"\n          :class=\"ns.e('button-group')\"\n        >\n          <el-button-group>\n            <el-button size=\"small\" @click=\"selectDate('prev-month')\">\n              {{ t('el.datepicker.prevMonth') }}\n            </el-button>\n            <el-button size=\"small\" @click=\"selectDate('today')\">\n              {{ t('el.datepicker.today') }}\n            </el-button>\n            <el-button size=\"small\" @click=\"selectDate('next-month')\">\n              {{ t('el.datepicker.nextMonth') }}\n            </el-button>\n          </el-button-group>\n        </div>\n        <div\n          v-else-if=\"validatedRange.length === 0 && controllerType === 'select'\"\n          :class=\"ns.e('select-controller')\"\n        >\n          <select-controller\n            :date=\"date\"\n            :formatter=\"formatter\"\n            @date-change=\"handleDateChange\"\n          />\n        </div>\n      </slot>\n    </div>\n    <div v-if=\"validatedRange.length === 0\" :class=\"ns.e('body')\">\n      <date-table :date=\"date\" :selected-day=\"realSelectedDay\" @pick=\"pickDay\">\n        <template v-if=\"$slots['date-cell']\" #date-cell=\"data\">\n          <slot name=\"date-cell\" v-bind=\"data\" />\n        </template>\n      </date-table>\n    </div>\n    <div v-else :class=\"ns.e('body')\">\n      <date-table\n        v-for=\"(range_, index) in validatedRange\"\n        :key=\"index\"\n        :date=\"range_[0]\"\n        :selected-day=\"realSelectedDay\"\n        :range=\"range_\"\n        :hide-header=\"index !== 0\"\n        @pick=\"pickDay\"\n      >\n        <template v-if=\"$slots['date-cell']\" #date-cell=\"data\">\n          <slot name=\"date-cell\" v-bind=\"data\" />\n        </template>\n      </date-table>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElButton, ElButtonGroup } from '@pit-element-plus/components/button'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport DateTable from './date-table.vue'\nimport { useCalendar } from './use-calendar'\nimport { calendarEmits } from './calendar'\nimport SelectController from './select-controller.vue'\n\nimport type { CalendarProps } from './calendar'\n\nconst ns = useNamespace('calendar')\n\nconst COMPONENT_NAME = 'ElCalendar'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<CalendarProps>(), {\n  controllerType: 'button',\n})\nconst emit = defineEmits(calendarEmits)\n\nconst {\n  calculateValidatedDateRange,\n  date,\n  pickDay,\n  realSelectedDay,\n  selectDate,\n  validatedRange,\n  handleDateChange,\n} = useCalendar(props, emit, COMPONENT_NAME)\n\nconst { t } = useLocale()\n\nconst i18nDate = computed(() => {\n  const pickedMonth = `el.datepicker.month${date.value.format('M')}`\n  return `${date.value.year()} ${t('el.datepicker.year')} ${t(pickedMonth)}`\n})\n\ndefineExpose({\n  /** @description currently selected date */\n  selectedDay: realSelectedDay,\n  /** @description select a specific date */\n  pickDay,\n  /** @description select date */\n  selectDate,\n  /** @description Calculate the validate date range according to the start and end dates */\n  calculateValidatedDateRange,\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div :class=\"ns.e('header')\">\n      <slot name=\"header\" :date=\"i18nDate\">\n        <div :class=\"ns.e('title')\">{{ i18nDate }}</div>\n        <div\n          v-if=\"validatedRange.length === 0 && controllerType === 'button'\"\n          :class=\"ns.e('button-group')\"\n        >\n          <el-button-group>\n            <el-button size=\"small\" @click=\"selectDate('prev-month')\">\n              {{ t('el.datepicker.prevMonth') }}\n            </el-button>\n            <el-button size=\"small\" @click=\"selectDate('today')\">\n              {{ t('el.datepicker.today') }}\n            </el-button>\n            <el-button size=\"small\" @click=\"selectDate('next-month')\">\n              {{ t('el.datepicker.nextMonth') }}\n            </el-button>\n          </el-button-group>\n        </div>\n        <div\n          v-else-if=\"validatedRange.length === 0 && controllerType === 'select'\"\n          :class=\"ns.e('select-controller')\"\n        >\n          <select-controller\n            :date=\"date\"\n            :formatter=\"formatter\"\n            @date-change=\"handleDateChange\"\n          />\n        </div>\n      </slot>\n    </div>\n    <div v-if=\"validatedRange.length === 0\" :class=\"ns.e('body')\">\n      <date-table :date=\"date\" :selected-day=\"realSelectedDay\" @pick=\"pickDay\">\n        <template v-if=\"$slots['date-cell']\" #date-cell=\"data\">\n          <slot name=\"date-cell\" v-bind=\"data\" />\n        </template>\n      </date-table>\n    </div>\n    <div v-else :class=\"ns.e('body')\">\n      <date-table\n        v-for=\"(range_, index) in validatedRange\"\n        :key=\"index\"\n        :date=\"range_[0]\"\n        :selected-day=\"realSelectedDay\"\n        :range=\"range_\"\n        :hide-header=\"index !== 0\"\n        @pick=\"pickDay\"\n      >\n        <template v-if=\"$slots['date-cell']\" #date-cell=\"data\">\n          <slot name=\"date-cell\" v-bind=\"data\" />\n        </template>\n      </date-table>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElButton, ElButtonGroup } from '@pit-element-plus/components/button'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport DateTable from './date-table.vue'\nimport { useCalendar } from './use-calendar'\nimport { calendarEmits } from './calendar'\nimport SelectController from './select-controller.vue'\n\nimport type { CalendarProps } from './calendar'\n\nconst ns = useNamespace('calendar')\n\nconst COMPONENT_NAME = 'ElCalendar'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<CalendarProps>(), {\n  controllerType: 'button',\n})\nconst emit = defineEmits(calendarEmits)\n\nconst {\n  calculateValidatedDateRange,\n  date,\n  pickDay,\n  realSelectedDay,\n  selectDate,\n  validatedRange,\n  handleDateChange,\n} = useCalendar(props, emit, COMPONENT_NAME)\n\nconst { t } = useLocale()\n\nconst i18nDate = computed(() => {\n  const pickedMonth = `el.datepicker.month${date.value.format('M')}`\n  return `${date.value.year()} ${t('el.datepicker.year')} ${t(pickedMonth)}`\n})\n\ndefineExpose({\n  /** @description currently selected date */\n  selectedDay: realSelectedDay,\n  /** @description select a specific date */\n  pickDay,\n  /** @description select date */\n  selectDate,\n  /** @description Calculate the validate date range according to the start and end dates */\n  calculateValidatedDateRange,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Calendar from './src/calendar.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCalendar: SFCWithInstall<typeof Calendar> = withInstall(Calendar)\nexport default ElCalendar\n\nexport * from './src/calendar'\nexport type {\n  CalendarDateTableInstance,\n  DateTableInstance,\n  CalendarInstance,\n} from './src/instance'\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes, InjectionKey, StyleValue } from 'vue'\n\nexport interface CardProps {\n  /**\n   * @description title of the card. Also accepts a DOM passed by `slot#header`\n   */\n  header?: string\n  /**\n   * @description content of footer. Also accepts a DOM passed by `slot#footer`\n   */\n  footer?: string\n  /**\n   * @description CSS style of card body\n   */\n  bodyStyle?: StyleValue\n  /**\n   * @description custom class name of card header\n   */\n  headerClass?: string\n  /**\n   * @description custom class name of card body\n   */\n  bodyClass?: string\n  /**\n   * @description custom class name of card footer\n   */\n  footerClass?: string\n  /**\n   * @description when to show card shadows\n   */\n  shadow?: 'always' | 'hover' | 'never'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CardProps` instead.\n */\nexport const cardProps = buildProps({\n  /**\n   * @description title of the card. Also accepts a DOM passed by `slot#header`\n   */\n  header: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description content of footer. Also accepts a DOM passed by `slot#footer`\n   */\n  footer: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description CSS style of card body\n   */\n  bodyStyle: {\n    type: definePropType<StyleValue>([String, Object, Array]),\n    default: '',\n  },\n  /**\n   * @description custom class name of card footer\n   */\n  headerClass: String,\n  /**\n   * @description custom class name of card body\n   */\n  bodyClass: String,\n  /**\n   * @description custom class name of card footer\n   */\n  footerClass: String,\n  /**\n   * @description when to show card shadows\n   */\n  shadow: {\n    type: String,\n    values: ['always', 'hover', 'never'],\n    default: undefined,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `CardProps` instead.\n */\nexport type CardPropsPublic = ExtractPublicPropTypes<typeof cardProps>\nexport interface CardConfigContext {\n  shadow?: CardProps['shadow']\n}\n\nexport const cardContextKey: InjectionKey<CardConfigContext> =\n  Symbol('cardContextKey')\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.is(`${shadow || globalConfig?.shadow || 'always'}-shadow`),\n    ]\"\n  >\n    <div v-if=\"$slots.header || header\" :class=\"[ns.e('header'), headerClass]\">\n      <slot name=\"header\">{{ header }}</slot>\n    </div>\n    <div :class=\"[ns.e('body'), bodyClass]\" :style=\"bodyStyle\">\n      <slot />\n    </div>\n    <div v-if=\"$slots.footer || footer\" :class=\"[ns.e('footer'), footerClass]\">\n      <slot name=\"footer\">{{ footer }}</slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\n\nimport type { CardProps } from './card'\n\nconst globalConfig = useGlobalConfig('card')\n\ndefineOptions({\n  name: 'ElCard',\n})\n\nwithDefaults(defineProps<CardProps>(), {\n  header: '',\n  footer: '',\n  bodyStyle: '',\n  shadow: undefined,\n})\n\nconst ns = useNamespace('card')\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.is(`${shadow || globalConfig?.shadow || 'always'}-shadow`),\n    ]\"\n  >\n    <div v-if=\"$slots.header || header\" :class=\"[ns.e('header'), headerClass]\">\n      <slot name=\"header\">{{ header }}</slot>\n    </div>\n    <div :class=\"[ns.e('body'), bodyClass]\" :style=\"bodyStyle\">\n      <slot />\n    </div>\n    <div v-if=\"$slots.footer || footer\" :class=\"[ns.e('footer'), footerClass]\">\n      <slot name=\"footer\">{{ footer }}</slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\n\nimport type { CardProps } from './card'\n\nconst globalConfig = useGlobalConfig('card')\n\ndefineOptions({\n  name: 'ElCard',\n})\n\nwithDefaults(defineProps<CardProps>(), {\n  header: '',\n  footer: '',\n  bodyStyle: '',\n  shadow: undefined,\n})\n\nconst ns = useNamespace('card')\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.is(`${shadow || globalConfig?.shadow || 'always'}-shadow`),\n    ]\"\n  >\n    <div v-if=\"$slots.header || header\" :class=\"[ns.e('header'), headerClass]\">\n      <slot name=\"header\">{{ header }}</slot>\n    </div>\n    <div :class=\"[ns.e('body'), bodyClass]\" :style=\"bodyStyle\">\n      <slot />\n    </div>\n    <div v-if=\"$slots.footer || footer\" :class=\"[ns.e('footer'), footerClass]\">\n      <slot name=\"footer\">{{ footer }}</slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\n\nimport type { CardProps } from './card'\n\nconst globalConfig = useGlobalConfig('card')\n\ndefineOptions({\n  name: 'ElCard',\n})\n\nwithDefaults(defineProps<CardProps>(), {\n  header: '',\n  footer: '',\n  bodyStyle: '',\n  shadow: undefined,\n})\n\nconst ns = useNamespace('card')\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Card from './src/card.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCard: SFCWithInstall<typeof Card> = withInstall(Card)\nexport default ElCard\n\nexport * from './src/card'\nexport type { CardInstance } from './src/instance'\n","import { buildProps, isNumber } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport interface CarouselProps {\n  /**\n   * @description index of the initially active slide (starting from 0)\n   */\n  initialIndex?: number\n  /**\n   * @description height of the carousel\n   */\n  height?: string\n  /**\n   * @description how indicators are triggered\n   */\n  trigger?: 'hover' | 'click'\n  /**\n   * @description whether automatically loop the slides\n   */\n  autoplay?: boolean\n  /**\n   * @description interval of the auto loop, in milliseconds\n   */\n  interval?: number\n  /**\n   * @description position of the indicators\n   */\n  indicatorPosition?: '' | 'none' | 'outside'\n  /**\n   * @description when arrows are shown\n   */\n  arrow?: 'always' | 'hover' | 'never'\n  /**\n   * @description type of the Carousel\n   */\n  type?: '' | 'card'\n  /**\n   * @description when type is card, scaled size of secondary cards\n   */\n  cardScale?: number\n  /**\n   * @description display the items in loop\n   */\n  loop?: boolean\n  /**\n   * @description display direction\n   */\n  direction?: 'horizontal' | 'vertical'\n  /**\n   * @description pause autoplay when hover\n   */\n  pauseOnHover?: boolean\n  /**\n   * @description infuse dynamism and smoothness into the carousel\n   */\n  motionBlur?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CarouselProps` instead.\n */\nexport const carouselProps = buildProps({\n  /**\n   * @description index of the initially active slide (starting from 0)\n   */\n  initialIndex: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description height of the carousel\n   */\n  height: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description how indicators are triggered\n   */\n  trigger: {\n    type: String,\n    values: ['hover', 'click'],\n    default: 'hover',\n  },\n  /**\n   * @description whether automatically loop the slides\n   */\n  autoplay: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description interval of the auto loop, in milliseconds\n   */\n  interval: {\n    type: Number,\n    default: 3000,\n  },\n  /**\n   * @description position of the indicators\n   */\n  indicatorPosition: {\n    type: String,\n    values: ['', 'none', 'outside'],\n    default: '',\n  },\n  /**\n   * @description when arrows are shown\n   */\n  arrow: {\n    type: String,\n    values: ['always', 'hover', 'never'],\n    default: 'hover',\n  },\n  /**\n   * @description type of the Carousel\n   */\n  type: {\n    type: String,\n    values: ['', 'card'],\n    default: '',\n  },\n  /**\n   * @description when type is card, scaled size of secondary cards\n   */\n  cardScale: {\n    type: Number,\n    default: 0.83,\n  },\n  /**\n   * @description display the items in loop\n   */\n  loop: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description display direction\n   */\n  direction: {\n    type: String,\n    values: ['horizontal', 'vertical'],\n    default: 'horizontal',\n  },\n  /**\n   * @description pause autoplay when hover\n   */\n  pauseOnHover: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description infuse dynamism and smoothness into the carousel\n   */\n  motionBlur: Boolean,\n} as const)\n\nexport const carouselEmits = {\n  /**\n   * @description triggers when the active slide switches\n   * @param current index of the new active slide\n   * @param prev index of the old active slide\n   */\n  change: (current: number, prev: number) => [current, prev].every(isNumber),\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CarouselProps` instead.\n */\nexport type CarouselPropsPublic = ExtractPublicPropTypes<typeof carouselProps>\nexport type CarouselEmits = typeof carouselEmits\n","import type { InjectionKey, Ref, VNode } from 'vue'\nimport type { CarouselItemProps } from './carousel-item'\n\nexport type CarouselItemStates = {\n  hover: boolean\n  translate: number\n  scale: number\n  active: boolean\n  ready: boolean\n  inStage: boolean\n  animating: boolean\n}\n\nexport type CarouselItemContext = {\n  props: Required<CarouselItemProps>\n  states: CarouselItemStates\n  uid: number\n  getVnode: () => VNode\n  translateItem: (index: number, activeIndex: number, oldIndex?: number) => void\n}\n\nexport type CarouselContext = {\n  root: Ref<HTMLElement | undefined>\n  items: Ref<CarouselItemContext[]>\n  isCardType: Ref<boolean>\n  isVertical: Ref<boolean>\n  loop: boolean\n  cardScale: number\n  addItem: (item: CarouselItemContext) => void\n  removeItem: (item: CarouselItemContext) => void\n  setActiveItem: (index: number) => void\n  setContainerHeight: (height: number) => void\n}\n\nexport const carouselContextKey: InjectionKey<CarouselContext> =\n  Symbol('carouselContextKey')\n\nexport const CAROUSEL_ITEM_NAME = 'ElCarouselItem'\n","import {\n  computed,\n  getCurrentInstance,\n  isVNode,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  ref,\n  shallowRef,\n  unref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { throttle } from 'lodash-unified'\nimport { useResizeObserver } from '@vueuse/core'\nimport { debugWarn, flattedChildren, isString } from '@pit-element-plus/utils'\nimport { useOrderedChildren } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { CAROUSEL_ITEM_NAME, carouselContextKey } from './constants'\n\nimport type { SetupContext } from 'vue'\nimport type { CarouselItemContext } from './constants'\nimport type { CarouselEmits, CarouselProps } from './carousel'\n\nconst THROTTLE_TIME = 300\n\nexport const useCarousel = (\n  props: Required<CarouselProps>,\n  emit: SetupContext<CarouselEmits>['emit'],\n  componentName: string\n) => {\n  const {\n    children: items,\n    addChild: addItem,\n    removeChild: removeItem,\n    ChildrenSorter: ItemsSorter,\n  } = useOrderedChildren<CarouselItemContext>(\n    getCurrentInstance()!,\n    CAROUSEL_ITEM_NAME\n  )\n\n  const slots = useSlots()\n\n  // refs\n  const activeIndex = ref(-1)\n  const timer = ref<ReturnType<typeof setInterval> | null>(null)\n  const hover = ref(false)\n  const root = ref<HTMLDivElement>()\n  const containerHeight = ref<number>(0)\n  const isItemsTwoLength = ref(true)\n\n  // computed\n  const arrowDisplay = computed(\n    () => props.arrow !== 'never' && !unref(isVertical)\n  )\n\n  const hasLabel = computed(() => {\n    return items.value.some((item) => item.props.label.toString().length > 0)\n  })\n\n  const isCardType = computed(() => props.type === 'card')\n  const isVertical = computed(() => props.direction === 'vertical')\n\n  const containerStyle = computed(() => {\n    if (props.height !== 'auto') {\n      return {\n        height: props.height,\n      }\n    }\n    return {\n      height: `${containerHeight.value}px`,\n      overflow: 'hidden',\n    }\n  })\n\n  // methods\n  const throttledArrowClick = throttle(\n    (index: number) => {\n      setActiveItem(index)\n    },\n    THROTTLE_TIME,\n    { trailing: true }\n  )\n\n  const throttledIndicatorHover = throttle((index: number) => {\n    handleIndicatorHover(index)\n  }, THROTTLE_TIME)\n\n  const isTwoLengthShow = (index: number) => {\n    if (!isItemsTwoLength.value) return true\n    return activeIndex.value <= 1 ? index <= 1 : index > 1\n  }\n\n  function pauseTimer() {\n    if (timer.value) {\n      clearInterval(timer.value)\n      timer.value = null\n    }\n  }\n\n  function startTimer() {\n    if (props.interval <= 0 || !props.autoplay || timer.value) return\n    timer.value = setInterval(() => playSlides(), props.interval)\n  }\n\n  const playSlides = () => {\n    if (activeIndex.value < items.value.length - 1) {\n      activeIndex.value = activeIndex.value + 1\n    } else if (props.loop) {\n      activeIndex.value = 0\n    }\n  }\n\n  function setActiveItem(index: number | string) {\n    if (isString(index)) {\n      const filteredItems = items.value.filter(\n        (item) => item.props.name === index\n      )\n      if (filteredItems.length > 0) {\n        index = items.value.indexOf(filteredItems[0])\n      }\n    }\n    index = Number(index)\n    if (Number.isNaN(index) || index !== Math.floor(index)) {\n      debugWarn(componentName, 'index must be integer.')\n      return\n    }\n    const itemCount = items.value.length\n    const oldIndex = activeIndex.value\n    if (index < 0) {\n      activeIndex.value = props.loop ? itemCount - 1 : 0\n    } else if (index >= itemCount) {\n      activeIndex.value = props.loop ? 0 : itemCount - 1\n    } else {\n      activeIndex.value = index\n    }\n    if (oldIndex === activeIndex.value) {\n      resetItemPosition(oldIndex)\n    }\n    resetTimer()\n  }\n\n  function resetItemPosition(oldIndex?: number) {\n    items.value.forEach((item, index) => {\n      item.translateItem(index, activeIndex.value, oldIndex)\n    })\n  }\n\n  function itemInStage(item: CarouselItemContext, index: number) {\n    const _items = unref(items)\n    const itemCount = _items.length\n    if (itemCount === 0 || !item.states.inStage) return false\n    const nextItemIndex = index + 1\n    const prevItemIndex = index - 1\n    const lastItemIndex = itemCount - 1\n    const isLastItemActive = _items[lastItemIndex].states.active\n    const isFirstItemActive = _items[0].states.active\n    const isNextItemActive = _items[nextItemIndex]?.states?.active\n    const isPrevItemActive = _items[prevItemIndex]?.states?.active\n\n    if ((index === lastItemIndex && isFirstItemActive) || isNextItemActive) {\n      return 'left'\n    } else if ((index === 0 && isLastItemActive) || isPrevItemActive) {\n      return 'right'\n    }\n    return false\n  }\n\n  function handleMouseEnter() {\n    hover.value = true\n    if (props.pauseOnHover) {\n      pauseTimer()\n    }\n  }\n\n  function handleMouseLeave() {\n    hover.value = false\n    startTimer()\n  }\n\n  function handleButtonEnter(arrow: 'left' | 'right') {\n    if (unref(isVertical)) return\n    items.value.forEach((item, index) => {\n      if (arrow === itemInStage(item, index)) {\n        item.states.hover = true\n      }\n    })\n  }\n\n  function handleButtonLeave() {\n    if (unref(isVertical)) return\n    items.value.forEach((item) => {\n      item.states.hover = false\n    })\n  }\n\n  function handleIndicatorClick(index: number) {\n    activeIndex.value = index\n  }\n\n  function handleIndicatorHover(index: number) {\n    if (props.trigger === 'hover' && index !== activeIndex.value) {\n      activeIndex.value = index\n    }\n  }\n\n  function prev() {\n    setActiveItem(activeIndex.value - 1)\n  }\n\n  function next() {\n    setActiveItem(activeIndex.value + 1)\n  }\n\n  function resetTimer() {\n    pauseTimer()\n    if (!props.pauseOnHover || !hover.value) startTimer()\n  }\n\n  function setContainerHeight(height: number) {\n    if (props.height !== 'auto') return\n    containerHeight.value = height\n  }\n\n  function PlaceholderItem() {\n    // fix: https://github.com/element-plus/element-plus/issues/12139\n    const defaultSlots = slots.default?.()\n    if (!defaultSlots) return null\n\n    const flatSlots = flattedChildren(defaultSlots)\n\n    const normalizeSlots = flatSlots.filter((slot) => {\n      return isVNode(slot) && (slot.type as any).name === CAROUSEL_ITEM_NAME\n    })\n\n    if (normalizeSlots?.length === 2 && props.loop && !isCardType.value) {\n      isItemsTwoLength.value = true\n      return normalizeSlots\n    }\n    isItemsTwoLength.value = false\n    return null\n  }\n\n  // watch\n  watch(\n    () => activeIndex.value,\n    (current, prev) => {\n      resetItemPosition(prev)\n      if (isItemsTwoLength.value) {\n        current = current % 2\n        prev = prev % 2\n      }\n      if (prev > -1) {\n        emit(CHANGE_EVENT, current, prev)\n      }\n    }\n  )\n\n  const exposeActiveIndex = computed({\n    get: () => {\n      return isItemsTwoLength.value ? activeIndex.value % 2 : activeIndex.value\n    },\n    set: (value) => (activeIndex.value = value),\n  })\n\n  watch(\n    () => props.autoplay,\n    (autoplay) => {\n      autoplay ? startTimer() : pauseTimer()\n    }\n  )\n  watch(\n    () => props.loop,\n    () => {\n      setActiveItem(activeIndex.value)\n    }\n  )\n\n  watch(\n    () => props.interval,\n    () => {\n      resetTimer()\n    }\n  )\n\n  const resizeObserver = shallowRef<ReturnType<typeof useResizeObserver>>()\n  // lifecycle\n  onMounted(() => {\n    watch(\n      () => items.value,\n      () => {\n        if (items.value.length > 0) setActiveItem(props.initialIndex)\n      },\n      {\n        immediate: true,\n      }\n    )\n\n    resizeObserver.value = useResizeObserver(root.value, () => {\n      resetItemPosition()\n    })\n    startTimer()\n  })\n\n  onBeforeUnmount(() => {\n    pauseTimer()\n    if (root.value && resizeObserver.value) resizeObserver.value.stop()\n  })\n\n  // provide\n  provide(carouselContextKey, {\n    root,\n    isCardType,\n    isVertical,\n    items,\n    loop: props.loop,\n    cardScale: props.cardScale,\n    addItem,\n    removeItem,\n    setActiveItem,\n    setContainerHeight,\n  })\n\n  return {\n    root,\n    activeIndex,\n    exposeActiveIndex,\n    arrowDisplay,\n    hasLabel,\n    hover,\n    isCardType,\n    items,\n    isVertical,\n    containerStyle,\n    isItemsTwoLength,\n    handleButtonEnter,\n    handleButtonLeave,\n    handleIndicatorClick,\n    handleMouseEnter,\n    handleMouseLeave,\n    setActiveItem,\n    prev,\n    next,\n    PlaceholderItem,\n    isTwoLengthShow,\n    ItemsSorter,\n    throttledArrowClick,\n    throttledIndicatorHover,\n  }\n}\n","<template>\n  <div\n    ref=\"root\"\n    :class=\"carouselClasses\"\n    @mouseenter.stop=\"handleMouseEnter\"\n    @mouseleave.stop=\"handleMouseLeave\"\n  >\n    <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-left\">\n      <button\n        v-show=\"(arrow === 'always' || hover) && (loop || activeIndex > 0)\"\n        type=\"button\"\n        :class=\"[ns.e('arrow'), ns.em('arrow', 'left')]\"\n        :aria-label=\"t('el.carousel.leftArrow')\"\n        @mouseenter=\"handleButtonEnter('left')\"\n        @mouseleave=\"handleButtonLeave\"\n        @click.stop=\"throttledArrowClick(activeIndex - 1)\"\n      >\n        <ElIcon>\n          <ArrowLeft />\n        </ElIcon>\n      </button>\n    </transition>\n    <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-right\">\n      <button\n        v-show=\"\n          (arrow === 'always' || hover) &&\n          (loop || activeIndex < items.length - 1)\n        \"\n        type=\"button\"\n        :class=\"[ns.e('arrow'), ns.em('arrow', 'right')]\"\n        :aria-label=\"t('el.carousel.rightArrow')\"\n        @mouseenter=\"handleButtonEnter('right')\"\n        @mouseleave=\"handleButtonLeave\"\n        @click.stop=\"throttledArrowClick(activeIndex + 1)\"\n      >\n        <ElIcon>\n          <ArrowRight />\n        </ElIcon>\n      </button>\n    </transition>\n    <div\n      :class=\"ns.e('container')\"\n      :style=\"containerStyle\"\n      @transitionstart=\"handleTransitionStart\"\n      @transitionend=\"handleTransitionEnd\"\n    >\n      <PlaceholderItem />\n      <slot />\n    </div>\n    <items-sorter>\n      <ul v-if=\"indicatorPosition !== 'none'\" :class=\"indicatorsClasses\">\n        <li\n          v-for=\"(item, index) in items\"\n          v-show=\"isTwoLengthShow(index)\"\n          :key=\"index\"\n          :class=\"[\n            ns.e('indicator'),\n            ns.em('indicator', direction),\n            ns.is('active', index === activeIndex),\n          ]\"\n          @mouseenter=\"throttledIndicatorHover(index)\"\n          @click.stop=\"handleIndicatorClick(index)\"\n        >\n          <button\n            :class=\"ns.e('button')\"\n            :aria-label=\"t('el.carousel.indicator', { index: index + 1 })\"\n          >\n            <span v-if=\"hasLabel\">{{ item.props.label }}</span>\n          </button>\n        </li>\n      </ul>\n    </items-sorter>\n    <svg\n      v-if=\"motionBlur\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      version=\"1.1\"\n      style=\"display: none\"\n    >\n      <defs>\n        <filter id=\"elCarouselHorizontal\">\n          <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"12,0\" />\n        </filter>\n        <filter id=\"elCarouselVertical\">\n          <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"0,10\" />\n        </filter>\n      </defs>\n    </svg>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, unref } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ArrowLeft, ArrowRight } from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { carouselEmits } from './carousel'\nimport { useCarousel } from './use-carousel'\n\nimport type { CarouselProps } from './carousel'\n\nconst COMPONENT_NAME = 'ElCarousel'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<CarouselProps>(), {\n  initialIndex: 0,\n  height: '',\n  trigger: 'hover',\n  autoplay: true,\n  interval: 3000,\n  indicatorPosition: '',\n  arrow: 'hover',\n  type: '',\n  cardScale: 0.83,\n  loop: true,\n  direction: 'horizontal',\n  pauseOnHover: true,\n})\nconst emit = defineEmits(carouselEmits)\nconst {\n  root,\n  activeIndex,\n  exposeActiveIndex,\n  arrowDisplay,\n  hasLabel,\n  hover,\n  isCardType,\n  items,\n  isVertical,\n  containerStyle,\n  handleButtonEnter,\n  handleButtonLeave,\n  handleIndicatorClick,\n  handleMouseEnter,\n  handleMouseLeave,\n  setActiveItem,\n  prev,\n  next,\n  PlaceholderItem,\n  isTwoLengthShow,\n  ItemsSorter,\n  throttledArrowClick,\n  throttledIndicatorHover,\n} = useCarousel(props, emit, COMPONENT_NAME)\nconst ns = useNamespace('carousel')\n\nconst { t } = useLocale()\n\nconst carouselClasses = computed(() => {\n  const classes = [ns.b(), ns.m(props.direction)]\n  if (unref(isCardType)) {\n    classes.push(ns.m('card'))\n  }\n  // When vertical with outside indicators, add modifier for flex layout\n  classes.push(\n    ns.is(\n      'vertical-outside',\n      unref(isVertical) && props.indicatorPosition === 'outside'\n    )\n  )\n  return classes\n})\n\nconst indicatorsClasses = computed(() => {\n  const classes = [ns.e('indicators'), ns.em('indicators', props.direction)]\n  if (unref(hasLabel)) {\n    classes.push(ns.em('indicators', 'labels'))\n  }\n  if (props.indicatorPosition === 'outside') {\n    classes.push(ns.em('indicators', 'outside'))\n  }\n  if (unref(isVertical)) {\n    classes.push(ns.em('indicators', 'right'))\n  }\n  return classes\n})\n\nfunction handleTransitionStart(e: TransitionEvent) {\n  if (!props.motionBlur) return\n\n  const kls = unref(isVertical)\n    ? `${ns.namespace.value}-transitioning-vertical`\n    : `${ns.namespace.value}-transitioning`\n  ;(e.currentTarget as HTMLDivElement).classList.add(kls)\n}\n\nfunction handleTransitionEnd(e: TransitionEvent) {\n  if (!props.motionBlur) return\n\n  const kls = unref(isVertical)\n    ? `${ns.namespace.value}-transitioning-vertical`\n    : `${ns.namespace.value}-transitioning`\n  ;(e.currentTarget as HTMLDivElement).classList.remove(kls)\n}\n\ndefineExpose({\n  /** @description active slide index */\n  activeIndex: exposeActiveIndex,\n  /** @description manually switch slide, index of the slide to be switched to, starting from 0; or the `name` of corresponding `el-carousel-item` */\n  setActiveItem,\n  /** @description switch to the previous slide */\n  prev,\n  /** @description switch to the next slide */\n  next,\n})\n</script>\n","<template>\n  <div\n    ref=\"root\"\n    :class=\"carouselClasses\"\n    @mouseenter.stop=\"handleMouseEnter\"\n    @mouseleave.stop=\"handleMouseLeave\"\n  >\n    <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-left\">\n      <button\n        v-show=\"(arrow === 'always' || hover) && (loop || activeIndex > 0)\"\n        type=\"button\"\n        :class=\"[ns.e('arrow'), ns.em('arrow', 'left')]\"\n        :aria-label=\"t('el.carousel.leftArrow')\"\n        @mouseenter=\"handleButtonEnter('left')\"\n        @mouseleave=\"handleButtonLeave\"\n        @click.stop=\"throttledArrowClick(activeIndex - 1)\"\n      >\n        <ElIcon>\n          <ArrowLeft />\n        </ElIcon>\n      </button>\n    </transition>\n    <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-right\">\n      <button\n        v-show=\"\n          (arrow === 'always' || hover) &&\n          (loop || activeIndex < items.length - 1)\n        \"\n        type=\"button\"\n        :class=\"[ns.e('arrow'), ns.em('arrow', 'right')]\"\n        :aria-label=\"t('el.carousel.rightArrow')\"\n        @mouseenter=\"handleButtonEnter('right')\"\n        @mouseleave=\"handleButtonLeave\"\n        @click.stop=\"throttledArrowClick(activeIndex + 1)\"\n      >\n        <ElIcon>\n          <ArrowRight />\n        </ElIcon>\n      </button>\n    </transition>\n    <div\n      :class=\"ns.e('container')\"\n      :style=\"containerStyle\"\n      @transitionstart=\"handleTransitionStart\"\n      @transitionend=\"handleTransitionEnd\"\n    >\n      <PlaceholderItem />\n      <slot />\n    </div>\n    <items-sorter>\n      <ul v-if=\"indicatorPosition !== 'none'\" :class=\"indicatorsClasses\">\n        <li\n          v-for=\"(item, index) in items\"\n          v-show=\"isTwoLengthShow(index)\"\n          :key=\"index\"\n          :class=\"[\n            ns.e('indicator'),\n            ns.em('indicator', direction),\n            ns.is('active', index === activeIndex),\n          ]\"\n          @mouseenter=\"throttledIndicatorHover(index)\"\n          @click.stop=\"handleIndicatorClick(index)\"\n        >\n          <button\n            :class=\"ns.e('button')\"\n            :aria-label=\"t('el.carousel.indicator', { index: index + 1 })\"\n          >\n            <span v-if=\"hasLabel\">{{ item.props.label }}</span>\n          </button>\n        </li>\n      </ul>\n    </items-sorter>\n    <svg\n      v-if=\"motionBlur\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      version=\"1.1\"\n      style=\"display: none\"\n    >\n      <defs>\n        <filter id=\"elCarouselHorizontal\">\n          <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"12,0\" />\n        </filter>\n        <filter id=\"elCarouselVertical\">\n          <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"0,10\" />\n        </filter>\n      </defs>\n    </svg>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, unref } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ArrowLeft, ArrowRight } from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { carouselEmits } from './carousel'\nimport { useCarousel } from './use-carousel'\n\nimport type { CarouselProps } from './carousel'\n\nconst COMPONENT_NAME = 'ElCarousel'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<CarouselProps>(), {\n  initialIndex: 0,\n  height: '',\n  trigger: 'hover',\n  autoplay: true,\n  interval: 3000,\n  indicatorPosition: '',\n  arrow: 'hover',\n  type: '',\n  cardScale: 0.83,\n  loop: true,\n  direction: 'horizontal',\n  pauseOnHover: true,\n})\nconst emit = defineEmits(carouselEmits)\nconst {\n  root,\n  activeIndex,\n  exposeActiveIndex,\n  arrowDisplay,\n  hasLabel,\n  hover,\n  isCardType,\n  items,\n  isVertical,\n  containerStyle,\n  handleButtonEnter,\n  handleButtonLeave,\n  handleIndicatorClick,\n  handleMouseEnter,\n  handleMouseLeave,\n  setActiveItem,\n  prev,\n  next,\n  PlaceholderItem,\n  isTwoLengthShow,\n  ItemsSorter,\n  throttledArrowClick,\n  throttledIndicatorHover,\n} = useCarousel(props, emit, COMPONENT_NAME)\nconst ns = useNamespace('carousel')\n\nconst { t } = useLocale()\n\nconst carouselClasses = computed(() => {\n  const classes = [ns.b(), ns.m(props.direction)]\n  if (unref(isCardType)) {\n    classes.push(ns.m('card'))\n  }\n  // When vertical with outside indicators, add modifier for flex layout\n  classes.push(\n    ns.is(\n      'vertical-outside',\n      unref(isVertical) && props.indicatorPosition === 'outside'\n    )\n  )\n  return classes\n})\n\nconst indicatorsClasses = computed(() => {\n  const classes = [ns.e('indicators'), ns.em('indicators', props.direction)]\n  if (unref(hasLabel)) {\n    classes.push(ns.em('indicators', 'labels'))\n  }\n  if (props.indicatorPosition === 'outside') {\n    classes.push(ns.em('indicators', 'outside'))\n  }\n  if (unref(isVertical)) {\n    classes.push(ns.em('indicators', 'right'))\n  }\n  return classes\n})\n\nfunction handleTransitionStart(e: TransitionEvent) {\n  if (!props.motionBlur) return\n\n  const kls = unref(isVertical)\n    ? `${ns.namespace.value}-transitioning-vertical`\n    : `${ns.namespace.value}-transitioning`\n  ;(e.currentTarget as HTMLDivElement).classList.add(kls)\n}\n\nfunction handleTransitionEnd(e: TransitionEvent) {\n  if (!props.motionBlur) return\n\n  const kls = unref(isVertical)\n    ? `${ns.namespace.value}-transitioning-vertical`\n    : `${ns.namespace.value}-transitioning`\n  ;(e.currentTarget as HTMLDivElement).classList.remove(kls)\n}\n\ndefineExpose({\n  /** @description active slide index */\n  activeIndex: exposeActiveIndex,\n  /** @description manually switch slide, index of the slide to be switched to, starting from 0; or the `name` of corresponding `el-carousel-item` */\n  setActiveItem,\n  /** @description switch to the previous slide */\n  prev,\n  /** @description switch to the next slide */\n  next,\n})\n</script>\n","<template>\n  <div\n    ref=\"root\"\n    :class=\"carouselClasses\"\n    @mouseenter.stop=\"handleMouseEnter\"\n    @mouseleave.stop=\"handleMouseLeave\"\n  >\n    <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-left\">\n      <button\n        v-show=\"(arrow === 'always' || hover) && (loop || activeIndex > 0)\"\n        type=\"button\"\n        :class=\"[ns.e('arrow'), ns.em('arrow', 'left')]\"\n        :aria-label=\"t('el.carousel.leftArrow')\"\n        @mouseenter=\"handleButtonEnter('left')\"\n        @mouseleave=\"handleButtonLeave\"\n        @click.stop=\"throttledArrowClick(activeIndex - 1)\"\n      >\n        <ElIcon>\n          <ArrowLeft />\n        </ElIcon>\n      </button>\n    </transition>\n    <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-right\">\n      <button\n        v-show=\"\n          (arrow === 'always' || hover) &&\n          (loop || activeIndex < items.length - 1)\n        \"\n        type=\"button\"\n        :class=\"[ns.e('arrow'), ns.em('arrow', 'right')]\"\n        :aria-label=\"t('el.carousel.rightArrow')\"\n        @mouseenter=\"handleButtonEnter('right')\"\n        @mouseleave=\"handleButtonLeave\"\n        @click.stop=\"throttledArrowClick(activeIndex + 1)\"\n      >\n        <ElIcon>\n          <ArrowRight />\n        </ElIcon>\n      </button>\n    </transition>\n    <div\n      :class=\"ns.e('container')\"\n      :style=\"containerStyle\"\n      @transitionstart=\"handleTransitionStart\"\n      @transitionend=\"handleTransitionEnd\"\n    >\n      <PlaceholderItem />\n      <slot />\n    </div>\n    <items-sorter>\n      <ul v-if=\"indicatorPosition !== 'none'\" :class=\"indicatorsClasses\">\n        <li\n          v-for=\"(item, index) in items\"\n          v-show=\"isTwoLengthShow(index)\"\n          :key=\"index\"\n          :class=\"[\n            ns.e('indicator'),\n            ns.em('indicator', direction),\n            ns.is('active', index === activeIndex),\n          ]\"\n          @mouseenter=\"throttledIndicatorHover(index)\"\n          @click.stop=\"handleIndicatorClick(index)\"\n        >\n          <button\n            :class=\"ns.e('button')\"\n            :aria-label=\"t('el.carousel.indicator', { index: index + 1 })\"\n          >\n            <span v-if=\"hasLabel\">{{ item.props.label }}</span>\n          </button>\n        </li>\n      </ul>\n    </items-sorter>\n    <svg\n      v-if=\"motionBlur\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      version=\"1.1\"\n      style=\"display: none\"\n    >\n      <defs>\n        <filter id=\"elCarouselHorizontal\">\n          <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"12,0\" />\n        </filter>\n        <filter id=\"elCarouselVertical\">\n          <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"0,10\" />\n        </filter>\n      </defs>\n    </svg>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, unref } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ArrowLeft, ArrowRight } from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { carouselEmits } from './carousel'\nimport { useCarousel } from './use-carousel'\n\nimport type { CarouselProps } from './carousel'\n\nconst COMPONENT_NAME = 'ElCarousel'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<CarouselProps>(), {\n  initialIndex: 0,\n  height: '',\n  trigger: 'hover',\n  autoplay: true,\n  interval: 3000,\n  indicatorPosition: '',\n  arrow: 'hover',\n  type: '',\n  cardScale: 0.83,\n  loop: true,\n  direction: 'horizontal',\n  pauseOnHover: true,\n})\nconst emit = defineEmits(carouselEmits)\nconst {\n  root,\n  activeIndex,\n  exposeActiveIndex,\n  arrowDisplay,\n  hasLabel,\n  hover,\n  isCardType,\n  items,\n  isVertical,\n  containerStyle,\n  handleButtonEnter,\n  handleButtonLeave,\n  handleIndicatorClick,\n  handleMouseEnter,\n  handleMouseLeave,\n  setActiveItem,\n  prev,\n  next,\n  PlaceholderItem,\n  isTwoLengthShow,\n  ItemsSorter,\n  throttledArrowClick,\n  throttledIndicatorHover,\n} = useCarousel(props, emit, COMPONENT_NAME)\nconst ns = useNamespace('carousel')\n\nconst { t } = useLocale()\n\nconst carouselClasses = computed(() => {\n  const classes = [ns.b(), ns.m(props.direction)]\n  if (unref(isCardType)) {\n    classes.push(ns.m('card'))\n  }\n  // When vertical with outside indicators, add modifier for flex layout\n  classes.push(\n    ns.is(\n      'vertical-outside',\n      unref(isVertical) && props.indicatorPosition === 'outside'\n    )\n  )\n  return classes\n})\n\nconst indicatorsClasses = computed(() => {\n  const classes = [ns.e('indicators'), ns.em('indicators', props.direction)]\n  if (unref(hasLabel)) {\n    classes.push(ns.em('indicators', 'labels'))\n  }\n  if (props.indicatorPosition === 'outside') {\n    classes.push(ns.em('indicators', 'outside'))\n  }\n  if (unref(isVertical)) {\n    classes.push(ns.em('indicators', 'right'))\n  }\n  return classes\n})\n\nfunction handleTransitionStart(e: TransitionEvent) {\n  if (!props.motionBlur) return\n\n  const kls = unref(isVertical)\n    ? `${ns.namespace.value}-transitioning-vertical`\n    : `${ns.namespace.value}-transitioning`\n  ;(e.currentTarget as HTMLDivElement).classList.add(kls)\n}\n\nfunction handleTransitionEnd(e: TransitionEvent) {\n  if (!props.motionBlur) return\n\n  const kls = unref(isVertical)\n    ? `${ns.namespace.value}-transitioning-vertical`\n    : `${ns.namespace.value}-transitioning`\n  ;(e.currentTarget as HTMLDivElement).classList.remove(kls)\n}\n\ndefineExpose({\n  /** @description active slide index */\n  activeIndex: exposeActiveIndex,\n  /** @description manually switch slide, index of the slide to be switched to, starting from 0; or the `name` of corresponding `el-carousel-item` */\n  setActiveItem,\n  /** @description switch to the previous slide */\n  prev,\n  /** @description switch to the next slide */\n  next,\n})\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport interface CarouselItemProps {\n  /**\n   * @description name of the item, can be used in `setActiveItem`\n   */\n  name?: string\n  /**\n   * @description text content for the corresponding indicator\n   */\n  label?: string | number\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CarouselItemProps` instead.\n */\nexport const carouselItemProps = buildProps({\n  /**\n   * @description name of the item, can be used in `setActiveItem`\n   */\n  name: { type: String, default: '' },\n  /**\n   * @description text content for the corresponding indicator\n   */\n  label: {\n    type: [String, Number],\n    default: '',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `CarouselItemProps` instead.\n */\nexport type CarouselItemPropsPublic = ExtractPublicPropTypes<\n  typeof carouselItemProps\n>\n","import {\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  reactive,\n  ref,\n  unref,\n} from 'vue'\nimport { debugWarn, isUndefined } from '@pit-element-plus/utils'\nimport { CAROUSEL_ITEM_NAME, carouselContextKey } from './constants'\n\nimport type { CarouselItemProps } from './carousel-item'\n\nexport const useCarouselItem = (props: Required<CarouselItemProps>) => {\n  const carouselContext = inject(carouselContextKey)!\n  // instance\n  const instance = getCurrentInstance()!\n  if (!carouselContext) {\n    debugWarn(\n      CAROUSEL_ITEM_NAME,\n      'usage: <el-carousel></el-carousel-item></el-carousel>'\n    )\n  }\n\n  if (!instance) {\n    debugWarn(\n      CAROUSEL_ITEM_NAME,\n      'compositional hook can only be invoked inside setups'\n    )\n  }\n\n  const carouselItemRef = ref<HTMLElement>()\n  const hover = ref(false)\n  const translate = ref(0)\n  const scale = ref(1)\n  const active = ref(false)\n  const ready = ref(false)\n  const inStage = ref(false)\n  const animating = ref(false)\n\n  // computed\n  const { isCardType, isVertical, cardScale } = carouselContext\n\n  // methods\n\n  function processIndex(index: number, activeIndex: number, length: number) {\n    const lastItemIndex = length - 1\n    const prevItemIndex = activeIndex - 1\n    const nextItemIndex = activeIndex + 1\n    const halfItemIndex = length / 2\n\n    if (activeIndex === 0 && index === lastItemIndex) {\n      return -1\n    } else if (activeIndex === lastItemIndex && index === 0) {\n      return length\n    } else if (index < prevItemIndex && activeIndex - index >= halfItemIndex) {\n      return length + 1\n    } else if (index > nextItemIndex && index - activeIndex >= halfItemIndex) {\n      return -2\n    }\n    return index\n  }\n\n  function calcCardTranslate(index: number, activeIndex: number) {\n    const parentWidth = unref(isVertical)\n      ? carouselContext.root.value?.offsetHeight || 0\n      : carouselContext.root.value?.offsetWidth || 0\n\n    if (inStage.value) {\n      return (parentWidth * ((2 - cardScale) * (index - activeIndex) + 1)) / 4\n    } else if (index < activeIndex) {\n      return (-(1 + cardScale) * parentWidth) / 4\n    } else {\n      return ((3 + cardScale) * parentWidth) / 4\n    }\n  }\n\n  function calcTranslate(\n    index: number,\n    activeIndex: number,\n    isVertical: boolean\n  ) {\n    const rootEl = carouselContext.root.value\n    if (!rootEl) return 0\n\n    const distance =\n      (isVertical ? rootEl.offsetHeight : rootEl.offsetWidth) || 0\n    return distance * (index - activeIndex)\n  }\n\n  const translateItem = (\n    index: number,\n    activeIndex: number,\n    oldIndex?: number\n  ) => {\n    const _isCardType = unref(isCardType)\n    const carouselItemLength = carouselContext.items.value.length ?? Number.NaN\n\n    const isActive = index === activeIndex\n    if (!_isCardType && !isUndefined(oldIndex)) {\n      animating.value = isActive || index === oldIndex\n    }\n\n    if (!isActive && carouselItemLength > 2 && carouselContext.loop) {\n      index = processIndex(index, activeIndex, carouselItemLength)\n    }\n\n    const _isVertical = unref(isVertical)\n    active.value = isActive\n\n    if (_isCardType) {\n      inStage.value = Math.round(Math.abs(index - activeIndex)) <= 1\n      translate.value = calcCardTranslate(index, activeIndex)\n      scale.value = unref(active) ? 1 : cardScale\n    } else {\n      translate.value = calcTranslate(index, activeIndex, _isVertical)\n    }\n\n    ready.value = true\n\n    if (isActive && carouselItemRef.value) {\n      carouselContext.setContainerHeight(carouselItemRef.value.offsetHeight)\n    }\n  }\n\n  function handleItemClick() {\n    if (carouselContext && unref(isCardType)) {\n      const index = carouselContext.items.value.findIndex(\n        ({ uid }) => uid === instance.uid\n      )\n      carouselContext.setActiveItem(index)\n    }\n  }\n\n  const carouselItemContext = {\n    props,\n    states: reactive({\n      hover,\n      translate,\n      scale,\n      active,\n      ready,\n      inStage,\n      animating,\n    }),\n    uid: instance.uid,\n    getVnode: () => instance.vnode,\n    translateItem,\n  }\n\n  carouselContext.addItem(carouselItemContext)\n\n  onBeforeUnmount(() => {\n    carouselContext.removeItem(carouselItemContext)\n  })\n\n  return {\n    carouselItemRef,\n    active,\n    animating,\n    hover,\n    inStage,\n    isVertical,\n    translate,\n    isCardType,\n    scale,\n    ready,\n    handleItemClick,\n  }\n}\n","<template>\n  <div\n    v-show=\"ready\"\n    ref=\"carouselItemRef\"\n    :class=\"itemKls\"\n    :style=\"itemStyle\"\n    @click=\"handleItemClick\"\n  >\n    <div v-if=\"isCardType\" v-show=\"!active\" :class=\"ns.e('mask')\" />\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, unref } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useCarouselItem } from './use-carousel-item'\nimport { CAROUSEL_ITEM_NAME } from './constants'\n\nimport type { CSSProperties } from 'vue'\nimport type { CarouselItemProps } from './carousel-item'\n\ndefineOptions({\n  name: CAROUSEL_ITEM_NAME,\n})\n\nconst props = withDefaults(defineProps<CarouselItemProps>(), {\n  name: '',\n  label: '',\n})\nconst ns = useNamespace('carousel')\n\n// inject\nconst {\n  carouselItemRef,\n  active,\n  animating,\n  hover,\n  inStage,\n  isVertical,\n  translate,\n  isCardType,\n  scale,\n  ready,\n  handleItemClick,\n} = useCarouselItem(props)\n\nconst itemKls = computed(() => [\n  ns.e('item'),\n  ns.is('active', active.value),\n  ns.is('in-stage', inStage.value),\n  ns.is('hover', hover.value),\n  ns.is('animating', animating.value),\n  {\n    [ns.em('item', 'card')]: isCardType.value,\n    [ns.em('item', 'card-vertical')]: isCardType.value && isVertical.value,\n  },\n])\n\nconst itemStyle = computed<CSSProperties>(() => {\n  const translateType = `translate${unref(isVertical) ? 'Y' : 'X'}`\n  const _translate = `${translateType}(${unref(translate)}px)`\n  const _scale = `scale(${unref(scale)})`\n  const transform = [_translate, _scale].join(' ')\n\n  return {\n    transform,\n  }\n})\n</script>\n","<template>\n  <div\n    v-show=\"ready\"\n    ref=\"carouselItemRef\"\n    :class=\"itemKls\"\n    :style=\"itemStyle\"\n    @click=\"handleItemClick\"\n  >\n    <div v-if=\"isCardType\" v-show=\"!active\" :class=\"ns.e('mask')\" />\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, unref } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useCarouselItem } from './use-carousel-item'\nimport { CAROUSEL_ITEM_NAME } from './constants'\n\nimport type { CSSProperties } from 'vue'\nimport type { CarouselItemProps } from './carousel-item'\n\ndefineOptions({\n  name: CAROUSEL_ITEM_NAME,\n})\n\nconst props = withDefaults(defineProps<CarouselItemProps>(), {\n  name: '',\n  label: '',\n})\nconst ns = useNamespace('carousel')\n\n// inject\nconst {\n  carouselItemRef,\n  active,\n  animating,\n  hover,\n  inStage,\n  isVertical,\n  translate,\n  isCardType,\n  scale,\n  ready,\n  handleItemClick,\n} = useCarouselItem(props)\n\nconst itemKls = computed(() => [\n  ns.e('item'),\n  ns.is('active', active.value),\n  ns.is('in-stage', inStage.value),\n  ns.is('hover', hover.value),\n  ns.is('animating', animating.value),\n  {\n    [ns.em('item', 'card')]: isCardType.value,\n    [ns.em('item', 'card-vertical')]: isCardType.value && isVertical.value,\n  },\n])\n\nconst itemStyle = computed<CSSProperties>(() => {\n  const translateType = `translate${unref(isVertical) ? 'Y' : 'X'}`\n  const _translate = `${translateType}(${unref(translate)}px)`\n  const _scale = `scale(${unref(scale)})`\n  const transform = [_translate, _scale].join(' ')\n\n  return {\n    transform,\n  }\n})\n</script>\n","<template>\n  <div\n    v-show=\"ready\"\n    ref=\"carouselItemRef\"\n    :class=\"itemKls\"\n    :style=\"itemStyle\"\n    @click=\"handleItemClick\"\n  >\n    <div v-if=\"isCardType\" v-show=\"!active\" :class=\"ns.e('mask')\" />\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, unref } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useCarouselItem } from './use-carousel-item'\nimport { CAROUSEL_ITEM_NAME } from './constants'\n\nimport type { CSSProperties } from 'vue'\nimport type { CarouselItemProps } from './carousel-item'\n\ndefineOptions({\n  name: CAROUSEL_ITEM_NAME,\n})\n\nconst props = withDefaults(defineProps<CarouselItemProps>(), {\n  name: '',\n  label: '',\n})\nconst ns = useNamespace('carousel')\n\n// inject\nconst {\n  carouselItemRef,\n  active,\n  animating,\n  hover,\n  inStage,\n  isVertical,\n  translate,\n  isCardType,\n  scale,\n  ready,\n  handleItemClick,\n} = useCarouselItem(props)\n\nconst itemKls = computed(() => [\n  ns.e('item'),\n  ns.is('active', active.value),\n  ns.is('in-stage', inStage.value),\n  ns.is('hover', hover.value),\n  ns.is('animating', animating.value),\n  {\n    [ns.em('item', 'card')]: isCardType.value,\n    [ns.em('item', 'card-vertical')]: isCardType.value && isVertical.value,\n  },\n])\n\nconst itemStyle = computed<CSSProperties>(() => {\n  const translateType = `translate${unref(isVertical) ? 'Y' : 'X'}`\n  const _translate = `${translateType}(${unref(translate)}px)`\n  const _scale = `scale(${unref(scale)})`\n  const transform = [_translate, _scale].join(' ')\n\n  return {\n    transform,\n  }\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Carousel from './src/carousel.vue'\nimport CarouselItem from './src/carousel-item.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCarousel: SFCWithInstall<typeof Carousel> & {\n  CarouselItem: typeof CarouselItem\n} = withInstall(Carousel, {\n  CarouselItem,\n})\n\nexport default ElCarousel\n\nexport const ElCarouselItem: SFCWithInstall<typeof CarouselItem> =\n  withNoopInstall(CarouselItem)\n\nexport * from './src/carousel'\nexport * from './src/carousel-item'\nexport * from './src/constants'\n\nexport type { CarouselInstance, CarouselItemInstance } from './src/instance'\n","import { computed } from 'vue'\nimport { NOOP, buildProps, definePropType } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\nimport type { PropType } from 'vue'\nimport type {\n  CascaderConfig,\n  CascaderNodePathValue,\n  CascaderOption,\n  CascaderProps,\n  CascaderValue,\n  RenderLabel,\n} from './types'\n\nexport interface CascaderCommonProps {\n  /**\n   * @description specify which key of node object is used as the node's value\n   */\n  modelValue?: CascaderValue | null\n  /**\n   * @description data of the options, the key of `value` and `label` can be customize by `CascaderProps`.\n   */\n  options?: CascaderOption[]\n  /**\n   * @description configuration options, see the following `CascaderProps` table.\n   */\n  props?: CascaderProps\n}\n\nexport const CommonProps = buildProps({\n  /**\n   * @description specify which key of node object is used as the node's value\n   */\n  modelValue: {\n    type: definePropType<CascaderValue | null>([Number, String, Array, Object]),\n  },\n  /**\n   * @description data of the options, the key of `value` and `label` can be customize by `CascaderProps`.\n   */\n  options: {\n    type: definePropType<CascaderOption[]>(Array),\n    default: () => [] as CascaderOption[],\n  },\n  /**\n   * @description configuration options, see the following `CascaderProps` table.\n   */\n  props: {\n    type: definePropType<CascaderProps>(Object),\n    default: () => ({}) as CascaderProps,\n  },\n} as const)\n\nexport interface CascaderPanelProps extends CascaderCommonProps {\n  border?: boolean\n  renderLabel?: RenderLabel\n}\n\nexport const DefaultProps: CascaderConfig = {\n  /**\n   * @description trigger mode of expanding options\n   */\n  expandTrigger: 'click',\n  /**\n   * @description whether multiple selection is enabled\n   */\n  multiple: false,\n  /**\n   * @description whether checked state of a node not affects its parent and child nodes\n   */\n  checkStrictly: false, // whether all nodes can be selected\n  /**\n   * @description when checked nodes change, whether to emit an array of node's path, if false, only emit the value of node.\n   */\n  emitPath: true, // whether to emit an array of all levels value in which node is located\n  /**\n   * @description whether to dynamic load child nodes, use with `lazyload` attribute\n   */\n  lazy: false,\n  /**\n   * @description method for loading child nodes data, only works when `lazy` is true\n   */\n  lazyLoad: NOOP,\n  /**\n   * @description specify which key of node object is used as the node's value\n   */\n  value: 'value',\n  /**\n   * @description specify which key of node object is used as the node's label\n   */\n  label: 'label',\n  /**\n   * @description specify which key of node object is used as the node's children\n   */\n  children: 'children',\n  /**\n   * @description specify which key of node object is used as the node's leaf\n   */\n  leaf: 'leaf',\n  /**\n   * @description specify which key of node object is used as the node's disabled\n   */\n  disabled: 'disabled',\n  /**\n   * @description hover threshold of expanding options\n   */\n  hoverThreshold: 500,\n  /**\n   * @description whether to check or uncheck node when clicking on the node\n   */\n  checkOnClickNode: false,\n  /**\n   * @description whether to check or uncheck node when clicking on leaf node (last children).\n   */\n  checkOnClickLeaf: true,\n  /**\n   * @description whether to show the radio or checkbox prefix\n   */\n  showPrefix: true,\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CascaderPanelProps` instead.\n */\nexport const cascaderPanelProps = buildProps({\n  ...CommonProps,\n  border: {\n    type: Boolean,\n    default: true,\n  },\n  renderLabel: {\n    type: Function as PropType<RenderLabel>,\n  },\n})\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst emitChangeFn = (value: CascaderValue | undefined | null) => true\n\nexport const cascaderPanelEmits = {\n  [UPDATE_MODEL_EVENT]: emitChangeFn,\n  [CHANGE_EVENT]: emitChangeFn,\n  close: () => true,\n  'expand-change': (value: CascaderNodePathValue) => value,\n}\n\nexport const useCascaderConfig = (props: { props: CascaderProps }) => {\n  return computed(() => ({\n    ...DefaultProps,\n    ...props.props,\n  }))\n}\n","import { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { useAriaProps, useSizeProp } from '@pit-element-plus/hooks'\nimport { isBoolean, isNumber, isString } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { AriaProps } from '@pit-element-plus/hooks'\nimport type Checkbox from './checkbox.vue'\n\nexport type CheckboxValueType = string | number | boolean\n\nexport interface CheckboxProps extends Pick<\n  AriaProps,\n  'ariaLabel' | 'ariaControls'\n> {\n  /**\n   * @description binding value\n   */\n  modelValue?: number | string | boolean\n  /**\n   * @description label of the Checkbox when used inside a `checkbox-group`\n   */\n  label?: string | boolean | number | object\n  /**\n   * @description value of the Checkbox when used inside a `checkbox-group`\n   */\n  value?: string | boolean | number | object\n  /**\n   * @description Set indeterminate state, only responsible for style control\n   */\n  indeterminate?: boolean\n  /**\n   * @description whether the Checkbox is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description if the Checkbox is checked\n   */\n  checked?: boolean\n  /**\n   * @description native 'name' attribute\n   */\n  name?: string\n  /**\n   * @description value of the Checkbox if it's checked\n   */\n  trueValue?: string | number\n  /**\n   * @description value of the Checkbox if it's not checked\n   */\n  falseValue?: string | number\n  /**\n   * @deprecated use `trueValue` instead\n   * @description value of the Checkbox if it's checked\n   */\n  trueLabel?: string | number\n  /**\n   * @deprecated use `falseValue` instead\n   * @description value of the Checkbox if it's not checked\n   */\n  falseLabel?: string | number\n  /**\n   * @description input id\n   */\n  id?: string\n  /**\n   * @description whether to add a border around Checkbox\n   */\n  border?: boolean\n  /**\n   * @description size of the Checkbox\n   */\n  size?: ComponentSize\n  /**\n   * @description input tabindex\n   */\n  tabindex?: string | number\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n}\n/**\n * @deprecated Removed after 3.0.0, Use `CheckboxProps` instead.\n */\nexport const checkboxProps = {\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: [Number, String, Boolean],\n    default: undefined,\n  },\n  /**\n   * @description label of the Checkbox when used inside a `checkbox-group`\n   */\n  label: {\n    type: [String, Boolean, Number, Object],\n    default: undefined,\n  },\n  /**\n   * @description value of the Checkbox when used inside a `checkbox-group`\n   */\n  value: {\n    type: [String, Boolean, Number, Object],\n    default: undefined,\n  },\n  /**\n   * @description Set indeterminate state, only responsible for style control\n   */\n  indeterminate: Boolean,\n  /**\n   * @description whether the Checkbox is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description if the Checkbox is checked\n   */\n  checked: Boolean,\n  /**\n   * @description native 'name' attribute\n   */\n  name: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description value of the Checkbox if it's checked\n   */\n  trueValue: {\n    type: [String, Number],\n    default: undefined,\n  },\n  /**\n   * @description value of the Checkbox if it's not checked\n   */\n  falseValue: {\n    type: [String, Number],\n    default: undefined,\n  },\n  /**\n   * @deprecated use `trueValue` instead\n   * @description value of the Checkbox if it's checked\n   */\n  trueLabel: {\n    type: [String, Number],\n    default: undefined,\n  },\n  /**\n   * @deprecated use `falseValue` instead\n   * @description value of the Checkbox if it's not checked\n   */\n  falseLabel: {\n    type: [String, Number],\n    default: undefined,\n  },\n  /**\n   * @description input id\n   */\n  id: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description whether to add a border around Checkbox\n   */\n  border: Boolean,\n  /**\n   * @description size of the Checkbox\n   */\n  size: useSizeProp,\n  /**\n   * @description input tabindex\n   */\n  tabindex: [String, Number],\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  ariaLabel: String,\n  ...useAriaProps(['ariaControls']),\n}\n\nexport const checkboxEmits = {\n  [UPDATE_MODEL_EVENT]: (val: CheckboxValueType) =>\n    isString(val) || isNumber(val) || isBoolean(val),\n  change: (val: CheckboxValueType) =>\n    isString(val) || isNumber(val) || isBoolean(val),\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CheckboxProps` instead.\n */\nexport type CheckboxPropsPublic = ExtractPublicPropTypes<typeof checkboxProps>\nexport type CheckboxEmits = typeof checkboxEmits\nexport type CheckboxInstance = InstanceType<typeof Checkbox> & unknown\n\nexport const checkboxPropsDefaults = {\n  modelValue: undefined,\n  label: undefined,\n  value: undefined,\n  disabled: undefined,\n  name: undefined,\n  trueValue: undefined,\n  falseValue: undefined,\n  trueLabel: undefined,\n  falseLabel: undefined,\n  id: undefined,\n  validateEvent: true,\n} as const\n","import type {\n  ComputedRef,\n  InjectionKey,\n  ToRefs,\n  WritableComputedRef,\n} from 'vue'\nimport type { CheckboxGroupProps } from './checkbox-group'\n\ntype CheckboxGroupContext = {\n  modelValue?: WritableComputedRef<any>\n  changeEvent?: (...args: any) => any\n  disabled?: ComputedRef<boolean>\n} & ToRefs<\n  Pick<\n    CheckboxGroupProps,\n    'size' | 'min' | 'max' | 'validateEvent' | 'fill' | 'textColor'\n  >\n>\n\nexport const checkboxGroupContextKey: InjectionKey<CheckboxGroupContext> =\n  Symbol('checkboxGroupContextKey')\n","import { computed, inject } from 'vue'\nimport {\n  formContextKey,\n  useFormDisabled,\n} from '@pit-element-plus/components/form'\nimport { isUndefined } from '@pit-element-plus/utils'\nimport { checkboxGroupContextKey } from '../constants'\n\nimport type { CheckboxModel, CheckboxStatus } from '../composables'\n\nexport const useCheckboxDisabled = ({\n  model,\n  isChecked,\n}: Pick<CheckboxModel, 'model'> & Pick<CheckboxStatus, 'isChecked'>) => {\n  const checkboxGroup = inject(checkboxGroupContextKey, undefined)\n  const formContext = inject(formContextKey, undefined)\n\n  const isLimitDisabled = computed(() => {\n    const max = checkboxGroup?.max?.value\n    const min = checkboxGroup?.min?.value\n    return (\n      (!isUndefined(max) && model.value.length >= max && !isChecked.value) ||\n      (!isUndefined(min) && model.value.length <= min && isChecked.value)\n    )\n  })\n\n  const isDisabled = useFormDisabled(\n    computed(() => {\n      // Directly use the checkbox\n      if (checkboxGroup === undefined) {\n        return formContext?.disabled ?? isLimitDisabled.value\n      } else {\n        return checkboxGroup.disabled?.value || isLimitDisabled.value\n      }\n    })\n  )\n\n  return {\n    isDisabled,\n    isLimitDisabled,\n  }\n}\n\nexport type CheckboxDisabled = ReturnType<typeof useCheckboxDisabled>\n","import { computed, getCurrentInstance, inject, nextTick, watch } from 'vue'\nimport { useFormItem } from '@pit-element-plus/components/form'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { checkboxGroupContextKey } from '../constants'\n\nimport type { useFormItemInputId } from '@pit-element-plus/components/form'\nimport type { CheckboxProps } from '../checkbox'\nimport type {\n  CheckboxDisabled,\n  CheckboxModel,\n  CheckboxStatus,\n} from '../composables'\n\nexport const useCheckboxEvent = (\n  props: CheckboxProps,\n  {\n    model,\n    isLimitExceeded,\n    hasOwnLabel,\n    isDisabled,\n    isLabeledByFormItem,\n  }: Pick<CheckboxModel, 'model' | 'isLimitExceeded'> &\n    Pick<CheckboxStatus, 'hasOwnLabel'> &\n    Pick<CheckboxDisabled, 'isDisabled'> &\n    Pick<ReturnType<typeof useFormItemInputId>, 'isLabeledByFormItem'>\n) => {\n  const checkboxGroup = inject(checkboxGroupContextKey, undefined)\n  const { formItem } = useFormItem()\n  const { emit } = getCurrentInstance()!\n\n  function getLabeledValue(value: string | number | boolean) {\n    return [true, props.trueValue, props.trueLabel].includes(value)\n      ? (props.trueValue ?? props.trueLabel ?? true)\n      : (props.falseValue ?? props.falseLabel ?? false)\n  }\n\n  function emitChangeEvent(\n    checked: string | number | boolean,\n    e: InputEvent | MouseEvent\n  ) {\n    emit(CHANGE_EVENT, getLabeledValue(checked), e)\n  }\n\n  function handleChange(e: Event) {\n    if (isLimitExceeded.value) return\n\n    const target = e.target as HTMLInputElement\n    emit(CHANGE_EVENT, getLabeledValue(target.checked), e)\n  }\n\n  async function onClickRoot(e: MouseEvent) {\n    if (isLimitExceeded.value) return\n\n    if (!hasOwnLabel.value && !isDisabled.value && isLabeledByFormItem.value) {\n      // fix: https://github.com/element-plus/element-plus/issues/9981\n      const eventTargets: EventTarget[] = e.composedPath()\n      const hasLabel = eventTargets.some(\n        (item) => (item as HTMLElement).tagName === 'LABEL'\n      )\n      if (!hasLabel) {\n        model.value = getLabeledValue(\n          [false, props.falseValue, props.falseLabel].includes(model.value)\n        )\n        await nextTick()\n        emitChangeEvent(model.value, e)\n      }\n    }\n  }\n\n  const validateEvent = computed(\n    () => checkboxGroup?.validateEvent || props.validateEvent\n  )\n\n  watch(\n    () => props.modelValue,\n    () => {\n      if (validateEvent.value) {\n        formItem?.validate('change').catch((err) => debugWarn(err))\n      }\n    }\n  )\n\n  return {\n    handleChange,\n    onClickRoot,\n  }\n}\n","import { computed, getCurrentInstance, inject, ref } from 'vue'\nimport { isArray, isUndefined } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { checkboxGroupContextKey } from '../constants'\n\nimport type { CheckboxProps } from '../checkbox'\n\nexport const useCheckboxModel = (props: CheckboxProps) => {\n  const selfModel = ref<unknown>(false)\n  const { emit } = getCurrentInstance()!\n  const checkboxGroup = inject(checkboxGroupContextKey, undefined)\n  const isGroup = computed(() => isUndefined(checkboxGroup) === false)\n  const isLimitExceeded = ref(false)\n  const model = computed({\n    get() {\n      return isGroup.value\n        ? checkboxGroup?.modelValue?.value\n        : (props.modelValue ?? selfModel.value)\n    },\n\n    set(val: unknown) {\n      if (isGroup.value && isArray(val)) {\n        isLimitExceeded.value =\n          checkboxGroup?.max?.value !== undefined &&\n          val.length > checkboxGroup?.max.value &&\n          val.length > model.value.length\n        isLimitExceeded.value === false && checkboxGroup?.changeEvent?.(val)\n      } else {\n        emit(UPDATE_MODEL_EVENT, val)\n        selfModel.value = val\n      }\n    },\n  })\n\n  return {\n    model,\n    isGroup,\n    isLimitExceeded,\n  }\n}\n\nexport type CheckboxModel = ReturnType<typeof useCheckboxModel>\n","import { computed, inject, ref, toRaw } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport {\n  isArray,\n  isBoolean,\n  isObject,\n  isPropAbsent,\n} from '@pit-element-plus/utils'\nimport { checkboxGroupContextKey } from '../constants'\n\nimport type { ComponentInternalInstance } from 'vue'\nimport type { CheckboxProps } from '../checkbox'\nimport type { CheckboxModel } from '../composables'\n\nexport const useCheckboxStatus = (\n  props: CheckboxProps,\n  slots: ComponentInternalInstance['slots'],\n  { model }: Pick<CheckboxModel, 'model'>\n) => {\n  const checkboxGroup = inject(checkboxGroupContextKey, undefined)\n  const isFocused = ref(false)\n  const actualValue = computed(() => {\n    // In version 2.x, if there's no props.value, props.label will act as props.value\n    // In version 3.x, remove this computed value, use props.value instead.\n    if (!isPropAbsent(props.value)) {\n      return props.value\n    }\n    return props.label\n  })\n  const isChecked = computed<boolean>(() => {\n    const value = model.value\n    if (isBoolean(value)) {\n      return value\n    } else if (isArray(value)) {\n      if (isObject(actualValue.value)) {\n        return value.map(toRaw).some((o) => isEqual(o, actualValue.value))\n      } else {\n        return value.map(toRaw).includes(actualValue.value)\n      }\n    } else if (value !== null && value !== undefined) {\n      return value === props.trueValue || value === props.trueLabel\n    } else {\n      return !!value\n    }\n  })\n\n  const checkboxButtonSize = useFormSize(\n    computed(() => checkboxGroup?.size?.value),\n    {\n      prop: true,\n    }\n  )\n  const checkboxSize = useFormSize(computed(() => checkboxGroup?.size?.value))\n\n  const hasOwnLabel = computed<boolean>(() => {\n    return !!slots.default || !isPropAbsent(actualValue.value)\n  })\n\n  return {\n    checkboxButtonSize,\n    isChecked,\n    isFocused,\n    checkboxSize,\n    hasOwnLabel,\n    actualValue,\n  }\n}\n\nexport type CheckboxStatus = ReturnType<typeof useCheckboxStatus>\n","import { computed } from 'vue'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { isArray, isPropAbsent } from '@pit-element-plus/utils'\nimport { useDeprecated } from '@pit-element-plus/hooks'\nimport { useCheckboxDisabled } from './use-checkbox-disabled'\nimport { useCheckboxEvent } from './use-checkbox-event'\nimport { useCheckboxModel } from './use-checkbox-model'\nimport { useCheckboxStatus } from './use-checkbox-status'\n\nimport type { ComponentInternalInstance } from 'vue'\nimport type { CheckboxProps } from '../checkbox'\n\nexport const useCheckbox = (\n  props: CheckboxProps,\n  slots: ComponentInternalInstance['slots']\n) => {\n  const { formItem: elFormItem } = useFormItem()\n  const { model, isGroup, isLimitExceeded } = useCheckboxModel(props)\n  const {\n    isFocused,\n    isChecked,\n    checkboxButtonSize,\n    checkboxSize,\n    hasOwnLabel,\n    actualValue,\n  } = useCheckboxStatus(props, slots, { model })\n  const { isDisabled } = useCheckboxDisabled({ model, isChecked })\n  const { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n    formItemContext: elFormItem,\n    disableIdGeneration: hasOwnLabel,\n    disableIdManagement: isGroup,\n  })\n  const { handleChange, onClickRoot } = useCheckboxEvent(props, {\n    model,\n    isLimitExceeded,\n    hasOwnLabel,\n    isDisabled,\n    isLabeledByFormItem,\n  })\n\n  const setStoreValue = () => {\n    function addToStore() {\n      if (isArray(model.value) && !model.value.includes(actualValue.value)) {\n        model.value.push(actualValue.value)\n      } else {\n        model.value = props.trueValue ?? props.trueLabel ?? true\n      }\n    }\n    props.checked && addToStore()\n  }\n\n  setStoreValue()\n\n  useDeprecated(\n    {\n      from: 'label act as value',\n      replacement: 'value',\n      version: '3.0.0',\n      scope: 'el-checkbox',\n      ref: 'https://element-plus.org/en-US/component/checkbox.html',\n    },\n    computed(() => isGroup.value && isPropAbsent(props.value))\n  )\n\n  useDeprecated(\n    {\n      from: 'true-label',\n      replacement: 'true-value',\n      version: '3.0.0',\n      scope: 'el-checkbox',\n      ref: 'https://element-plus.org/en-US/component/checkbox.html',\n    },\n    computed(() => !!props.trueLabel)\n  )\n\n  useDeprecated(\n    {\n      from: 'false-label',\n      replacement: 'false-value',\n      version: '3.0.0',\n      scope: 'el-checkbox',\n      ref: 'https://element-plus.org/en-US/component/checkbox.html',\n    },\n    computed(() => !!props.falseLabel)\n  )\n\n  return {\n    inputId,\n    isLabeledByFormItem,\n    isChecked,\n    isDisabled,\n    isFocused,\n    checkboxButtonSize,\n    checkboxSize,\n    hasOwnLabel,\n    model,\n    actualValue,\n    handleChange,\n    onClickRoot,\n  }\n}\n","<template>\n  <component\n    :is=\"!hasOwnLabel && isLabeledByFormItem ? 'span' : 'label'\"\n    :for=\"!hasOwnLabel && isLabeledByFormItem ? null : inputId\"\n    :class=\"compKls\"\n    :aria-controls=\"indeterminate ? ariaControls : null\"\n    :aria-checked=\"indeterminate ? 'mixed' : undefined\"\n    :aria-label=\"ariaLabel\"\n    @click=\"onClickRoot\"\n  >\n    <span :class=\"spanKls\">\n      <input\n        :id=\"inputId\"\n        v-model=\"model\"\n        :class=\"ns.e('original')\"\n        type=\"checkbox\"\n        :indeterminate=\"indeterminate\"\n        :name=\"name\"\n        :tabindex=\"tabindex\"\n        :disabled=\"isDisabled\"\n        v-bind=\"inputBindings\"\n        @change=\"handleChange\"\n        @focus=\"isFocused = true\"\n        @blur=\"isFocused = false\"\n        @click.stop\n      />\n      <span :class=\"ns.e('inner')\" />\n    </span>\n    <span v-if=\"hasOwnLabel\" :class=\"ns.e('label')\">\n      <slot />\n      <template v-if=\"!$slots.default\">{{ label }}</template>\n    </span>\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { checkboxEmits, checkboxPropsDefaults } from './checkbox'\nimport { useCheckbox } from './composables'\n\nimport type { CheckboxProps } from './checkbox'\n\ndefineOptions({\n  name: 'ElCheckbox',\n})\n\nconst props = withDefaults(defineProps<CheckboxProps>(), checkboxPropsDefaults)\ndefineEmits(checkboxEmits)\nconst slots = useSlots()\n\nconst {\n  inputId,\n  isLabeledByFormItem,\n  isChecked,\n  isDisabled,\n  isFocused,\n  checkboxSize,\n  hasOwnLabel,\n  model,\n  actualValue,\n  handleChange,\n  onClickRoot,\n} = useCheckbox(props, slots)\n\nconst inputBindings = computed(() => {\n  if (\n    props.trueValue ||\n    props.falseValue ||\n    props.trueLabel ||\n    props.falseLabel\n  ) {\n    return {\n      'true-value': props.trueValue ?? props.trueLabel ?? true,\n      'false-value': props.falseValue ?? props.falseLabel ?? false,\n    }\n  }\n  return {\n    value: actualValue.value,\n  }\n})\n\nconst ns = useNamespace('checkbox')\n\nconst compKls = computed(() => {\n  return [\n    ns.b(),\n    ns.m(checkboxSize.value),\n    ns.is('disabled', isDisabled.value),\n    ns.is('bordered', props.border),\n    ns.is('checked', isChecked.value),\n  ]\n})\n\nconst spanKls = computed(() => {\n  return [\n    ns.e('input'),\n    ns.is('disabled', isDisabled.value),\n    ns.is('checked', isChecked.value),\n    ns.is('indeterminate', props.indeterminate),\n    ns.is('focus', isFocused.value),\n  ]\n})\n</script>\n","<template>\n  <component\n    :is=\"!hasOwnLabel && isLabeledByFormItem ? 'span' : 'label'\"\n    :for=\"!hasOwnLabel && isLabeledByFormItem ? null : inputId\"\n    :class=\"compKls\"\n    :aria-controls=\"indeterminate ? ariaControls : null\"\n    :aria-checked=\"indeterminate ? 'mixed' : undefined\"\n    :aria-label=\"ariaLabel\"\n    @click=\"onClickRoot\"\n  >\n    <span :class=\"spanKls\">\n      <input\n        :id=\"inputId\"\n        v-model=\"model\"\n        :class=\"ns.e('original')\"\n        type=\"checkbox\"\n        :indeterminate=\"indeterminate\"\n        :name=\"name\"\n        :tabindex=\"tabindex\"\n        :disabled=\"isDisabled\"\n        v-bind=\"inputBindings\"\n        @change=\"handleChange\"\n        @focus=\"isFocused = true\"\n        @blur=\"isFocused = false\"\n        @click.stop\n      />\n      <span :class=\"ns.e('inner')\" />\n    </span>\n    <span v-if=\"hasOwnLabel\" :class=\"ns.e('label')\">\n      <slot />\n      <template v-if=\"!$slots.default\">{{ label }}</template>\n    </span>\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { checkboxEmits, checkboxPropsDefaults } from './checkbox'\nimport { useCheckbox } from './composables'\n\nimport type { CheckboxProps } from './checkbox'\n\ndefineOptions({\n  name: 'ElCheckbox',\n})\n\nconst props = withDefaults(defineProps<CheckboxProps>(), checkboxPropsDefaults)\ndefineEmits(checkboxEmits)\nconst slots = useSlots()\n\nconst {\n  inputId,\n  isLabeledByFormItem,\n  isChecked,\n  isDisabled,\n  isFocused,\n  checkboxSize,\n  hasOwnLabel,\n  model,\n  actualValue,\n  handleChange,\n  onClickRoot,\n} = useCheckbox(props, slots)\n\nconst inputBindings = computed(() => {\n  if (\n    props.trueValue ||\n    props.falseValue ||\n    props.trueLabel ||\n    props.falseLabel\n  ) {\n    return {\n      'true-value': props.trueValue ?? props.trueLabel ?? true,\n      'false-value': props.falseValue ?? props.falseLabel ?? false,\n    }\n  }\n  return {\n    value: actualValue.value,\n  }\n})\n\nconst ns = useNamespace('checkbox')\n\nconst compKls = computed(() => {\n  return [\n    ns.b(),\n    ns.m(checkboxSize.value),\n    ns.is('disabled', isDisabled.value),\n    ns.is('bordered', props.border),\n    ns.is('checked', isChecked.value),\n  ]\n})\n\nconst spanKls = computed(() => {\n  return [\n    ns.e('input'),\n    ns.is('disabled', isDisabled.value),\n    ns.is('checked', isChecked.value),\n    ns.is('indeterminate', props.indeterminate),\n    ns.is('focus', isFocused.value),\n  ]\n})\n</script>\n","<template>\n  <component\n    :is=\"!hasOwnLabel && isLabeledByFormItem ? 'span' : 'label'\"\n    :for=\"!hasOwnLabel && isLabeledByFormItem ? null : inputId\"\n    :class=\"compKls\"\n    :aria-controls=\"indeterminate ? ariaControls : null\"\n    :aria-checked=\"indeterminate ? 'mixed' : undefined\"\n    :aria-label=\"ariaLabel\"\n    @click=\"onClickRoot\"\n  >\n    <span :class=\"spanKls\">\n      <input\n        :id=\"inputId\"\n        v-model=\"model\"\n        :class=\"ns.e('original')\"\n        type=\"checkbox\"\n        :indeterminate=\"indeterminate\"\n        :name=\"name\"\n        :tabindex=\"tabindex\"\n        :disabled=\"isDisabled\"\n        v-bind=\"inputBindings\"\n        @change=\"handleChange\"\n        @focus=\"isFocused = true\"\n        @blur=\"isFocused = false\"\n        @click.stop\n      />\n      <span :class=\"ns.e('inner')\" />\n    </span>\n    <span v-if=\"hasOwnLabel\" :class=\"ns.e('label')\">\n      <slot />\n      <template v-if=\"!$slots.default\">{{ label }}</template>\n    </span>\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { checkboxEmits, checkboxPropsDefaults } from './checkbox'\nimport { useCheckbox } from './composables'\n\nimport type { CheckboxProps } from './checkbox'\n\ndefineOptions({\n  name: 'ElCheckbox',\n})\n\nconst props = withDefaults(defineProps<CheckboxProps>(), checkboxPropsDefaults)\ndefineEmits(checkboxEmits)\nconst slots = useSlots()\n\nconst {\n  inputId,\n  isLabeledByFormItem,\n  isChecked,\n  isDisabled,\n  isFocused,\n  checkboxSize,\n  hasOwnLabel,\n  model,\n  actualValue,\n  handleChange,\n  onClickRoot,\n} = useCheckbox(props, slots)\n\nconst inputBindings = computed(() => {\n  if (\n    props.trueValue ||\n    props.falseValue ||\n    props.trueLabel ||\n    props.falseLabel\n  ) {\n    return {\n      'true-value': props.trueValue ?? props.trueLabel ?? true,\n      'false-value': props.falseValue ?? props.falseLabel ?? false,\n    }\n  }\n  return {\n    value: actualValue.value,\n  }\n})\n\nconst ns = useNamespace('checkbox')\n\nconst compKls = computed(() => {\n  return [\n    ns.b(),\n    ns.m(checkboxSize.value),\n    ns.is('disabled', isDisabled.value),\n    ns.is('bordered', props.border),\n    ns.is('checked', isChecked.value),\n  ]\n})\n\nconst spanKls = computed(() => {\n  return [\n    ns.e('input'),\n    ns.is('disabled', isDisabled.value),\n    ns.is('checked', isChecked.value),\n    ns.is('indeterminate', props.indeterminate),\n    ns.is('focus', isFocused.value),\n  ]\n})\n</script>\n","<template>\n  <label :class=\"labelKls\">\n    <input\n      v-model=\"model\"\n      :class=\"ns.be('button', 'original')\"\n      type=\"checkbox\"\n      :name=\"name\"\n      :tabindex=\"tabindex\"\n      :disabled=\"isDisabled\"\n      v-bind=\"inputBindings\"\n      @change=\"handleChange\"\n      @focus=\"isFocused = true\"\n      @blur=\"isFocused = false\"\n      @click.stop\n    />\n\n    <span\n      v-if=\"$slots.default || label\"\n      :class=\"ns.be('button', 'inner')\"\n      :style=\"isChecked ? activeStyle : undefined\"\n    >\n      <slot>{{ label }}</slot>\n    </span>\n  </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { checkboxGroupContextKey } from './constants'\nimport { useCheckbox } from './composables'\nimport { checkboxEmits, checkboxPropsDefaults } from './checkbox'\n\nimport type { CSSProperties } from 'vue'\nimport type { CheckboxProps } from './checkbox'\n\ndefineOptions({\n  name: 'ElCheckboxButton',\n})\n\nconst props = withDefaults(defineProps<CheckboxProps>(), checkboxPropsDefaults)\ndefineEmits(checkboxEmits)\nconst slots = useSlots()\n\nconst {\n  isFocused,\n  isChecked,\n  isDisabled,\n  checkboxButtonSize,\n  model,\n  actualValue,\n  handleChange,\n} = useCheckbox(props, slots)\n\nconst inputBindings = computed(() => {\n  if (\n    props.trueValue ||\n    props.falseValue ||\n    props.trueLabel ||\n    props.falseLabel\n  ) {\n    return {\n      'true-value': props.trueValue ?? props.trueLabel ?? true,\n      'false-value': props.falseValue ?? props.falseLabel ?? false,\n    }\n  }\n  return {\n    value: actualValue.value,\n  }\n})\n\nconst checkboxGroup = inject(checkboxGroupContextKey, undefined)\nconst ns = useNamespace('checkbox')\n\nconst activeStyle = computed<CSSProperties>(() => {\n  const fillValue = checkboxGroup?.fill?.value ?? ''\n  return {\n    backgroundColor: fillValue,\n    borderColor: fillValue,\n    color: checkboxGroup?.textColor?.value ?? '',\n    boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : undefined,\n  }\n})\n\nconst labelKls = computed(() => {\n  return [\n    ns.b('button'),\n    ns.bm('button', checkboxButtonSize.value),\n    ns.is('disabled', isDisabled.value),\n    ns.is('checked', isChecked.value),\n    ns.is('focus', isFocused.value),\n  ]\n})\n</script>\n","<template>\n  <label :class=\"labelKls\">\n    <input\n      v-model=\"model\"\n      :class=\"ns.be('button', 'original')\"\n      type=\"checkbox\"\n      :name=\"name\"\n      :tabindex=\"tabindex\"\n      :disabled=\"isDisabled\"\n      v-bind=\"inputBindings\"\n      @change=\"handleChange\"\n      @focus=\"isFocused = true\"\n      @blur=\"isFocused = false\"\n      @click.stop\n    />\n\n    <span\n      v-if=\"$slots.default || label\"\n      :class=\"ns.be('button', 'inner')\"\n      :style=\"isChecked ? activeStyle : undefined\"\n    >\n      <slot>{{ label }}</slot>\n    </span>\n  </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { checkboxGroupContextKey } from './constants'\nimport { useCheckbox } from './composables'\nimport { checkboxEmits, checkboxPropsDefaults } from './checkbox'\n\nimport type { CSSProperties } from 'vue'\nimport type { CheckboxProps } from './checkbox'\n\ndefineOptions({\n  name: 'ElCheckboxButton',\n})\n\nconst props = withDefaults(defineProps<CheckboxProps>(), checkboxPropsDefaults)\ndefineEmits(checkboxEmits)\nconst slots = useSlots()\n\nconst {\n  isFocused,\n  isChecked,\n  isDisabled,\n  checkboxButtonSize,\n  model,\n  actualValue,\n  handleChange,\n} = useCheckbox(props, slots)\n\nconst inputBindings = computed(() => {\n  if (\n    props.trueValue ||\n    props.falseValue ||\n    props.trueLabel ||\n    props.falseLabel\n  ) {\n    return {\n      'true-value': props.trueValue ?? props.trueLabel ?? true,\n      'false-value': props.falseValue ?? props.falseLabel ?? false,\n    }\n  }\n  return {\n    value: actualValue.value,\n  }\n})\n\nconst checkboxGroup = inject(checkboxGroupContextKey, undefined)\nconst ns = useNamespace('checkbox')\n\nconst activeStyle = computed<CSSProperties>(() => {\n  const fillValue = checkboxGroup?.fill?.value ?? ''\n  return {\n    backgroundColor: fillValue,\n    borderColor: fillValue,\n    color: checkboxGroup?.textColor?.value ?? '',\n    boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : undefined,\n  }\n})\n\nconst labelKls = computed(() => {\n  return [\n    ns.b('button'),\n    ns.bm('button', checkboxButtonSize.value),\n    ns.is('disabled', isDisabled.value),\n    ns.is('checked', isChecked.value),\n    ns.is('focus', isFocused.value),\n  ]\n})\n</script>\n","<template>\n  <label :class=\"labelKls\">\n    <input\n      v-model=\"model\"\n      :class=\"ns.be('button', 'original')\"\n      type=\"checkbox\"\n      :name=\"name\"\n      :tabindex=\"tabindex\"\n      :disabled=\"isDisabled\"\n      v-bind=\"inputBindings\"\n      @change=\"handleChange\"\n      @focus=\"isFocused = true\"\n      @blur=\"isFocused = false\"\n      @click.stop\n    />\n\n    <span\n      v-if=\"$slots.default || label\"\n      :class=\"ns.be('button', 'inner')\"\n      :style=\"isChecked ? activeStyle : undefined\"\n    >\n      <slot>{{ label }}</slot>\n    </span>\n  </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { checkboxGroupContextKey } from './constants'\nimport { useCheckbox } from './composables'\nimport { checkboxEmits, checkboxPropsDefaults } from './checkbox'\n\nimport type { CSSProperties } from 'vue'\nimport type { CheckboxProps } from './checkbox'\n\ndefineOptions({\n  name: 'ElCheckboxButton',\n})\n\nconst props = withDefaults(defineProps<CheckboxProps>(), checkboxPropsDefaults)\ndefineEmits(checkboxEmits)\nconst slots = useSlots()\n\nconst {\n  isFocused,\n  isChecked,\n  isDisabled,\n  checkboxButtonSize,\n  model,\n  actualValue,\n  handleChange,\n} = useCheckbox(props, slots)\n\nconst inputBindings = computed(() => {\n  if (\n    props.trueValue ||\n    props.falseValue ||\n    props.trueLabel ||\n    props.falseLabel\n  ) {\n    return {\n      'true-value': props.trueValue ?? props.trueLabel ?? true,\n      'false-value': props.falseValue ?? props.falseLabel ?? false,\n    }\n  }\n  return {\n    value: actualValue.value,\n  }\n})\n\nconst checkboxGroup = inject(checkboxGroupContextKey, undefined)\nconst ns = useNamespace('checkbox')\n\nconst activeStyle = computed<CSSProperties>(() => {\n  const fillValue = checkboxGroup?.fill?.value ?? ''\n  return {\n    backgroundColor: fillValue,\n    borderColor: fillValue,\n    color: checkboxGroup?.textColor?.value ?? '',\n    boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : undefined,\n  }\n})\n\nconst labelKls = computed(() => {\n  return [\n    ns.b('button'),\n    ns.bm('button', checkboxButtonSize.value),\n    ns.is('disabled', isDisabled.value),\n    ns.is('checked', isChecked.value),\n    ns.is('focus', isFocused.value),\n  ]\n})\n</script>\n","import { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { useAriaProps, useSizeProp } from '@pit-element-plus/hooks'\nimport { buildProps, definePropType, isArray } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type checkboxGroup from './checkbox-group.vue'\nimport type { CheckboxProps, CheckboxValueType } from './checkbox'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { AriaProps } from '@pit-element-plus/hooks'\n\nexport type CheckboxGroupValueType = Exclude<CheckboxValueType, boolean>[]\n\nexport interface CheckboxGroupProps extends Pick<AriaProps, 'ariaLabel'> {\n  /**\n   * @description binding value\n   */\n  modelValue?: CheckboxGroupValueType\n  /**\n   * @description whether the nesting checkboxes are disabled\n   */\n  disabled?: boolean\n  /**\n   * @description minimum number of checkbox checked\n   */\n  min?: number\n  /**\n   * @description maximum number of checkbox checked\n   */\n  max?: number\n  /**\n   * @description size of checkbox\n   */\n  size?: ComponentSize\n  /**\n   * @description border and background color when button is active\n   */\n  fill?: string\n  /**\n   * @description font color when button is active\n   */\n  textColor?: string\n  /**\n   * @description element tag of the checkbox group\n   */\n  tag?: string\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n  /**\n   * @description data of the options, the key of `value` and `label` and `disabled` can be customize by `props`\n   */\n  options?: CheckboxOption[]\n  /**\n   * @description configuration options\n   */\n  props?: CheckboxOptionProps\n  /**\n   * @description component type to render options (e.g. `'button'`)\n   */\n  type?: 'checkbox' | 'button'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CheckboxGroupProps` instead.\n */\nexport const checkboxGroupProps = buildProps({\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<CheckboxGroupValueType>(Array),\n    default: () => [],\n  },\n  /**\n   * @description whether the nesting checkboxes are disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description minimum number of checkbox checked\n   */\n  min: Number,\n  /**\n   * @description maximum number of checkbox checked\n   */\n  max: Number,\n  /**\n   * @description size of checkbox\n   */\n  size: useSizeProp,\n  /**\n   * @description border and background color when button is active\n   */\n  fill: String,\n  /**\n   * @description font color when button is active\n   */\n  textColor: String,\n  /**\n   * @description element tag of the checkbox group\n   */\n  tag: {\n    type: String,\n    default: 'div',\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  options: {\n    type: definePropType<CheckboxOption[]>(Array),\n  },\n  props: {\n    type: definePropType<CheckboxOptionProps>(Object),\n    default: () => checkboxDefaultProps,\n  },\n  type: {\n    type: String,\n    values: ['checkbox', 'button'] as const,\n    default: 'checkbox',\n  },\n  ...useAriaProps(['ariaLabel']),\n} as const)\n\nexport const checkboxGroupEmits = {\n  [UPDATE_MODEL_EVENT]: (val: CheckboxGroupValueType) => isArray(val),\n  change: (val: CheckboxValueType[]) => isArray(val),\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CheckboxGroupProps` instead.\n */\nexport type CheckboxGroupPropsPublic = ExtractPublicPropTypes<\n  typeof checkboxGroupProps\n>\nexport type CheckboxGroupEmits = typeof checkboxGroupEmits\nexport type CheckboxGroupInstance = InstanceType<typeof checkboxGroup> & unknown\n\nexport type CheckboxOption = CheckboxProps & Record<string, any>\n\ntype CheckboxOptionProps = {\n  value?: string\n  label?: string\n  disabled?: string\n}\nexport const checkboxDefaultProps: Required<CheckboxOptionProps> = {\n  label: 'label',\n  value: 'value',\n  disabled: 'disabled',\n}\n","<template>\n  <component\n    :is=\"tag\"\n    :id=\"groupId\"\n    :class=\"ns.b('group')\"\n    role=\"group\"\n    :aria-label=\"\n      !isLabeledByFormItem ? ariaLabel || 'checkbox-group' : undefined\n    \"\n    :aria-labelledby=\"isLabeledByFormItem ? formItem?.labelId : undefined\"\n  >\n    <slot>\n      <component\n        :is=\"optionComponent\"\n        v-for=\"(item, index) in options\"\n        :key=\"index\"\n        v-bind=\"getOptionProps(item)\"\n      />\n    </slot>\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, provide, toRefs, watch } from 'vue'\nimport { isEqual, omit, pick } from 'lodash-unified'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { checkboxDefaultProps, checkboxGroupEmits } from './checkbox-group'\nimport { checkboxGroupContextKey } from './constants'\nimport ElCheckbox from './checkbox.vue'\nimport ElCheckboxButton from './checkbox-button.vue'\n\nimport type {\n  CheckboxGroupProps,\n  CheckboxGroupValueType,\n} from './checkbox-group'\n\ndefineOptions({\n  name: 'ElCheckboxGroup',\n})\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n  modelValue: () => [],\n  disabled: undefined,\n  tag: 'div',\n  validateEvent: true,\n  props: () => checkboxDefaultProps,\n  type: 'checkbox',\n})\nconst emit = defineEmits(checkboxGroupEmits)\nconst ns = useNamespace('checkbox')\n\nconst checkboxDisabled = useFormDisabled()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst changeEvent = async (value: CheckboxGroupValueType) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  await nextTick()\n  emit(CHANGE_EVENT, value)\n}\n\nconst modelValue = computed({\n  get() {\n    return props.modelValue\n  },\n  set(val: CheckboxGroupValueType) {\n    changeEvent(val)\n  },\n})\n\nconst aliasProps = computed(() => ({\n  ...checkboxDefaultProps,\n  ...props.props,\n}))\nconst getOptionProps = (option: Record<string, any>) => {\n  const { label, value, disabled } = aliasProps.value\n  const base = {\n    label: option[label],\n    value: option[value],\n    disabled: option[disabled],\n  }\n  return { ...omit(option, [label, value, disabled]), ...base }\n}\n\nconst optionComponent = computed(() =>\n  props.type === 'button' ? ElCheckboxButton : ElCheckbox\n)\n\nprovide(checkboxGroupContextKey, {\n  ...pick(toRefs(props), [\n    'size',\n    'min',\n    'max',\n    'validateEvent',\n    'fill',\n    'textColor',\n  ]),\n  disabled: checkboxDisabled,\n  modelValue,\n  changeEvent,\n})\n\nwatch(\n  () => props.modelValue,\n  (newVal, oldValue) => {\n    if (props.validateEvent && !isEqual(newVal, oldValue)) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n</script>\n","<template>\n  <component\n    :is=\"tag\"\n    :id=\"groupId\"\n    :class=\"ns.b('group')\"\n    role=\"group\"\n    :aria-label=\"\n      !isLabeledByFormItem ? ariaLabel || 'checkbox-group' : undefined\n    \"\n    :aria-labelledby=\"isLabeledByFormItem ? formItem?.labelId : undefined\"\n  >\n    <slot>\n      <component\n        :is=\"optionComponent\"\n        v-for=\"(item, index) in options\"\n        :key=\"index\"\n        v-bind=\"getOptionProps(item)\"\n      />\n    </slot>\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, provide, toRefs, watch } from 'vue'\nimport { isEqual, omit, pick } from 'lodash-unified'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { checkboxDefaultProps, checkboxGroupEmits } from './checkbox-group'\nimport { checkboxGroupContextKey } from './constants'\nimport ElCheckbox from './checkbox.vue'\nimport ElCheckboxButton from './checkbox-button.vue'\n\nimport type {\n  CheckboxGroupProps,\n  CheckboxGroupValueType,\n} from './checkbox-group'\n\ndefineOptions({\n  name: 'ElCheckboxGroup',\n})\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n  modelValue: () => [],\n  disabled: undefined,\n  tag: 'div',\n  validateEvent: true,\n  props: () => checkboxDefaultProps,\n  type: 'checkbox',\n})\nconst emit = defineEmits(checkboxGroupEmits)\nconst ns = useNamespace('checkbox')\n\nconst checkboxDisabled = useFormDisabled()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst changeEvent = async (value: CheckboxGroupValueType) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  await nextTick()\n  emit(CHANGE_EVENT, value)\n}\n\nconst modelValue = computed({\n  get() {\n    return props.modelValue\n  },\n  set(val: CheckboxGroupValueType) {\n    changeEvent(val)\n  },\n})\n\nconst aliasProps = computed(() => ({\n  ...checkboxDefaultProps,\n  ...props.props,\n}))\nconst getOptionProps = (option: Record<string, any>) => {\n  const { label, value, disabled } = aliasProps.value\n  const base = {\n    label: option[label],\n    value: option[value],\n    disabled: option[disabled],\n  }\n  return { ...omit(option, [label, value, disabled]), ...base }\n}\n\nconst optionComponent = computed(() =>\n  props.type === 'button' ? ElCheckboxButton : ElCheckbox\n)\n\nprovide(checkboxGroupContextKey, {\n  ...pick(toRefs(props), [\n    'size',\n    'min',\n    'max',\n    'validateEvent',\n    'fill',\n    'textColor',\n  ]),\n  disabled: checkboxDisabled,\n  modelValue,\n  changeEvent,\n})\n\nwatch(\n  () => props.modelValue,\n  (newVal, oldValue) => {\n    if (props.validateEvent && !isEqual(newVal, oldValue)) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n</script>\n","<template>\n  <component\n    :is=\"tag\"\n    :id=\"groupId\"\n    :class=\"ns.b('group')\"\n    role=\"group\"\n    :aria-label=\"\n      !isLabeledByFormItem ? ariaLabel || 'checkbox-group' : undefined\n    \"\n    :aria-labelledby=\"isLabeledByFormItem ? formItem?.labelId : undefined\"\n  >\n    <slot>\n      <component\n        :is=\"optionComponent\"\n        v-for=\"(item, index) in options\"\n        :key=\"index\"\n        v-bind=\"getOptionProps(item)\"\n      />\n    </slot>\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, provide, toRefs, watch } from 'vue'\nimport { isEqual, omit, pick } from 'lodash-unified'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { checkboxDefaultProps, checkboxGroupEmits } from './checkbox-group'\nimport { checkboxGroupContextKey } from './constants'\nimport ElCheckbox from './checkbox.vue'\nimport ElCheckboxButton from './checkbox-button.vue'\n\nimport type {\n  CheckboxGroupProps,\n  CheckboxGroupValueType,\n} from './checkbox-group'\n\ndefineOptions({\n  name: 'ElCheckboxGroup',\n})\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n  modelValue: () => [],\n  disabled: undefined,\n  tag: 'div',\n  validateEvent: true,\n  props: () => checkboxDefaultProps,\n  type: 'checkbox',\n})\nconst emit = defineEmits(checkboxGroupEmits)\nconst ns = useNamespace('checkbox')\n\nconst checkboxDisabled = useFormDisabled()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst changeEvent = async (value: CheckboxGroupValueType) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  await nextTick()\n  emit(CHANGE_EVENT, value)\n}\n\nconst modelValue = computed({\n  get() {\n    return props.modelValue\n  },\n  set(val: CheckboxGroupValueType) {\n    changeEvent(val)\n  },\n})\n\nconst aliasProps = computed(() => ({\n  ...checkboxDefaultProps,\n  ...props.props,\n}))\nconst getOptionProps = (option: Record<string, any>) => {\n  const { label, value, disabled } = aliasProps.value\n  const base = {\n    label: option[label],\n    value: option[value],\n    disabled: option[disabled],\n  }\n  return { ...omit(option, [label, value, disabled]), ...base }\n}\n\nconst optionComponent = computed(() =>\n  props.type === 'button' ? ElCheckboxButton : ElCheckbox\n)\n\nprovide(checkboxGroupContextKey, {\n  ...pick(toRefs(props), [\n    'size',\n    'min',\n    'max',\n    'validateEvent',\n    'fill',\n    'textColor',\n  ]),\n  disabled: checkboxDisabled,\n  modelValue,\n  changeEvent,\n})\n\nwatch(\n  () => props.modelValue,\n  (newVal, oldValue) => {\n    if (props.validateEvent && !isEqual(newVal, oldValue)) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Checkbox from './src/checkbox.vue'\nimport CheckboxButton from './src/checkbox-button.vue'\nimport CheckboxGroup from './src/checkbox-group.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCheckbox: SFCWithInstall<typeof Checkbox> & {\n  CheckboxButton: typeof CheckboxButton\n  CheckboxGroup: typeof CheckboxGroup\n} = withInstall(Checkbox, {\n  CheckboxButton,\n  CheckboxGroup,\n})\nexport default ElCheckbox\n\nexport const ElCheckboxButton: SFCWithInstall<typeof CheckboxButton> =\n  withNoopInstall(CheckboxButton)\nexport const ElCheckboxGroup: SFCWithInstall<typeof CheckboxGroup> =\n  withNoopInstall(CheckboxGroup)\n\nexport * from './src/checkbox-group'\nexport * from './src/checkbox'\nexport * from './src/constants'\n","import {\n  buildProps,\n  isBoolean,\n  isNumber,\n  isString,\n} from '@pit-element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { useSizeProp } from '@pit-element-plus/hooks'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type Radio from './radio.vue'\n\nexport interface RadioPropsBase {\n  /**\n   * @description binding value\n   */\n  modelValue?: string | number | boolean\n  /**\n   * @description size of the Radio\n   */\n  size?: ComponentSize\n  /**\n   * @description whether Radio is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description the label of Radio\n   */\n  label?: string | number | boolean\n  /**\n   * @description the value of Radio\n   */\n  value?: string | number | boolean\n  /**\n   * @description native `name` attribute\n   */\n  name?: string\n}\n\nexport interface RadioProps extends RadioPropsBase {\n  /**\n   * @description whether to add a border around Radio\n   */\n  border?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioPropsBase` instead.\n */\nexport const radioPropsBase = buildProps({\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: [String, Number, Boolean],\n    default: undefined,\n  },\n  /**\n   * @description size of the Radio\n   */\n  size: useSizeProp,\n  /**\n   * @description whether Radio is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description the label of Radio\n   */\n  label: {\n    type: [String, Number, Boolean],\n    default: undefined,\n  },\n  /**\n   * @description the value of Radio\n   */\n  value: {\n    type: [String, Number, Boolean],\n    default: undefined,\n  },\n  /**\n   * @description native `name` attribute\n   */\n  name: {\n    type: String,\n    default: undefined,\n  },\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioProps` instead.\n */\nexport const radioProps = buildProps({\n  ...radioPropsBase,\n  /**\n   * @description whether to add a border around Radio\n   */\n  border: Boolean,\n} as const)\n\nexport const radioEmits = {\n  [UPDATE_MODEL_EVENT]: (val: string | number | boolean | undefined) =>\n    isString(val) || isNumber(val) || isBoolean(val),\n  [CHANGE_EVENT]: (val: string | number | boolean | undefined) =>\n    isString(val) || isNumber(val) || isBoolean(val),\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioProps` instead.\n */\nexport type RadioPropsPublic = ExtractPublicPropTypes<typeof radioProps>\nexport type RadioEmits = typeof radioEmits\nexport type RadioInstance = InstanceType<typeof Radio> & unknown\n\n/**\n * @description default values for RadioProps\n */\nexport const radioPropsDefaults = {\n  modelValue: undefined,\n  disabled: undefined,\n  label: undefined,\n  value: undefined,\n  name: undefined,\n  border: false,\n} as const\n","import type { InjectionKey } from 'vue'\nimport type { RadioGroupProps } from './radio-group'\n\nexport interface RadioGroupContext extends RadioGroupProps {\n  changeEvent: (val: RadioGroupProps['modelValue']) => void\n}\n\nexport const radioGroupKey: InjectionKey<RadioGroupContext> =\n  Symbol('radioGroupKey')\n","import { computed, inject, ref } from 'vue'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { useFormDisabled, useFormSize } from '@pit-element-plus/components/form'\nimport { useDeprecated } from '@pit-element-plus/hooks'\nimport { isPropAbsent } from '@pit-element-plus/utils'\nimport { radioGroupKey } from './constants'\n\nimport type { RadioButtonProps } from './radio-button'\nimport type { SetupContext } from 'vue'\nimport type { RadioEmits, RadioProps } from './radio'\n\nexport const useRadio = (\n  props: RadioProps | RadioButtonProps,\n  emit?: SetupContext<RadioEmits>['emit']\n) => {\n  const radioRef = ref<HTMLInputElement>()\n  const radioGroup = inject(radioGroupKey, undefined)\n  const isGroup = computed(() => !!radioGroup)\n  const actualValue = computed(() => {\n    // In version 2.x, if there's no props.value, props.label will act as props.value\n    // In version 3.x, remove this computed value, use props.value instead.\n    if (!isPropAbsent(props.value)) {\n      return props.value\n    }\n    return props.label\n  })\n  const modelValue = computed<RadioProps['modelValue']>({\n    get() {\n      return isGroup.value ? radioGroup!.modelValue : props.modelValue!\n    },\n    set(val) {\n      if (isGroup.value) {\n        radioGroup!.changeEvent(val)\n      } else {\n        emit && emit(UPDATE_MODEL_EVENT, val)\n      }\n      radioRef.value!.checked = props.modelValue === actualValue.value\n    },\n  })\n\n  const size = useFormSize(computed(() => radioGroup?.size))\n  const disabled = useFormDisabled(computed(() => radioGroup?.disabled))\n  const focus = ref(false)\n  const tabIndex = computed(() => {\n    return disabled.value ||\n      (isGroup.value && modelValue.value !== actualValue.value)\n      ? -1\n      : 0\n  })\n\n  useDeprecated(\n    {\n      from: 'label act as value',\n      replacement: 'value',\n      version: '3.0.0',\n      scope: 'el-radio',\n      ref: 'https://element-plus.org/en-US/component/radio.html',\n    },\n    computed(() => isGroup.value && isPropAbsent(props.value))\n  )\n\n  return {\n    radioRef,\n    isGroup,\n    radioGroup,\n    focus,\n    size,\n    disabled,\n    tabIndex,\n    modelValue,\n    actualValue,\n  }\n}\n","<template>\n  <label\n    :class=\"[\n      ns.b(),\n      ns.is('disabled', disabled),\n      ns.is('focus', focus),\n      ns.is('bordered', border),\n      ns.is('checked', modelValue === actualValue),\n      ns.m(size),\n    ]\"\n  >\n    <span\n      :class=\"[\n        ns.e('input'),\n        ns.is('disabled', disabled),\n        ns.is('checked', modelValue === actualValue),\n      ]\"\n    >\n      <input\n        ref=\"radioRef\"\n        v-model=\"modelValue\"\n        :class=\"ns.e('original')\"\n        :value=\"actualValue\"\n        :name=\"name || radioGroup?.name\"\n        :disabled=\"disabled\"\n        :checked=\"modelValue === actualValue\"\n        type=\"radio\"\n        @focus=\"focus = true\"\n        @blur=\"focus = false\"\n        @change=\"handleChange\"\n        @click.stop\n      />\n      <span :class=\"ns.e('inner')\" />\n    </span>\n    <span :class=\"ns.e('label')\" @keydown.stop>\n      <slot>\n        {{ label }}\n      </slot>\n    </span>\n  </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { nextTick } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { type RadioProps, radioEmits, radioPropsDefaults } from './radio'\nimport { useRadio } from './use-radio'\n\ndefineOptions({\n  name: 'ElRadio',\n})\n\nconst props = withDefaults(defineProps<RadioProps>(), radioPropsDefaults)\nconst emit = defineEmits(radioEmits)\n\nconst ns = useNamespace('radio')\nconst { radioRef, radioGroup, focus, size, disabled, modelValue, actualValue } =\n  useRadio(props, emit)\n\nfunction handleChange() {\n  nextTick(() => emit(CHANGE_EVENT, modelValue.value))\n}\n</script>\n","<template>\n  <label\n    :class=\"[\n      ns.b(),\n      ns.is('disabled', disabled),\n      ns.is('focus', focus),\n      ns.is('bordered', border),\n      ns.is('checked', modelValue === actualValue),\n      ns.m(size),\n    ]\"\n  >\n    <span\n      :class=\"[\n        ns.e('input'),\n        ns.is('disabled', disabled),\n        ns.is('checked', modelValue === actualValue),\n      ]\"\n    >\n      <input\n        ref=\"radioRef\"\n        v-model=\"modelValue\"\n        :class=\"ns.e('original')\"\n        :value=\"actualValue\"\n        :name=\"name || radioGroup?.name\"\n        :disabled=\"disabled\"\n        :checked=\"modelValue === actualValue\"\n        type=\"radio\"\n        @focus=\"focus = true\"\n        @blur=\"focus = false\"\n        @change=\"handleChange\"\n        @click.stop\n      />\n      <span :class=\"ns.e('inner')\" />\n    </span>\n    <span :class=\"ns.e('label')\" @keydown.stop>\n      <slot>\n        {{ label }}\n      </slot>\n    </span>\n  </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { nextTick } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { type RadioProps, radioEmits, radioPropsDefaults } from './radio'\nimport { useRadio } from './use-radio'\n\ndefineOptions({\n  name: 'ElRadio',\n})\n\nconst props = withDefaults(defineProps<RadioProps>(), radioPropsDefaults)\nconst emit = defineEmits(radioEmits)\n\nconst ns = useNamespace('radio')\nconst { radioRef, radioGroup, focus, size, disabled, modelValue, actualValue } =\n  useRadio(props, emit)\n\nfunction handleChange() {\n  nextTick(() => emit(CHANGE_EVENT, modelValue.value))\n}\n</script>\n","<template>\n  <label\n    :class=\"[\n      ns.b(),\n      ns.is('disabled', disabled),\n      ns.is('focus', focus),\n      ns.is('bordered', border),\n      ns.is('checked', modelValue === actualValue),\n      ns.m(size),\n    ]\"\n  >\n    <span\n      :class=\"[\n        ns.e('input'),\n        ns.is('disabled', disabled),\n        ns.is('checked', modelValue === actualValue),\n      ]\"\n    >\n      <input\n        ref=\"radioRef\"\n        v-model=\"modelValue\"\n        :class=\"ns.e('original')\"\n        :value=\"actualValue\"\n        :name=\"name || radioGroup?.name\"\n        :disabled=\"disabled\"\n        :checked=\"modelValue === actualValue\"\n        type=\"radio\"\n        @focus=\"focus = true\"\n        @blur=\"focus = false\"\n        @change=\"handleChange\"\n        @click.stop\n      />\n      <span :class=\"ns.e('inner')\" />\n    </span>\n    <span :class=\"ns.e('label')\" @keydown.stop>\n      <slot>\n        {{ label }}\n      </slot>\n    </span>\n  </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { nextTick } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { type RadioProps, radioEmits, radioPropsDefaults } from './radio'\nimport { useRadio } from './use-radio'\n\ndefineOptions({\n  name: 'ElRadio',\n})\n\nconst props = withDefaults(defineProps<RadioProps>(), radioPropsDefaults)\nconst emit = defineEmits(radioEmits)\n\nconst ns = useNamespace('radio')\nconst { radioRef, radioGroup, focus, size, disabled, modelValue, actualValue } =\n  useRadio(props, emit)\n\nfunction handleChange() {\n  nextTick(() => emit(CHANGE_EVENT, modelValue.value))\n}\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\nimport { radioPropsBase } from './radio'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { RadioPropsBase } from './radio'\nimport type RadioButton from './radio-button.vue'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface RadioButtonProps extends RadioPropsBase {}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioButtonProps` instead.\n */\nexport const radioButtonProps = buildProps({\n  ...radioPropsBase,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioButtonProps` instead.\n */\nexport type RadioButtonPropsPublic = ExtractPublicPropTypes<\n  typeof radioButtonProps\n>\nexport type RadioButtonInstance = InstanceType<typeof RadioButton> & unknown\n\n/**\n * @description default values for RadioButtonProps\n */\nexport const radioButtonPropsDefaults = {\n  modelValue: undefined,\n  disabled: undefined,\n  label: undefined,\n  value: undefined,\n  name: undefined,\n} as const\n","<template>\n  <label\n    :class=\"[\n      ns.b('button'),\n      ns.is('active', modelValue === actualValue),\n      ns.is('disabled', disabled),\n      ns.is('focus', focus),\n      ns.bm('button', size),\n    ]\"\n  >\n    <input\n      ref=\"radioRef\"\n      v-model=\"modelValue\"\n      :class=\"ns.be('button', 'original-radio')\"\n      :value=\"actualValue\"\n      type=\"radio\"\n      :name=\"name || radioGroup?.name\"\n      :disabled=\"disabled\"\n      @focus=\"focus = true\"\n      @blur=\"focus = false\"\n      @click.stop\n    />\n    <span\n      :class=\"ns.be('button', 'inner')\"\n      :style=\"modelValue === actualValue ? activeStyle : {}\"\n      @keydown.stop\n    >\n      <slot>\n        {{ label }}\n      </slot>\n    </span>\n  </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useRadio } from './use-radio'\nimport { radioButtonPropsDefaults } from './radio-button'\n\nimport type { RadioButtonProps } from './radio-button'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElRadioButton',\n})\n\nconst props = withDefaults(\n  defineProps<RadioButtonProps>(),\n  radioButtonPropsDefaults\n)\n\nconst ns = useNamespace('radio')\nconst { radioRef, focus, size, disabled, modelValue, radioGroup, actualValue } =\n  useRadio(props)\n\nconst activeStyle = computed<CSSProperties>(() => {\n  return {\n    backgroundColor: radioGroup?.fill || '',\n    borderColor: radioGroup?.fill || '',\n    boxShadow: radioGroup?.fill ? `-1px 0 0 0 ${radioGroup.fill}` : '',\n    color: radioGroup?.textColor || '',\n  }\n})\n</script>\n","<template>\n  <label\n    :class=\"[\n      ns.b('button'),\n      ns.is('active', modelValue === actualValue),\n      ns.is('disabled', disabled),\n      ns.is('focus', focus),\n      ns.bm('button', size),\n    ]\"\n  >\n    <input\n      ref=\"radioRef\"\n      v-model=\"modelValue\"\n      :class=\"ns.be('button', 'original-radio')\"\n      :value=\"actualValue\"\n      type=\"radio\"\n      :name=\"name || radioGroup?.name\"\n      :disabled=\"disabled\"\n      @focus=\"focus = true\"\n      @blur=\"focus = false\"\n      @click.stop\n    />\n    <span\n      :class=\"ns.be('button', 'inner')\"\n      :style=\"modelValue === actualValue ? activeStyle : {}\"\n      @keydown.stop\n    >\n      <slot>\n        {{ label }}\n      </slot>\n    </span>\n  </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useRadio } from './use-radio'\nimport { radioButtonPropsDefaults } from './radio-button'\n\nimport type { RadioButtonProps } from './radio-button'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElRadioButton',\n})\n\nconst props = withDefaults(\n  defineProps<RadioButtonProps>(),\n  radioButtonPropsDefaults\n)\n\nconst ns = useNamespace('radio')\nconst { radioRef, focus, size, disabled, modelValue, radioGroup, actualValue } =\n  useRadio(props)\n\nconst activeStyle = computed<CSSProperties>(() => {\n  return {\n    backgroundColor: radioGroup?.fill || '',\n    borderColor: radioGroup?.fill || '',\n    boxShadow: radioGroup?.fill ? `-1px 0 0 0 ${radioGroup.fill}` : '',\n    color: radioGroup?.textColor || '',\n  }\n})\n</script>\n","<template>\n  <label\n    :class=\"[\n      ns.b('button'),\n      ns.is('active', modelValue === actualValue),\n      ns.is('disabled', disabled),\n      ns.is('focus', focus),\n      ns.bm('button', size),\n    ]\"\n  >\n    <input\n      ref=\"radioRef\"\n      v-model=\"modelValue\"\n      :class=\"ns.be('button', 'original-radio')\"\n      :value=\"actualValue\"\n      type=\"radio\"\n      :name=\"name || radioGroup?.name\"\n      :disabled=\"disabled\"\n      @focus=\"focus = true\"\n      @blur=\"focus = false\"\n      @click.stop\n    />\n    <span\n      :class=\"ns.be('button', 'inner')\"\n      :style=\"modelValue === actualValue ? activeStyle : {}\"\n      @keydown.stop\n    >\n      <slot>\n        {{ label }}\n      </slot>\n    </span>\n  </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useRadio } from './use-radio'\nimport { radioButtonPropsDefaults } from './radio-button'\n\nimport type { RadioButtonProps } from './radio-button'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElRadioButton',\n})\n\nconst props = withDefaults(\n  defineProps<RadioButtonProps>(),\n  radioButtonPropsDefaults\n)\n\nconst ns = useNamespace('radio')\nconst { radioRef, focus, size, disabled, modelValue, radioGroup, actualValue } =\n  useRadio(props)\n\nconst activeStyle = computed<CSSProperties>(() => {\n  return {\n    backgroundColor: radioGroup?.fill || '',\n    borderColor: radioGroup?.fill || '',\n    boxShadow: radioGroup?.fill ? `-1px 0 0 0 ${radioGroup.fill}` : '',\n    color: radioGroup?.textColor || '',\n  }\n})\n</script>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { useAriaProps, useSizeProp } from '@pit-element-plus/hooks'\nimport { radioEmits } from './radio'\n\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type RadioGroup from './radio-group.vue'\n\nexport type radioOptionProp = {\n  value?: string\n  label?: string\n  disabled?: string\n}\n\nexport const radioDefaultProps: Required<radioOptionProp> = {\n  label: 'label',\n  value: 'value',\n  disabled: 'disabled',\n}\n\nexport type radioOption = Record<string, any>\n\nexport interface RadioGroupProps {\n  /**\n   * @description native `id` attribute\n   */\n  id?: string\n  /**\n   * @description the size of radio buttons or bordered radios\n   */\n  size?: ComponentSize\n  /**\n   * @description whether the nesting radios are disabled\n   */\n  disabled?: boolean\n  /**\n   * @description binding value\n   */\n  modelValue?: string | number | boolean\n  /**\n   * @description border and background color when button is active\n   */\n  fill?: string\n  /**\n   * @description font color when button is active\n   */\n  textColor?: string\n  /**\n   * @description native `name` attribute\n   */\n  name?: string\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n  /**\n   * @description radio options\n   */\n  options?: radioOption[]\n  /**\n   * @description custom prop names for options\n   */\n  props?: radioOptionProp\n  /**\n   * @description radio type\n   */\n  type?: 'radio' | 'button'\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioGroupProps` instead.\n */\nexport const radioGroupProps = buildProps({\n  /**\n   * @description native `id` attribute\n   */\n  id: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description the size of radio buttons or bordered radios\n   */\n  size: useSizeProp,\n  /**\n   * @description whether the nesting radios are disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: [String, Number, Boolean],\n    default: undefined,\n  },\n  /**\n   * @description border and background color when button is active\n   */\n  fill: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description font color when button is active\n   */\n  textColor: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description native `name` attribute\n   */\n  name: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  options: {\n    type: definePropType<radioOption[]>(Array),\n  },\n  props: {\n    type: definePropType<radioOptionProp>(Object),\n    default: () => radioDefaultProps,\n  },\n  type: {\n    type: String,\n    values: ['radio', 'button'] as const,\n    default: 'radio',\n  },\n  ...useAriaProps(['ariaLabel']),\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioGroupProps` instead.\n */\nexport type RadioGroupPropsPublic = ExtractPublicPropTypes<\n  typeof radioGroupProps\n>\n\nexport const radioGroupEmits = radioEmits\nexport type RadioGroupEmits = typeof radioGroupEmits\nexport type RadioGroupInstance = InstanceType<typeof RadioGroup> & unknown\n\n/**\n * @description default values for RadioGroupProps\n */\nexport const radioGroupPropsDefaults = {\n  id: undefined,\n  disabled: undefined,\n  modelValue: undefined,\n  fill: '',\n  textColor: '',\n  name: undefined,\n  validateEvent: true,\n  props: () => radioDefaultProps,\n  type: 'radio',\n} as const\n","<template>\n  <div\n    :id=\"groupId\"\n    ref=\"radioGroupRef\"\n    :class=\"ns.b('group')\"\n    role=\"radiogroup\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'radio-group' : undefined\"\n    :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n  >\n    <slot>\n      <component\n        :is=\"optionComponent\"\n        v-for=\"(item, index) in options\"\n        :key=\"index\"\n        v-bind=\"getOptionProps(item)\"\n      />\n    </slot>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport {\n  type RadioGroupProps,\n  radioDefaultProps,\n  radioGroupEmits,\n  radioGroupPropsDefaults,\n} from './radio-group'\nimport { radioGroupKey } from './constants'\nimport { isEqual, omit } from 'lodash-unified'\nimport ElRadio from './radio.vue'\nimport ElRadioButton from './radio-button.vue'\n\ndefineOptions({\n  name: 'ElRadioGroup',\n})\n\nconst props = withDefaults(\n  defineProps<RadioGroupProps>(),\n  radioGroupPropsDefaults\n)\nconst emit = defineEmits(radioGroupEmits)\n\nconst ns = useNamespace('radio')\nconst radioId = useId()\nconst radioGroupRef = ref<HTMLDivElement>()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst changeEvent = (value: RadioGroupProps['modelValue']) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  nextTick(() => emit(CHANGE_EVENT, value))\n}\n\nonMounted(() => {\n  const radios =\n    radioGroupRef.value!.querySelectorAll<HTMLInputElement>('[type=radio]')\n  const firstLabel = radios[0]\n  if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) {\n    firstLabel.tabIndex = 0\n  }\n})\n\nconst name = computed(() => {\n  return props.name || radioId.value\n})\n\nconst aliasProps = computed(() => ({\n  ...radioDefaultProps,\n  ...props.props,\n}))\nconst getOptionProps = (option: Record<string, any>) => {\n  const { label, value, disabled } = aliasProps.value\n  const base = {\n    label: option[label],\n    value: option[value],\n    disabled: option[disabled],\n  }\n  return { ...omit(option, [label, value, disabled]), ...base }\n}\n\nconst optionComponent = computed(() =>\n  props.type === 'button' ? ElRadioButton : ElRadio\n)\n\nprovide(\n  radioGroupKey,\n  reactive({\n    ...toRefs(props),\n    changeEvent,\n    name,\n  })\n)\n\nwatch(\n  () => props.modelValue,\n  (newVal, oldValue) => {\n    if (props.validateEvent && !isEqual(newVal, oldValue)) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n</script>\n","<template>\n  <div\n    :id=\"groupId\"\n    ref=\"radioGroupRef\"\n    :class=\"ns.b('group')\"\n    role=\"radiogroup\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'radio-group' : undefined\"\n    :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n  >\n    <slot>\n      <component\n        :is=\"optionComponent\"\n        v-for=\"(item, index) in options\"\n        :key=\"index\"\n        v-bind=\"getOptionProps(item)\"\n      />\n    </slot>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport {\n  type RadioGroupProps,\n  radioDefaultProps,\n  radioGroupEmits,\n  radioGroupPropsDefaults,\n} from './radio-group'\nimport { radioGroupKey } from './constants'\nimport { isEqual, omit } from 'lodash-unified'\nimport ElRadio from './radio.vue'\nimport ElRadioButton from './radio-button.vue'\n\ndefineOptions({\n  name: 'ElRadioGroup',\n})\n\nconst props = withDefaults(\n  defineProps<RadioGroupProps>(),\n  radioGroupPropsDefaults\n)\nconst emit = defineEmits(radioGroupEmits)\n\nconst ns = useNamespace('radio')\nconst radioId = useId()\nconst radioGroupRef = ref<HTMLDivElement>()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst changeEvent = (value: RadioGroupProps['modelValue']) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  nextTick(() => emit(CHANGE_EVENT, value))\n}\n\nonMounted(() => {\n  const radios =\n    radioGroupRef.value!.querySelectorAll<HTMLInputElement>('[type=radio]')\n  const firstLabel = radios[0]\n  if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) {\n    firstLabel.tabIndex = 0\n  }\n})\n\nconst name = computed(() => {\n  return props.name || radioId.value\n})\n\nconst aliasProps = computed(() => ({\n  ...radioDefaultProps,\n  ...props.props,\n}))\nconst getOptionProps = (option: Record<string, any>) => {\n  const { label, value, disabled } = aliasProps.value\n  const base = {\n    label: option[label],\n    value: option[value],\n    disabled: option[disabled],\n  }\n  return { ...omit(option, [label, value, disabled]), ...base }\n}\n\nconst optionComponent = computed(() =>\n  props.type === 'button' ? ElRadioButton : ElRadio\n)\n\nprovide(\n  radioGroupKey,\n  reactive({\n    ...toRefs(props),\n    changeEvent,\n    name,\n  })\n)\n\nwatch(\n  () => props.modelValue,\n  (newVal, oldValue) => {\n    if (props.validateEvent && !isEqual(newVal, oldValue)) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n</script>\n","<template>\n  <div\n    :id=\"groupId\"\n    ref=\"radioGroupRef\"\n    :class=\"ns.b('group')\"\n    role=\"radiogroup\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'radio-group' : undefined\"\n    :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n  >\n    <slot>\n      <component\n        :is=\"optionComponent\"\n        v-for=\"(item, index) in options\"\n        :key=\"index\"\n        v-bind=\"getOptionProps(item)\"\n      />\n    </slot>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport {\n  type RadioGroupProps,\n  radioDefaultProps,\n  radioGroupEmits,\n  radioGroupPropsDefaults,\n} from './radio-group'\nimport { radioGroupKey } from './constants'\nimport { isEqual, omit } from 'lodash-unified'\nimport ElRadio from './radio.vue'\nimport ElRadioButton from './radio-button.vue'\n\ndefineOptions({\n  name: 'ElRadioGroup',\n})\n\nconst props = withDefaults(\n  defineProps<RadioGroupProps>(),\n  radioGroupPropsDefaults\n)\nconst emit = defineEmits(radioGroupEmits)\n\nconst ns = useNamespace('radio')\nconst radioId = useId()\nconst radioGroupRef = ref<HTMLDivElement>()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst changeEvent = (value: RadioGroupProps['modelValue']) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  nextTick(() => emit(CHANGE_EVENT, value))\n}\n\nonMounted(() => {\n  const radios =\n    radioGroupRef.value!.querySelectorAll<HTMLInputElement>('[type=radio]')\n  const firstLabel = radios[0]\n  if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) {\n    firstLabel.tabIndex = 0\n  }\n})\n\nconst name = computed(() => {\n  return props.name || radioId.value\n})\n\nconst aliasProps = computed(() => ({\n  ...radioDefaultProps,\n  ...props.props,\n}))\nconst getOptionProps = (option: Record<string, any>) => {\n  const { label, value, disabled } = aliasProps.value\n  const base = {\n    label: option[label],\n    value: option[value],\n    disabled: option[disabled],\n  }\n  return { ...omit(option, [label, value, disabled]), ...base }\n}\n\nconst optionComponent = computed(() =>\n  props.type === 'button' ? ElRadioButton : ElRadio\n)\n\nprovide(\n  radioGroupKey,\n  reactive({\n    ...toRefs(props),\n    changeEvent,\n    name,\n  })\n)\n\nwatch(\n  () => props.modelValue,\n  (newVal, oldValue) => {\n    if (props.validateEvent && !isEqual(newVal, oldValue)) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Radio from './src/radio.vue'\nimport RadioButton from './src/radio-button.vue'\nimport RadioGroup from './src/radio-group.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElRadio: SFCWithInstall<typeof Radio> & {\n  RadioButton: typeof RadioButton\n  RadioGroup: typeof RadioGroup\n} = withInstall(Radio, {\n  RadioButton,\n  RadioGroup,\n})\nexport default ElRadio\nexport const ElRadioGroup: SFCWithInstall<typeof RadioGroup> =\n  withNoopInstall(RadioGroup)\nexport const ElRadioButton: SFCWithInstall<typeof RadioButton> =\n  withNoopInstall(RadioButton)\n\nexport * from './src/radio'\nexport * from './src/radio-group'\nexport * from './src/radio-button'\nexport * from './src/constants'\n","import type { InjectionKey, VNode } from 'vue'\nimport type { Nullable } from '@pit-element-plus/utils'\nimport type { default as CascaderNode } from './node'\n\nexport type { CascaderNode, Nullable }\nexport type CascaderNodeValue = string | number | Record<string, any>\nexport type CascaderNodePathValue = CascaderNodeValue[]\nexport type CascaderValue =\n  | CascaderNodeValue\n  | CascaderNodePathValue\n  | (CascaderNodeValue | CascaderNodePathValue)[]\nexport type CascaderConfig = Required<CascaderProps>\nexport type ExpandTrigger = 'click' | 'hover'\nexport type isDisabled = (data: CascaderOption, node: CascaderNode) => boolean\nexport type isLeaf = (data: CascaderOption, node: CascaderNode) => boolean\nexport type Resolve = (dataList?: CascaderOption[]) => void\nexport type LazyLoad = (\n  node: CascaderNode,\n  resolve: Resolve,\n  reject: () => void\n) => void\nexport interface RenderLabelProps {\n  node: CascaderNode\n  data: CascaderOption\n}\nexport type RenderLabel = (props: RenderLabelProps) => VNode | VNode[]\nexport interface CascaderOption extends Record<string, unknown> {\n  label?: string\n  value?: CascaderNodeValue\n  children?: CascaderOption[]\n  disabled?: boolean\n  leaf?: boolean\n}\n\nexport interface CascaderProps {\n  expandTrigger?: ExpandTrigger\n  multiple?: boolean\n  checkStrictly?: boolean\n  emitPath?: boolean\n  lazy?: boolean\n  lazyLoad?: LazyLoad\n  value?: string\n  label?: string\n  children?: string\n  disabled?: string | isDisabled\n  leaf?: string | isLeaf\n  hoverThreshold?: number\n  checkOnClickNode?: boolean\n  checkOnClickLeaf?: boolean\n  showPrefix?: boolean\n}\n\nexport interface Tag {\n  node?: CascaderNode\n  key: number\n  text: string\n  hitState?: boolean\n  closable: boolean\n}\n\nexport interface ElCascaderPanelContext {\n  config: CascaderConfig\n  expandingNode: CascaderNode | undefined\n  checkedNodes: CascaderNode[]\n  isHoverMenu: boolean\n  initialLoaded: boolean\n  renderLabelFn?: RenderLabel\n  lazyLoad: (\n    node?: CascaderNode,\n    cb?: (dataList: CascaderOption[]) => void\n  ) => void\n  expandNode: (node: CascaderNode, silent?: boolean) => void\n  handleCheckChange: (\n    node: CascaderNode,\n    checked: boolean,\n    emitClose?: boolean\n  ) => void\n}\n\nexport const CASCADER_PANEL_INJECTION_KEY: InjectionKey<ElCascaderPanelContext> =\n  Symbol()\n","import { Comment, defineComponent, inject } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isArray } from '@pit-element-plus/utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { PropType, VNode } from 'vue'\nimport type { CascaderNode } from './types'\n\nfunction isVNodeEmpty(vnodes?: VNode[] | VNode) {\n  return !!(isArray(vnodes)\n    ? vnodes.every(({ type }) => type === Comment)\n    : vnodes?.type === Comment)\n}\n\nexport default defineComponent({\n  name: 'NodeContent',\n  props: {\n    node: {\n      type: Object as PropType<CascaderNode>,\n      required: true,\n    },\n  },\n  setup(props) {\n    const ns = useNamespace('cascader-node')\n    const { renderLabelFn } = inject(CASCADER_PANEL_INJECTION_KEY)!\n    const { node } = props\n    const { data, label: nodeLabel } = node\n\n    const label = () => {\n      const renderLabel = renderLabelFn?.({ node, data })\n      return isVNodeEmpty(renderLabel) ? nodeLabel : (renderLabel ?? nodeLabel)\n    }\n    return () => <span class={ns.e('label')}>{label()}</span>\n  },\n})\n","<template>\n  <li\n    :id=\"`${menuId}-${node.uid}`\"\n    role=\"menuitem\"\n    :aria-haspopup=\"!isLeaf\"\n    :aria-owns=\"isLeaf ? undefined : menuId\"\n    :aria-expanded=\"inExpandingPath\"\n    :tabindex=\"expandable ? -1 : undefined\"\n    :class=\"[\n      ns.b(),\n      ns.is('selectable', checkStrictly),\n      ns.is('active', node.checked),\n      ns.is('disabled', !expandable),\n      inExpandingPath && 'in-active-path',\n      inCheckedPath && 'in-checked-path',\n    ]\"\n    @mouseenter=\"handleHoverExpand\"\n    @focus=\"handleHoverExpand\"\n    @click=\"handleClick\"\n  >\n    <!-- prefix -->\n    <el-checkbox\n      v-if=\"multiple && showPrefix\"\n      :model-value=\"node.checked\"\n      :indeterminate=\"node.indeterminate\"\n      :disabled=\"isDisabled\"\n      @click.stop\n      @update:model-value=\"handleSelectCheck\"\n    />\n    <el-radio\n      v-else-if=\"checkStrictly && showPrefix\"\n      :model-value=\"checkedNodeId\"\n      :label=\"node.uid\"\n      :disabled=\"isDisabled\"\n      @update:model-value=\"handleSelectCheck\"\n      @click.stop\n    >\n      <!--\n        Add an empty element to avoid render label,\n        do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n      -->\n      <span />\n    </el-radio>\n    <el-icon v-else-if=\"isLeaf && node.checked\" :class=\"ns.e('prefix')\">\n      <check />\n    </el-icon>\n\n    <!-- content -->\n    <node-content :node=\"node\" />\n    <!-- postfix -->\n    <template v-if=\"!isLeaf\">\n      <el-icon v-if=\"node.loading\" :class=\"[ns.is('loading'), ns.e('postfix')]\">\n        <loading />\n      </el-icon>\n      <el-icon v-else :class=\"['arrow-right', ns.e('postfix')]\">\n        <arrow-right />\n      </el-icon>\n    </template>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport ElRadio from '@pit-element-plus/components/radio'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ArrowRight, Check, Loading } from 'pit-element-icons'\nimport NodeContent from './node-content'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { CascaderNode } from './types'\nimport type { PropType } from 'vue'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\n\ndefineOptions({\n  name: 'ElCascaderNode',\n})\n\nconst props = defineProps({\n  node: {\n    type: Object as PropType<CascaderNode>,\n    required: true,\n  },\n  menuId: String,\n})\nconst emit = defineEmits(['expand'])\n\nconst panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\nconst ns = useNamespace('cascader-node')\nconst isHoverMenu = computed(() => panel.isHoverMenu)\nconst multiple = computed(() => panel.config.multiple)\nconst checkStrictly = computed(() => panel.config.checkStrictly)\nconst showPrefix = computed(() => panel.config.showPrefix)\nconst checkedNodeId = computed(() => panel.checkedNodes[0]?.uid)\nconst isDisabled = computed(() => props.node.isDisabled)\nconst isLeaf = computed(() => props.node.isLeaf)\nconst expandable = computed(\n  () => (checkStrictly.value && !isLeaf.value) || !isDisabled.value\n)\nconst inExpandingPath = computed(() => isInPath(panel.expandingNode!))\n\n// only useful in check-strictly mode\nconst inCheckedPath = computed(\n  () => checkStrictly.value && panel.checkedNodes.some(isInPath)\n)\n\nconst isInPath = (node: CascaderNode) => {\n  const { level, uid } = props.node\n  return node?.pathNodes[level - 1]?.uid === uid\n}\n\nconst doExpand = () => {\n  if (inExpandingPath.value) return\n  panel.expandNode(props.node)\n}\n\nconst doCheck = (checked: boolean) => {\n  const { node } = props\n  if (checked === node.checked) return\n  panel.handleCheckChange(node, checked)\n}\n\nconst doLoad = () => {\n  panel.lazyLoad(props.node, () => {\n    if (!isLeaf.value) doExpand()\n  })\n}\n\nconst handleHoverExpand = (e: Event) => {\n  if (!isHoverMenu.value) return\n  handleExpand()\n  !isLeaf.value && emit('expand', e)\n}\n\nconst handleExpand = () => {\n  const { node } = props\n  // do not exclude leaf node because the menus expanded might have to reset\n  if (!expandable.value || node.loading) return\n  node.loaded ? doExpand() : doLoad()\n}\n\nconst handleClick = () => {\n  if (\n    isLeaf.value &&\n    !isDisabled.value &&\n    !checkStrictly.value &&\n    !multiple.value\n  ) {\n    handleCheck(true)\n  } else if (\n    ((panel.config.checkOnClickNode &&\n      (multiple.value || checkStrictly.value)) ||\n      (isLeaf.value && panel.config.checkOnClickLeaf)) &&\n    !isDisabled.value\n  ) {\n    handleSelectCheck(!props.node.checked)\n  } else if (!isHoverMenu.value) {\n    handleExpand()\n  }\n}\n\nconst handleSelectCheck = (checked: CheckboxValueType | undefined) => {\n  if (checkStrictly.value) {\n    doCheck(checked as boolean)\n    if (props.node.loaded) {\n      doExpand()\n    }\n  } else {\n    handleCheck(checked as boolean)\n  }\n}\n\nconst handleCheck = (checked: boolean) => {\n  if (!props.node.loaded) {\n    doLoad()\n  } else {\n    doCheck(checked)\n    !checkStrictly.value && doExpand()\n  }\n}\n</script>\n","<template>\n  <li\n    :id=\"`${menuId}-${node.uid}`\"\n    role=\"menuitem\"\n    :aria-haspopup=\"!isLeaf\"\n    :aria-owns=\"isLeaf ? undefined : menuId\"\n    :aria-expanded=\"inExpandingPath\"\n    :tabindex=\"expandable ? -1 : undefined\"\n    :class=\"[\n      ns.b(),\n      ns.is('selectable', checkStrictly),\n      ns.is('active', node.checked),\n      ns.is('disabled', !expandable),\n      inExpandingPath && 'in-active-path',\n      inCheckedPath && 'in-checked-path',\n    ]\"\n    @mouseenter=\"handleHoverExpand\"\n    @focus=\"handleHoverExpand\"\n    @click=\"handleClick\"\n  >\n    <!-- prefix -->\n    <el-checkbox\n      v-if=\"multiple && showPrefix\"\n      :model-value=\"node.checked\"\n      :indeterminate=\"node.indeterminate\"\n      :disabled=\"isDisabled\"\n      @click.stop\n      @update:model-value=\"handleSelectCheck\"\n    />\n    <el-radio\n      v-else-if=\"checkStrictly && showPrefix\"\n      :model-value=\"checkedNodeId\"\n      :label=\"node.uid\"\n      :disabled=\"isDisabled\"\n      @update:model-value=\"handleSelectCheck\"\n      @click.stop\n    >\n      <!--\n        Add an empty element to avoid render label,\n        do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n      -->\n      <span />\n    </el-radio>\n    <el-icon v-else-if=\"isLeaf && node.checked\" :class=\"ns.e('prefix')\">\n      <check />\n    </el-icon>\n\n    <!-- content -->\n    <node-content :node=\"node\" />\n    <!-- postfix -->\n    <template v-if=\"!isLeaf\">\n      <el-icon v-if=\"node.loading\" :class=\"[ns.is('loading'), ns.e('postfix')]\">\n        <loading />\n      </el-icon>\n      <el-icon v-else :class=\"['arrow-right', ns.e('postfix')]\">\n        <arrow-right />\n      </el-icon>\n    </template>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport ElRadio from '@pit-element-plus/components/radio'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ArrowRight, Check, Loading } from 'pit-element-icons'\nimport NodeContent from './node-content'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { CascaderNode } from './types'\nimport type { PropType } from 'vue'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\n\ndefineOptions({\n  name: 'ElCascaderNode',\n})\n\nconst props = defineProps({\n  node: {\n    type: Object as PropType<CascaderNode>,\n    required: true,\n  },\n  menuId: String,\n})\nconst emit = defineEmits(['expand'])\n\nconst panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\nconst ns = useNamespace('cascader-node')\nconst isHoverMenu = computed(() => panel.isHoverMenu)\nconst multiple = computed(() => panel.config.multiple)\nconst checkStrictly = computed(() => panel.config.checkStrictly)\nconst showPrefix = computed(() => panel.config.showPrefix)\nconst checkedNodeId = computed(() => panel.checkedNodes[0]?.uid)\nconst isDisabled = computed(() => props.node.isDisabled)\nconst isLeaf = computed(() => props.node.isLeaf)\nconst expandable = computed(\n  () => (checkStrictly.value && !isLeaf.value) || !isDisabled.value\n)\nconst inExpandingPath = computed(() => isInPath(panel.expandingNode!))\n\n// only useful in check-strictly mode\nconst inCheckedPath = computed(\n  () => checkStrictly.value && panel.checkedNodes.some(isInPath)\n)\n\nconst isInPath = (node: CascaderNode) => {\n  const { level, uid } = props.node\n  return node?.pathNodes[level - 1]?.uid === uid\n}\n\nconst doExpand = () => {\n  if (inExpandingPath.value) return\n  panel.expandNode(props.node)\n}\n\nconst doCheck = (checked: boolean) => {\n  const { node } = props\n  if (checked === node.checked) return\n  panel.handleCheckChange(node, checked)\n}\n\nconst doLoad = () => {\n  panel.lazyLoad(props.node, () => {\n    if (!isLeaf.value) doExpand()\n  })\n}\n\nconst handleHoverExpand = (e: Event) => {\n  if (!isHoverMenu.value) return\n  handleExpand()\n  !isLeaf.value && emit('expand', e)\n}\n\nconst handleExpand = () => {\n  const { node } = props\n  // do not exclude leaf node because the menus expanded might have to reset\n  if (!expandable.value || node.loading) return\n  node.loaded ? doExpand() : doLoad()\n}\n\nconst handleClick = () => {\n  if (\n    isLeaf.value &&\n    !isDisabled.value &&\n    !checkStrictly.value &&\n    !multiple.value\n  ) {\n    handleCheck(true)\n  } else if (\n    ((panel.config.checkOnClickNode &&\n      (multiple.value || checkStrictly.value)) ||\n      (isLeaf.value && panel.config.checkOnClickLeaf)) &&\n    !isDisabled.value\n  ) {\n    handleSelectCheck(!props.node.checked)\n  } else if (!isHoverMenu.value) {\n    handleExpand()\n  }\n}\n\nconst handleSelectCheck = (checked: CheckboxValueType | undefined) => {\n  if (checkStrictly.value) {\n    doCheck(checked as boolean)\n    if (props.node.loaded) {\n      doExpand()\n    }\n  } else {\n    handleCheck(checked as boolean)\n  }\n}\n\nconst handleCheck = (checked: boolean) => {\n  if (!props.node.loaded) {\n    doLoad()\n  } else {\n    doCheck(checked)\n    !checkStrictly.value && doExpand()\n  }\n}\n</script>\n","<template>\n  <li\n    :id=\"`${menuId}-${node.uid}`\"\n    role=\"menuitem\"\n    :aria-haspopup=\"!isLeaf\"\n    :aria-owns=\"isLeaf ? undefined : menuId\"\n    :aria-expanded=\"inExpandingPath\"\n    :tabindex=\"expandable ? -1 : undefined\"\n    :class=\"[\n      ns.b(),\n      ns.is('selectable', checkStrictly),\n      ns.is('active', node.checked),\n      ns.is('disabled', !expandable),\n      inExpandingPath && 'in-active-path',\n      inCheckedPath && 'in-checked-path',\n    ]\"\n    @mouseenter=\"handleHoverExpand\"\n    @focus=\"handleHoverExpand\"\n    @click=\"handleClick\"\n  >\n    <!-- prefix -->\n    <el-checkbox\n      v-if=\"multiple && showPrefix\"\n      :model-value=\"node.checked\"\n      :indeterminate=\"node.indeterminate\"\n      :disabled=\"isDisabled\"\n      @click.stop\n      @update:model-value=\"handleSelectCheck\"\n    />\n    <el-radio\n      v-else-if=\"checkStrictly && showPrefix\"\n      :model-value=\"checkedNodeId\"\n      :label=\"node.uid\"\n      :disabled=\"isDisabled\"\n      @update:model-value=\"handleSelectCheck\"\n      @click.stop\n    >\n      <!--\n        Add an empty element to avoid render label,\n        do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n      -->\n      <span />\n    </el-radio>\n    <el-icon v-else-if=\"isLeaf && node.checked\" :class=\"ns.e('prefix')\">\n      <check />\n    </el-icon>\n\n    <!-- content -->\n    <node-content :node=\"node\" />\n    <!-- postfix -->\n    <template v-if=\"!isLeaf\">\n      <el-icon v-if=\"node.loading\" :class=\"[ns.is('loading'), ns.e('postfix')]\">\n        <loading />\n      </el-icon>\n      <el-icon v-else :class=\"['arrow-right', ns.e('postfix')]\">\n        <arrow-right />\n      </el-icon>\n    </template>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport ElRadio from '@pit-element-plus/components/radio'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ArrowRight, Check, Loading } from 'pit-element-icons'\nimport NodeContent from './node-content'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { CascaderNode } from './types'\nimport type { PropType } from 'vue'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\n\ndefineOptions({\n  name: 'ElCascaderNode',\n})\n\nconst props = defineProps({\n  node: {\n    type: Object as PropType<CascaderNode>,\n    required: true,\n  },\n  menuId: String,\n})\nconst emit = defineEmits(['expand'])\n\nconst panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\nconst ns = useNamespace('cascader-node')\nconst isHoverMenu = computed(() => panel.isHoverMenu)\nconst multiple = computed(() => panel.config.multiple)\nconst checkStrictly = computed(() => panel.config.checkStrictly)\nconst showPrefix = computed(() => panel.config.showPrefix)\nconst checkedNodeId = computed(() => panel.checkedNodes[0]?.uid)\nconst isDisabled = computed(() => props.node.isDisabled)\nconst isLeaf = computed(() => props.node.isLeaf)\nconst expandable = computed(\n  () => (checkStrictly.value && !isLeaf.value) || !isDisabled.value\n)\nconst inExpandingPath = computed(() => isInPath(panel.expandingNode!))\n\n// only useful in check-strictly mode\nconst inCheckedPath = computed(\n  () => checkStrictly.value && panel.checkedNodes.some(isInPath)\n)\n\nconst isInPath = (node: CascaderNode) => {\n  const { level, uid } = props.node\n  return node?.pathNodes[level - 1]?.uid === uid\n}\n\nconst doExpand = () => {\n  if (inExpandingPath.value) return\n  panel.expandNode(props.node)\n}\n\nconst doCheck = (checked: boolean) => {\n  const { node } = props\n  if (checked === node.checked) return\n  panel.handleCheckChange(node, checked)\n}\n\nconst doLoad = () => {\n  panel.lazyLoad(props.node, () => {\n    if (!isLeaf.value) doExpand()\n  })\n}\n\nconst handleHoverExpand = (e: Event) => {\n  if (!isHoverMenu.value) return\n  handleExpand()\n  !isLeaf.value && emit('expand', e)\n}\n\nconst handleExpand = () => {\n  const { node } = props\n  // do not exclude leaf node because the menus expanded might have to reset\n  if (!expandable.value || node.loading) return\n  node.loaded ? doExpand() : doLoad()\n}\n\nconst handleClick = () => {\n  if (\n    isLeaf.value &&\n    !isDisabled.value &&\n    !checkStrictly.value &&\n    !multiple.value\n  ) {\n    handleCheck(true)\n  } else if (\n    ((panel.config.checkOnClickNode &&\n      (multiple.value || checkStrictly.value)) ||\n      (isLeaf.value && panel.config.checkOnClickLeaf)) &&\n    !isDisabled.value\n  ) {\n    handleSelectCheck(!props.node.checked)\n  } else if (!isHoverMenu.value) {\n    handleExpand()\n  }\n}\n\nconst handleSelectCheck = (checked: CheckboxValueType | undefined) => {\n  if (checkStrictly.value) {\n    doCheck(checked as boolean)\n    if (props.node.loaded) {\n      doExpand()\n    }\n  } else {\n    handleCheck(checked as boolean)\n  }\n}\n\nconst handleCheck = (checked: boolean) => {\n  if (!props.node.loaded) {\n    doLoad()\n  } else {\n    doCheck(checked)\n    !checkStrictly.value && doExpand()\n  }\n}\n</script>\n","<template>\n  <el-scrollbar\n    :key=\"menuId\"\n    tag=\"ul\"\n    role=\"menu\"\n    :class=\"ns.b()\"\n    :wrap-class=\"ns.e('wrap')\"\n    :view-class=\"[ns.e('list'), ns.is('empty', isEmpty)]\"\n    @mousemove=\"handleMouseMove\"\n    @mouseleave=\"clearHoverZone\"\n  >\n    <el-cascader-node\n      v-for=\"node in nodes\"\n      :key=\"node.uid\"\n      :node=\"node\"\n      :menu-id=\"menuId\"\n      @expand=\"handleExpand\"\n    />\n    <div v-if=\"isLoading\" :class=\"ns.e('empty-text')\">\n      <el-icon size=\"14\" :class=\"ns.is('loading')\">\n        <loading />\n      </el-icon>\n      {{ t('el.cascader.loading') }}\n    </div>\n    <div v-else-if=\"isEmpty\" :class=\"ns.e('empty-text')\">\n      <slot name=\"empty\">{{ t('el.cascader.noData') }}</slot>\n    </div>\n    <!-- eslint-disable vue/html-self-closing -->\n    <svg\n      v-else-if=\"panel?.isHoverMenu\"\n      ref=\"hoverZone\"\n      :class=\"ns.e('hover-zone')\"\n    ></svg>\n    <!-- eslint-enable vue/html-self-closing -->\n  </el-scrollbar>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { useId, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { Loading } from 'pit-element-icons'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElCascaderNode from './node.vue'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { CascaderNode } from './types'\nimport type { PropType } from 'vue'\n\ndefineOptions({\n  name: 'ElCascaderMenu',\n})\n\nconst props = defineProps({\n  nodes: {\n    type: Array as PropType<CascaderNode[]>,\n    required: true,\n  },\n  index: {\n    type: Number,\n    required: true,\n  },\n})\n\nconst instance = getCurrentInstance()!\nconst ns = useNamespace('cascader-menu')\n\nconst { t } = useLocale()\nconst id = useId()\nlet activeNode: HTMLElement\nlet hoverTimer: number | undefined\n\nconst panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\nconst hoverZone = ref<SVGSVGElement>()\n\nconst isEmpty = computed(() => !props.nodes.length)\nconst isLoading = computed(() => !panel.initialLoaded)\nconst menuId = computed(() => `${id.value}-${props.index}`)\n\nconst handleExpand = (e: MouseEvent) => {\n  activeNode = e.target as HTMLElement\n}\n\nconst handleMouseMove = (e: MouseEvent) => {\n  if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return\n\n  if (activeNode.contains(e.target as HTMLElement)) {\n    clearHoverTimer()\n\n    const el = instance.vnode.el as HTMLElement\n    const { left } = el.getBoundingClientRect()\n    const { offsetWidth, offsetHeight } = el\n    const startX = e.clientX - left\n    const top = activeNode.offsetTop\n    const bottom = top + activeNode.offsetHeight\n    const scrollTop = el.querySelector(`.${ns.e('wrap')}`)?.scrollTop || 0\n\n    hoverZone.value.innerHTML = `\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${top} L${offsetWidth} ${scrollTop} V${top} Z\" />\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${bottom} L${offsetWidth} ${offsetHeight + scrollTop} V${bottom} Z\" />\n        `\n  } else if (!hoverTimer) {\n    hoverTimer = window.setTimeout(clearHoverZone, panel.config.hoverThreshold)\n  }\n}\n\nconst clearHoverTimer = () => {\n  if (!hoverTimer) return\n  clearTimeout(hoverTimer)\n  hoverTimer = undefined\n}\n\nconst clearHoverZone = () => {\n  if (!hoverZone.value) return\n  hoverZone.value.innerHTML = ''\n  clearHoverTimer()\n}\n</script>\n","<template>\n  <el-scrollbar\n    :key=\"menuId\"\n    tag=\"ul\"\n    role=\"menu\"\n    :class=\"ns.b()\"\n    :wrap-class=\"ns.e('wrap')\"\n    :view-class=\"[ns.e('list'), ns.is('empty', isEmpty)]\"\n    @mousemove=\"handleMouseMove\"\n    @mouseleave=\"clearHoverZone\"\n  >\n    <el-cascader-node\n      v-for=\"node in nodes\"\n      :key=\"node.uid\"\n      :node=\"node\"\n      :menu-id=\"menuId\"\n      @expand=\"handleExpand\"\n    />\n    <div v-if=\"isLoading\" :class=\"ns.e('empty-text')\">\n      <el-icon size=\"14\" :class=\"ns.is('loading')\">\n        <loading />\n      </el-icon>\n      {{ t('el.cascader.loading') }}\n    </div>\n    <div v-else-if=\"isEmpty\" :class=\"ns.e('empty-text')\">\n      <slot name=\"empty\">{{ t('el.cascader.noData') }}</slot>\n    </div>\n    <!-- eslint-disable vue/html-self-closing -->\n    <svg\n      v-else-if=\"panel?.isHoverMenu\"\n      ref=\"hoverZone\"\n      :class=\"ns.e('hover-zone')\"\n    ></svg>\n    <!-- eslint-enable vue/html-self-closing -->\n  </el-scrollbar>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { useId, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { Loading } from 'pit-element-icons'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElCascaderNode from './node.vue'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { CascaderNode } from './types'\nimport type { PropType } from 'vue'\n\ndefineOptions({\n  name: 'ElCascaderMenu',\n})\n\nconst props = defineProps({\n  nodes: {\n    type: Array as PropType<CascaderNode[]>,\n    required: true,\n  },\n  index: {\n    type: Number,\n    required: true,\n  },\n})\n\nconst instance = getCurrentInstance()!\nconst ns = useNamespace('cascader-menu')\n\nconst { t } = useLocale()\nconst id = useId()\nlet activeNode: HTMLElement\nlet hoverTimer: number | undefined\n\nconst panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\nconst hoverZone = ref<SVGSVGElement>()\n\nconst isEmpty = computed(() => !props.nodes.length)\nconst isLoading = computed(() => !panel.initialLoaded)\nconst menuId = computed(() => `${id.value}-${props.index}`)\n\nconst handleExpand = (e: MouseEvent) => {\n  activeNode = e.target as HTMLElement\n}\n\nconst handleMouseMove = (e: MouseEvent) => {\n  if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return\n\n  if (activeNode.contains(e.target as HTMLElement)) {\n    clearHoverTimer()\n\n    const el = instance.vnode.el as HTMLElement\n    const { left } = el.getBoundingClientRect()\n    const { offsetWidth, offsetHeight } = el\n    const startX = e.clientX - left\n    const top = activeNode.offsetTop\n    const bottom = top + activeNode.offsetHeight\n    const scrollTop = el.querySelector(`.${ns.e('wrap')}`)?.scrollTop || 0\n\n    hoverZone.value.innerHTML = `\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${top} L${offsetWidth} ${scrollTop} V${top} Z\" />\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${bottom} L${offsetWidth} ${offsetHeight + scrollTop} V${bottom} Z\" />\n        `\n  } else if (!hoverTimer) {\n    hoverTimer = window.setTimeout(clearHoverZone, panel.config.hoverThreshold)\n  }\n}\n\nconst clearHoverTimer = () => {\n  if (!hoverTimer) return\n  clearTimeout(hoverTimer)\n  hoverTimer = undefined\n}\n\nconst clearHoverZone = () => {\n  if (!hoverZone.value) return\n  hoverZone.value.innerHTML = ''\n  clearHoverTimer()\n}\n</script>\n","<template>\n  <el-scrollbar\n    :key=\"menuId\"\n    tag=\"ul\"\n    role=\"menu\"\n    :class=\"ns.b()\"\n    :wrap-class=\"ns.e('wrap')\"\n    :view-class=\"[ns.e('list'), ns.is('empty', isEmpty)]\"\n    @mousemove=\"handleMouseMove\"\n    @mouseleave=\"clearHoverZone\"\n  >\n    <el-cascader-node\n      v-for=\"node in nodes\"\n      :key=\"node.uid\"\n      :node=\"node\"\n      :menu-id=\"menuId\"\n      @expand=\"handleExpand\"\n    />\n    <div v-if=\"isLoading\" :class=\"ns.e('empty-text')\">\n      <el-icon size=\"14\" :class=\"ns.is('loading')\">\n        <loading />\n      </el-icon>\n      {{ t('el.cascader.loading') }}\n    </div>\n    <div v-else-if=\"isEmpty\" :class=\"ns.e('empty-text')\">\n      <slot name=\"empty\">{{ t('el.cascader.noData') }}</slot>\n    </div>\n    <!-- eslint-disable vue/html-self-closing -->\n    <svg\n      v-else-if=\"panel?.isHoverMenu\"\n      ref=\"hoverZone\"\n      :class=\"ns.e('hover-zone')\"\n    ></svg>\n    <!-- eslint-enable vue/html-self-closing -->\n  </el-scrollbar>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { useId, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { Loading } from 'pit-element-icons'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElCascaderNode from './node.vue'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { CascaderNode } from './types'\nimport type { PropType } from 'vue'\n\ndefineOptions({\n  name: 'ElCascaderMenu',\n})\n\nconst props = defineProps({\n  nodes: {\n    type: Array as PropType<CascaderNode[]>,\n    required: true,\n  },\n  index: {\n    type: Number,\n    required: true,\n  },\n})\n\nconst instance = getCurrentInstance()!\nconst ns = useNamespace('cascader-menu')\n\nconst { t } = useLocale()\nconst id = useId()\nlet activeNode: HTMLElement\nlet hoverTimer: number | undefined\n\nconst panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\nconst hoverZone = ref<SVGSVGElement>()\n\nconst isEmpty = computed(() => !props.nodes.length)\nconst isLoading = computed(() => !panel.initialLoaded)\nconst menuId = computed(() => `${id.value}-${props.index}`)\n\nconst handleExpand = (e: MouseEvent) => {\n  activeNode = e.target as HTMLElement\n}\n\nconst handleMouseMove = (e: MouseEvent) => {\n  if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return\n\n  if (activeNode.contains(e.target as HTMLElement)) {\n    clearHoverTimer()\n\n    const el = instance.vnode.el as HTMLElement\n    const { left } = el.getBoundingClientRect()\n    const { offsetWidth, offsetHeight } = el\n    const startX = e.clientX - left\n    const top = activeNode.offsetTop\n    const bottom = top + activeNode.offsetHeight\n    const scrollTop = el.querySelector(`.${ns.e('wrap')}`)?.scrollTop || 0\n\n    hoverZone.value.innerHTML = `\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${top} L${offsetWidth} ${scrollTop} V${top} Z\" />\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${bottom} L${offsetWidth} ${offsetHeight + scrollTop} V${bottom} Z\" />\n        `\n  } else if (!hoverTimer) {\n    hoverTimer = window.setTimeout(clearHoverZone, panel.config.hoverThreshold)\n  }\n}\n\nconst clearHoverTimer = () => {\n  if (!hoverTimer) return\n  clearTimeout(hoverTimer)\n  hoverTimer = undefined\n}\n\nconst clearHoverZone = () => {\n  if (!hoverZone.value) return\n  hoverZone.value.innerHTML = ''\n  clearHoverTimer()\n}\n</script>\n","import {\n  isArray,\n  isEmpty,\n  isFunction,\n  isUndefined,\n} from '@pit-element-plus/utils'\n\nimport type {\n  CascaderConfig,\n  CascaderNodePathValue,\n  CascaderNodeValue,\n  CascaderOption,\n} from './types'\n\ntype ChildrenData = CascaderOption[] | undefined\n\nlet uid = 0\n\nconst calculatePathNodes = (node: Node) => {\n  const nodes = [node]\n  let { parent } = node\n\n  while (parent) {\n    nodes.unshift(parent)\n    parent = parent.parent\n  }\n\n  return nodes\n}\n\nclass Node {\n  readonly uid: number = uid++\n  readonly level: number\n  readonly value: CascaderNodeValue\n  readonly label: string\n  readonly pathNodes: Node[]\n  readonly pathValues: CascaderNodePathValue\n  readonly pathLabels: string[]\n\n  childrenData: ChildrenData\n  children: Node[]\n  text: string\n  loaded: boolean\n  /**\n   * Is it checked\n   *\n   * @default false\n   */\n  checked = false\n  /**\n   * Used to indicate the intermediate state of unchecked and fully checked child nodes\n   *\n   * @default false\n   */\n  indeterminate = false\n  /**\n   * Loading Status\n   *\n   * @default false\n   */\n  loading = false\n\n  constructor(\n    readonly data: CascaderOption,\n    readonly config: CascaderConfig,\n    readonly parent?: Node,\n    readonly root = false\n  ) {\n    const { value: valueKey, label: labelKey, children: childrenKey } = config\n\n    const childrenData = data[childrenKey] as ChildrenData\n    const pathNodes = calculatePathNodes(this)\n\n    this.level = root ? 0 : parent ? parent.level + 1 : 1\n    this.value = data[valueKey] as CascaderNodeValue\n    this.label = data[labelKey] as string\n    this.pathNodes = pathNodes\n    this.pathValues = pathNodes.map((node) => node.value)\n    this.pathLabels = pathNodes.map((node) => node.label)\n    this.childrenData = childrenData\n    this.children = (childrenData || []).map(\n      (child) => new Node(child, config, this)\n    )\n    this.loaded = !config.lazy || this.isLeaf || !isEmpty(childrenData)\n    this.text = ''\n  }\n\n  get isDisabled(): boolean {\n    const { data, parent, config } = this\n    const { disabled, checkStrictly } = config\n    const isDisabled = isFunction(disabled)\n      ? disabled(data, this)\n      : !!data[disabled]\n    return isDisabled || (!checkStrictly && !!parent?.isDisabled)\n  }\n\n  get isLeaf(): boolean {\n    const { data, config, childrenData, loaded } = this\n    const { lazy, leaf } = config\n    const isLeaf = isFunction(leaf) ? leaf(data, this) : data[leaf]\n\n    return isUndefined(isLeaf)\n      ? lazy && !loaded\n        ? false\n        : !(isArray(childrenData) && childrenData.length)\n      : !!isLeaf\n  }\n\n  get valueByOption() {\n    return this.config.emitPath ? this.pathValues : this.value\n  }\n\n  appendChild(childData: CascaderOption) {\n    const { childrenData, children } = this\n    const node = new Node(childData, this.config, this)\n\n    if (isArray(childrenData)) {\n      childrenData.push(childData)\n    } else {\n      this.childrenData = [childData]\n    }\n\n    children.push(node)\n\n    return node\n  }\n\n  calcText(allLevels: boolean, separator: string) {\n    const text = allLevels ? this.pathLabels.join(separator) : this.label\n    this.text = text\n    return text\n  }\n\n  broadcast(checked: boolean) {\n    this.children.forEach((child) => {\n      if (child) {\n        // bottom up\n        child.broadcast(checked)\n        child.onParentCheck?.(checked)\n      }\n    })\n  }\n\n  emit() {\n    const { parent } = this\n    if (parent) {\n      parent.onChildCheck?.()\n      parent.emit()\n    }\n  }\n\n  onParentCheck(checked: boolean) {\n    if (!this.isDisabled) {\n      this.setCheckState(checked)\n    }\n  }\n\n  onChildCheck() {\n    const { children } = this\n    const validChildren = children.filter((child) => !child.isDisabled)\n    const checked = validChildren.length\n      ? validChildren.every((child) => child.checked)\n      : false\n\n    this.setCheckState(checked)\n  }\n\n  setCheckState(checked: boolean) {\n    const totalNum = this.children.length\n    const checkedNum = this.children.reduce((c, p) => {\n      const num = p.checked ? 1 : p.indeterminate ? 0.5 : 0\n      return c + num\n    }, 0)\n\n    this.checked =\n      this.loaded &&\n      this.children\n        .filter((child) => !child.isDisabled)\n        .every((child) => child.loaded && child.checked) &&\n      checked\n    this.indeterminate =\n      this.loaded && checkedNum !== totalNum && checkedNum > 0\n  }\n\n  doCheck(checked: boolean) {\n    if (this.checked === checked) return\n\n    const { checkStrictly, multiple } = this.config\n\n    if (checkStrictly || !multiple) {\n      this.checked = checked\n    } else {\n      // bottom up to unify the calculation of the indeterminate state\n      this.broadcast(checked)\n      this.setCheckState(checked)\n      this.emit()\n    }\n  }\n}\n\nexport default Node\n","import { isEqual } from 'lodash-unified'\nimport { isPropAbsent } from '@pit-element-plus/utils'\nimport Node from './node'\n\nimport type { Nullable } from '@pit-element-plus/utils'\nimport type {\n  CascaderConfig,\n  CascaderNodePathValue,\n  CascaderNodeValue,\n  CascaderOption,\n} from './types'\n\nconst flatNodes = (nodes: Node[], leafOnly: boolean) => {\n  return nodes.reduce((res, node) => {\n    if (node.isLeaf) {\n      res.push(node)\n    } else {\n      !leafOnly && res.push(node)\n      res = res.concat(flatNodes(node.children, leafOnly))\n    }\n    return res\n  }, [] as Node[])\n}\n\nexport default class Store {\n  readonly nodes: Node[]\n  readonly allNodes: Node[]\n  readonly leafNodes: Node[]\n\n  constructor(\n    data: CascaderOption[],\n    readonly config: CascaderConfig\n  ) {\n    const nodes = (data || []).map(\n      (nodeData) => new Node(nodeData, this.config)\n    )\n    this.nodes = nodes\n    this.allNodes = flatNodes(nodes, false)\n    this.leafNodes = flatNodes(nodes, true)\n  }\n\n  getNodes() {\n    return this.nodes\n  }\n\n  getFlattedNodes(leafOnly: boolean) {\n    return leafOnly ? this.leafNodes : this.allNodes\n  }\n\n  appendNode(nodeData: CascaderOption, parentNode?: Node) {\n    const node = parentNode\n      ? parentNode.appendChild(nodeData)\n      : new Node(nodeData, this.config)\n\n    if (!parentNode) this.nodes.push(node)\n\n    this.appendAllNodesAndLeafNodes(node)\n  }\n\n  appendNodes(nodeDataList: CascaderOption[], parentNode: Node) {\n    if (nodeDataList.length > 0) {\n      nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode))\n    } else {\n      parentNode && parentNode.isLeaf && this.leafNodes.push(parentNode)\n    }\n  }\n\n  appendAllNodesAndLeafNodes(node: Node) {\n    this.allNodes.push(node)\n    node.isLeaf && this.leafNodes.push(node)\n    if (node.children) {\n      node.children.forEach((subNode) => {\n        this.appendAllNodesAndLeafNodes(subNode)\n      })\n    }\n  }\n\n  // when checkStrictly, leaf node first\n  getNodeByValue(\n    value: CascaderNodeValue | CascaderNodePathValue,\n    leafOnly = false\n  ): Nullable<Node> {\n    if (isPropAbsent(value)) return null\n\n    const node = this.getFlattedNodes(leafOnly).find(\n      (node) => isEqual(node.value, value) || isEqual(node.pathValues, value)\n    )\n\n    return node || null\n  }\n\n  getSameNode(node: Node): Nullable<Node> {\n    if (!node) return null\n\n    const node_ = this.getFlattedNodes(false).find(\n      ({ value, level }) => isEqual(node.value, value) && node.level === level\n    )\n\n    return node_ || null\n  }\n}\n","import { isLeaf } from '@pit-element-plus/utils'\n\nimport type { CascaderNode } from './types'\n\nexport const getMenuIndex = (el: HTMLElement) => {\n  if (!el) return 0\n  const pieces = el.id.split('-')\n  return Number(pieces[pieces.length - 2])\n}\n\nexport const checkNode = (el: HTMLElement) => {\n  if (!el) return\n\n  const input = el.querySelector('input')\n  if (input) {\n    input.click()\n  } else if (isLeaf(el)) {\n    el.click()\n  }\n}\n\nexport const sortByOriginalOrder = (\n  oldNodes: CascaderNode[],\n  newNodes: CascaderNode[]\n) => {\n  const newNodesCopy = newNodes.slice(0)\n  const newIds = newNodesCopy.map((node) => node.uid)\n  const res = oldNodes.reduce((acc, item) => {\n    const index = newIds.indexOf(item.uid)\n    if (index > -1) {\n      acc.push(item)\n      newNodesCopy.splice(index, 1)\n      newIds.splice(index, 1)\n    }\n    return acc\n  }, [] as CascaderNode[])\n\n  res.push(...newNodesCopy)\n\n  return res\n}\n","<template>\n  <div\n    :class=\"[ns.b('panel'), ns.is('bordered', border)]\"\n    @keydown=\"handleKeyDown\"\n  >\n    <el-cascader-menu\n      v-for=\"(menu, index) in menus\"\n      :key=\"index\"\n      :ref=\"(item) => (menuList[index] = item as CascaderMenuInstance)\"\n      :index=\"index\"\n      :nodes=\"[...menu]\"\n    >\n      <template #empty>\n        <slot name=\"empty\" />\n      </template>\n    </el-cascader-menu>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onBeforeUpdate,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { cloneDeep, flattenDeep, isEqual } from 'lodash-unified'\nimport {\n  castArray,\n  focusNode,\n  getEventCode,\n  getSibling,\n  isClient,\n  isEmpty,\n  scrollIntoView,\n  unique,\n} from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport ElCascaderMenu from './menu.vue'\nimport Store from './store'\nimport Node from './node'\nimport { cascaderPanelEmits, useCascaderConfig } from './config'\nimport { checkNode, getMenuIndex, sortByOriginalOrder } from './utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type {\n  CascaderNode,\n  CascaderNodeValue,\n  CascaderOption,\n  CascaderProps,\n  CascaderValue,\n  ElCascaderPanelContext,\n} from './types'\nimport type { CascaderMenuInstance } from './instance'\nimport type { CascaderPanelProps } from './config'\n\ndefineOptions({\n  name: 'ElCascaderPanel',\n})\n\nconst props = withDefaults(defineProps<CascaderPanelProps>(), {\n  options: () => [] as CascaderOption[],\n  props: () => ({}) as CascaderProps,\n  border: true,\n})\nconst emit = defineEmits(cascaderPanelEmits)\n\n// for interrupt sync check status in lazy mode\nlet manualChecked = false\n\nconst ns = useNamespace('cascader')\nconst config = useCascaderConfig(props)\nconst slots = useSlots()\n\nlet store: Store\nconst initialLoaded = ref(true)\nconst initialLoadedOnce = ref(false)\nconst menuList = ref<CascaderMenuInstance[]>([])\nconst checkedValue = ref<CascaderValue>()\nconst menus = ref<CascaderNode[][]>([])\nconst expandingNode = ref<CascaderNode>()\nconst checkedNodes = ref<CascaderNode[]>([])\n\nconst isHoverMenu = computed(() => config.value.expandTrigger === 'hover')\nconst renderLabelFn = computed(() => props.renderLabel || slots.default)\n\nconst initStore = () => {\n  const { options } = props\n  const cfg = config.value\n\n  manualChecked = false\n  store = new Store(options, cfg)\n  menus.value = [store.getNodes()]\n\n  if (cfg.lazy && isEmpty(props.options)) {\n    initialLoaded.value = false\n    lazyLoad(undefined, (list) => {\n      if (list) {\n        store = new Store(list, cfg)\n        menus.value = [store.getNodes()]\n      }\n      initialLoaded.value = true\n      syncCheckedValue(false, true)\n    })\n  } else {\n    syncCheckedValue(false, true)\n  }\n}\n\nconst lazyLoad: ElCascaderPanelContext['lazyLoad'] = (node, cb) => {\n  const cfg = config.value\n  node! = node || new Node({}, cfg, undefined, true)\n  node.loading = true\n\n  const resolve = (dataList?: CascaderOption[]) => {\n    const _node = node as Node\n    const parent = _node.root ? null : _node\n    _node.loading = false\n    _node.loaded = true\n    _node.childrenData = _node.childrenData || []\n    dataList && store?.appendNodes(dataList, parent as Node)\n    dataList && cb?.(dataList)\n    if (node.level === 0) {\n      initialLoadedOnce.value = true\n    }\n  }\n\n  const reject = () => {\n    node!.loading = false\n    node!.loaded = false\n    if (node!.level === 0) {\n      initialLoaded.value = true\n    }\n  }\n\n  cfg.lazyLoad(node, resolve, reject)\n}\n\nconst expandNode: ElCascaderPanelContext['expandNode'] = (node, silent) => {\n  const { level } = node\n  const newMenus = menus.value.slice(0, level)\n  let newExpandingNode: CascaderNode\n\n  if (node.isLeaf) {\n    newExpandingNode = node.pathNodes[level - 2]\n  } else {\n    newExpandingNode = node\n    newMenus.push(node.children)\n  }\n\n  if (expandingNode.value?.uid !== newExpandingNode?.uid) {\n    expandingNode.value = node\n    menus.value = newMenus\n    !silent && emit('expand-change', node?.pathValues || [])\n  }\n}\n\nconst handleCheckChange: ElCascaderPanelContext['handleCheckChange'] = (\n  node,\n  checked,\n  emitClose = true\n) => {\n  const { checkStrictly, multiple } = config.value\n  const oldNode = checkedNodes.value[0]\n  manualChecked = true\n\n  !multiple && oldNode?.doCheck(false)\n  node.doCheck(checked)\n  calculateCheckedValue()\n  emitClose && !multiple && !checkStrictly && emit('close')\n  !emitClose && !multiple && expandParentNode(node)\n}\n\nconst expandParentNode = (node: Node | undefined) => {\n  if (!node) return\n  node = node.parent\n  expandParentNode(node)\n  node && expandNode(node)\n}\n\nconst getFlattedNodes = (leafOnly: boolean) => store?.getFlattedNodes(leafOnly)\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n  return getFlattedNodes(leafOnly)?.filter(({ checked }) => checked !== false)\n}\n\nconst clearCheckedNodes = () => {\n  checkedNodes.value.forEach((node) => node.doCheck(false))\n  calculateCheckedValue()\n  menus.value = menus.value.slice(0, 1)\n  expandingNode.value = undefined\n  emit('expand-change', [])\n}\n\nconst calculateCheckedValue = () => {\n  const { checkStrictly, multiple } = config.value\n  const oldNodes = checkedNodes.value\n  const newNodes = getCheckedNodes(!checkStrictly)!\n  // ensure the original order\n  const nodes = sortByOriginalOrder(oldNodes, newNodes)\n  const values = nodes.map((node) => node.valueByOption)\n  checkedNodes.value = nodes\n  checkedValue.value = multiple ? values : (values[0] ?? null)\n}\n\nconst syncCheckedValue = (loaded = false, forced = false) => {\n  const { modelValue } = props\n  const { lazy, multiple, checkStrictly } = config.value\n  const leafOnly = !checkStrictly\n\n  if (\n    !initialLoaded.value ||\n    manualChecked ||\n    (!forced && isEqual(modelValue, checkedValue.value))\n  )\n    return\n\n  if (lazy && !loaded) {\n    const values: CascaderNodeValue[] = unique(\n      flattenDeep(castArray(modelValue as CascaderNodeValue[]))\n    )\n    const nodes = values\n      .map((val) => store?.getNodeByValue(val))\n      .filter((node) => !!node && !node.loaded && !node.loading) as Node[]\n\n    if (nodes.length) {\n      nodes.forEach((node) => {\n        lazyLoad(node, () => syncCheckedValue(false, forced))\n      })\n    } else {\n      syncCheckedValue(true, forced)\n    }\n  } else {\n    const values = multiple ? castArray(modelValue) : [modelValue]\n    const nodes = unique(\n      values.map((val) =>\n        store?.getNodeByValue(val as CascaderNodeValue, leafOnly)\n      )\n    ) as Node[]\n    syncMenuState(nodes, forced)\n    checkedValue.value = cloneDeep(modelValue ?? undefined)\n  }\n}\n\nconst syncMenuState = (\n  newCheckedNodes: CascaderNode[],\n  reserveExpandingState = true\n) => {\n  const { checkStrictly } = config.value\n  const oldNodes = checkedNodes.value\n  const newNodes = newCheckedNodes.filter(\n    (node) => !!node && (checkStrictly || node.isLeaf)\n  )\n  const oldExpandingNode = store?.getSameNode(expandingNode.value!)\n  const newExpandingNode =\n    (reserveExpandingState && oldExpandingNode) || newNodes[0]\n\n  if (newExpandingNode) {\n    newExpandingNode.pathNodes.forEach((node) => expandNode(node, true))\n  } else {\n    expandingNode.value = undefined\n  }\n\n  oldNodes.forEach((node) => node.doCheck(false))\n  reactive(newNodes).forEach((node) => node.doCheck(true))\n  checkedNodes.value = newNodes\n  nextTick(scrollToExpandingNode)\n}\n\nconst scrollToExpandingNode = () => {\n  if (!isClient) return\n\n  menuList.value.forEach((menu) => {\n    const menuElement = menu?.$el\n    if (menuElement) {\n      const container = menuElement.querySelector(\n        `.${ns.namespace.value}-scrollbar__wrap`\n      )\n      let activeNode = menuElement.querySelector(\n        `.${ns.b('node')}.in-active-path`\n      )\n      if (!activeNode) {\n        const activeElements = menuElement.querySelectorAll(\n          `.${ns.b('node')}.${ns.is('active')}`\n        )\n        activeNode = activeElements[activeElements.length - 1]\n      }\n      scrollIntoView(container, activeNode)\n    }\n  })\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.down: {\n      e.preventDefault()\n      const distance = code === EVENT_CODE.up ? -1 : 1\n      focusNode(\n        getSibling(\n          target,\n          distance,\n          `.${ns.b('node')}[tabindex=\"-1\"]`\n        ) as HTMLElement\n      )\n      break\n    }\n    case EVENT_CODE.left: {\n      e.preventDefault()\n      const preMenu = menuList.value[getMenuIndex(target) - 1]\n      const expandedNode = preMenu?.$el.querySelector(\n        `.${ns.b('node')}[aria-expanded=\"true\"]`\n      )\n      focusNode(expandedNode)\n      break\n    }\n    case EVENT_CODE.right: {\n      e.preventDefault()\n      const nextMenu = menuList.value[getMenuIndex(target) + 1]\n      const firstNode = nextMenu?.$el.querySelector(\n        `.${ns.b('node')}[tabindex=\"-1\"]`\n      )\n      focusNode(firstNode)\n      break\n    }\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      checkNode(target)\n      break\n  }\n}\n\nprovide(\n  CASCADER_PANEL_INJECTION_KEY,\n  reactive({\n    config,\n    expandingNode,\n    checkedNodes,\n    isHoverMenu,\n    initialLoaded,\n    renderLabelFn,\n    lazyLoad,\n    expandNode,\n    handleCheckChange,\n  })\n)\n\nwatch(\n  config,\n  (newVal, oldVal) => {\n    if (isEqual(newVal, oldVal)) return\n    initStore()\n  },\n  {\n    immediate: true,\n  }\n)\n\nwatch(() => props.options, initStore, {\n  deep: true,\n})\n\nwatch(\n  () => props.modelValue,\n  () => {\n    manualChecked = false\n    syncCheckedValue()\n  },\n  {\n    deep: true,\n  }\n)\n\nwatch(\n  () => checkedValue.value,\n  (val) => {\n    if (!isEqual(val, props.modelValue)) {\n      emit(UPDATE_MODEL_EVENT, val)\n      emit(CHANGE_EVENT, val)\n    }\n  }\n)\n\nconst loadLazyRootNodes = () => {\n  if (initialLoadedOnce.value) return\n  initStore()\n}\n\nonBeforeUpdate(() => (menuList.value = []))\n\nonMounted(() => !isEmpty(props.modelValue) && syncCheckedValue())\n\ndefineExpose({\n  menuList,\n  menus,\n  checkedNodes,\n  handleKeyDown,\n  handleCheckChange,\n  getFlattedNodes,\n  /**\n   * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n   */\n  getCheckedNodes,\n  /**\n   * @description clear checked nodes\n   */\n  clearCheckedNodes,\n  calculateCheckedValue,\n  scrollToExpandingNode,\n  loadLazyRootNodes,\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b('panel'), ns.is('bordered', border)]\"\n    @keydown=\"handleKeyDown\"\n  >\n    <el-cascader-menu\n      v-for=\"(menu, index) in menus\"\n      :key=\"index\"\n      :ref=\"(item) => (menuList[index] = item as CascaderMenuInstance)\"\n      :index=\"index\"\n      :nodes=\"[...menu]\"\n    >\n      <template #empty>\n        <slot name=\"empty\" />\n      </template>\n    </el-cascader-menu>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onBeforeUpdate,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { cloneDeep, flattenDeep, isEqual } from 'lodash-unified'\nimport {\n  castArray,\n  focusNode,\n  getEventCode,\n  getSibling,\n  isClient,\n  isEmpty,\n  scrollIntoView,\n  unique,\n} from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport ElCascaderMenu from './menu.vue'\nimport Store from './store'\nimport Node from './node'\nimport { cascaderPanelEmits, useCascaderConfig } from './config'\nimport { checkNode, getMenuIndex, sortByOriginalOrder } from './utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type {\n  CascaderNode,\n  CascaderNodeValue,\n  CascaderOption,\n  CascaderProps,\n  CascaderValue,\n  ElCascaderPanelContext,\n} from './types'\nimport type { CascaderMenuInstance } from './instance'\nimport type { CascaderPanelProps } from './config'\n\ndefineOptions({\n  name: 'ElCascaderPanel',\n})\n\nconst props = withDefaults(defineProps<CascaderPanelProps>(), {\n  options: () => [] as CascaderOption[],\n  props: () => ({}) as CascaderProps,\n  border: true,\n})\nconst emit = defineEmits(cascaderPanelEmits)\n\n// for interrupt sync check status in lazy mode\nlet manualChecked = false\n\nconst ns = useNamespace('cascader')\nconst config = useCascaderConfig(props)\nconst slots = useSlots()\n\nlet store: Store\nconst initialLoaded = ref(true)\nconst initialLoadedOnce = ref(false)\nconst menuList = ref<CascaderMenuInstance[]>([])\nconst checkedValue = ref<CascaderValue>()\nconst menus = ref<CascaderNode[][]>([])\nconst expandingNode = ref<CascaderNode>()\nconst checkedNodes = ref<CascaderNode[]>([])\n\nconst isHoverMenu = computed(() => config.value.expandTrigger === 'hover')\nconst renderLabelFn = computed(() => props.renderLabel || slots.default)\n\nconst initStore = () => {\n  const { options } = props\n  const cfg = config.value\n\n  manualChecked = false\n  store = new Store(options, cfg)\n  menus.value = [store.getNodes()]\n\n  if (cfg.lazy && isEmpty(props.options)) {\n    initialLoaded.value = false\n    lazyLoad(undefined, (list) => {\n      if (list) {\n        store = new Store(list, cfg)\n        menus.value = [store.getNodes()]\n      }\n      initialLoaded.value = true\n      syncCheckedValue(false, true)\n    })\n  } else {\n    syncCheckedValue(false, true)\n  }\n}\n\nconst lazyLoad: ElCascaderPanelContext['lazyLoad'] = (node, cb) => {\n  const cfg = config.value\n  node! = node || new Node({}, cfg, undefined, true)\n  node.loading = true\n\n  const resolve = (dataList?: CascaderOption[]) => {\n    const _node = node as Node\n    const parent = _node.root ? null : _node\n    _node.loading = false\n    _node.loaded = true\n    _node.childrenData = _node.childrenData || []\n    dataList && store?.appendNodes(dataList, parent as Node)\n    dataList && cb?.(dataList)\n    if (node.level === 0) {\n      initialLoadedOnce.value = true\n    }\n  }\n\n  const reject = () => {\n    node!.loading = false\n    node!.loaded = false\n    if (node!.level === 0) {\n      initialLoaded.value = true\n    }\n  }\n\n  cfg.lazyLoad(node, resolve, reject)\n}\n\nconst expandNode: ElCascaderPanelContext['expandNode'] = (node, silent) => {\n  const { level } = node\n  const newMenus = menus.value.slice(0, level)\n  let newExpandingNode: CascaderNode\n\n  if (node.isLeaf) {\n    newExpandingNode = node.pathNodes[level - 2]\n  } else {\n    newExpandingNode = node\n    newMenus.push(node.children)\n  }\n\n  if (expandingNode.value?.uid !== newExpandingNode?.uid) {\n    expandingNode.value = node\n    menus.value = newMenus\n    !silent && emit('expand-change', node?.pathValues || [])\n  }\n}\n\nconst handleCheckChange: ElCascaderPanelContext['handleCheckChange'] = (\n  node,\n  checked,\n  emitClose = true\n) => {\n  const { checkStrictly, multiple } = config.value\n  const oldNode = checkedNodes.value[0]\n  manualChecked = true\n\n  !multiple && oldNode?.doCheck(false)\n  node.doCheck(checked)\n  calculateCheckedValue()\n  emitClose && !multiple && !checkStrictly && emit('close')\n  !emitClose && !multiple && expandParentNode(node)\n}\n\nconst expandParentNode = (node: Node | undefined) => {\n  if (!node) return\n  node = node.parent\n  expandParentNode(node)\n  node && expandNode(node)\n}\n\nconst getFlattedNodes = (leafOnly: boolean) => store?.getFlattedNodes(leafOnly)\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n  return getFlattedNodes(leafOnly)?.filter(({ checked }) => checked !== false)\n}\n\nconst clearCheckedNodes = () => {\n  checkedNodes.value.forEach((node) => node.doCheck(false))\n  calculateCheckedValue()\n  menus.value = menus.value.slice(0, 1)\n  expandingNode.value = undefined\n  emit('expand-change', [])\n}\n\nconst calculateCheckedValue = () => {\n  const { checkStrictly, multiple } = config.value\n  const oldNodes = checkedNodes.value\n  const newNodes = getCheckedNodes(!checkStrictly)!\n  // ensure the original order\n  const nodes = sortByOriginalOrder(oldNodes, newNodes)\n  const values = nodes.map((node) => node.valueByOption)\n  checkedNodes.value = nodes\n  checkedValue.value = multiple ? values : (values[0] ?? null)\n}\n\nconst syncCheckedValue = (loaded = false, forced = false) => {\n  const { modelValue } = props\n  const { lazy, multiple, checkStrictly } = config.value\n  const leafOnly = !checkStrictly\n\n  if (\n    !initialLoaded.value ||\n    manualChecked ||\n    (!forced && isEqual(modelValue, checkedValue.value))\n  )\n    return\n\n  if (lazy && !loaded) {\n    const values: CascaderNodeValue[] = unique(\n      flattenDeep(castArray(modelValue as CascaderNodeValue[]))\n    )\n    const nodes = values\n      .map((val) => store?.getNodeByValue(val))\n      .filter((node) => !!node && !node.loaded && !node.loading) as Node[]\n\n    if (nodes.length) {\n      nodes.forEach((node) => {\n        lazyLoad(node, () => syncCheckedValue(false, forced))\n      })\n    } else {\n      syncCheckedValue(true, forced)\n    }\n  } else {\n    const values = multiple ? castArray(modelValue) : [modelValue]\n    const nodes = unique(\n      values.map((val) =>\n        store?.getNodeByValue(val as CascaderNodeValue, leafOnly)\n      )\n    ) as Node[]\n    syncMenuState(nodes, forced)\n    checkedValue.value = cloneDeep(modelValue ?? undefined)\n  }\n}\n\nconst syncMenuState = (\n  newCheckedNodes: CascaderNode[],\n  reserveExpandingState = true\n) => {\n  const { checkStrictly } = config.value\n  const oldNodes = checkedNodes.value\n  const newNodes = newCheckedNodes.filter(\n    (node) => !!node && (checkStrictly || node.isLeaf)\n  )\n  const oldExpandingNode = store?.getSameNode(expandingNode.value!)\n  const newExpandingNode =\n    (reserveExpandingState && oldExpandingNode) || newNodes[0]\n\n  if (newExpandingNode) {\n    newExpandingNode.pathNodes.forEach((node) => expandNode(node, true))\n  } else {\n    expandingNode.value = undefined\n  }\n\n  oldNodes.forEach((node) => node.doCheck(false))\n  reactive(newNodes).forEach((node) => node.doCheck(true))\n  checkedNodes.value = newNodes\n  nextTick(scrollToExpandingNode)\n}\n\nconst scrollToExpandingNode = () => {\n  if (!isClient) return\n\n  menuList.value.forEach((menu) => {\n    const menuElement = menu?.$el\n    if (menuElement) {\n      const container = menuElement.querySelector(\n        `.${ns.namespace.value}-scrollbar__wrap`\n      )\n      let activeNode = menuElement.querySelector(\n        `.${ns.b('node')}.in-active-path`\n      )\n      if (!activeNode) {\n        const activeElements = menuElement.querySelectorAll(\n          `.${ns.b('node')}.${ns.is('active')}`\n        )\n        activeNode = activeElements[activeElements.length - 1]\n      }\n      scrollIntoView(container, activeNode)\n    }\n  })\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.down: {\n      e.preventDefault()\n      const distance = code === EVENT_CODE.up ? -1 : 1\n      focusNode(\n        getSibling(\n          target,\n          distance,\n          `.${ns.b('node')}[tabindex=\"-1\"]`\n        ) as HTMLElement\n      )\n      break\n    }\n    case EVENT_CODE.left: {\n      e.preventDefault()\n      const preMenu = menuList.value[getMenuIndex(target) - 1]\n      const expandedNode = preMenu?.$el.querySelector(\n        `.${ns.b('node')}[aria-expanded=\"true\"]`\n      )\n      focusNode(expandedNode)\n      break\n    }\n    case EVENT_CODE.right: {\n      e.preventDefault()\n      const nextMenu = menuList.value[getMenuIndex(target) + 1]\n      const firstNode = nextMenu?.$el.querySelector(\n        `.${ns.b('node')}[tabindex=\"-1\"]`\n      )\n      focusNode(firstNode)\n      break\n    }\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      checkNode(target)\n      break\n  }\n}\n\nprovide(\n  CASCADER_PANEL_INJECTION_KEY,\n  reactive({\n    config,\n    expandingNode,\n    checkedNodes,\n    isHoverMenu,\n    initialLoaded,\n    renderLabelFn,\n    lazyLoad,\n    expandNode,\n    handleCheckChange,\n  })\n)\n\nwatch(\n  config,\n  (newVal, oldVal) => {\n    if (isEqual(newVal, oldVal)) return\n    initStore()\n  },\n  {\n    immediate: true,\n  }\n)\n\nwatch(() => props.options, initStore, {\n  deep: true,\n})\n\nwatch(\n  () => props.modelValue,\n  () => {\n    manualChecked = false\n    syncCheckedValue()\n  },\n  {\n    deep: true,\n  }\n)\n\nwatch(\n  () => checkedValue.value,\n  (val) => {\n    if (!isEqual(val, props.modelValue)) {\n      emit(UPDATE_MODEL_EVENT, val)\n      emit(CHANGE_EVENT, val)\n    }\n  }\n)\n\nconst loadLazyRootNodes = () => {\n  if (initialLoadedOnce.value) return\n  initStore()\n}\n\nonBeforeUpdate(() => (menuList.value = []))\n\nonMounted(() => !isEmpty(props.modelValue) && syncCheckedValue())\n\ndefineExpose({\n  menuList,\n  menus,\n  checkedNodes,\n  handleKeyDown,\n  handleCheckChange,\n  getFlattedNodes,\n  /**\n   * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n   */\n  getCheckedNodes,\n  /**\n   * @description clear checked nodes\n   */\n  clearCheckedNodes,\n  calculateCheckedValue,\n  scrollToExpandingNode,\n  loadLazyRootNodes,\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b('panel'), ns.is('bordered', border)]\"\n    @keydown=\"handleKeyDown\"\n  >\n    <el-cascader-menu\n      v-for=\"(menu, index) in menus\"\n      :key=\"index\"\n      :ref=\"(item) => (menuList[index] = item as CascaderMenuInstance)\"\n      :index=\"index\"\n      :nodes=\"[...menu]\"\n    >\n      <template #empty>\n        <slot name=\"empty\" />\n      </template>\n    </el-cascader-menu>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onBeforeUpdate,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { cloneDeep, flattenDeep, isEqual } from 'lodash-unified'\nimport {\n  castArray,\n  focusNode,\n  getEventCode,\n  getSibling,\n  isClient,\n  isEmpty,\n  scrollIntoView,\n  unique,\n} from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport ElCascaderMenu from './menu.vue'\nimport Store from './store'\nimport Node from './node'\nimport { cascaderPanelEmits, useCascaderConfig } from './config'\nimport { checkNode, getMenuIndex, sortByOriginalOrder } from './utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type {\n  CascaderNode,\n  CascaderNodeValue,\n  CascaderOption,\n  CascaderProps,\n  CascaderValue,\n  ElCascaderPanelContext,\n} from './types'\nimport type { CascaderMenuInstance } from './instance'\nimport type { CascaderPanelProps } from './config'\n\ndefineOptions({\n  name: 'ElCascaderPanel',\n})\n\nconst props = withDefaults(defineProps<CascaderPanelProps>(), {\n  options: () => [] as CascaderOption[],\n  props: () => ({}) as CascaderProps,\n  border: true,\n})\nconst emit = defineEmits(cascaderPanelEmits)\n\n// for interrupt sync check status in lazy mode\nlet manualChecked = false\n\nconst ns = useNamespace('cascader')\nconst config = useCascaderConfig(props)\nconst slots = useSlots()\n\nlet store: Store\nconst initialLoaded = ref(true)\nconst initialLoadedOnce = ref(false)\nconst menuList = ref<CascaderMenuInstance[]>([])\nconst checkedValue = ref<CascaderValue>()\nconst menus = ref<CascaderNode[][]>([])\nconst expandingNode = ref<CascaderNode>()\nconst checkedNodes = ref<CascaderNode[]>([])\n\nconst isHoverMenu = computed(() => config.value.expandTrigger === 'hover')\nconst renderLabelFn = computed(() => props.renderLabel || slots.default)\n\nconst initStore = () => {\n  const { options } = props\n  const cfg = config.value\n\n  manualChecked = false\n  store = new Store(options, cfg)\n  menus.value = [store.getNodes()]\n\n  if (cfg.lazy && isEmpty(props.options)) {\n    initialLoaded.value = false\n    lazyLoad(undefined, (list) => {\n      if (list) {\n        store = new Store(list, cfg)\n        menus.value = [store.getNodes()]\n      }\n      initialLoaded.value = true\n      syncCheckedValue(false, true)\n    })\n  } else {\n    syncCheckedValue(false, true)\n  }\n}\n\nconst lazyLoad: ElCascaderPanelContext['lazyLoad'] = (node, cb) => {\n  const cfg = config.value\n  node! = node || new Node({}, cfg, undefined, true)\n  node.loading = true\n\n  const resolve = (dataList?: CascaderOption[]) => {\n    const _node = node as Node\n    const parent = _node.root ? null : _node\n    _node.loading = false\n    _node.loaded = true\n    _node.childrenData = _node.childrenData || []\n    dataList && store?.appendNodes(dataList, parent as Node)\n    dataList && cb?.(dataList)\n    if (node.level === 0) {\n      initialLoadedOnce.value = true\n    }\n  }\n\n  const reject = () => {\n    node!.loading = false\n    node!.loaded = false\n    if (node!.level === 0) {\n      initialLoaded.value = true\n    }\n  }\n\n  cfg.lazyLoad(node, resolve, reject)\n}\n\nconst expandNode: ElCascaderPanelContext['expandNode'] = (node, silent) => {\n  const { level } = node\n  const newMenus = menus.value.slice(0, level)\n  let newExpandingNode: CascaderNode\n\n  if (node.isLeaf) {\n    newExpandingNode = node.pathNodes[level - 2]\n  } else {\n    newExpandingNode = node\n    newMenus.push(node.children)\n  }\n\n  if (expandingNode.value?.uid !== newExpandingNode?.uid) {\n    expandingNode.value = node\n    menus.value = newMenus\n    !silent && emit('expand-change', node?.pathValues || [])\n  }\n}\n\nconst handleCheckChange: ElCascaderPanelContext['handleCheckChange'] = (\n  node,\n  checked,\n  emitClose = true\n) => {\n  const { checkStrictly, multiple } = config.value\n  const oldNode = checkedNodes.value[0]\n  manualChecked = true\n\n  !multiple && oldNode?.doCheck(false)\n  node.doCheck(checked)\n  calculateCheckedValue()\n  emitClose && !multiple && !checkStrictly && emit('close')\n  !emitClose && !multiple && expandParentNode(node)\n}\n\nconst expandParentNode = (node: Node | undefined) => {\n  if (!node) return\n  node = node.parent\n  expandParentNode(node)\n  node && expandNode(node)\n}\n\nconst getFlattedNodes = (leafOnly: boolean) => store?.getFlattedNodes(leafOnly)\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n  return getFlattedNodes(leafOnly)?.filter(({ checked }) => checked !== false)\n}\n\nconst clearCheckedNodes = () => {\n  checkedNodes.value.forEach((node) => node.doCheck(false))\n  calculateCheckedValue()\n  menus.value = menus.value.slice(0, 1)\n  expandingNode.value = undefined\n  emit('expand-change', [])\n}\n\nconst calculateCheckedValue = () => {\n  const { checkStrictly, multiple } = config.value\n  const oldNodes = checkedNodes.value\n  const newNodes = getCheckedNodes(!checkStrictly)!\n  // ensure the original order\n  const nodes = sortByOriginalOrder(oldNodes, newNodes)\n  const values = nodes.map((node) => node.valueByOption)\n  checkedNodes.value = nodes\n  checkedValue.value = multiple ? values : (values[0] ?? null)\n}\n\nconst syncCheckedValue = (loaded = false, forced = false) => {\n  const { modelValue } = props\n  const { lazy, multiple, checkStrictly } = config.value\n  const leafOnly = !checkStrictly\n\n  if (\n    !initialLoaded.value ||\n    manualChecked ||\n    (!forced && isEqual(modelValue, checkedValue.value))\n  )\n    return\n\n  if (lazy && !loaded) {\n    const values: CascaderNodeValue[] = unique(\n      flattenDeep(castArray(modelValue as CascaderNodeValue[]))\n    )\n    const nodes = values\n      .map((val) => store?.getNodeByValue(val))\n      .filter((node) => !!node && !node.loaded && !node.loading) as Node[]\n\n    if (nodes.length) {\n      nodes.forEach((node) => {\n        lazyLoad(node, () => syncCheckedValue(false, forced))\n      })\n    } else {\n      syncCheckedValue(true, forced)\n    }\n  } else {\n    const values = multiple ? castArray(modelValue) : [modelValue]\n    const nodes = unique(\n      values.map((val) =>\n        store?.getNodeByValue(val as CascaderNodeValue, leafOnly)\n      )\n    ) as Node[]\n    syncMenuState(nodes, forced)\n    checkedValue.value = cloneDeep(modelValue ?? undefined)\n  }\n}\n\nconst syncMenuState = (\n  newCheckedNodes: CascaderNode[],\n  reserveExpandingState = true\n) => {\n  const { checkStrictly } = config.value\n  const oldNodes = checkedNodes.value\n  const newNodes = newCheckedNodes.filter(\n    (node) => !!node && (checkStrictly || node.isLeaf)\n  )\n  const oldExpandingNode = store?.getSameNode(expandingNode.value!)\n  const newExpandingNode =\n    (reserveExpandingState && oldExpandingNode) || newNodes[0]\n\n  if (newExpandingNode) {\n    newExpandingNode.pathNodes.forEach((node) => expandNode(node, true))\n  } else {\n    expandingNode.value = undefined\n  }\n\n  oldNodes.forEach((node) => node.doCheck(false))\n  reactive(newNodes).forEach((node) => node.doCheck(true))\n  checkedNodes.value = newNodes\n  nextTick(scrollToExpandingNode)\n}\n\nconst scrollToExpandingNode = () => {\n  if (!isClient) return\n\n  menuList.value.forEach((menu) => {\n    const menuElement = menu?.$el\n    if (menuElement) {\n      const container = menuElement.querySelector(\n        `.${ns.namespace.value}-scrollbar__wrap`\n      )\n      let activeNode = menuElement.querySelector(\n        `.${ns.b('node')}.in-active-path`\n      )\n      if (!activeNode) {\n        const activeElements = menuElement.querySelectorAll(\n          `.${ns.b('node')}.${ns.is('active')}`\n        )\n        activeNode = activeElements[activeElements.length - 1]\n      }\n      scrollIntoView(container, activeNode)\n    }\n  })\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.down: {\n      e.preventDefault()\n      const distance = code === EVENT_CODE.up ? -1 : 1\n      focusNode(\n        getSibling(\n          target,\n          distance,\n          `.${ns.b('node')}[tabindex=\"-1\"]`\n        ) as HTMLElement\n      )\n      break\n    }\n    case EVENT_CODE.left: {\n      e.preventDefault()\n      const preMenu = menuList.value[getMenuIndex(target) - 1]\n      const expandedNode = preMenu?.$el.querySelector(\n        `.${ns.b('node')}[aria-expanded=\"true\"]`\n      )\n      focusNode(expandedNode)\n      break\n    }\n    case EVENT_CODE.right: {\n      e.preventDefault()\n      const nextMenu = menuList.value[getMenuIndex(target) + 1]\n      const firstNode = nextMenu?.$el.querySelector(\n        `.${ns.b('node')}[tabindex=\"-1\"]`\n      )\n      focusNode(firstNode)\n      break\n    }\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      checkNode(target)\n      break\n  }\n}\n\nprovide(\n  CASCADER_PANEL_INJECTION_KEY,\n  reactive({\n    config,\n    expandingNode,\n    checkedNodes,\n    isHoverMenu,\n    initialLoaded,\n    renderLabelFn,\n    lazyLoad,\n    expandNode,\n    handleCheckChange,\n  })\n)\n\nwatch(\n  config,\n  (newVal, oldVal) => {\n    if (isEqual(newVal, oldVal)) return\n    initStore()\n  },\n  {\n    immediate: true,\n  }\n)\n\nwatch(() => props.options, initStore, {\n  deep: true,\n})\n\nwatch(\n  () => props.modelValue,\n  () => {\n    manualChecked = false\n    syncCheckedValue()\n  },\n  {\n    deep: true,\n  }\n)\n\nwatch(\n  () => checkedValue.value,\n  (val) => {\n    if (!isEqual(val, props.modelValue)) {\n      emit(UPDATE_MODEL_EVENT, val)\n      emit(CHANGE_EVENT, val)\n    }\n  }\n)\n\nconst loadLazyRootNodes = () => {\n  if (initialLoadedOnce.value) return\n  initStore()\n}\n\nonBeforeUpdate(() => (menuList.value = []))\n\nonMounted(() => !isEmpty(props.modelValue) && syncCheckedValue())\n\ndefineExpose({\n  menuList,\n  menus,\n  checkedNodes,\n  handleKeyDown,\n  handleCheckChange,\n  getFlattedNodes,\n  /**\n   * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n   */\n  getCheckedNodes,\n  /**\n   * @description clear checked nodes\n   */\n  clearCheckedNodes,\n  calculateCheckedValue,\n  scrollToExpandingNode,\n  loadLazyRootNodes,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport CascaderPanel from './src/index.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCascaderPanel: SFCWithInstall<typeof CascaderPanel> =\n  withInstall(CascaderPanel)\n\nexport default ElCascaderPanel\nexport * from './src/types'\nexport * from './src/config'\nexport * from './src/instance'\n","import { placements } from '@popperjs/core'\nimport { CommonProps } from '@pit-element-plus/components/cascader-panel'\nimport {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isBoolean,\n} from '@pit-element-plus/utils'\nimport { useEmptyValuesProps, useSizeProp } from '@pit-element-plus/hooks'\nimport { useTooltipContentProps } from '@pit-element-plus/components/tooltip'\nimport { tagProps } from '@pit-element-plus/components/tag'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { CircleClose } from 'pit-element-icons'\n\nimport type { StyleValue } from 'vue'\nimport type { UseEmptyValuesProps } from '@pit-element-plus/hooks'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type {\n  Placement,\n  PopperEffect,\n} from '@pit-element-plus/components/popper'\nimport type {\n  CascaderCommonProps,\n  CascaderNode,\n  CascaderValue,\n} from '@pit-element-plus/components/cascader-panel'\nimport type { TagProps } from '@pit-element-plus/components/tag'\nimport type { IconPropType } from '@pit-element-plus/utils'\n\ntype CascaderClassType = string | Record<string, boolean> | CascaderClassType[]\n\nexport interface CascaderComponentProps\n  extends CascaderCommonProps, UseEmptyValuesProps {\n  /**\n   * @description size of input\n   */\n  size?: ComponentSize\n  /**\n   * @description placeholder of input\n   */\n  placeholder?: string\n  /**\n   * @description whether Cascader is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description whether selected value can be cleared\n   */\n  clearable?: boolean\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon?: IconPropType\n  /**\n   * @description whether the options can be searched\n   */\n  filterable?: boolean\n  /**\n   * @description customize search logic, the first parameter is `node`, the second is `keyword`, and need return a boolean value indicating whether it hits.\n   */\n  filterMethod?: (node: CascaderNode, keyword: string) => boolean\n  /**\n   * @description option label separator\n   */\n  separator?: string\n  /**\n   * @description whether to display all levels of the selected value in the input\n   */\n  showAllLevels?: boolean\n  /**\n   * @description whether to collapse tags in multiple selection mode\n   */\n  collapseTags?: boolean\n  /**\n   * @description The max tags number to be shown. To use this, collapse-tags must be true\n   */\n  maxCollapseTags?: number\n  /**\n   * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, collapse-tags must be true\n   */\n  collapseTagsTooltip?: boolean\n  /**\n   * @description The max height of collapse tags tooltip, in pixels. To use this, collapse-tags-tooltip must be true\n   */\n  maxCollapseTagsTooltipHeight?: string | number\n  /**\n   * @description debounce delay when typing filter keyword, in milliseconds\n   */\n  debounce?: number\n  /**\n   * @description hook function before filtering with the value to be filtered as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, filtering will be aborted\n   */\n  beforeFilter?: (value: string) => boolean | Promise<any>\n  /**\n   * @description position of dropdown\n   */\n  placement?: Placement\n  /**\n   * @description list of possible positions for dropdown\n   */\n  fallbackPlacements?: Placement[]\n  /**\n   * @description custom class name for Cascader's dropdown\n   */\n  popperClass?: CascaderClassType\n  /**\n   * @description custom style for Cascader's dropdown\n   */\n  popperStyle?: StyleValue\n  /**\n   * @description whether cascader popup is teleported\n   */\n  teleported?: boolean\n  /**\n   * @description tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect?: PopperEffect\n  /**\n   * @description tag type\n   */\n  tagType?: TagProps['type']\n  /**\n   * @description tag effect\n   */\n  tagEffect?: TagProps['effect']\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n  /**\n   * @description when dropdown is inactive and `persistent` is `false`, dropdown will be destroyed\n   */\n  persistent?: boolean\n  /**\n   * @description Use `parent` when you want things tidy (like \"Entire Collection\" instead of listing 100 items)\n   * Use `child` when every single item matters (like important settings)\n   */\n  showCheckedStrategy?: 'parent' | 'child'\n  /**\n   * @description whether to check or uncheck node when clicking on the node\n   */\n  checkOnClickNode?: boolean\n  /**\n   * @description whether to show the radio or checkbox prefix\n   */\n  showPrefix?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CascaderComponentProps` instead.\n */\nexport const cascaderProps = buildProps({\n  ...CommonProps,\n  /**\n   * @description size of input\n   */\n  size: useSizeProp,\n  /**\n   * @description placeholder of input\n   */\n  placeholder: String,\n  /**\n   * @description whether Cascader is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether selected value can be cleared\n   */\n  clearable: Boolean,\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon: {\n    type: iconPropType,\n    default: CircleClose,\n  },\n  /**\n   * @description whether the options can be searched\n   */\n  filterable: Boolean,\n  /**\n   * @description customize search logic, the first parameter is `node`, the second is `keyword`, and need return a boolean value indicating whether it hits.\n   */\n  filterMethod: {\n    type: definePropType<(node: CascaderNode, keyword: string) => boolean>(\n      Function\n    ),\n    default: (node: CascaderNode, keyword: string) =>\n      node.text.includes(keyword),\n  },\n  /**\n   * @description option label separator\n   */\n  separator: {\n    type: String,\n    default: ' / ',\n  },\n  /**\n   * @description whether to display all levels of the selected value in the input\n   */\n  showAllLevels: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to collapse tags in multiple selection mode\n   */\n  collapseTags: Boolean,\n  /**\n   * @description The max tags number to be shown. To use this, collapse-tags must be true\n   */\n  maxCollapseTags: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, collapse-tags must be true\n   */\n  collapseTagsTooltip: Boolean,\n  /**\n   * @description The max height of collapse tags tooltip, in pixels. To use this, collapse-tags-tooltip must be true\n   */\n  maxCollapseTagsTooltipHeight: {\n    type: [String, Number],\n  },\n  /**\n   * @description debounce delay when typing filter keyword, in milliseconds\n   */\n  debounce: {\n    type: Number,\n    default: 300,\n  },\n  /**\n   * @description hook function before filtering with the value to be filtered as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, filtering will be aborted\n   */\n  beforeFilter: {\n    type: definePropType<(value: string) => boolean | Promise<any>>(Function),\n    default: () => true,\n  },\n  /**\n   * @description position of dropdown\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    values: placements,\n    default: 'bottom-start',\n  },\n  /**\n   * @description list of possible positions for dropdown\n   */\n  fallbackPlacements: {\n    type: definePropType<Placement[]>(Array),\n    default: ['bottom-start', 'bottom', 'top-start', 'top', 'right', 'left'],\n  },\n  /**\n   * @description custom class name for Cascader's dropdown\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  /**\n   * @description custom style for Cascader's dropdown\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description whether cascader popup is teleported\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    type: definePropType<PopperEffect>(String),\n    default: 'light',\n  },\n  /**\n   * @description tag type\n   */\n\n  tagType: { ...tagProps.type, default: 'info' },\n  /**\n   * @description tag effect\n   */\n  tagEffect: { ...tagProps.effect, default: 'light' },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description when dropdown is inactive and `persistent` is `false`, dropdown will be destroyed\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Use `parent` when you want things tidy (like \"Entire Collection\" instead of listing 100 items)\n   * Use `child` when every single item matters (like important settings)\n   */\n  showCheckedStrategy: {\n    type: String,\n    values: ['parent', 'child'],\n    default: 'child',\n  },\n  /**\n   * @description whether to check or uncheck node when clicking on the node\n   */\n  checkOnClickNode: Boolean,\n  /**\n   * @description whether to show the radio or checkbox prefix\n   */\n  showPrefix: {\n    type: Boolean,\n    default: true,\n  },\n  ...useEmptyValuesProps,\n})\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst emitChangeFn = (value: CascaderValue | null | undefined) => true\n\nexport const cascaderEmits = {\n  [UPDATE_MODEL_EVENT]: emitChangeFn,\n  [CHANGE_EVENT]: emitChangeFn,\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n  visibleChange: (val: boolean) => isBoolean(val),\n  expandChange: (val: CascaderValue) => !!val,\n  removeTag: (val: CascaderNode['valueByOption']) => !!val,\n}\n\nexport type CascaderEmits = typeof cascaderEmits\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    :visible=\"popperVisible\"\n    :teleported=\"teleported\"\n    :popper-class=\"[nsCascader.e('dropdown'), popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :popper-options=\"popperOptions\"\n    :fallback-placements=\"fallbackPlacements\"\n    :stop-popper-mouse-event=\"false\"\n    :gpu-acceleration=\"false\"\n    :placement=\"placement\"\n    :transition=\"`${nsCascader.namespace.value}-zoom-in-top`\"\n    :effect=\"effect\"\n    pure\n    :persistent=\"persistent\"\n    @hide=\"hideSuggestionPanel\"\n  >\n    <template #default>\n      <div\n        ref=\"wrapperRef\"\n        v-clickoutside:[contentRef]=\"handleClickOutside\"\n        :class=\"cascaderKls\"\n        :style=\"cascaderStyle\"\n        @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n        @keydown=\"handleKeyDown\"\n        @mouseenter=\"inputHover = true\"\n        @mouseleave=\"inputHover = false\"\n      >\n        <el-input\n          ref=\"inputRef\"\n          v-model=\"inputValue\"\n          :placeholder=\"currentPlaceholder\"\n          :readonly=\"readonly\"\n          :disabled=\"isDisabled\"\n          :validate-event=\"false\"\n          :size=\"realSize\"\n          :class=\"inputClass\"\n          :tabindex=\"multiple && filterable && !isDisabled ? -1 : undefined\"\n          @compositionstart=\"handleComposition\"\n          @compositionupdate=\"handleComposition\"\n          @compositionend=\"handleComposition\"\n          @input=\"handleInput\"\n        >\n          <template v-if=\"$slots.prefix\" #prefix>\n            <slot name=\"prefix\" />\n          </template>\n          <template #suffix>\n            <el-icon\n              v-if=\"clearBtnVisible\"\n              key=\"clear\"\n              :class=\"[nsInput.e('icon'), 'icon-circle-close']\"\n              @click.stop=\"handleClear\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-else\n              key=\"arrow-down\"\n              :class=\"cascaderIconKls\"\n              @click.stop=\"togglePopperVisible()\"\n            >\n              <arrow-down />\n            </el-icon>\n          </template>\n        </el-input>\n\n        <div\n          v-if=\"multiple\"\n          ref=\"tagWrapper\"\n          :class=\"[\n            nsCascader.e('tags'),\n            nsCascader.is('validate', Boolean(validateState)),\n          ]\"\n        >\n          <slot name=\"tag\" :data=\"tags\" :delete-tag=\"deleteTag\">\n            <el-tag\n              v-for=\"tag in showTagList\"\n              :key=\"tag.key\"\n              :type=\"tagType\"\n              :size=\"tagSize\"\n              :effect=\"tagEffect\"\n              :hit=\"tag.hitState\"\n              :closable=\"tag.closable\"\n              disable-transitions\n              @close=\"deleteTag(tag)\"\n            >\n              <span>{{ tag.text }}</span>\n            </el-tag>\n          </slot>\n          <el-tooltip\n            v-if=\"collapseTags && tags.length > maxCollapseTags\"\n            ref=\"tagTooltipRef\"\n            :disabled=\"popperVisible || !collapseTagsTooltip\"\n            :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n            placement=\"bottom\"\n            :popper-class=\"popperClass\"\n            :popper-style=\"popperStyle\"\n            :effect=\"effect\"\n            :persistent=\"persistent\"\n          >\n            <template #default>\n              <el-tag\n                :closable=\"false\"\n                :size=\"tagSize\"\n                :type=\"tagType\"\n                :effect=\"tagEffect\"\n                disable-transitions\n              >\n                <span :class=\"nsCascader.e('tags-text')\">\n                  + {{ tags.length - maxCollapseTags }}\n                </span>\n              </el-tag>\n            </template>\n            <template #content>\n              <el-scrollbar :max-height=\"maxCollapseTagsTooltipHeight\">\n                <div :class=\"nsCascader.e('collapse-tags')\">\n                  <div\n                    v-for=\"(tag, idx) in collapseTagList\"\n                    :key=\"idx\"\n                    :class=\"nsCascader.e('collapse-tag')\"\n                  >\n                    <el-tag\n                      :key=\"tag.key\"\n                      class=\"in-tooltip\"\n                      :type=\"tagType\"\n                      :size=\"tagSize\"\n                      :effect=\"tagEffect\"\n                      :hit=\"tag.hitState\"\n                      :closable=\"tag.closable\"\n                      disable-transitions\n                      @close=\"deleteTag(tag)\"\n                    >\n                      <span>{{ tag.text }}</span>\n                    </el-tag>\n                  </div>\n                </div>\n              </el-scrollbar>\n            </template>\n          </el-tooltip>\n          <input\n            v-if=\"filterable && !isDisabled\"\n            v-model=\"searchInputValue\"\n            type=\"text\"\n            :class=\"nsCascader.e('search-input')\"\n            :placeholder=\"presentText ? '' : inputPlaceholder\"\n            @input=\"(e) => handleInput(searchInputValue, e as InputEvent)\"\n            @click.stop=\"togglePopperVisible(true)\"\n            @keydown.delete=\"handleDelete\"\n            @compositionstart=\"handleComposition\"\n            @compositionupdate=\"handleComposition\"\n            @compositionend=\"handleComposition\"\n          />\n        </div>\n      </div>\n    </template>\n\n    <template #content>\n      <div v-if=\"$slots.header\" :class=\"nsCascader.e('header')\" @click.stop>\n        <slot name=\"header\" />\n      </div>\n      <el-cascader-panel\n        v-show=\"!filtering\"\n        ref=\"cascaderPanelRef\"\n        v-model=\"checkedValue\"\n        :options=\"options\"\n        :props=\"props.props\"\n        :border=\"false\"\n        :render-label=\"$slots.default\"\n        @expand-change=\"handleExpandChange\"\n        @close=\"$nextTick(() => togglePopperVisible(false))\"\n      >\n        <template #empty>\n          <slot name=\"empty\" />\n        </template>\n      </el-cascader-panel>\n      <el-scrollbar\n        v-if=\"filterable\"\n        v-show=\"filtering\"\n        ref=\"suggestionPanel\"\n        tag=\"ul\"\n        :class=\"nsCascader.e('suggestion-panel')\"\n        :view-class=\"nsCascader.e('suggestion-list')\"\n        @keydown=\"handleSuggestionKeyDown\"\n      >\n        <template v-if=\"suggestions.length\">\n          <li\n            v-for=\"item in suggestions\"\n            :key=\"item.uid\"\n            :class=\"[\n              nsCascader.e('suggestion-item'),\n              nsCascader.is('checked', item.checked),\n            ]\"\n            :tabindex=\"-1\"\n            @click=\"handleSuggestionClick(item)\"\n          >\n            <slot name=\"suggestion-item\" :item=\"item\">\n              <span>{{ item.text }}</span>\n              <el-icon v-if=\"item.checked\">\n                <check />\n              </el-icon>\n            </slot>\n          </li>\n        </template>\n        <slot v-else name=\"empty\">\n          <li :class=\"nsCascader.e('empty-text')\">\n            {{ t('el.cascader.noMatch') }}\n          </li>\n        </slot>\n      </el-scrollbar>\n      <div v-if=\"$slots.footer\" :class=\"nsCascader.e('footer')\" @click.stop>\n        <slot name=\"footer\" />\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  markRaw,\n  nextTick,\n  onMounted,\n  ref,\n  useAttrs,\n  watch,\n} from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport { useCssVar, useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n  debugWarn,\n  focusNode,\n  getEventCode,\n  getSibling,\n  isClient,\n  isPromise,\n} from '@pit-element-plus/utils'\nimport ElCascaderPanel from '@pit-element-plus/components/cascader-panel'\nimport ElInput from '@pit-element-plus/components/input'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElTag from '@pit-element-plus/components/tag'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { ClickOutside as vClickoutside } from '@pit-element-plus/directives'\nimport {\n  useComposition,\n  useEmptyValues,\n  useFocusController,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { ArrowDown, Check, CircleClose } from 'pit-element-icons'\nimport { cascaderEmits } from './cascader'\n\nimport type { Options } from '@pit-element-plus/components/popper'\nimport type { ComputedRef, StyleValue } from 'vue'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { ScrollbarInstance } from '@pit-element-plus/components/scrollbar'\nimport type {\n  CascaderNode,\n  CascaderPanelInstance,\n  CascaderValue,\n  Tag,\n} from '@pit-element-plus/components/cascader-panel'\nimport type { CascaderComponentProps } from './cascader'\n\nconst popperOptions: Partial<Options> = {\n  modifiers: [\n    {\n      name: 'arrowPosition',\n      enabled: true,\n      phase: 'main',\n      fn: ({ state }) => {\n        const { modifiersData, placement } = state\n        if (['right', 'left', 'bottom', 'top'].includes(placement)) return\n        if (modifiersData.arrow) {\n          modifiersData.arrow.x = 35\n        }\n      },\n      requires: ['arrow'],\n    },\n  ],\n}\n\ndefineOptions({\n  name: 'ElCascader',\n})\n\nconst props = withDefaults(defineProps<CascaderComponentProps>(), {\n  options: () => [],\n  props: () => ({}),\n  disabled: undefined,\n  clearIcon: markRaw(CircleClose),\n  filterMethod: (node, keyword) => node.text.includes(keyword),\n  separator: ' / ',\n  showAllLevels: true,\n  maxCollapseTags: 1,\n  debounce: 300,\n  beforeFilter: () => true,\n  placement: 'bottom-start',\n  fallbackPlacements: () => [\n    'bottom-start',\n    'bottom',\n    'top-start',\n    'top',\n    'right',\n    'left',\n  ],\n  teleported: true,\n  effect: 'light',\n  tagType: 'info',\n  tagEffect: 'light',\n  validateEvent: true,\n  persistent: true,\n  showCheckedStrategy: 'child',\n  showPrefix: true,\n  popperStyle: undefined,\n  valueOnClear: undefined,\n})\nconst emit = defineEmits(cascaderEmits)\nconst attrs = useAttrs()\nconst slots = defineSlots()\n\nlet inputInitialHeight = 0\nlet pressDeleteCount = 0\n\nconst nsCascader = useNamespace('cascader')\nconst nsInput = useNamespace('input')\nconst sizeMapPadding = {\n  small: 7,\n  default: 11,\n  large: 15,\n}\n\nconst { t } = useLocale()\nconst { formItem } = useFormItem()\nconst isDisabled = useFormDisabled()\nconst { valueOnClear } = useEmptyValues(props)\nconst { isComposing, handleComposition } = useComposition({\n  afterComposition(event) {\n    const text = (event.target as HTMLInputElement)?.value\n    handleInput(text)\n  },\n})\n\nconst tooltipRef = ref<TooltipInstance>()\nconst tagTooltipRef = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst tagWrapper = ref<HTMLDivElement>()\nconst cascaderPanelRef = ref<CascaderPanelInstance>()\nconst suggestionPanel = ref<ScrollbarInstance>()\nconst popperVisible = ref(false)\nconst inputHover = ref(false)\nconst filtering = ref(false)\nconst inputValue = ref('')\nconst searchInputValue = ref('')\nconst tags = ref<Tag[]>([])\nconst suggestions = ref<CascaderNode[]>([])\n\nconst showTagList = computed(() => {\n  if (!props.props.multiple) {\n    return []\n  }\n  return props.collapseTags\n    ? tags.value.slice(0, props.maxCollapseTags)\n    : tags.value\n})\n\nconst collapseTagList = computed(() => {\n  if (!props.props.multiple) {\n    return []\n  }\n  return props.collapseTags ? tags.value.slice(props.maxCollapseTags) : []\n})\n\nconst cascaderStyle = computed(() => {\n  return attrs.style as StyleValue\n})\n\nconst inputPlaceholder = computed(\n  () => props.placeholder ?? t('el.cascader.placeholder')\n)\nconst currentPlaceholder = computed(() =>\n  searchInputValue.value || tags.value.length > 0 || isComposing.value\n    ? ''\n    : inputPlaceholder.value\n)\nconst realSize = useFormSize()\nconst tagSize = computed(() =>\n  realSize.value === 'small' ? 'small' : 'default'\n)\nconst multiple = computed(() => !!props.props.multiple)\nconst readonly = computed(() => !props.filterable || multiple.value)\nconst searchKeyword = computed(() =>\n  multiple.value ? searchInputValue.value : inputValue.value\n)\nconst checkedNodes: ComputedRef<CascaderNode[]> = computed(\n  () => cascaderPanelRef.value?.checkedNodes || []\n)\n\nconst { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n  disabled: isDisabled,\n  beforeBlur(event) {\n    return (\n      tooltipRef.value?.isFocusInsideContent(event) ||\n      tagTooltipRef.value?.isFocusInsideContent(event)\n    )\n  },\n  afterBlur() {\n    if (props.validateEvent) {\n      formItem?.validate?.('blur').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst clearBtnVisible = computed(() => {\n  if (\n    !props.clearable ||\n    isDisabled.value ||\n    filtering.value ||\n    (!inputHover.value && !isFocused.value)\n  )\n    return false\n\n  return !!checkedNodes.value.length\n})\nconst presentText = computed(() => {\n  const { showAllLevels, separator } = props\n  const nodes = checkedNodes.value\n  return nodes.length\n    ? multiple.value\n      ? ''\n      : nodes[0].calcText(showAllLevels, separator)\n    : ''\n})\n\nconst validateState = computed(() => formItem?.validateState || '')\n\nconst checkedValue = computed<CascaderValue>({\n  get() {\n    return cloneDeep(props.modelValue) as CascaderValue\n  },\n  set(val) {\n    // https://github.com/element-plus/element-plus/issues/17647\n    const value = val ?? valueOnClear.value\n    emit(UPDATE_MODEL_EVENT, value)\n    emit(CHANGE_EVENT, value)\n    if (props.validateEvent) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst cascaderKls = computed(() => {\n  return [\n    nsCascader.b(),\n    nsCascader.m(realSize.value),\n    nsCascader.is('disabled', isDisabled.value),\n    attrs.class,\n  ]\n})\n\nconst cascaderIconKls = computed(() => {\n  return [\n    nsInput.e('icon'),\n    'icon-arrow-down',\n    nsCascader.is('reverse', popperVisible.value),\n  ]\n})\n\nconst inputClass = computed(() => nsCascader.is('focus', isFocused.value))\n\nconst contentRef = computed(() => {\n  return tooltipRef.value?.popperRef?.contentRef\n})\n\nconst handleClickOutside = (event: Event) => {\n  if (isFocused.value) {\n    const _event = new FocusEvent('blur', event)\n    handleBlur(_event)\n  }\n  togglePopperVisible(false)\n}\n\nconst togglePopperVisible = (visible?: boolean) => {\n  if (isDisabled.value) return\n\n  visible = visible ?? !popperVisible.value\n\n  if (visible !== popperVisible.value) {\n    popperVisible.value = visible\n    inputRef.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n    if (visible) {\n      updatePopperPosition()\n      cascaderPanelRef.value &&\n        nextTick(cascaderPanelRef.value.scrollToExpandingNode)\n    } else if (props.filterable) {\n      syncPresentTextValue()\n    }\n\n    emit('visibleChange', visible)\n  }\n}\n\nconst updatePopperPosition = () => {\n  nextTick(() => {\n    tooltipRef.value?.updatePopper()\n  })\n}\nconst hideSuggestionPanel = () => {\n  filtering.value = false\n}\n\nconst genTag = (node: CascaderNode): Tag => {\n  const { showAllLevels, separator } = props\n  return {\n    node,\n    key: node.uid,\n    text: node.calcText(showAllLevels, separator),\n    hitState: false,\n    closable: !isDisabled.value && !node.isDisabled,\n  }\n}\n\nconst deleteTag = (tag: Tag) => {\n  const node = tag.node as CascaderNode\n  node.doCheck(false)\n  cascaderPanelRef.value?.calculateCheckedValue()\n  emit('removeTag', node.valueByOption)\n}\n\nconst getStrategyCheckedNodes = (): CascaderNode[] => {\n  switch (props.showCheckedStrategy) {\n    case 'child':\n      return checkedNodes.value\n    case 'parent': {\n      const clickedNodes = getCheckedNodes(false)\n      const clickedNodesValue = clickedNodes!.map((o) => o.value)\n      const parentNodes = clickedNodes!.filter(\n        (o) => !o.parent || !clickedNodesValue.includes(o.parent.value)\n      )\n      return parentNodes\n    }\n    default:\n      return []\n  }\n}\n\nconst calculatePresentTags = () => {\n  if (!multiple.value) return\n\n  const nodes = getStrategyCheckedNodes()\n\n  const allTags: Tag[] = []\n  nodes.forEach((node) => allTags.push(genTag(node)))\n  tags.value = allTags\n}\n\nconst calculateSuggestions = () => {\n  const { filterMethod, showAllLevels, separator } = props\n  const res = cascaderPanelRef.value\n    ?.getFlattedNodes(!props.props.checkStrictly)\n    ?.filter((node) => {\n      if (node.isDisabled) return false\n      node.calcText(showAllLevels, separator)\n      return filterMethod(node, searchKeyword.value)\n    })\n\n  if (multiple.value) {\n    tags.value.forEach((tag) => {\n      tag.hitState = false\n    })\n  }\n\n  filtering.value = true\n  suggestions.value = res!\n  updatePopperPosition()\n}\n\nconst focusFirstNode = () => {\n  let firstNode!: HTMLElement\n\n  if (filtering.value && suggestionPanel.value) {\n    firstNode = suggestionPanel.value.$el.querySelector(\n      `.${nsCascader.e('suggestion-item')}`\n    )\n  } else {\n    firstNode = cascaderPanelRef.value?.$el.querySelector(\n      `.${nsCascader.b('node')}[tabindex=\"-1\"]`\n    )\n  }\n\n  if (firstNode) {\n    firstNode.focus()\n    !filtering.value && firstNode.click()\n  }\n}\n\nconst updateStyle = () => {\n  const inputInner = inputRef.value?.input\n  const tagWrapperEl = tagWrapper.value\n  const suggestionPanelEl = suggestionPanel.value?.$el\n\n  if (!isClient || !inputInner) return\n\n  if (suggestionPanelEl) {\n    const suggestionList = suggestionPanelEl.querySelector(\n      `.${nsCascader.e('suggestion-list')}`\n    )\n    suggestionList.style.minWidth = `${inputInner.offsetWidth}px`\n  }\n\n  if (tagWrapperEl) {\n    const { offsetHeight } = tagWrapperEl\n    // 2 is el-input__wrapper padding\n    const height =\n      tags.value.length > 0\n        ? `${Math.max(offsetHeight, inputInitialHeight) - 2}px`\n        : `${inputInitialHeight}px`\n    inputInner.style.height = height\n    // if prefix slot exists, update tagWrapperEl left position\n    if (slots.prefix) {\n      const prefix = inputRef.value?.$el.querySelector(\n        `.${nsInput.e('prefix')}`\n      ) as HTMLElement\n      let left = 0\n      if (prefix) {\n        left = prefix.offsetWidth\n        if (left > 0) {\n          left += sizeMapPadding[realSize.value || 'default'] // this is the default padding of el-input__wrapper\n        }\n      }\n      tagWrapperEl.style.left = `${left}px`\n    } else {\n      tagWrapperEl.style.left = `0`\n    }\n    updatePopperPosition()\n  }\n}\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n  return cascaderPanelRef.value?.getCheckedNodes(leafOnly)\n}\n\nconst handleExpandChange = (value: CascaderValue) => {\n  updatePopperPosition()\n  emit('expandChange', value)\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n  if (isComposing.value) return\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      togglePopperVisible()\n      break\n    case EVENT_CODE.down:\n      togglePopperVisible(true)\n      nextTick(focusFirstNode)\n      e.preventDefault()\n      break\n    case EVENT_CODE.esc:\n      if (popperVisible.value === true) {\n        e.preventDefault()\n        e.stopPropagation()\n        togglePopperVisible(false)\n      }\n      break\n    case EVENT_CODE.tab:\n      togglePopperVisible(false)\n      break\n  }\n}\n\nconst handleClear = () => {\n  cascaderPanelRef.value?.clearCheckedNodes()\n  if (!popperVisible.value && props.filterable) {\n    syncPresentTextValue()\n  }\n  togglePopperVisible(false)\n  emit('clear')\n}\n\nconst syncPresentTextValue = () => {\n  const { value } = presentText\n  inputValue.value = value\n  searchInputValue.value = value\n}\n\nconst handleSuggestionClick = (node: CascaderNode) => {\n  const { checked } = node\n\n  if (multiple.value) {\n    cascaderPanelRef.value?.handleCheckChange(node, !checked, false)\n  } else {\n    !checked && cascaderPanelRef.value?.handleCheckChange(node, true, false)\n    togglePopperVisible(false)\n  }\n}\n\nconst handleSuggestionKeyDown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.down: {\n      e.preventDefault()\n      const distance = code === EVENT_CODE.up ? -1 : 1\n      focusNode(\n        getSibling(\n          target,\n          distance,\n          `.${nsCascader.e('suggestion-item')}[tabindex=\"-1\"]`\n        ) as HTMLElement\n      )\n      break\n    }\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      target.click()\n      break\n  }\n}\n\nconst handleDelete = () => {\n  const lastTag = tags.value[tags.value.length - 1]\n  pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n  if (\n    !lastTag ||\n    !pressDeleteCount ||\n    (props.collapseTags && tags.value.length > 1)\n  )\n    return\n\n  if (lastTag.hitState) {\n    deleteTag(lastTag)\n  } else {\n    lastTag.hitState = true\n  }\n}\n\nconst debounce = computed(() => props.debounce)\nconst handleFilter = useDebounceFn(() => {\n  const { value } = searchKeyword\n\n  if (!value) return\n\n  const passed = props.beforeFilter(value)\n\n  if (isPromise(passed)) {\n    passed.then(calculateSuggestions).catch(() => {\n      /* prevent log error */\n    })\n  } else if (passed !== false) {\n    calculateSuggestions()\n  } else {\n    hideSuggestionPanel()\n  }\n}, debounce)\n\nconst handleInput = (val: string, e?: InputEvent) => {\n  !popperVisible.value && togglePopperVisible(true)\n\n  if (e?.isComposing) return\n\n  val ? handleFilter() : hideSuggestionPanel()\n}\n\nconst getInputInnerHeight = (inputInner: HTMLElement): number =>\n  Number.parseFloat(\n    useCssVar(nsInput.cssVarName('input-height'), inputInner).value\n  ) - 2\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nwatch(filtering, updatePopperPosition)\n\nwatch(\n  [\n    checkedNodes,\n    isDisabled,\n    () => props.collapseTags,\n    () => props.maxCollapseTags,\n  ],\n  calculatePresentTags\n)\n\nwatch(tags, () => {\n  nextTick(() => updateStyle())\n})\n\nwatch(realSize, async () => {\n  await nextTick()\n  const inputInner = inputRef.value!.input!\n  inputInitialHeight = getInputInnerHeight(inputInner) || inputInitialHeight\n  updateStyle()\n})\n\nwatch(presentText, syncPresentTextValue, { immediate: true })\n\nwatch(\n  () => popperVisible.value,\n  (val) => {\n    if (val && props.props.lazy && props.props.lazyLoad) {\n      cascaderPanelRef.value?.loadLazyRootNodes()\n    }\n  }\n)\n\nonMounted(() => {\n  const inputInner = inputRef.value!.input!\n\n  const inputInnerHeight = getInputInnerHeight(inputInner)\n\n  inputInitialHeight = inputInner.offsetHeight || inputInnerHeight\n  useResizeObserver(inputInner, updateStyle)\n})\n\ndefineExpose({\n  /**\n   * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n   */\n  getCheckedNodes,\n  /**\n   * @description cascader panel ref\n   */\n  cascaderPanelRef,\n  /**\n   * @description toggle the visible of popper\n   */\n  togglePopperVisible,\n  /**\n   * @description cascader content ref\n   */\n  contentRef,\n  /**\n   * @description selected content text\n   */\n  presentText,\n  /** @description focus the input element */\n  focus,\n  /** @description blur the input element */\n  blur,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    :visible=\"popperVisible\"\n    :teleported=\"teleported\"\n    :popper-class=\"[nsCascader.e('dropdown'), popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :popper-options=\"popperOptions\"\n    :fallback-placements=\"fallbackPlacements\"\n    :stop-popper-mouse-event=\"false\"\n    :gpu-acceleration=\"false\"\n    :placement=\"placement\"\n    :transition=\"`${nsCascader.namespace.value}-zoom-in-top`\"\n    :effect=\"effect\"\n    pure\n    :persistent=\"persistent\"\n    @hide=\"hideSuggestionPanel\"\n  >\n    <template #default>\n      <div\n        ref=\"wrapperRef\"\n        v-clickoutside:[contentRef]=\"handleClickOutside\"\n        :class=\"cascaderKls\"\n        :style=\"cascaderStyle\"\n        @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n        @keydown=\"handleKeyDown\"\n        @mouseenter=\"inputHover = true\"\n        @mouseleave=\"inputHover = false\"\n      >\n        <el-input\n          ref=\"inputRef\"\n          v-model=\"inputValue\"\n          :placeholder=\"currentPlaceholder\"\n          :readonly=\"readonly\"\n          :disabled=\"isDisabled\"\n          :validate-event=\"false\"\n          :size=\"realSize\"\n          :class=\"inputClass\"\n          :tabindex=\"multiple && filterable && !isDisabled ? -1 : undefined\"\n          @compositionstart=\"handleComposition\"\n          @compositionupdate=\"handleComposition\"\n          @compositionend=\"handleComposition\"\n          @input=\"handleInput\"\n        >\n          <template v-if=\"$slots.prefix\" #prefix>\n            <slot name=\"prefix\" />\n          </template>\n          <template #suffix>\n            <el-icon\n              v-if=\"clearBtnVisible\"\n              key=\"clear\"\n              :class=\"[nsInput.e('icon'), 'icon-circle-close']\"\n              @click.stop=\"handleClear\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-else\n              key=\"arrow-down\"\n              :class=\"cascaderIconKls\"\n              @click.stop=\"togglePopperVisible()\"\n            >\n              <arrow-down />\n            </el-icon>\n          </template>\n        </el-input>\n\n        <div\n          v-if=\"multiple\"\n          ref=\"tagWrapper\"\n          :class=\"[\n            nsCascader.e('tags'),\n            nsCascader.is('validate', Boolean(validateState)),\n          ]\"\n        >\n          <slot name=\"tag\" :data=\"tags\" :delete-tag=\"deleteTag\">\n            <el-tag\n              v-for=\"tag in showTagList\"\n              :key=\"tag.key\"\n              :type=\"tagType\"\n              :size=\"tagSize\"\n              :effect=\"tagEffect\"\n              :hit=\"tag.hitState\"\n              :closable=\"tag.closable\"\n              disable-transitions\n              @close=\"deleteTag(tag)\"\n            >\n              <span>{{ tag.text }}</span>\n            </el-tag>\n          </slot>\n          <el-tooltip\n            v-if=\"collapseTags && tags.length > maxCollapseTags\"\n            ref=\"tagTooltipRef\"\n            :disabled=\"popperVisible || !collapseTagsTooltip\"\n            :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n            placement=\"bottom\"\n            :popper-class=\"popperClass\"\n            :popper-style=\"popperStyle\"\n            :effect=\"effect\"\n            :persistent=\"persistent\"\n          >\n            <template #default>\n              <el-tag\n                :closable=\"false\"\n                :size=\"tagSize\"\n                :type=\"tagType\"\n                :effect=\"tagEffect\"\n                disable-transitions\n              >\n                <span :class=\"nsCascader.e('tags-text')\">\n                  + {{ tags.length - maxCollapseTags }}\n                </span>\n              </el-tag>\n            </template>\n            <template #content>\n              <el-scrollbar :max-height=\"maxCollapseTagsTooltipHeight\">\n                <div :class=\"nsCascader.e('collapse-tags')\">\n                  <div\n                    v-for=\"(tag, idx) in collapseTagList\"\n                    :key=\"idx\"\n                    :class=\"nsCascader.e('collapse-tag')\"\n                  >\n                    <el-tag\n                      :key=\"tag.key\"\n                      class=\"in-tooltip\"\n                      :type=\"tagType\"\n                      :size=\"tagSize\"\n                      :effect=\"tagEffect\"\n                      :hit=\"tag.hitState\"\n                      :closable=\"tag.closable\"\n                      disable-transitions\n                      @close=\"deleteTag(tag)\"\n                    >\n                      <span>{{ tag.text }}</span>\n                    </el-tag>\n                  </div>\n                </div>\n              </el-scrollbar>\n            </template>\n          </el-tooltip>\n          <input\n            v-if=\"filterable && !isDisabled\"\n            v-model=\"searchInputValue\"\n            type=\"text\"\n            :class=\"nsCascader.e('search-input')\"\n            :placeholder=\"presentText ? '' : inputPlaceholder\"\n            @input=\"(e) => handleInput(searchInputValue, e as InputEvent)\"\n            @click.stop=\"togglePopperVisible(true)\"\n            @keydown.delete=\"handleDelete\"\n            @compositionstart=\"handleComposition\"\n            @compositionupdate=\"handleComposition\"\n            @compositionend=\"handleComposition\"\n          />\n        </div>\n      </div>\n    </template>\n\n    <template #content>\n      <div v-if=\"$slots.header\" :class=\"nsCascader.e('header')\" @click.stop>\n        <slot name=\"header\" />\n      </div>\n      <el-cascader-panel\n        v-show=\"!filtering\"\n        ref=\"cascaderPanelRef\"\n        v-model=\"checkedValue\"\n        :options=\"options\"\n        :props=\"props.props\"\n        :border=\"false\"\n        :render-label=\"$slots.default\"\n        @expand-change=\"handleExpandChange\"\n        @close=\"$nextTick(() => togglePopperVisible(false))\"\n      >\n        <template #empty>\n          <slot name=\"empty\" />\n        </template>\n      </el-cascader-panel>\n      <el-scrollbar\n        v-if=\"filterable\"\n        v-show=\"filtering\"\n        ref=\"suggestionPanel\"\n        tag=\"ul\"\n        :class=\"nsCascader.e('suggestion-panel')\"\n        :view-class=\"nsCascader.e('suggestion-list')\"\n        @keydown=\"handleSuggestionKeyDown\"\n      >\n        <template v-if=\"suggestions.length\">\n          <li\n            v-for=\"item in suggestions\"\n            :key=\"item.uid\"\n            :class=\"[\n              nsCascader.e('suggestion-item'),\n              nsCascader.is('checked', item.checked),\n            ]\"\n            :tabindex=\"-1\"\n            @click=\"handleSuggestionClick(item)\"\n          >\n            <slot name=\"suggestion-item\" :item=\"item\">\n              <span>{{ item.text }}</span>\n              <el-icon v-if=\"item.checked\">\n                <check />\n              </el-icon>\n            </slot>\n          </li>\n        </template>\n        <slot v-else name=\"empty\">\n          <li :class=\"nsCascader.e('empty-text')\">\n            {{ t('el.cascader.noMatch') }}\n          </li>\n        </slot>\n      </el-scrollbar>\n      <div v-if=\"$slots.footer\" :class=\"nsCascader.e('footer')\" @click.stop>\n        <slot name=\"footer\" />\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  markRaw,\n  nextTick,\n  onMounted,\n  ref,\n  useAttrs,\n  watch,\n} from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport { useCssVar, useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n  debugWarn,\n  focusNode,\n  getEventCode,\n  getSibling,\n  isClient,\n  isPromise,\n} from '@pit-element-plus/utils'\nimport ElCascaderPanel from '@pit-element-plus/components/cascader-panel'\nimport ElInput from '@pit-element-plus/components/input'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElTag from '@pit-element-plus/components/tag'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { ClickOutside as vClickoutside } from '@pit-element-plus/directives'\nimport {\n  useComposition,\n  useEmptyValues,\n  useFocusController,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { ArrowDown, Check, CircleClose } from 'pit-element-icons'\nimport { cascaderEmits } from './cascader'\n\nimport type { Options } from '@pit-element-plus/components/popper'\nimport type { ComputedRef, StyleValue } from 'vue'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { ScrollbarInstance } from '@pit-element-plus/components/scrollbar'\nimport type {\n  CascaderNode,\n  CascaderPanelInstance,\n  CascaderValue,\n  Tag,\n} from '@pit-element-plus/components/cascader-panel'\nimport type { CascaderComponentProps } from './cascader'\n\nconst popperOptions: Partial<Options> = {\n  modifiers: [\n    {\n      name: 'arrowPosition',\n      enabled: true,\n      phase: 'main',\n      fn: ({ state }) => {\n        const { modifiersData, placement } = state\n        if (['right', 'left', 'bottom', 'top'].includes(placement)) return\n        if (modifiersData.arrow) {\n          modifiersData.arrow.x = 35\n        }\n      },\n      requires: ['arrow'],\n    },\n  ],\n}\n\ndefineOptions({\n  name: 'ElCascader',\n})\n\nconst props = withDefaults(defineProps<CascaderComponentProps>(), {\n  options: () => [],\n  props: () => ({}),\n  disabled: undefined,\n  clearIcon: markRaw(CircleClose),\n  filterMethod: (node, keyword) => node.text.includes(keyword),\n  separator: ' / ',\n  showAllLevels: true,\n  maxCollapseTags: 1,\n  debounce: 300,\n  beforeFilter: () => true,\n  placement: 'bottom-start',\n  fallbackPlacements: () => [\n    'bottom-start',\n    'bottom',\n    'top-start',\n    'top',\n    'right',\n    'left',\n  ],\n  teleported: true,\n  effect: 'light',\n  tagType: 'info',\n  tagEffect: 'light',\n  validateEvent: true,\n  persistent: true,\n  showCheckedStrategy: 'child',\n  showPrefix: true,\n  popperStyle: undefined,\n  valueOnClear: undefined,\n})\nconst emit = defineEmits(cascaderEmits)\nconst attrs = useAttrs()\nconst slots = defineSlots()\n\nlet inputInitialHeight = 0\nlet pressDeleteCount = 0\n\nconst nsCascader = useNamespace('cascader')\nconst nsInput = useNamespace('input')\nconst sizeMapPadding = {\n  small: 7,\n  default: 11,\n  large: 15,\n}\n\nconst { t } = useLocale()\nconst { formItem } = useFormItem()\nconst isDisabled = useFormDisabled()\nconst { valueOnClear } = useEmptyValues(props)\nconst { isComposing, handleComposition } = useComposition({\n  afterComposition(event) {\n    const text = (event.target as HTMLInputElement)?.value\n    handleInput(text)\n  },\n})\n\nconst tooltipRef = ref<TooltipInstance>()\nconst tagTooltipRef = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst tagWrapper = ref<HTMLDivElement>()\nconst cascaderPanelRef = ref<CascaderPanelInstance>()\nconst suggestionPanel = ref<ScrollbarInstance>()\nconst popperVisible = ref(false)\nconst inputHover = ref(false)\nconst filtering = ref(false)\nconst inputValue = ref('')\nconst searchInputValue = ref('')\nconst tags = ref<Tag[]>([])\nconst suggestions = ref<CascaderNode[]>([])\n\nconst showTagList = computed(() => {\n  if (!props.props.multiple) {\n    return []\n  }\n  return props.collapseTags\n    ? tags.value.slice(0, props.maxCollapseTags)\n    : tags.value\n})\n\nconst collapseTagList = computed(() => {\n  if (!props.props.multiple) {\n    return []\n  }\n  return props.collapseTags ? tags.value.slice(props.maxCollapseTags) : []\n})\n\nconst cascaderStyle = computed(() => {\n  return attrs.style as StyleValue\n})\n\nconst inputPlaceholder = computed(\n  () => props.placeholder ?? t('el.cascader.placeholder')\n)\nconst currentPlaceholder = computed(() =>\n  searchInputValue.value || tags.value.length > 0 || isComposing.value\n    ? ''\n    : inputPlaceholder.value\n)\nconst realSize = useFormSize()\nconst tagSize = computed(() =>\n  realSize.value === 'small' ? 'small' : 'default'\n)\nconst multiple = computed(() => !!props.props.multiple)\nconst readonly = computed(() => !props.filterable || multiple.value)\nconst searchKeyword = computed(() =>\n  multiple.value ? searchInputValue.value : inputValue.value\n)\nconst checkedNodes: ComputedRef<CascaderNode[]> = computed(\n  () => cascaderPanelRef.value?.checkedNodes || []\n)\n\nconst { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n  disabled: isDisabled,\n  beforeBlur(event) {\n    return (\n      tooltipRef.value?.isFocusInsideContent(event) ||\n      tagTooltipRef.value?.isFocusInsideContent(event)\n    )\n  },\n  afterBlur() {\n    if (props.validateEvent) {\n      formItem?.validate?.('blur').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst clearBtnVisible = computed(() => {\n  if (\n    !props.clearable ||\n    isDisabled.value ||\n    filtering.value ||\n    (!inputHover.value && !isFocused.value)\n  )\n    return false\n\n  return !!checkedNodes.value.length\n})\nconst presentText = computed(() => {\n  const { showAllLevels, separator } = props\n  const nodes = checkedNodes.value\n  return nodes.length\n    ? multiple.value\n      ? ''\n      : nodes[0].calcText(showAllLevels, separator)\n    : ''\n})\n\nconst validateState = computed(() => formItem?.validateState || '')\n\nconst checkedValue = computed<CascaderValue>({\n  get() {\n    return cloneDeep(props.modelValue) as CascaderValue\n  },\n  set(val) {\n    // https://github.com/element-plus/element-plus/issues/17647\n    const value = val ?? valueOnClear.value\n    emit(UPDATE_MODEL_EVENT, value)\n    emit(CHANGE_EVENT, value)\n    if (props.validateEvent) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst cascaderKls = computed(() => {\n  return [\n    nsCascader.b(),\n    nsCascader.m(realSize.value),\n    nsCascader.is('disabled', isDisabled.value),\n    attrs.class,\n  ]\n})\n\nconst cascaderIconKls = computed(() => {\n  return [\n    nsInput.e('icon'),\n    'icon-arrow-down',\n    nsCascader.is('reverse', popperVisible.value),\n  ]\n})\n\nconst inputClass = computed(() => nsCascader.is('focus', isFocused.value))\n\nconst contentRef = computed(() => {\n  return tooltipRef.value?.popperRef?.contentRef\n})\n\nconst handleClickOutside = (event: Event) => {\n  if (isFocused.value) {\n    const _event = new FocusEvent('blur', event)\n    handleBlur(_event)\n  }\n  togglePopperVisible(false)\n}\n\nconst togglePopperVisible = (visible?: boolean) => {\n  if (isDisabled.value) return\n\n  visible = visible ?? !popperVisible.value\n\n  if (visible !== popperVisible.value) {\n    popperVisible.value = visible\n    inputRef.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n    if (visible) {\n      updatePopperPosition()\n      cascaderPanelRef.value &&\n        nextTick(cascaderPanelRef.value.scrollToExpandingNode)\n    } else if (props.filterable) {\n      syncPresentTextValue()\n    }\n\n    emit('visibleChange', visible)\n  }\n}\n\nconst updatePopperPosition = () => {\n  nextTick(() => {\n    tooltipRef.value?.updatePopper()\n  })\n}\nconst hideSuggestionPanel = () => {\n  filtering.value = false\n}\n\nconst genTag = (node: CascaderNode): Tag => {\n  const { showAllLevels, separator } = props\n  return {\n    node,\n    key: node.uid,\n    text: node.calcText(showAllLevels, separator),\n    hitState: false,\n    closable: !isDisabled.value && !node.isDisabled,\n  }\n}\n\nconst deleteTag = (tag: Tag) => {\n  const node = tag.node as CascaderNode\n  node.doCheck(false)\n  cascaderPanelRef.value?.calculateCheckedValue()\n  emit('removeTag', node.valueByOption)\n}\n\nconst getStrategyCheckedNodes = (): CascaderNode[] => {\n  switch (props.showCheckedStrategy) {\n    case 'child':\n      return checkedNodes.value\n    case 'parent': {\n      const clickedNodes = getCheckedNodes(false)\n      const clickedNodesValue = clickedNodes!.map((o) => o.value)\n      const parentNodes = clickedNodes!.filter(\n        (o) => !o.parent || !clickedNodesValue.includes(o.parent.value)\n      )\n      return parentNodes\n    }\n    default:\n      return []\n  }\n}\n\nconst calculatePresentTags = () => {\n  if (!multiple.value) return\n\n  const nodes = getStrategyCheckedNodes()\n\n  const allTags: Tag[] = []\n  nodes.forEach((node) => allTags.push(genTag(node)))\n  tags.value = allTags\n}\n\nconst calculateSuggestions = () => {\n  const { filterMethod, showAllLevels, separator } = props\n  const res = cascaderPanelRef.value\n    ?.getFlattedNodes(!props.props.checkStrictly)\n    ?.filter((node) => {\n      if (node.isDisabled) return false\n      node.calcText(showAllLevels, separator)\n      return filterMethod(node, searchKeyword.value)\n    })\n\n  if (multiple.value) {\n    tags.value.forEach((tag) => {\n      tag.hitState = false\n    })\n  }\n\n  filtering.value = true\n  suggestions.value = res!\n  updatePopperPosition()\n}\n\nconst focusFirstNode = () => {\n  let firstNode!: HTMLElement\n\n  if (filtering.value && suggestionPanel.value) {\n    firstNode = suggestionPanel.value.$el.querySelector(\n      `.${nsCascader.e('suggestion-item')}`\n    )\n  } else {\n    firstNode = cascaderPanelRef.value?.$el.querySelector(\n      `.${nsCascader.b('node')}[tabindex=\"-1\"]`\n    )\n  }\n\n  if (firstNode) {\n    firstNode.focus()\n    !filtering.value && firstNode.click()\n  }\n}\n\nconst updateStyle = () => {\n  const inputInner = inputRef.value?.input\n  const tagWrapperEl = tagWrapper.value\n  const suggestionPanelEl = suggestionPanel.value?.$el\n\n  if (!isClient || !inputInner) return\n\n  if (suggestionPanelEl) {\n    const suggestionList = suggestionPanelEl.querySelector(\n      `.${nsCascader.e('suggestion-list')}`\n    )\n    suggestionList.style.minWidth = `${inputInner.offsetWidth}px`\n  }\n\n  if (tagWrapperEl) {\n    const { offsetHeight } = tagWrapperEl\n    // 2 is el-input__wrapper padding\n    const height =\n      tags.value.length > 0\n        ? `${Math.max(offsetHeight, inputInitialHeight) - 2}px`\n        : `${inputInitialHeight}px`\n    inputInner.style.height = height\n    // if prefix slot exists, update tagWrapperEl left position\n    if (slots.prefix) {\n      const prefix = inputRef.value?.$el.querySelector(\n        `.${nsInput.e('prefix')}`\n      ) as HTMLElement\n      let left = 0\n      if (prefix) {\n        left = prefix.offsetWidth\n        if (left > 0) {\n          left += sizeMapPadding[realSize.value || 'default'] // this is the default padding of el-input__wrapper\n        }\n      }\n      tagWrapperEl.style.left = `${left}px`\n    } else {\n      tagWrapperEl.style.left = `0`\n    }\n    updatePopperPosition()\n  }\n}\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n  return cascaderPanelRef.value?.getCheckedNodes(leafOnly)\n}\n\nconst handleExpandChange = (value: CascaderValue) => {\n  updatePopperPosition()\n  emit('expandChange', value)\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n  if (isComposing.value) return\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      togglePopperVisible()\n      break\n    case EVENT_CODE.down:\n      togglePopperVisible(true)\n      nextTick(focusFirstNode)\n      e.preventDefault()\n      break\n    case EVENT_CODE.esc:\n      if (popperVisible.value === true) {\n        e.preventDefault()\n        e.stopPropagation()\n        togglePopperVisible(false)\n      }\n      break\n    case EVENT_CODE.tab:\n      togglePopperVisible(false)\n      break\n  }\n}\n\nconst handleClear = () => {\n  cascaderPanelRef.value?.clearCheckedNodes()\n  if (!popperVisible.value && props.filterable) {\n    syncPresentTextValue()\n  }\n  togglePopperVisible(false)\n  emit('clear')\n}\n\nconst syncPresentTextValue = () => {\n  const { value } = presentText\n  inputValue.value = value\n  searchInputValue.value = value\n}\n\nconst handleSuggestionClick = (node: CascaderNode) => {\n  const { checked } = node\n\n  if (multiple.value) {\n    cascaderPanelRef.value?.handleCheckChange(node, !checked, false)\n  } else {\n    !checked && cascaderPanelRef.value?.handleCheckChange(node, true, false)\n    togglePopperVisible(false)\n  }\n}\n\nconst handleSuggestionKeyDown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.down: {\n      e.preventDefault()\n      const distance = code === EVENT_CODE.up ? -1 : 1\n      focusNode(\n        getSibling(\n          target,\n          distance,\n          `.${nsCascader.e('suggestion-item')}[tabindex=\"-1\"]`\n        ) as HTMLElement\n      )\n      break\n    }\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      target.click()\n      break\n  }\n}\n\nconst handleDelete = () => {\n  const lastTag = tags.value[tags.value.length - 1]\n  pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n  if (\n    !lastTag ||\n    !pressDeleteCount ||\n    (props.collapseTags && tags.value.length > 1)\n  )\n    return\n\n  if (lastTag.hitState) {\n    deleteTag(lastTag)\n  } else {\n    lastTag.hitState = true\n  }\n}\n\nconst debounce = computed(() => props.debounce)\nconst handleFilter = useDebounceFn(() => {\n  const { value } = searchKeyword\n\n  if (!value) return\n\n  const passed = props.beforeFilter(value)\n\n  if (isPromise(passed)) {\n    passed.then(calculateSuggestions).catch(() => {\n      /* prevent log error */\n    })\n  } else if (passed !== false) {\n    calculateSuggestions()\n  } else {\n    hideSuggestionPanel()\n  }\n}, debounce)\n\nconst handleInput = (val: string, e?: InputEvent) => {\n  !popperVisible.value && togglePopperVisible(true)\n\n  if (e?.isComposing) return\n\n  val ? handleFilter() : hideSuggestionPanel()\n}\n\nconst getInputInnerHeight = (inputInner: HTMLElement): number =>\n  Number.parseFloat(\n    useCssVar(nsInput.cssVarName('input-height'), inputInner).value\n  ) - 2\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nwatch(filtering, updatePopperPosition)\n\nwatch(\n  [\n    checkedNodes,\n    isDisabled,\n    () => props.collapseTags,\n    () => props.maxCollapseTags,\n  ],\n  calculatePresentTags\n)\n\nwatch(tags, () => {\n  nextTick(() => updateStyle())\n})\n\nwatch(realSize, async () => {\n  await nextTick()\n  const inputInner = inputRef.value!.input!\n  inputInitialHeight = getInputInnerHeight(inputInner) || inputInitialHeight\n  updateStyle()\n})\n\nwatch(presentText, syncPresentTextValue, { immediate: true })\n\nwatch(\n  () => popperVisible.value,\n  (val) => {\n    if (val && props.props.lazy && props.props.lazyLoad) {\n      cascaderPanelRef.value?.loadLazyRootNodes()\n    }\n  }\n)\n\nonMounted(() => {\n  const inputInner = inputRef.value!.input!\n\n  const inputInnerHeight = getInputInnerHeight(inputInner)\n\n  inputInitialHeight = inputInner.offsetHeight || inputInnerHeight\n  useResizeObserver(inputInner, updateStyle)\n})\n\ndefineExpose({\n  /**\n   * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n   */\n  getCheckedNodes,\n  /**\n   * @description cascader panel ref\n   */\n  cascaderPanelRef,\n  /**\n   * @description toggle the visible of popper\n   */\n  togglePopperVisible,\n  /**\n   * @description cascader content ref\n   */\n  contentRef,\n  /**\n   * @description selected content text\n   */\n  presentText,\n  /** @description focus the input element */\n  focus,\n  /** @description blur the input element */\n  blur,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    :visible=\"popperVisible\"\n    :teleported=\"teleported\"\n    :popper-class=\"[nsCascader.e('dropdown'), popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :popper-options=\"popperOptions\"\n    :fallback-placements=\"fallbackPlacements\"\n    :stop-popper-mouse-event=\"false\"\n    :gpu-acceleration=\"false\"\n    :placement=\"placement\"\n    :transition=\"`${nsCascader.namespace.value}-zoom-in-top`\"\n    :effect=\"effect\"\n    pure\n    :persistent=\"persistent\"\n    @hide=\"hideSuggestionPanel\"\n  >\n    <template #default>\n      <div\n        ref=\"wrapperRef\"\n        v-clickoutside:[contentRef]=\"handleClickOutside\"\n        :class=\"cascaderKls\"\n        :style=\"cascaderStyle\"\n        @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n        @keydown=\"handleKeyDown\"\n        @mouseenter=\"inputHover = true\"\n        @mouseleave=\"inputHover = false\"\n      >\n        <el-input\n          ref=\"inputRef\"\n          v-model=\"inputValue\"\n          :placeholder=\"currentPlaceholder\"\n          :readonly=\"readonly\"\n          :disabled=\"isDisabled\"\n          :validate-event=\"false\"\n          :size=\"realSize\"\n          :class=\"inputClass\"\n          :tabindex=\"multiple && filterable && !isDisabled ? -1 : undefined\"\n          @compositionstart=\"handleComposition\"\n          @compositionupdate=\"handleComposition\"\n          @compositionend=\"handleComposition\"\n          @input=\"handleInput\"\n        >\n          <template v-if=\"$slots.prefix\" #prefix>\n            <slot name=\"prefix\" />\n          </template>\n          <template #suffix>\n            <el-icon\n              v-if=\"clearBtnVisible\"\n              key=\"clear\"\n              :class=\"[nsInput.e('icon'), 'icon-circle-close']\"\n              @click.stop=\"handleClear\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-else\n              key=\"arrow-down\"\n              :class=\"cascaderIconKls\"\n              @click.stop=\"togglePopperVisible()\"\n            >\n              <arrow-down />\n            </el-icon>\n          </template>\n        </el-input>\n\n        <div\n          v-if=\"multiple\"\n          ref=\"tagWrapper\"\n          :class=\"[\n            nsCascader.e('tags'),\n            nsCascader.is('validate', Boolean(validateState)),\n          ]\"\n        >\n          <slot name=\"tag\" :data=\"tags\" :delete-tag=\"deleteTag\">\n            <el-tag\n              v-for=\"tag in showTagList\"\n              :key=\"tag.key\"\n              :type=\"tagType\"\n              :size=\"tagSize\"\n              :effect=\"tagEffect\"\n              :hit=\"tag.hitState\"\n              :closable=\"tag.closable\"\n              disable-transitions\n              @close=\"deleteTag(tag)\"\n            >\n              <span>{{ tag.text }}</span>\n            </el-tag>\n          </slot>\n          <el-tooltip\n            v-if=\"collapseTags && tags.length > maxCollapseTags\"\n            ref=\"tagTooltipRef\"\n            :disabled=\"popperVisible || !collapseTagsTooltip\"\n            :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n            placement=\"bottom\"\n            :popper-class=\"popperClass\"\n            :popper-style=\"popperStyle\"\n            :effect=\"effect\"\n            :persistent=\"persistent\"\n          >\n            <template #default>\n              <el-tag\n                :closable=\"false\"\n                :size=\"tagSize\"\n                :type=\"tagType\"\n                :effect=\"tagEffect\"\n                disable-transitions\n              >\n                <span :class=\"nsCascader.e('tags-text')\">\n                  + {{ tags.length - maxCollapseTags }}\n                </span>\n              </el-tag>\n            </template>\n            <template #content>\n              <el-scrollbar :max-height=\"maxCollapseTagsTooltipHeight\">\n                <div :class=\"nsCascader.e('collapse-tags')\">\n                  <div\n                    v-for=\"(tag, idx) in collapseTagList\"\n                    :key=\"idx\"\n                    :class=\"nsCascader.e('collapse-tag')\"\n                  >\n                    <el-tag\n                      :key=\"tag.key\"\n                      class=\"in-tooltip\"\n                      :type=\"tagType\"\n                      :size=\"tagSize\"\n                      :effect=\"tagEffect\"\n                      :hit=\"tag.hitState\"\n                      :closable=\"tag.closable\"\n                      disable-transitions\n                      @close=\"deleteTag(tag)\"\n                    >\n                      <span>{{ tag.text }}</span>\n                    </el-tag>\n                  </div>\n                </div>\n              </el-scrollbar>\n            </template>\n          </el-tooltip>\n          <input\n            v-if=\"filterable && !isDisabled\"\n            v-model=\"searchInputValue\"\n            type=\"text\"\n            :class=\"nsCascader.e('search-input')\"\n            :placeholder=\"presentText ? '' : inputPlaceholder\"\n            @input=\"(e) => handleInput(searchInputValue, e as InputEvent)\"\n            @click.stop=\"togglePopperVisible(true)\"\n            @keydown.delete=\"handleDelete\"\n            @compositionstart=\"handleComposition\"\n            @compositionupdate=\"handleComposition\"\n            @compositionend=\"handleComposition\"\n          />\n        </div>\n      </div>\n    </template>\n\n    <template #content>\n      <div v-if=\"$slots.header\" :class=\"nsCascader.e('header')\" @click.stop>\n        <slot name=\"header\" />\n      </div>\n      <el-cascader-panel\n        v-show=\"!filtering\"\n        ref=\"cascaderPanelRef\"\n        v-model=\"checkedValue\"\n        :options=\"options\"\n        :props=\"props.props\"\n        :border=\"false\"\n        :render-label=\"$slots.default\"\n        @expand-change=\"handleExpandChange\"\n        @close=\"$nextTick(() => togglePopperVisible(false))\"\n      >\n        <template #empty>\n          <slot name=\"empty\" />\n        </template>\n      </el-cascader-panel>\n      <el-scrollbar\n        v-if=\"filterable\"\n        v-show=\"filtering\"\n        ref=\"suggestionPanel\"\n        tag=\"ul\"\n        :class=\"nsCascader.e('suggestion-panel')\"\n        :view-class=\"nsCascader.e('suggestion-list')\"\n        @keydown=\"handleSuggestionKeyDown\"\n      >\n        <template v-if=\"suggestions.length\">\n          <li\n            v-for=\"item in suggestions\"\n            :key=\"item.uid\"\n            :class=\"[\n              nsCascader.e('suggestion-item'),\n              nsCascader.is('checked', item.checked),\n            ]\"\n            :tabindex=\"-1\"\n            @click=\"handleSuggestionClick(item)\"\n          >\n            <slot name=\"suggestion-item\" :item=\"item\">\n              <span>{{ item.text }}</span>\n              <el-icon v-if=\"item.checked\">\n                <check />\n              </el-icon>\n            </slot>\n          </li>\n        </template>\n        <slot v-else name=\"empty\">\n          <li :class=\"nsCascader.e('empty-text')\">\n            {{ t('el.cascader.noMatch') }}\n          </li>\n        </slot>\n      </el-scrollbar>\n      <div v-if=\"$slots.footer\" :class=\"nsCascader.e('footer')\" @click.stop>\n        <slot name=\"footer\" />\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  markRaw,\n  nextTick,\n  onMounted,\n  ref,\n  useAttrs,\n  watch,\n} from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport { useCssVar, useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n  debugWarn,\n  focusNode,\n  getEventCode,\n  getSibling,\n  isClient,\n  isPromise,\n} from '@pit-element-plus/utils'\nimport ElCascaderPanel from '@pit-element-plus/components/cascader-panel'\nimport ElInput from '@pit-element-plus/components/input'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElTag from '@pit-element-plus/components/tag'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { ClickOutside as vClickoutside } from '@pit-element-plus/directives'\nimport {\n  useComposition,\n  useEmptyValues,\n  useFocusController,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { ArrowDown, Check, CircleClose } from 'pit-element-icons'\nimport { cascaderEmits } from './cascader'\n\nimport type { Options } from '@pit-element-plus/components/popper'\nimport type { ComputedRef, StyleValue } from 'vue'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { ScrollbarInstance } from '@pit-element-plus/components/scrollbar'\nimport type {\n  CascaderNode,\n  CascaderPanelInstance,\n  CascaderValue,\n  Tag,\n} from '@pit-element-plus/components/cascader-panel'\nimport type { CascaderComponentProps } from './cascader'\n\nconst popperOptions: Partial<Options> = {\n  modifiers: [\n    {\n      name: 'arrowPosition',\n      enabled: true,\n      phase: 'main',\n      fn: ({ state }) => {\n        const { modifiersData, placement } = state\n        if (['right', 'left', 'bottom', 'top'].includes(placement)) return\n        if (modifiersData.arrow) {\n          modifiersData.arrow.x = 35\n        }\n      },\n      requires: ['arrow'],\n    },\n  ],\n}\n\ndefineOptions({\n  name: 'ElCascader',\n})\n\nconst props = withDefaults(defineProps<CascaderComponentProps>(), {\n  options: () => [],\n  props: () => ({}),\n  disabled: undefined,\n  clearIcon: markRaw(CircleClose),\n  filterMethod: (node, keyword) => node.text.includes(keyword),\n  separator: ' / ',\n  showAllLevels: true,\n  maxCollapseTags: 1,\n  debounce: 300,\n  beforeFilter: () => true,\n  placement: 'bottom-start',\n  fallbackPlacements: () => [\n    'bottom-start',\n    'bottom',\n    'top-start',\n    'top',\n    'right',\n    'left',\n  ],\n  teleported: true,\n  effect: 'light',\n  tagType: 'info',\n  tagEffect: 'light',\n  validateEvent: true,\n  persistent: true,\n  showCheckedStrategy: 'child',\n  showPrefix: true,\n  popperStyle: undefined,\n  valueOnClear: undefined,\n})\nconst emit = defineEmits(cascaderEmits)\nconst attrs = useAttrs()\nconst slots = defineSlots()\n\nlet inputInitialHeight = 0\nlet pressDeleteCount = 0\n\nconst nsCascader = useNamespace('cascader')\nconst nsInput = useNamespace('input')\nconst sizeMapPadding = {\n  small: 7,\n  default: 11,\n  large: 15,\n}\n\nconst { t } = useLocale()\nconst { formItem } = useFormItem()\nconst isDisabled = useFormDisabled()\nconst { valueOnClear } = useEmptyValues(props)\nconst { isComposing, handleComposition } = useComposition({\n  afterComposition(event) {\n    const text = (event.target as HTMLInputElement)?.value\n    handleInput(text)\n  },\n})\n\nconst tooltipRef = ref<TooltipInstance>()\nconst tagTooltipRef = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst tagWrapper = ref<HTMLDivElement>()\nconst cascaderPanelRef = ref<CascaderPanelInstance>()\nconst suggestionPanel = ref<ScrollbarInstance>()\nconst popperVisible = ref(false)\nconst inputHover = ref(false)\nconst filtering = ref(false)\nconst inputValue = ref('')\nconst searchInputValue = ref('')\nconst tags = ref<Tag[]>([])\nconst suggestions = ref<CascaderNode[]>([])\n\nconst showTagList = computed(() => {\n  if (!props.props.multiple) {\n    return []\n  }\n  return props.collapseTags\n    ? tags.value.slice(0, props.maxCollapseTags)\n    : tags.value\n})\n\nconst collapseTagList = computed(() => {\n  if (!props.props.multiple) {\n    return []\n  }\n  return props.collapseTags ? tags.value.slice(props.maxCollapseTags) : []\n})\n\nconst cascaderStyle = computed(() => {\n  return attrs.style as StyleValue\n})\n\nconst inputPlaceholder = computed(\n  () => props.placeholder ?? t('el.cascader.placeholder')\n)\nconst currentPlaceholder = computed(() =>\n  searchInputValue.value || tags.value.length > 0 || isComposing.value\n    ? ''\n    : inputPlaceholder.value\n)\nconst realSize = useFormSize()\nconst tagSize = computed(() =>\n  realSize.value === 'small' ? 'small' : 'default'\n)\nconst multiple = computed(() => !!props.props.multiple)\nconst readonly = computed(() => !props.filterable || multiple.value)\nconst searchKeyword = computed(() =>\n  multiple.value ? searchInputValue.value : inputValue.value\n)\nconst checkedNodes: ComputedRef<CascaderNode[]> = computed(\n  () => cascaderPanelRef.value?.checkedNodes || []\n)\n\nconst { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n  disabled: isDisabled,\n  beforeBlur(event) {\n    return (\n      tooltipRef.value?.isFocusInsideContent(event) ||\n      tagTooltipRef.value?.isFocusInsideContent(event)\n    )\n  },\n  afterBlur() {\n    if (props.validateEvent) {\n      formItem?.validate?.('blur').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst clearBtnVisible = computed(() => {\n  if (\n    !props.clearable ||\n    isDisabled.value ||\n    filtering.value ||\n    (!inputHover.value && !isFocused.value)\n  )\n    return false\n\n  return !!checkedNodes.value.length\n})\nconst presentText = computed(() => {\n  const { showAllLevels, separator } = props\n  const nodes = checkedNodes.value\n  return nodes.length\n    ? multiple.value\n      ? ''\n      : nodes[0].calcText(showAllLevels, separator)\n    : ''\n})\n\nconst validateState = computed(() => formItem?.validateState || '')\n\nconst checkedValue = computed<CascaderValue>({\n  get() {\n    return cloneDeep(props.modelValue) as CascaderValue\n  },\n  set(val) {\n    // https://github.com/element-plus/element-plus/issues/17647\n    const value = val ?? valueOnClear.value\n    emit(UPDATE_MODEL_EVENT, value)\n    emit(CHANGE_EVENT, value)\n    if (props.validateEvent) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst cascaderKls = computed(() => {\n  return [\n    nsCascader.b(),\n    nsCascader.m(realSize.value),\n    nsCascader.is('disabled', isDisabled.value),\n    attrs.class,\n  ]\n})\n\nconst cascaderIconKls = computed(() => {\n  return [\n    nsInput.e('icon'),\n    'icon-arrow-down',\n    nsCascader.is('reverse', popperVisible.value),\n  ]\n})\n\nconst inputClass = computed(() => nsCascader.is('focus', isFocused.value))\n\nconst contentRef = computed(() => {\n  return tooltipRef.value?.popperRef?.contentRef\n})\n\nconst handleClickOutside = (event: Event) => {\n  if (isFocused.value) {\n    const _event = new FocusEvent('blur', event)\n    handleBlur(_event)\n  }\n  togglePopperVisible(false)\n}\n\nconst togglePopperVisible = (visible?: boolean) => {\n  if (isDisabled.value) return\n\n  visible = visible ?? !popperVisible.value\n\n  if (visible !== popperVisible.value) {\n    popperVisible.value = visible\n    inputRef.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n    if (visible) {\n      updatePopperPosition()\n      cascaderPanelRef.value &&\n        nextTick(cascaderPanelRef.value.scrollToExpandingNode)\n    } else if (props.filterable) {\n      syncPresentTextValue()\n    }\n\n    emit('visibleChange', visible)\n  }\n}\n\nconst updatePopperPosition = () => {\n  nextTick(() => {\n    tooltipRef.value?.updatePopper()\n  })\n}\nconst hideSuggestionPanel = () => {\n  filtering.value = false\n}\n\nconst genTag = (node: CascaderNode): Tag => {\n  const { showAllLevels, separator } = props\n  return {\n    node,\n    key: node.uid,\n    text: node.calcText(showAllLevels, separator),\n    hitState: false,\n    closable: !isDisabled.value && !node.isDisabled,\n  }\n}\n\nconst deleteTag = (tag: Tag) => {\n  const node = tag.node as CascaderNode\n  node.doCheck(false)\n  cascaderPanelRef.value?.calculateCheckedValue()\n  emit('removeTag', node.valueByOption)\n}\n\nconst getStrategyCheckedNodes = (): CascaderNode[] => {\n  switch (props.showCheckedStrategy) {\n    case 'child':\n      return checkedNodes.value\n    case 'parent': {\n      const clickedNodes = getCheckedNodes(false)\n      const clickedNodesValue = clickedNodes!.map((o) => o.value)\n      const parentNodes = clickedNodes!.filter(\n        (o) => !o.parent || !clickedNodesValue.includes(o.parent.value)\n      )\n      return parentNodes\n    }\n    default:\n      return []\n  }\n}\n\nconst calculatePresentTags = () => {\n  if (!multiple.value) return\n\n  const nodes = getStrategyCheckedNodes()\n\n  const allTags: Tag[] = []\n  nodes.forEach((node) => allTags.push(genTag(node)))\n  tags.value = allTags\n}\n\nconst calculateSuggestions = () => {\n  const { filterMethod, showAllLevels, separator } = props\n  const res = cascaderPanelRef.value\n    ?.getFlattedNodes(!props.props.checkStrictly)\n    ?.filter((node) => {\n      if (node.isDisabled) return false\n      node.calcText(showAllLevels, separator)\n      return filterMethod(node, searchKeyword.value)\n    })\n\n  if (multiple.value) {\n    tags.value.forEach((tag) => {\n      tag.hitState = false\n    })\n  }\n\n  filtering.value = true\n  suggestions.value = res!\n  updatePopperPosition()\n}\n\nconst focusFirstNode = () => {\n  let firstNode!: HTMLElement\n\n  if (filtering.value && suggestionPanel.value) {\n    firstNode = suggestionPanel.value.$el.querySelector(\n      `.${nsCascader.e('suggestion-item')}`\n    )\n  } else {\n    firstNode = cascaderPanelRef.value?.$el.querySelector(\n      `.${nsCascader.b('node')}[tabindex=\"-1\"]`\n    )\n  }\n\n  if (firstNode) {\n    firstNode.focus()\n    !filtering.value && firstNode.click()\n  }\n}\n\nconst updateStyle = () => {\n  const inputInner = inputRef.value?.input\n  const tagWrapperEl = tagWrapper.value\n  const suggestionPanelEl = suggestionPanel.value?.$el\n\n  if (!isClient || !inputInner) return\n\n  if (suggestionPanelEl) {\n    const suggestionList = suggestionPanelEl.querySelector(\n      `.${nsCascader.e('suggestion-list')}`\n    )\n    suggestionList.style.minWidth = `${inputInner.offsetWidth}px`\n  }\n\n  if (tagWrapperEl) {\n    const { offsetHeight } = tagWrapperEl\n    // 2 is el-input__wrapper padding\n    const height =\n      tags.value.length > 0\n        ? `${Math.max(offsetHeight, inputInitialHeight) - 2}px`\n        : `${inputInitialHeight}px`\n    inputInner.style.height = height\n    // if prefix slot exists, update tagWrapperEl left position\n    if (slots.prefix) {\n      const prefix = inputRef.value?.$el.querySelector(\n        `.${nsInput.e('prefix')}`\n      ) as HTMLElement\n      let left = 0\n      if (prefix) {\n        left = prefix.offsetWidth\n        if (left > 0) {\n          left += sizeMapPadding[realSize.value || 'default'] // this is the default padding of el-input__wrapper\n        }\n      }\n      tagWrapperEl.style.left = `${left}px`\n    } else {\n      tagWrapperEl.style.left = `0`\n    }\n    updatePopperPosition()\n  }\n}\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n  return cascaderPanelRef.value?.getCheckedNodes(leafOnly)\n}\n\nconst handleExpandChange = (value: CascaderValue) => {\n  updatePopperPosition()\n  emit('expandChange', value)\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n  if (isComposing.value) return\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      togglePopperVisible()\n      break\n    case EVENT_CODE.down:\n      togglePopperVisible(true)\n      nextTick(focusFirstNode)\n      e.preventDefault()\n      break\n    case EVENT_CODE.esc:\n      if (popperVisible.value === true) {\n        e.preventDefault()\n        e.stopPropagation()\n        togglePopperVisible(false)\n      }\n      break\n    case EVENT_CODE.tab:\n      togglePopperVisible(false)\n      break\n  }\n}\n\nconst handleClear = () => {\n  cascaderPanelRef.value?.clearCheckedNodes()\n  if (!popperVisible.value && props.filterable) {\n    syncPresentTextValue()\n  }\n  togglePopperVisible(false)\n  emit('clear')\n}\n\nconst syncPresentTextValue = () => {\n  const { value } = presentText\n  inputValue.value = value\n  searchInputValue.value = value\n}\n\nconst handleSuggestionClick = (node: CascaderNode) => {\n  const { checked } = node\n\n  if (multiple.value) {\n    cascaderPanelRef.value?.handleCheckChange(node, !checked, false)\n  } else {\n    !checked && cascaderPanelRef.value?.handleCheckChange(node, true, false)\n    togglePopperVisible(false)\n  }\n}\n\nconst handleSuggestionKeyDown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.down: {\n      e.preventDefault()\n      const distance = code === EVENT_CODE.up ? -1 : 1\n      focusNode(\n        getSibling(\n          target,\n          distance,\n          `.${nsCascader.e('suggestion-item')}[tabindex=\"-1\"]`\n        ) as HTMLElement\n      )\n      break\n    }\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      target.click()\n      break\n  }\n}\n\nconst handleDelete = () => {\n  const lastTag = tags.value[tags.value.length - 1]\n  pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n  if (\n    !lastTag ||\n    !pressDeleteCount ||\n    (props.collapseTags && tags.value.length > 1)\n  )\n    return\n\n  if (lastTag.hitState) {\n    deleteTag(lastTag)\n  } else {\n    lastTag.hitState = true\n  }\n}\n\nconst debounce = computed(() => props.debounce)\nconst handleFilter = useDebounceFn(() => {\n  const { value } = searchKeyword\n\n  if (!value) return\n\n  const passed = props.beforeFilter(value)\n\n  if (isPromise(passed)) {\n    passed.then(calculateSuggestions).catch(() => {\n      /* prevent log error */\n    })\n  } else if (passed !== false) {\n    calculateSuggestions()\n  } else {\n    hideSuggestionPanel()\n  }\n}, debounce)\n\nconst handleInput = (val: string, e?: InputEvent) => {\n  !popperVisible.value && togglePopperVisible(true)\n\n  if (e?.isComposing) return\n\n  val ? handleFilter() : hideSuggestionPanel()\n}\n\nconst getInputInnerHeight = (inputInner: HTMLElement): number =>\n  Number.parseFloat(\n    useCssVar(nsInput.cssVarName('input-height'), inputInner).value\n  ) - 2\n\nconst focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nwatch(filtering, updatePopperPosition)\n\nwatch(\n  [\n    checkedNodes,\n    isDisabled,\n    () => props.collapseTags,\n    () => props.maxCollapseTags,\n  ],\n  calculatePresentTags\n)\n\nwatch(tags, () => {\n  nextTick(() => updateStyle())\n})\n\nwatch(realSize, async () => {\n  await nextTick()\n  const inputInner = inputRef.value!.input!\n  inputInitialHeight = getInputInnerHeight(inputInner) || inputInitialHeight\n  updateStyle()\n})\n\nwatch(presentText, syncPresentTextValue, { immediate: true })\n\nwatch(\n  () => popperVisible.value,\n  (val) => {\n    if (val && props.props.lazy && props.props.lazyLoad) {\n      cascaderPanelRef.value?.loadLazyRootNodes()\n    }\n  }\n)\n\nonMounted(() => {\n  const inputInner = inputRef.value!.input!\n\n  const inputInnerHeight = getInputInnerHeight(inputInner)\n\n  inputInitialHeight = inputInner.offsetHeight || inputInnerHeight\n  useResizeObserver(inputInner, updateStyle)\n})\n\ndefineExpose({\n  /**\n   * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n   */\n  getCheckedNodes,\n  /**\n   * @description cascader panel ref\n   */\n  cascaderPanelRef,\n  /**\n   * @description toggle the visible of popper\n   */\n  togglePopperVisible,\n  /**\n   * @description cascader content ref\n   */\n  contentRef,\n  /**\n   * @description selected content text\n   */\n  presentText,\n  /** @description focus the input element */\n  focus,\n  /** @description blur the input element */\n  blur,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Cascader from './src/cascader.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCascader: SFCWithInstall<typeof Cascader> = withInstall(Cascader)\n\nexport default ElCascader\n\nexport * from './src/cascader'\nexport * from './src/instances'\n","import { buildProps, isBoolean } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\n\nimport type CheckTag from './check-tag.vue'\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport interface CheckTagProps {\n  /**\n   * @description is checked\n   */\n  checked?: boolean\n  /**\n   * @description whether the check-tag is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description type of Tag\n   */\n  type?: 'primary' | 'success' | 'info' | 'warning' | 'danger'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CheckTagProps` instead.\n */\nexport const checkTagProps = buildProps({\n  /**\n   * @description is checked\n   */\n  checked: Boolean,\n  /**\n   * @description whether the check-tag is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description type of Tag\n   */\n  type: {\n    type: String,\n    values: ['primary', 'success', 'info', 'warning', 'danger'],\n    default: 'primary',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `CheckTagProps` instead.\n */\nexport type CheckTagPropsPublic = ExtractPublicPropTypes<typeof checkTagProps>\n\nexport const checkTagEmits = {\n  'update:checked': (value: boolean) => isBoolean(value),\n  [CHANGE_EVENT]: (value: boolean) => isBoolean(value),\n}\nexport type CheckTagEmits = typeof checkTagEmits\n\nexport type CheckTagInstance = InstanceType<typeof CheckTag> & unknown\n","<template>\n  <span :class=\"containerKls\" @click=\"handleChange\">\n    <slot />\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { checkTagEmits } from './check-tag'\n\nimport type { CheckTagProps } from './check-tag'\n\ndefineOptions({\n  name: 'ElCheckTag',\n})\nconst props = withDefaults(defineProps<CheckTagProps>(), {\n  type: 'primary',\n})\nconst emit = defineEmits(checkTagEmits)\n\nconst ns = useNamespace('check-tag')\nconst containerKls = computed(() => [\n  ns.b(),\n  ns.is('checked', props.checked),\n  ns.is('disabled', props.disabled),\n  ns.m(props.type || 'primary'),\n])\n\nconst handleChange = () => {\n  if (props.disabled) return\n\n  const checked = !props.checked\n  emit(CHANGE_EVENT, checked)\n  emit('update:checked', checked)\n}\n</script>\n","<template>\n  <span :class=\"containerKls\" @click=\"handleChange\">\n    <slot />\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { checkTagEmits } from './check-tag'\n\nimport type { CheckTagProps } from './check-tag'\n\ndefineOptions({\n  name: 'ElCheckTag',\n})\nconst props = withDefaults(defineProps<CheckTagProps>(), {\n  type: 'primary',\n})\nconst emit = defineEmits(checkTagEmits)\n\nconst ns = useNamespace('check-tag')\nconst containerKls = computed(() => [\n  ns.b(),\n  ns.is('checked', props.checked),\n  ns.is('disabled', props.disabled),\n  ns.m(props.type || 'primary'),\n])\n\nconst handleChange = () => {\n  if (props.disabled) return\n\n  const checked = !props.checked\n  emit(CHANGE_EVENT, checked)\n  emit('update:checked', checked)\n}\n</script>\n","<template>\n  <span :class=\"containerKls\" @click=\"handleChange\">\n    <slot />\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { checkTagEmits } from './check-tag'\n\nimport type { CheckTagProps } from './check-tag'\n\ndefineOptions({\n  name: 'ElCheckTag',\n})\nconst props = withDefaults(defineProps<CheckTagProps>(), {\n  type: 'primary',\n})\nconst emit = defineEmits(checkTagEmits)\n\nconst ns = useNamespace('check-tag')\nconst containerKls = computed(() => [\n  ns.b(),\n  ns.is('checked', props.checked),\n  ns.is('disabled', props.disabled),\n  ns.m(props.type || 'primary'),\n])\n\nconst handleChange = () => {\n  if (props.disabled) return\n\n  const checked = !props.checked\n  emit(CHANGE_EVENT, checked)\n  emit('update:checked', checked)\n}\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport CheckTag from './src/check-tag.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCheckTag: SFCWithInstall<typeof CheckTag> = withInstall(CheckTag)\nexport default ElCheckTag\n\nexport * from './src/check-tag'\n","import { buildProps, definePropType, mutable } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Col from './col.vue'\n\nexport type ColSizeObject = {\n  span?: number\n  offset?: number\n  pull?: number\n  push?: number\n}\nexport type ColSize = number | ColSizeObject\n\nexport interface ColProps {\n  /**\n   * @description custom element tag\n   */\n  tag?: string\n  /**\n   * @description number of column the grid spans\n   */\n  span?: number\n  /**\n   * @description number of spacing on the left side of the grid\n   */\n  offset?: number\n  /**\n   * @description number of columns that grid moves to the left\n   */\n  pull?: number\n  /**\n   * @description number of columns that grid moves to the right\n   */\n  push?: number\n  /**\n   * @description `<768px` Responsive columns or column props object\n   */\n  xs?: ColSize\n  /**\n   * @description `≥768px` Responsive columns or column props object\n   */\n  sm?: ColSize\n  /**\n   * @description `≥992px` Responsive columns or column props object\n   */\n  md?: ColSize\n  /**\n   * @description `≥1200px` Responsive columns or column props object\n   */\n  lg?: ColSize\n  /**\n   * @description `≥1920px` Responsive columns or column props object\n   */\n  xl?: ColSize\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColProps` instead.\n */\nexport const colProps = buildProps({\n  /**\n   * @description custom element tag\n   */\n  tag: {\n    type: String,\n    default: 'div',\n  },\n  /**\n   * @description number of column the grid spans\n   */\n  span: {\n    type: Number,\n    default: 24,\n  },\n  /**\n   * @description number of spacing on the left side of the grid\n   */\n  offset: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description number of columns that grid moves to the left\n   */\n  pull: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description number of columns that grid moves to the right\n   */\n  push: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description `<768px` Responsive columns or column props object\n   */\n  xs: {\n    type: definePropType<ColSize>([Number, Object]),\n    default: () => mutable({} as const),\n  },\n  /**\n   * @description `≥768px` Responsive columns or column props object\n   */\n  sm: {\n    type: definePropType<ColSize>([Number, Object]),\n    default: () => mutable({} as const),\n  },\n  /**\n   * @description `≥992px` Responsive columns or column props object\n   */\n  md: {\n    type: definePropType<ColSize>([Number, Object]),\n    default: () => mutable({} as const),\n  },\n  /**\n   * @description `≥1200px` Responsive columns or column props object\n   */\n  lg: {\n    type: definePropType<ColSize>([Number, Object]),\n    default: () => mutable({} as const),\n  },\n  /**\n   * @description `≥1920px` Responsive columns or column props object\n   */\n  xl: {\n    type: definePropType<ColSize>([Number, Object]),\n    default: () => mutable({} as const),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColProps` instead.\n */\nexport type ColPropsPublic = ExtractPublicPropTypes<typeof colProps>\nexport type ColInstance = InstanceType<typeof Col> & unknown\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Row from './row.vue'\n\nexport const RowJustify = [\n  'start',\n  'center',\n  'end',\n  'space-around',\n  'space-between',\n  'space-evenly',\n] as const\n\nexport const RowAlign = ['top', 'middle', 'bottom'] as const\n\nexport interface RowProps {\n  /**\n   * @description custom element tag\n   */\n  tag?: string\n  /**\n   * @description grid spacing\n   */\n  gutter?: number\n  /**\n   * @description horizontal alignment of flex layout\n   */\n  justify?: (typeof RowJustify)[number]\n  /**\n   * @description vertical alignment of flex layout\n   */\n  align?: (typeof RowAlign)[number]\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RowProps` instead.\n */\nexport const rowProps = buildProps({\n  /**\n   * @description custom element tag\n   */\n  tag: {\n    type: String,\n    default: 'div',\n  },\n  /**\n   * @description grid spacing\n   */\n  gutter: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description horizontal alignment of flex layout\n   */\n  justify: {\n    type: String,\n    values: RowJustify,\n    default: 'start',\n  },\n  /**\n   * @description vertical alignment of flex layout\n   */\n  align: {\n    type: String,\n    values: RowAlign,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `RowProps` instead.\n */\nexport type RowPropsPublic = ExtractPublicPropTypes<typeof rowProps>\nexport type RowInstance = InstanceType<typeof Row> & unknown\n","import type { ComputedRef, InjectionKey } from 'vue'\n\ninterface RowContext {\n  gutter: ComputedRef<number>\n}\n\nexport const rowContextKey: InjectionKey<RowContext> = Symbol('rowContextKey')\n","<template>\n  <component :is=\"tag\" :class=\"rowKls\" :style=\"style\">\n    <slot />\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { rowContextKey } from './constants'\n\nimport type { CSSProperties } from 'vue'\nimport type { RowProps } from './row'\n\ndefineOptions({\n  name: 'ElRow',\n})\n\nconst props = withDefaults(defineProps<RowProps>(), {\n  tag: 'div',\n  gutter: 0,\n  justify: 'start',\n})\n\nconst ns = useNamespace('row')\nconst gutter = computed(() => props.gutter)\n\nprovide(rowContextKey, {\n  gutter,\n})\n\nconst style = computed(() => {\n  const styles: CSSProperties = {}\n  if (!props.gutter) {\n    return styles\n  }\n\n  styles.marginRight = styles.marginLeft = `-${props.gutter / 2}px`\n  return styles\n})\n\nconst rowKls = computed(() => [\n  ns.b(),\n  ns.is(`justify-${props.justify}`, props.justify !== 'start'),\n  ns.is(`align-${props.align}`, !!props.align),\n])\n</script>\n","<template>\n  <component :is=\"tag\" :class=\"rowKls\" :style=\"style\">\n    <slot />\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { rowContextKey } from './constants'\n\nimport type { CSSProperties } from 'vue'\nimport type { RowProps } from './row'\n\ndefineOptions({\n  name: 'ElRow',\n})\n\nconst props = withDefaults(defineProps<RowProps>(), {\n  tag: 'div',\n  gutter: 0,\n  justify: 'start',\n})\n\nconst ns = useNamespace('row')\nconst gutter = computed(() => props.gutter)\n\nprovide(rowContextKey, {\n  gutter,\n})\n\nconst style = computed(() => {\n  const styles: CSSProperties = {}\n  if (!props.gutter) {\n    return styles\n  }\n\n  styles.marginRight = styles.marginLeft = `-${props.gutter / 2}px`\n  return styles\n})\n\nconst rowKls = computed(() => [\n  ns.b(),\n  ns.is(`justify-${props.justify}`, props.justify !== 'start'),\n  ns.is(`align-${props.align}`, !!props.align),\n])\n</script>\n","<template>\n  <component :is=\"tag\" :class=\"rowKls\" :style=\"style\">\n    <slot />\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { rowContextKey } from './constants'\n\nimport type { CSSProperties } from 'vue'\nimport type { RowProps } from './row'\n\ndefineOptions({\n  name: 'ElRow',\n})\n\nconst props = withDefaults(defineProps<RowProps>(), {\n  tag: 'div',\n  gutter: 0,\n  justify: 'start',\n})\n\nconst ns = useNamespace('row')\nconst gutter = computed(() => props.gutter)\n\nprovide(rowContextKey, {\n  gutter,\n})\n\nconst style = computed(() => {\n  const styles: CSSProperties = {}\n  if (!props.gutter) {\n    return styles\n  }\n\n  styles.marginRight = styles.marginLeft = `-${props.gutter / 2}px`\n  return styles\n})\n\nconst rowKls = computed(() => [\n  ns.b(),\n  ns.is(`justify-${props.justify}`, props.justify !== 'start'),\n  ns.is(`align-${props.align}`, !!props.align),\n])\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Row from './src/row.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElRow: SFCWithInstall<typeof Row> = withInstall(Row)\nexport default ElRow\n\nexport * from './src/row'\nexport * from './src/constants'\n","<template>\n  <component :is=\"tag\" :class=\"colKls\" :style=\"style\">\n    <slot />\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { isNumber, isObject } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { rowContextKey } from '@pit-element-plus/components/row'\n\nimport type { CSSProperties } from 'vue'\nimport type { ColProps } from './col'\n\ndefineOptions({\n  name: 'ElCol',\n})\n\nconst props = withDefaults(defineProps<ColProps>(), {\n  tag: 'div',\n  span: 24,\n  offset: 0,\n  pull: 0,\n  push: 0,\n  xs: () => ({}),\n  sm: () => ({}),\n  md: () => ({}),\n  lg: () => ({}),\n  xl: () => ({}),\n})\n\nconst { gutter } = inject(rowContextKey, { gutter: computed(() => 0) })\nconst ns = useNamespace('col')\n\nconst style = computed(() => {\n  const styles: CSSProperties = {}\n  if (gutter.value) {\n    styles.paddingLeft = styles.paddingRight = `${gutter.value / 2}px`\n  }\n  return styles\n})\n\nconst colKls = computed(() => {\n  const classes: string[] = []\n  const pos = ['span', 'offset', 'pull', 'push'] as const\n\n  pos.forEach((prop) => {\n    const size = props[prop]\n    if (isNumber(size)) {\n      if (prop === 'span') classes.push(ns.b(`${props[prop]}`))\n      else if (size > 0) classes.push(ns.b(`${prop}-${props[prop]}`))\n    }\n  })\n\n  const sizes = ['xs', 'sm', 'md', 'lg', 'xl'] as const\n  sizes.forEach((size) => {\n    if (isNumber(props[size])) {\n      classes.push(ns.b(`${size}-${props[size]}`))\n    } else if (isObject(props[size])) {\n      Object.entries(props[size]).forEach(([prop, sizeProp]) => {\n        classes.push(\n          prop !== 'span'\n            ? ns.b(`${size}-${prop}-${sizeProp}`)\n            : ns.b(`${size}-${sizeProp}`)\n        )\n      })\n    }\n  })\n\n  // this is for the fix\n  if (gutter.value) {\n    classes.push(ns.is('guttered'))\n  }\n  return [ns.b(), classes]\n})\n</script>\n","<template>\n  <component :is=\"tag\" :class=\"colKls\" :style=\"style\">\n    <slot />\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { isNumber, isObject } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { rowContextKey } from '@pit-element-plus/components/row'\n\nimport type { CSSProperties } from 'vue'\nimport type { ColProps } from './col'\n\ndefineOptions({\n  name: 'ElCol',\n})\n\nconst props = withDefaults(defineProps<ColProps>(), {\n  tag: 'div',\n  span: 24,\n  offset: 0,\n  pull: 0,\n  push: 0,\n  xs: () => ({}),\n  sm: () => ({}),\n  md: () => ({}),\n  lg: () => ({}),\n  xl: () => ({}),\n})\n\nconst { gutter } = inject(rowContextKey, { gutter: computed(() => 0) })\nconst ns = useNamespace('col')\n\nconst style = computed(() => {\n  const styles: CSSProperties = {}\n  if (gutter.value) {\n    styles.paddingLeft = styles.paddingRight = `${gutter.value / 2}px`\n  }\n  return styles\n})\n\nconst colKls = computed(() => {\n  const classes: string[] = []\n  const pos = ['span', 'offset', 'pull', 'push'] as const\n\n  pos.forEach((prop) => {\n    const size = props[prop]\n    if (isNumber(size)) {\n      if (prop === 'span') classes.push(ns.b(`${props[prop]}`))\n      else if (size > 0) classes.push(ns.b(`${prop}-${props[prop]}`))\n    }\n  })\n\n  const sizes = ['xs', 'sm', 'md', 'lg', 'xl'] as const\n  sizes.forEach((size) => {\n    if (isNumber(props[size])) {\n      classes.push(ns.b(`${size}-${props[size]}`))\n    } else if (isObject(props[size])) {\n      Object.entries(props[size]).forEach(([prop, sizeProp]) => {\n        classes.push(\n          prop !== 'span'\n            ? ns.b(`${size}-${prop}-${sizeProp}`)\n            : ns.b(`${size}-${sizeProp}`)\n        )\n      })\n    }\n  })\n\n  // this is for the fix\n  if (gutter.value) {\n    classes.push(ns.is('guttered'))\n  }\n  return [ns.b(), classes]\n})\n</script>\n","<template>\n  <component :is=\"tag\" :class=\"colKls\" :style=\"style\">\n    <slot />\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { isNumber, isObject } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { rowContextKey } from '@pit-element-plus/components/row'\n\nimport type { CSSProperties } from 'vue'\nimport type { ColProps } from './col'\n\ndefineOptions({\n  name: 'ElCol',\n})\n\nconst props = withDefaults(defineProps<ColProps>(), {\n  tag: 'div',\n  span: 24,\n  offset: 0,\n  pull: 0,\n  push: 0,\n  xs: () => ({}),\n  sm: () => ({}),\n  md: () => ({}),\n  lg: () => ({}),\n  xl: () => ({}),\n})\n\nconst { gutter } = inject(rowContextKey, { gutter: computed(() => 0) })\nconst ns = useNamespace('col')\n\nconst style = computed(() => {\n  const styles: CSSProperties = {}\n  if (gutter.value) {\n    styles.paddingLeft = styles.paddingRight = `${gutter.value / 2}px`\n  }\n  return styles\n})\n\nconst colKls = computed(() => {\n  const classes: string[] = []\n  const pos = ['span', 'offset', 'pull', 'push'] as const\n\n  pos.forEach((prop) => {\n    const size = props[prop]\n    if (isNumber(size)) {\n      if (prop === 'span') classes.push(ns.b(`${props[prop]}`))\n      else if (size > 0) classes.push(ns.b(`${prop}-${props[prop]}`))\n    }\n  })\n\n  const sizes = ['xs', 'sm', 'md', 'lg', 'xl'] as const\n  sizes.forEach((size) => {\n    if (isNumber(props[size])) {\n      classes.push(ns.b(`${size}-${props[size]}`))\n    } else if (isObject(props[size])) {\n      Object.entries(props[size]).forEach(([prop, sizeProp]) => {\n        classes.push(\n          prop !== 'span'\n            ? ns.b(`${size}-${prop}-${sizeProp}`)\n            : ns.b(`${size}-${sizeProp}`)\n        )\n      })\n    }\n  })\n\n  // this is for the fix\n  if (gutter.value) {\n    classes.push(ns.is('guttered'))\n  }\n  return [ns.b(), classes]\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Col from './src/col.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCol: SFCWithInstall<typeof Col> = withInstall(Col)\nexport default ElCol\n\nexport * from './src/col'\n","import {\n  buildProps,\n  definePropType,\n  isArray,\n  isNumber,\n  isString,\n  mutable,\n} from '@pit-element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { Arrayable, Awaitable } from '@pit-element-plus/utils'\n\nexport type CollapseActiveName = string | number\nexport type CollapseModelValue = Arrayable<CollapseActiveName>\n\nexport type CollapseIconPositionType = 'left' | 'right'\n\nexport const emitChangeFn = (value: CollapseModelValue) =>\n  isNumber(value) || isString(value) || isArray(value)\n\nexport interface CollapseProps {\n  /**\n   * @description whether to activate accordion mode\n   */\n  accordion?: boolean\n  /**\n   * @description currently active panel, the type is `string` in accordion mode, otherwise it is `array`\n   */\n  modelValue?: CollapseModelValue\n  /**\n   * @description set expand icon position\n   */\n  expandIconPosition?: CollapseIconPositionType\n  /**\n   * @description before-collapse hook before the collapse state changes. If `false` is returned or a `Promise` is returned and then is rejected, will stop collapsing\n   */\n  beforeCollapse?: (name: CollapseActiveName) => Awaitable<boolean>\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CollapseProps` instead.\n */\nexport const collapseProps = buildProps({\n  /**\n   * @description whether to activate accordion mode\n   */\n  accordion: Boolean,\n  /**\n   * @description currently active panel, the type is `string` in accordion mode, otherwise it is `array`\n   */\n  modelValue: {\n    type: definePropType<CollapseModelValue>([Array, String, Number]),\n    default: () => mutable([] as const),\n  },\n  /**\n   * @description set expand icon position\n   */\n  expandIconPosition: {\n    type: definePropType<CollapseIconPositionType>([String]),\n    default: 'right',\n  },\n  /**\n   * @description before-collapse hook before the collapse state changes. If `false` is returned or a `Promise` is returned and then is rejected, will stop collapsing\n   */\n  beforeCollapse: {\n    type: definePropType<(name: CollapseActiveName) => Awaitable<boolean>>(\n      Function\n    ),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `CollapseProps` instead.\n */\nexport type CollapsePropsPublic = ExtractPublicPropTypes<typeof collapseProps>\n\nexport const collapseEmits = {\n  [UPDATE_MODEL_EVENT]: emitChangeFn,\n  [CHANGE_EVENT]: emitChangeFn,\n}\nexport type CollapseEmits = typeof collapseEmits\n","import type { InjectionKey, Ref } from 'vue'\nimport type { CollapseActiveName } from './collapse'\n\nexport interface CollapseContext {\n  activeNames: Ref<CollapseActiveName[]>\n  handleItemClick: (name: CollapseActiveName) => void\n}\n\nexport const collapseContextKey: InjectionKey<CollapseContext> =\n  Symbol('collapseContextKey')\n","import { computed, provide, ref, watch } from 'vue'\nimport {\n  debugWarn,\n  ensureArray,\n  isBoolean,\n  isPromise,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { collapseContextKey } from './constants'\n\nimport type { SetupContext } from 'vue'\nimport type {\n  CollapseActiveName,\n  CollapseEmits,\n  CollapseProps,\n} from './collapse'\n\nconst SCOPE = 'ElCollapse'\nexport const useCollapse = (\n  props: CollapseProps,\n  emit: SetupContext<CollapseEmits>['emit']\n) => {\n  const activeNames = ref(ensureArray(props.modelValue))\n\n  const setActiveNames = (_activeNames: CollapseActiveName[]) => {\n    activeNames.value = _activeNames\n    const value = props.accordion ? activeNames.value[0] : activeNames.value\n    emit(UPDATE_MODEL_EVENT, value)\n    emit(CHANGE_EVENT, value)\n  }\n\n  const handleChange = (name: CollapseActiveName) => {\n    if (props.accordion) {\n      setActiveNames([activeNames.value[0] === name ? '' : name])\n    } else {\n      const _activeNames = [...activeNames.value]\n      const index = _activeNames.indexOf(name)\n\n      if (index > -1) {\n        _activeNames.splice(index, 1)\n      } else {\n        _activeNames.push(name)\n      }\n      setActiveNames(_activeNames)\n    }\n  }\n\n  const handleItemClick = async (name: CollapseActiveName) => {\n    const { beforeCollapse } = props\n    if (!beforeCollapse) {\n      handleChange(name)\n      return\n    }\n\n    const shouldChange = beforeCollapse(name)\n    const isPromiseOrBool = [\n      isPromise(shouldChange),\n      isBoolean(shouldChange),\n    ].includes(true)\n    if (!isPromiseOrBool) {\n      throwError(\n        SCOPE,\n        'beforeCollapse must return type `Promise<boolean>` or `boolean`'\n      )\n    }\n\n    if (isPromise(shouldChange)) {\n      shouldChange\n        .then((result) => {\n          if (result !== false) {\n            handleChange(name)\n          }\n        })\n        .catch((e) => {\n          debugWarn(SCOPE, `some error occurred: ${e}`)\n        })\n    } else if (shouldChange) {\n      handleChange(name)\n    }\n  }\n\n  watch(\n    () => props.modelValue,\n    () => (activeNames.value = ensureArray(props.modelValue)),\n    { deep: true }\n  )\n\n  provide(collapseContextKey, {\n    activeNames,\n    handleItemClick,\n  })\n  return {\n    activeNames,\n    setActiveNames,\n  }\n}\n\nexport const useCollapseDOM = (props: CollapseProps) => {\n  const ns = useNamespace('collapse')\n\n  const rootKls = computed(() => [\n    ns.b(),\n    ns.b(`icon-position-${props.expandIconPosition}`),\n  ])\n\n  return {\n    rootKls,\n  }\n}\n","<template>\n  <div :class=\"rootKls\">\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { collapseEmits } from './collapse'\nimport { useCollapse, useCollapseDOM } from './use-collapse'\n\nimport type { CollapseProps } from './collapse'\n\ndefineOptions({\n  name: 'ElCollapse',\n})\nconst props = withDefaults(defineProps<CollapseProps>(), {\n  modelValue: () => [],\n  expandIconPosition: 'right',\n})\nconst emit = defineEmits(collapseEmits)\n\nconst { activeNames, setActiveNames } = useCollapse(props, emit)\n\nconst { rootKls } = useCollapseDOM(props)\n\ndefineExpose({\n  /** @description active names */\n  activeNames,\n  /** @description set active names */\n  setActiveNames,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { collapseEmits } from './collapse'\nimport { useCollapse, useCollapseDOM } from './use-collapse'\n\nimport type { CollapseProps } from './collapse'\n\ndefineOptions({\n  name: 'ElCollapse',\n})\nconst props = withDefaults(defineProps<CollapseProps>(), {\n  modelValue: () => [],\n  expandIconPosition: 'right',\n})\nconst emit = defineEmits(collapseEmits)\n\nconst { activeNames, setActiveNames } = useCollapse(props, emit)\n\nconst { rootKls } = useCollapseDOM(props)\n\ndefineExpose({\n  /** @description active names */\n  activeNames,\n  /** @description set active names */\n  setActiveNames,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { collapseEmits } from './collapse'\nimport { useCollapse, useCollapseDOM } from './use-collapse'\n\nimport type { CollapseProps } from './collapse'\n\ndefineOptions({\n  name: 'ElCollapse',\n})\nconst props = withDefaults(defineProps<CollapseProps>(), {\n  modelValue: () => [],\n  expandIconPosition: 'right',\n})\nconst emit = defineEmits(collapseEmits)\n\nconst { activeNames, setActiveNames } = useCollapse(props, emit)\n\nconst { rootKls } = useCollapseDOM(props)\n\ndefineExpose({\n  /** @description active names */\n  activeNames,\n  /** @description set active names */\n  setActiveNames,\n})\n</script>\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n} from '@pit-element-plus/utils'\nimport { ArrowRight } from 'pit-element-icons'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type { CollapseActiveName } from './collapse'\n\nexport interface CollapseItemProps {\n  /**\n   * @description title of the panel\n   */\n  title?: string\n  /**\n   * @description unique identification of the panel\n   */\n  name?: CollapseActiveName\n  /**\n   * @description icon of the collapse item\n   */\n  icon?: IconPropType\n  /**\n   * @description disable the collapse item\n   */\n  disabled?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CollapseItemProps` instead.\n */\nexport const collapseItemProps = buildProps({\n  /**\n   * @description title of the panel\n   */\n  title: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description unique identification of the panel\n   */\n  name: {\n    type: definePropType<CollapseActiveName>([String, Number]),\n    default: undefined,\n  },\n  /**\n   * @description icon of the collapse item\n   */\n  icon: {\n    type: iconPropType,\n    default: ArrowRight,\n  },\n  /**\n   * @description disable the collapse item\n   */\n  disabled: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `CollapseItemProps` instead.\n */\nexport type CollapseItemPropsPublic = ExtractPublicPropTypes<\n  typeof collapseItemProps\n>\n","<template>\n  <transition :name=\"ns.b()\" v-on=\"on\">\n    <slot />\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { RendererElement } from 'vue'\n\ndefineOptions({\n  name: 'ElCollapseTransition',\n})\n\nconst ns = useNamespace('collapse-transition')\n\nconst reset = (el: RendererElement) => {\n  el.style.maxHeight = ''\n  el.style.overflow = el.dataset.oldOverflow\n  el.style.paddingTop = el.dataset.oldPaddingTop\n  el.style.paddingBottom = el.dataset.oldPaddingBottom\n}\n\nconst on = {\n  beforeEnter(el: RendererElement) {\n    if (!el.dataset) el.dataset = {}\n\n    el.dataset.oldPaddingTop = el.style.paddingTop\n    el.dataset.oldPaddingBottom = el.style.paddingBottom\n    if (el.style.height) el.dataset.elExistsHeight = el.style.height\n\n    el.style.maxHeight = 0\n    el.style.paddingTop = 0\n    el.style.paddingBottom = 0\n  },\n\n  enter(el: RendererElement) {\n    requestAnimationFrame(() => {\n      el.dataset.oldOverflow = el.style.overflow\n      if (el.dataset.elExistsHeight) {\n        el.style.maxHeight = el.dataset.elExistsHeight\n      } else if (el.scrollHeight !== 0) {\n        el.style.maxHeight = `${el.scrollHeight}px`\n      } else {\n        el.style.maxHeight = 0\n      }\n\n      el.style.paddingTop = el.dataset.oldPaddingTop\n      el.style.paddingBottom = el.dataset.oldPaddingBottom\n      el.style.overflow = 'hidden'\n    })\n  },\n\n  afterEnter(el: RendererElement) {\n    el.style.maxHeight = ''\n    el.style.overflow = el.dataset.oldOverflow\n  },\n\n  enterCancelled(el: RendererElement) {\n    reset(el)\n  },\n\n  beforeLeave(el: RendererElement) {\n    if (!el.dataset) el.dataset = {}\n    el.dataset.oldPaddingTop = el.style.paddingTop\n    el.dataset.oldPaddingBottom = el.style.paddingBottom\n    el.dataset.oldOverflow = el.style.overflow\n\n    el.style.maxHeight = `${el.scrollHeight}px`\n    el.style.overflow = 'hidden'\n  },\n\n  leave(el: RendererElement) {\n    if (el.scrollHeight !== 0) {\n      el.style.maxHeight = 0\n      el.style.paddingTop = 0\n      el.style.paddingBottom = 0\n    }\n  },\n\n  afterLeave(el: RendererElement) {\n    reset(el)\n  },\n\n  leaveCancelled(el: RendererElement) {\n    reset(el)\n  },\n}\n</script>\n","<template>\n  <transition :name=\"ns.b()\" v-on=\"on\">\n    <slot />\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { RendererElement } from 'vue'\n\ndefineOptions({\n  name: 'ElCollapseTransition',\n})\n\nconst ns = useNamespace('collapse-transition')\n\nconst reset = (el: RendererElement) => {\n  el.style.maxHeight = ''\n  el.style.overflow = el.dataset.oldOverflow\n  el.style.paddingTop = el.dataset.oldPaddingTop\n  el.style.paddingBottom = el.dataset.oldPaddingBottom\n}\n\nconst on = {\n  beforeEnter(el: RendererElement) {\n    if (!el.dataset) el.dataset = {}\n\n    el.dataset.oldPaddingTop = el.style.paddingTop\n    el.dataset.oldPaddingBottom = el.style.paddingBottom\n    if (el.style.height) el.dataset.elExistsHeight = el.style.height\n\n    el.style.maxHeight = 0\n    el.style.paddingTop = 0\n    el.style.paddingBottom = 0\n  },\n\n  enter(el: RendererElement) {\n    requestAnimationFrame(() => {\n      el.dataset.oldOverflow = el.style.overflow\n      if (el.dataset.elExistsHeight) {\n        el.style.maxHeight = el.dataset.elExistsHeight\n      } else if (el.scrollHeight !== 0) {\n        el.style.maxHeight = `${el.scrollHeight}px`\n      } else {\n        el.style.maxHeight = 0\n      }\n\n      el.style.paddingTop = el.dataset.oldPaddingTop\n      el.style.paddingBottom = el.dataset.oldPaddingBottom\n      el.style.overflow = 'hidden'\n    })\n  },\n\n  afterEnter(el: RendererElement) {\n    el.style.maxHeight = ''\n    el.style.overflow = el.dataset.oldOverflow\n  },\n\n  enterCancelled(el: RendererElement) {\n    reset(el)\n  },\n\n  beforeLeave(el: RendererElement) {\n    if (!el.dataset) el.dataset = {}\n    el.dataset.oldPaddingTop = el.style.paddingTop\n    el.dataset.oldPaddingBottom = el.style.paddingBottom\n    el.dataset.oldOverflow = el.style.overflow\n\n    el.style.maxHeight = `${el.scrollHeight}px`\n    el.style.overflow = 'hidden'\n  },\n\n  leave(el: RendererElement) {\n    if (el.scrollHeight !== 0) {\n      el.style.maxHeight = 0\n      el.style.paddingTop = 0\n      el.style.paddingBottom = 0\n    }\n  },\n\n  afterLeave(el: RendererElement) {\n    reset(el)\n  },\n\n  leaveCancelled(el: RendererElement) {\n    reset(el)\n  },\n}\n</script>\n","<template>\n  <transition :name=\"ns.b()\" v-on=\"on\">\n    <slot />\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { RendererElement } from 'vue'\n\ndefineOptions({\n  name: 'ElCollapseTransition',\n})\n\nconst ns = useNamespace('collapse-transition')\n\nconst reset = (el: RendererElement) => {\n  el.style.maxHeight = ''\n  el.style.overflow = el.dataset.oldOverflow\n  el.style.paddingTop = el.dataset.oldPaddingTop\n  el.style.paddingBottom = el.dataset.oldPaddingBottom\n}\n\nconst on = {\n  beforeEnter(el: RendererElement) {\n    if (!el.dataset) el.dataset = {}\n\n    el.dataset.oldPaddingTop = el.style.paddingTop\n    el.dataset.oldPaddingBottom = el.style.paddingBottom\n    if (el.style.height) el.dataset.elExistsHeight = el.style.height\n\n    el.style.maxHeight = 0\n    el.style.paddingTop = 0\n    el.style.paddingBottom = 0\n  },\n\n  enter(el: RendererElement) {\n    requestAnimationFrame(() => {\n      el.dataset.oldOverflow = el.style.overflow\n      if (el.dataset.elExistsHeight) {\n        el.style.maxHeight = el.dataset.elExistsHeight\n      } else if (el.scrollHeight !== 0) {\n        el.style.maxHeight = `${el.scrollHeight}px`\n      } else {\n        el.style.maxHeight = 0\n      }\n\n      el.style.paddingTop = el.dataset.oldPaddingTop\n      el.style.paddingBottom = el.dataset.oldPaddingBottom\n      el.style.overflow = 'hidden'\n    })\n  },\n\n  afterEnter(el: RendererElement) {\n    el.style.maxHeight = ''\n    el.style.overflow = el.dataset.oldOverflow\n  },\n\n  enterCancelled(el: RendererElement) {\n    reset(el)\n  },\n\n  beforeLeave(el: RendererElement) {\n    if (!el.dataset) el.dataset = {}\n    el.dataset.oldPaddingTop = el.style.paddingTop\n    el.dataset.oldPaddingBottom = el.style.paddingBottom\n    el.dataset.oldOverflow = el.style.overflow\n\n    el.style.maxHeight = `${el.scrollHeight}px`\n    el.style.overflow = 'hidden'\n  },\n\n  leave(el: RendererElement) {\n    if (el.scrollHeight !== 0) {\n      el.style.maxHeight = 0\n      el.style.paddingTop = 0\n      el.style.paddingBottom = 0\n    }\n  },\n\n  afterLeave(el: RendererElement) {\n    reset(el)\n  },\n\n  leaveCancelled(el: RendererElement) {\n    reset(el)\n  },\n}\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport CollapseTransition from './src/collapse-transition.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCollapseTransition: SFCWithInstall<typeof CollapseTransition> =\n  withInstall(CollapseTransition)\n\nexport default ElCollapseTransition\n","import { computed, inject, ref, unref } from 'vue'\nimport { useIdInjection, useNamespace } from '@pit-element-plus/hooks'\nimport { collapseContextKey } from './constants'\n\nimport type { CollapseItemProps } from './collapse-item'\n\nexport const useCollapseItem = (props: CollapseItemProps) => {\n  const collapse = inject(collapseContextKey)\n  const { namespace } = useNamespace('collapse')\n\n  const focusing = ref(false)\n  const isClick = ref(false)\n  const idInjection = useIdInjection()\n  const id = computed(() => idInjection.current++)\n  const name = computed(() => {\n    return (\n      props.name ?? `${namespace.value}-id-${idInjection.prefix}-${unref(id)}`\n    )\n  })\n\n  const isActive = computed(() =>\n    collapse?.activeNames.value.includes(unref(name))\n  )\n\n  const handleFocus = () => {\n    setTimeout(() => {\n      if (!isClick.value) {\n        focusing.value = true\n      } else {\n        isClick.value = false\n      }\n    }, 50)\n  }\n\n  const handleHeaderClick = (e: MouseEvent) => {\n    if (props.disabled) return\n    const target = e.target as HTMLElement\n    if (target?.closest('input, textarea, select')) return\n    collapse?.handleItemClick(unref(name))\n    focusing.value = false\n    isClick.value = true\n  }\n\n  const handleEnterClick = (e: KeyboardEvent) => {\n    const target = e.target as HTMLElement\n    if (target?.closest('input, textarea, select')) return\n    e.preventDefault()\n    collapse?.handleItemClick(unref(name))\n  }\n\n  return {\n    focusing,\n    id,\n    isActive,\n    handleFocus,\n    handleHeaderClick,\n    handleEnterClick,\n  }\n}\n\nexport const useCollapseItemDOM = (\n  props: CollapseItemProps,\n  { focusing, isActive, id }: Partial<ReturnType<typeof useCollapseItem>>\n) => {\n  const ns = useNamespace('collapse')\n\n  const rootKls = computed(() => [\n    ns.b('item'),\n    ns.is('active', unref(isActive)),\n    ns.is('disabled', props.disabled),\n  ])\n  const headKls = computed(() => [\n    ns.be('item', 'header'),\n    ns.is('active', unref(isActive)),\n    { focusing: unref(focusing) && !props.disabled },\n  ])\n  const arrowKls = computed(() => [\n    ns.be('item', 'arrow'),\n    ns.is('active', unref(isActive)),\n  ])\n  const itemTitleKls = computed(() => [ns.be('item', 'title')])\n  const itemWrapperKls = computed(() => ns.be('item', 'wrap'))\n  const itemContentKls = computed(() => ns.be('item', 'content'))\n  const scopedContentId = computed(() => ns.b(`content-${unref(id)}`))\n  const scopedHeadId = computed(() => ns.b(`head-${unref(id)}`))\n\n  return {\n    itemTitleKls,\n    arrowKls,\n    headKls,\n    rootKls,\n    itemWrapperKls,\n    itemContentKls,\n    scopedContentId,\n    scopedHeadId,\n  }\n}\n","<template>\n  <div :class=\"rootKls\">\n    <div\n      :id=\"scopedHeadId\"\n      :class=\"headKls\"\n      :aria-expanded=\"isActive\"\n      :aria-controls=\"scopedContentId\"\n      :aria-describedby=\"scopedContentId\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      role=\"button\"\n      @click=\"handleHeaderClick\"\n      @keydown.space.enter.stop=\"handleEnterClick\"\n      @focus=\"handleFocus\"\n      @blur=\"focusing = false\"\n    >\n      <span :class=\"itemTitleKls\">\n        <slot name=\"title\" :is-active=\"isActive\">{{ title }}</slot>\n      </span>\n      <slot name=\"icon\" :is-active=\"isActive\">\n        <el-icon :class=\"arrowKls\">\n          <component :is=\"icon\" />\n        </el-icon>\n      </slot>\n    </div>\n\n    <el-collapse-transition>\n      <div\n        v-show=\"isActive\"\n        :id=\"scopedContentId\"\n        role=\"region\"\n        :class=\"itemWrapperKls\"\n        :aria-hidden=\"!isActive\"\n        :aria-labelledby=\"scopedHeadId\"\n      >\n        <div :class=\"itemContentKls\">\n          <slot />\n        </div>\n      </div>\n    </el-collapse-transition>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { markRaw } from 'vue'\nimport ElCollapseTransition from '@pit-element-plus/components/collapse-transition'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { ArrowRight } from 'pit-element-icons'\nimport { useCollapseItem, useCollapseItemDOM } from './use-collapse-item'\n\nimport type { CollapseItemProps } from './collapse-item'\n\ndefineOptions({\n  name: 'ElCollapseItem',\n})\n\nconst props = withDefaults(defineProps<CollapseItemProps>(), {\n  title: '',\n  icon: markRaw(ArrowRight),\n})\nconst {\n  focusing,\n  id,\n  isActive,\n  handleFocus,\n  handleHeaderClick,\n  handleEnterClick,\n} = useCollapseItem(props)\n\nconst {\n  arrowKls,\n  headKls,\n  rootKls,\n  itemTitleKls,\n  itemWrapperKls,\n  itemContentKls,\n  scopedContentId,\n  scopedHeadId,\n} = useCollapseItemDOM(props, { focusing, isActive, id })\n\ndefineExpose({\n  /** @description current collapse-item whether active */\n  isActive,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <div\n      :id=\"scopedHeadId\"\n      :class=\"headKls\"\n      :aria-expanded=\"isActive\"\n      :aria-controls=\"scopedContentId\"\n      :aria-describedby=\"scopedContentId\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      role=\"button\"\n      @click=\"handleHeaderClick\"\n      @keydown.space.enter.stop=\"handleEnterClick\"\n      @focus=\"handleFocus\"\n      @blur=\"focusing = false\"\n    >\n      <span :class=\"itemTitleKls\">\n        <slot name=\"title\" :is-active=\"isActive\">{{ title }}</slot>\n      </span>\n      <slot name=\"icon\" :is-active=\"isActive\">\n        <el-icon :class=\"arrowKls\">\n          <component :is=\"icon\" />\n        </el-icon>\n      </slot>\n    </div>\n\n    <el-collapse-transition>\n      <div\n        v-show=\"isActive\"\n        :id=\"scopedContentId\"\n        role=\"region\"\n        :class=\"itemWrapperKls\"\n        :aria-hidden=\"!isActive\"\n        :aria-labelledby=\"scopedHeadId\"\n      >\n        <div :class=\"itemContentKls\">\n          <slot />\n        </div>\n      </div>\n    </el-collapse-transition>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { markRaw } from 'vue'\nimport ElCollapseTransition from '@pit-element-plus/components/collapse-transition'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { ArrowRight } from 'pit-element-icons'\nimport { useCollapseItem, useCollapseItemDOM } from './use-collapse-item'\n\nimport type { CollapseItemProps } from './collapse-item'\n\ndefineOptions({\n  name: 'ElCollapseItem',\n})\n\nconst props = withDefaults(defineProps<CollapseItemProps>(), {\n  title: '',\n  icon: markRaw(ArrowRight),\n})\nconst {\n  focusing,\n  id,\n  isActive,\n  handleFocus,\n  handleHeaderClick,\n  handleEnterClick,\n} = useCollapseItem(props)\n\nconst {\n  arrowKls,\n  headKls,\n  rootKls,\n  itemTitleKls,\n  itemWrapperKls,\n  itemContentKls,\n  scopedContentId,\n  scopedHeadId,\n} = useCollapseItemDOM(props, { focusing, isActive, id })\n\ndefineExpose({\n  /** @description current collapse-item whether active */\n  isActive,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <div\n      :id=\"scopedHeadId\"\n      :class=\"headKls\"\n      :aria-expanded=\"isActive\"\n      :aria-controls=\"scopedContentId\"\n      :aria-describedby=\"scopedContentId\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      role=\"button\"\n      @click=\"handleHeaderClick\"\n      @keydown.space.enter.stop=\"handleEnterClick\"\n      @focus=\"handleFocus\"\n      @blur=\"focusing = false\"\n    >\n      <span :class=\"itemTitleKls\">\n        <slot name=\"title\" :is-active=\"isActive\">{{ title }}</slot>\n      </span>\n      <slot name=\"icon\" :is-active=\"isActive\">\n        <el-icon :class=\"arrowKls\">\n          <component :is=\"icon\" />\n        </el-icon>\n      </slot>\n    </div>\n\n    <el-collapse-transition>\n      <div\n        v-show=\"isActive\"\n        :id=\"scopedContentId\"\n        role=\"region\"\n        :class=\"itemWrapperKls\"\n        :aria-hidden=\"!isActive\"\n        :aria-labelledby=\"scopedHeadId\"\n      >\n        <div :class=\"itemContentKls\">\n          <slot />\n        </div>\n      </div>\n    </el-collapse-transition>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { markRaw } from 'vue'\nimport ElCollapseTransition from '@pit-element-plus/components/collapse-transition'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { ArrowRight } from 'pit-element-icons'\nimport { useCollapseItem, useCollapseItemDOM } from './use-collapse-item'\n\nimport type { CollapseItemProps } from './collapse-item'\n\ndefineOptions({\n  name: 'ElCollapseItem',\n})\n\nconst props = withDefaults(defineProps<CollapseItemProps>(), {\n  title: '',\n  icon: markRaw(ArrowRight),\n})\nconst {\n  focusing,\n  id,\n  isActive,\n  handleFocus,\n  handleHeaderClick,\n  handleEnterClick,\n} = useCollapseItem(props)\n\nconst {\n  arrowKls,\n  headKls,\n  rootKls,\n  itemTitleKls,\n  itemWrapperKls,\n  itemContentKls,\n  scopedContentId,\n  scopedHeadId,\n} = useCollapseItemDOM(props, { focusing, isActive, id })\n\ndefineExpose({\n  /** @description current collapse-item whether active */\n  isActive,\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Collapse from './src/collapse.vue'\nimport CollapseItem from './src/collapse-item.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCollapse: SFCWithInstall<typeof Collapse> & {\n  CollapseItem: typeof CollapseItem\n} = withInstall(Collapse, {\n  CollapseItem,\n})\nexport default ElCollapse\nexport const ElCollapseItem: SFCWithInstall<typeof CollapseItem> =\n  withNoopInstall(CollapseItem)\n\nexport * from './src/collapse'\nexport * from './src/collapse-item'\nexport * from './src/constants'\nexport type { CollapseInstance, CollapseItemInstance } from './src/instance'\n","import { isNil } from 'lodash-unified'\nimport { buildProps, definePropType, isString } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\nimport type { ComputedRef, ExtractPublicPropTypes, InjectionKey } from 'vue'\nimport type { ColorFormats } from '@ctrl/tinycolor'\nimport type ColorPickerPanel from './color-picker-panel.vue'\nimport type Color from './utils/color'\n\nexport interface ColorPickerPanelProps {\n  /**\n   * @description binding value\n   */\n  modelValue?: string | null\n  /**\n   * @description whether the color picker is bordered\n   */\n  border?: boolean\n  /**\n   * @description whether to display the alpha slider\n   */\n  showAlpha?: boolean\n  /**\n   * @description color format of v-model\n   */\n  colorFormat?: ColorFormats\n  /**\n   * @description whether to disable the color picker\n   */\n  disabled?: boolean\n  /**\n   * @description predefined color options\n   */\n  predefine?: string[]\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerPanelProps` instead.\n */\nexport const colorPickerPanelProps = buildProps({\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<string | null>(String),\n    default: undefined,\n  },\n  /**\n   * @description whether the color picker is bordered\n   */\n  border: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to display the alpha slider\n   */\n  showAlpha: Boolean,\n  /**\n   * @description color format of v-model\n   */\n  colorFormat: {\n    type: definePropType<ColorFormats>(String),\n  },\n  /**\n   * @description whether to disable the color picker\n   */\n  disabled: Boolean,\n  /**\n   * @description predefined color options\n   */\n  predefine: {\n    type: definePropType<string[]>(Array),\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\nexport const colorPickerPanelEmits = {\n  [UPDATE_MODEL_EVENT]: (val: string | null) => isString(val) || isNil(val),\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerPanelProps` instead.\n */\nexport type ColorPickerPanelPropsPublic = ExtractPublicPropTypes<\n  typeof colorPickerPanelProps\n>\nexport type ColorPickerPanelEmits = typeof colorPickerPanelEmits\nexport type ColorPickerPanelInstance = InstanceType<typeof ColorPickerPanel> &\n  unknown\n\nexport interface ColorPickerPanelContext {\n  currentColor: ComputedRef<string>\n}\n\nexport interface CommonColorContext {\n  color: Color\n}\n\nexport const ROOT_COMMON_COLOR_INJECTION_KEY: InjectionKey<CommonColorContext> =\n  Symbol('colorCommonPickerKey')\nexport const colorPickerPanelContextKey: InjectionKey<ColorPickerPanelContext> =\n  Symbol('colorPickerPanelContextKey')\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Color from '../utils/color'\n\nexport interface AlphaSliderProps {\n  color: Color\n  vertical?: boolean\n  disabled?: boolean\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface HueSliderProps extends AlphaSliderProps {}\n\n/**\n * @deprecated Removed after 3.0.0, Use `AlphaSliderProps` instead.\n */\nexport const alphaSliderProps = buildProps({\n  color: {\n    type: definePropType<Color>(Object),\n    required: true,\n  },\n  vertical: Boolean,\n  disabled: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `HueSliderProps` instead.\n */\nexport const hueSliderProps = alphaSliderProps\n\n/**\n * @deprecated Removed after 3.0.0, Use `AlphaSliderProps` instead.\n */\nexport type AlphaSliderPropsPublic = ExtractPublicPropTypes<\n  typeof alphaSliderProps\n>\n","import { isClient } from '@pit-element-plus/utils'\n\nlet isDragging = false\n\nexport interface DraggableOptions {\n  drag?: (event: MouseEvent | TouchEvent) => void\n  start?: (event: MouseEvent | TouchEvent) => void\n  end?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport function draggable(element: HTMLElement, options: DraggableOptions) {\n  if (!isClient) return\n\n  const moveFn = function (event: MouseEvent | TouchEvent) {\n    options.drag?.(event)\n  }\n\n  const upFn = function (event: MouseEvent | TouchEvent) {\n    document.removeEventListener('mousemove', moveFn)\n    document.removeEventListener('mouseup', upFn)\n    document.removeEventListener('touchmove', moveFn)\n    document.removeEventListener('touchend', upFn)\n    document.onselectstart = null\n    document.ondragstart = null\n\n    isDragging = false\n\n    options.end?.(event)\n  }\n\n  const downFn = function (event: MouseEvent | TouchEvent) {\n    if (isDragging) return\n    document.onselectstart = () => false\n    document.ondragstart = () => false\n    document.addEventListener('mousemove', moveFn)\n    document.addEventListener('mouseup', upFn)\n    document.addEventListener('touchmove', moveFn)\n    document.addEventListener('touchend', upFn)\n\n    isDragging = true\n\n    options.start?.(event)\n  }\n\n  element.addEventListener('mousedown', downFn)\n  element.addEventListener('touchstart', downFn, { passive: false })\n}\n","import {\n  computed,\n  getCurrentInstance,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue'\nimport { addUnit, getClientXY, getEventCode } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { draggable } from '../utils/draggable'\n\nimport type { AlphaSliderProps } from '../props/slider'\n\ninterface UseSliderOptions {\n  key: 'hue' | 'alpha'\n  minValue: number\n  maxValue: number\n}\n\nexport const useSlider = (\n  props: AlphaSliderProps,\n  { key, minValue, maxValue }: UseSliderOptions\n) => {\n  const instance = getCurrentInstance()!\n\n  const thumb = shallowRef<HTMLElement>()\n  const bar = shallowRef<HTMLElement>()\n\n  const currentValue = computed(() => props.color.get(key))\n\n  function handleClick(event: MouseEvent | TouchEvent) {\n    if (props.disabled) return\n    const target = event.target\n\n    if (target !== thumb.value) {\n      handleDrag(event)\n    }\n    thumb.value?.focus()\n  }\n\n  function handleDrag(event: MouseEvent | TouchEvent) {\n    if (!bar.value || !thumb.value || props.disabled) return\n\n    const el = instance.vnode.el as HTMLElement\n    const rect = el.getBoundingClientRect()\n    const { clientX, clientY } = getClientXY(event)\n    let value\n\n    if (!props.vertical) {\n      let left = clientX - rect.left\n      left = Math.max(thumb.value.offsetWidth / 2, left)\n      left = Math.min(left, rect.width - thumb.value.offsetWidth / 2)\n\n      value = Math.round(\n        ((left - thumb.value.offsetWidth / 2) /\n          (rect.width - thumb.value.offsetWidth)) *\n          maxValue\n      )\n    } else {\n      let top = clientY - rect.top\n      top = Math.max(thumb.value.offsetHeight / 2, top)\n      top = Math.min(top, rect.height - thumb.value.offsetHeight / 2)\n\n      value = Math.round(\n        ((top - thumb.value.offsetHeight / 2) /\n          (rect.height - thumb.value.offsetHeight)) *\n          maxValue\n      )\n    }\n    props.color.set(key, value)\n  }\n\n  function handleKeydown(event: KeyboardEvent) {\n    if (props.disabled) return\n    const { shiftKey } = event\n    const code = getEventCode(event)\n    const step = shiftKey ? 10 : 1\n    // NOTE: The hue-slider is opposite in direction to the regular slider, so the hue slider has been reversed here.\n    // But this is not the best way to handle it.\n    const reverse = key === 'hue' ? -1 : 1\n    let isPreventDefault = true\n\n    switch (code) {\n      case EVENT_CODE.left:\n      case EVENT_CODE.down:\n        incrementPosition(-step * reverse)\n        break\n      case EVENT_CODE.right:\n      case EVENT_CODE.up:\n        incrementPosition(step * reverse)\n        break\n      case EVENT_CODE.home:\n        props.color.set(key, key === 'hue' ? maxValue : minValue)\n        break\n      case EVENT_CODE.end:\n        props.color.set(key, key === 'hue' ? minValue : maxValue)\n        break\n      case EVENT_CODE.pageDown:\n        incrementPosition(-4 * reverse)\n        break\n      case EVENT_CODE.pageUp:\n        incrementPosition(4 * reverse)\n        break\n      default:\n        isPreventDefault = false\n        break\n    }\n\n    isPreventDefault && event.preventDefault()\n  }\n\n  function incrementPosition(step: number) {\n    let next = currentValue.value + step\n    next = next < minValue ? minValue : next > maxValue ? maxValue : next\n    props.color.set(key, next)\n  }\n\n  return {\n    thumb,\n    bar,\n    currentValue,\n    handleDrag,\n    handleClick,\n    handleKeydown,\n  }\n}\n\ninterface UseSliderDOMOptions extends Pick<\n  ReturnType<typeof useSlider>,\n  'bar' | 'thumb' | 'currentValue' | 'handleDrag'\n> {\n  namespace: string\n  maxValue: number\n  getBackground?: () => string\n}\n\nexport const useSliderDOM = (\n  props: AlphaSliderProps,\n  {\n    namespace,\n    maxValue,\n    bar,\n    thumb,\n    currentValue,\n    handleDrag,\n    getBackground,\n  }: UseSliderDOMOptions\n) => {\n  const instance = getCurrentInstance()!\n  const ns = useNamespace(namespace)\n\n  const thumbLeft = ref(0)\n  const thumbTop = ref(0)\n  const background = ref<string>()\n\n  function getThumbLeft() {\n    if (!thumb.value) return 0\n\n    if (props.vertical) return 0\n    const el = instance.vnode.el\n    const value = currentValue.value\n\n    if (!el) return 0\n    return Math.round(\n      (value * (el.offsetWidth - thumb.value.offsetWidth / 2)) / maxValue\n    )\n  }\n\n  function getThumbTop() {\n    if (!thumb.value) return 0\n\n    const el = instance.vnode.el\n    if (!props.vertical) return 0\n    const value = currentValue.value\n\n    if (!el) return 0\n    return Math.round(\n      (value * (el.offsetHeight - thumb.value.offsetHeight / 2)) / maxValue\n    )\n  }\n\n  function update() {\n    thumbLeft.value = getThumbLeft()\n    thumbTop.value = getThumbTop()\n    background.value = getBackground?.()\n  }\n\n  onMounted(() => {\n    if (!bar.value || !thumb.value) return\n\n    const dragConfig = {\n      drag: (event: MouseEvent | TouchEvent) => {\n        handleDrag(event)\n      },\n      end: (event: MouseEvent | TouchEvent) => {\n        handleDrag(event)\n      },\n    }\n\n    draggable(bar.value, dragConfig)\n    draggable(thumb.value, dragConfig)\n    update()\n  })\n\n  watch(currentValue, () => update())\n\n  watch(\n    () => props.color.value,\n    () => update()\n  )\n\n  const rootKls = computed(() => [\n    ns.b(),\n    ns.is('vertical', props.vertical),\n    ns.is('disabled', props.disabled),\n  ])\n  const barKls = computed(() => ns.e('bar'))\n  const thumbKls = computed(() => ns.e('thumb'))\n  const barStyle = computed(() => ({ background: background.value }))\n  const thumbStyle = computed(() => ({\n    left: addUnit(thumbLeft.value),\n    top: addUnit(thumbTop.value),\n  }))\n\n  return {\n    rootKls,\n    barKls,\n    barStyle,\n    thumbKls,\n    thumbStyle,\n    thumbLeft,\n    thumbTop,\n    update,\n  }\n}\n","<template>\n  <div :class=\"rootKls\">\n    <div ref=\"bar\" :class=\"barKls\" :style=\"barStyle\" @click=\"handleClick\" />\n    <div\n      ref=\"thumb\"\n      :class=\"thumbKls\"\n      :style=\"thumbStyle\"\n      :aria-label=\"ariaLabel\"\n      :aria-valuenow=\"currentValue\"\n      :aria-valuetext=\"ariaValuetext\"\n      :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n      :aria-valuemin=\"minValue\"\n      :aria-valuemax=\"maxValue\"\n      role=\"slider\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      @keydown=\"handleKeydown\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { useSlider, useSliderDOM } from '../composables/use-slider'\n\nimport type { AlphaSliderProps } from '../props/slider'\n\ndefineOptions({\n  name: 'ElColorAlphaSlider',\n})\n\nconst props = defineProps<AlphaSliderProps>()\nconst minValue = 0\nconst maxValue = 100\n\nconst { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } =\n  useSlider(props, { key: 'alpha', minValue, maxValue })\n\nconst { rootKls, barKls, barStyle, thumbKls, thumbStyle, update } =\n  useSliderDOM(props, {\n    namespace: 'color-alpha-slider',\n    maxValue,\n    currentValue,\n    bar,\n    thumb,\n    handleDrag,\n    getBackground,\n  })\n\nconst { t } = useLocale()\n\nconst ariaLabel = computed(() => t('el.colorpicker.alphaLabel'))\nconst ariaValuetext = computed(() => {\n  return t('el.colorpicker.alphaDescription', {\n    alpha: currentValue.value,\n    color: props.color.value,\n  })\n})\n\nfunction getBackground() {\n  if (props.color && props.color.value) {\n    const { r, g, b } = props.color.toRgb()\n    return `linear-gradient(to right, rgba(${r}, ${g}, ${b}, 0) 0%, rgba(${r}, ${g}, ${b}, 1) 100%)`\n  }\n  return ''\n}\n\ndefineExpose({\n  /**\n   * @description update alpha slider manually\n   * @type {Function}\n   */\n  update,\n  /**\n   * @description bar element ref\n   * @type {HTMLElement}\n   */\n  bar,\n  /**\n   * @description thumb element ref\n   * @type {HTMLElement}\n   */\n  thumb,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <div ref=\"bar\" :class=\"barKls\" :style=\"barStyle\" @click=\"handleClick\" />\n    <div\n      ref=\"thumb\"\n      :class=\"thumbKls\"\n      :style=\"thumbStyle\"\n      :aria-label=\"ariaLabel\"\n      :aria-valuenow=\"currentValue\"\n      :aria-valuetext=\"ariaValuetext\"\n      :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n      :aria-valuemin=\"minValue\"\n      :aria-valuemax=\"maxValue\"\n      role=\"slider\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      @keydown=\"handleKeydown\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { useSlider, useSliderDOM } from '../composables/use-slider'\n\nimport type { AlphaSliderProps } from '../props/slider'\n\ndefineOptions({\n  name: 'ElColorAlphaSlider',\n})\n\nconst props = defineProps<AlphaSliderProps>()\nconst minValue = 0\nconst maxValue = 100\n\nconst { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } =\n  useSlider(props, { key: 'alpha', minValue, maxValue })\n\nconst { rootKls, barKls, barStyle, thumbKls, thumbStyle, update } =\n  useSliderDOM(props, {\n    namespace: 'color-alpha-slider',\n    maxValue,\n    currentValue,\n    bar,\n    thumb,\n    handleDrag,\n    getBackground,\n  })\n\nconst { t } = useLocale()\n\nconst ariaLabel = computed(() => t('el.colorpicker.alphaLabel'))\nconst ariaValuetext = computed(() => {\n  return t('el.colorpicker.alphaDescription', {\n    alpha: currentValue.value,\n    color: props.color.value,\n  })\n})\n\nfunction getBackground() {\n  if (props.color && props.color.value) {\n    const { r, g, b } = props.color.toRgb()\n    return `linear-gradient(to right, rgba(${r}, ${g}, ${b}, 0) 0%, rgba(${r}, ${g}, ${b}, 1) 100%)`\n  }\n  return ''\n}\n\ndefineExpose({\n  /**\n   * @description update alpha slider manually\n   * @type {Function}\n   */\n  update,\n  /**\n   * @description bar element ref\n   * @type {HTMLElement}\n   */\n  bar,\n  /**\n   * @description thumb element ref\n   * @type {HTMLElement}\n   */\n  thumb,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <div ref=\"bar\" :class=\"barKls\" :style=\"barStyle\" @click=\"handleClick\" />\n    <div\n      ref=\"thumb\"\n      :class=\"thumbKls\"\n      :style=\"thumbStyle\"\n      :aria-label=\"ariaLabel\"\n      :aria-valuenow=\"currentValue\"\n      :aria-valuetext=\"ariaValuetext\"\n      :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n      :aria-valuemin=\"minValue\"\n      :aria-valuemax=\"maxValue\"\n      role=\"slider\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      @keydown=\"handleKeydown\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { useSlider, useSliderDOM } from '../composables/use-slider'\n\nimport type { AlphaSliderProps } from '../props/slider'\n\ndefineOptions({\n  name: 'ElColorAlphaSlider',\n})\n\nconst props = defineProps<AlphaSliderProps>()\nconst minValue = 0\nconst maxValue = 100\n\nconst { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } =\n  useSlider(props, { key: 'alpha', minValue, maxValue })\n\nconst { rootKls, barKls, barStyle, thumbKls, thumbStyle, update } =\n  useSliderDOM(props, {\n    namespace: 'color-alpha-slider',\n    maxValue,\n    currentValue,\n    bar,\n    thumb,\n    handleDrag,\n    getBackground,\n  })\n\nconst { t } = useLocale()\n\nconst ariaLabel = computed(() => t('el.colorpicker.alphaLabel'))\nconst ariaValuetext = computed(() => {\n  return t('el.colorpicker.alphaDescription', {\n    alpha: currentValue.value,\n    color: props.color.value,\n  })\n})\n\nfunction getBackground() {\n  if (props.color && props.color.value) {\n    const { r, g, b } = props.color.toRgb()\n    return `linear-gradient(to right, rgba(${r}, ${g}, ${b}, 0) 0%, rgba(${r}, ${g}, ${b}, 1) 100%)`\n  }\n  return ''\n}\n\ndefineExpose({\n  /**\n   * @description update alpha slider manually\n   * @type {Function}\n   */\n  update,\n  /**\n   * @description bar element ref\n   * @type {HTMLElement}\n   */\n  bar,\n  /**\n   * @description thumb element ref\n   * @type {HTMLElement}\n   */\n  thumb,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <div ref=\"bar\" :class=\"barKls\" @click=\"handleClick\" />\n    <div\n      ref=\"thumb\"\n      :class=\"thumbKls\"\n      :style=\"thumbStyle\"\n      :aria-label=\"ariaLabel\"\n      :aria-valuenow=\"currentValue\"\n      :aria-valuetext=\"ariaValuetext\"\n      :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n      :aria-valuemin=\"minValue\"\n      :aria-valuemax=\"maxValue\"\n      role=\"slider\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      @keydown=\"handleKeydown\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { useSlider, useSliderDOM } from '../composables/use-slider'\n\nimport type { HueSliderProps } from '../props/slider'\n\ndefineOptions({\n  name: 'ElColorHueSlider',\n})\n\nconst props = defineProps<HueSliderProps>()\nconst minValue = 0\nconst maxValue = 360\n\nconst { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } =\n  useSlider(props, { key: 'hue', minValue, maxValue })\n\nconst { rootKls, barKls, thumbKls, thumbStyle, thumbTop, update } =\n  useSliderDOM(props, {\n    namespace: 'color-hue-slider',\n    maxValue,\n    currentValue,\n    bar,\n    thumb,\n    handleDrag,\n  })\n\nconst { t } = useLocale()\n\nconst ariaLabel = computed(() => t('el.colorpicker.hueLabel'))\nconst ariaValuetext = computed(() => {\n  return t('el.colorpicker.hueDescription', {\n    hue: currentValue.value,\n    color: props.color.value,\n  })\n})\n\ndefineExpose({\n  /**\n   * @description bar element ref\n   */\n  bar,\n  /**\n   * @description thumb element ref\n   */\n  thumb,\n  /**\n   * @description thumb top position, only for vertical slider\n   */\n  thumbTop,\n  /**\n   * @description update hue slider manually\n   */\n  update,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <div ref=\"bar\" :class=\"barKls\" @click=\"handleClick\" />\n    <div\n      ref=\"thumb\"\n      :class=\"thumbKls\"\n      :style=\"thumbStyle\"\n      :aria-label=\"ariaLabel\"\n      :aria-valuenow=\"currentValue\"\n      :aria-valuetext=\"ariaValuetext\"\n      :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n      :aria-valuemin=\"minValue\"\n      :aria-valuemax=\"maxValue\"\n      role=\"slider\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      @keydown=\"handleKeydown\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { useSlider, useSliderDOM } from '../composables/use-slider'\n\nimport type { HueSliderProps } from '../props/slider'\n\ndefineOptions({\n  name: 'ElColorHueSlider',\n})\n\nconst props = defineProps<HueSliderProps>()\nconst minValue = 0\nconst maxValue = 360\n\nconst { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } =\n  useSlider(props, { key: 'hue', minValue, maxValue })\n\nconst { rootKls, barKls, thumbKls, thumbStyle, thumbTop, update } =\n  useSliderDOM(props, {\n    namespace: 'color-hue-slider',\n    maxValue,\n    currentValue,\n    bar,\n    thumb,\n    handleDrag,\n  })\n\nconst { t } = useLocale()\n\nconst ariaLabel = computed(() => t('el.colorpicker.hueLabel'))\nconst ariaValuetext = computed(() => {\n  return t('el.colorpicker.hueDescription', {\n    hue: currentValue.value,\n    color: props.color.value,\n  })\n})\n\ndefineExpose({\n  /**\n   * @description bar element ref\n   */\n  bar,\n  /**\n   * @description thumb element ref\n   */\n  thumb,\n  /**\n   * @description thumb top position, only for vertical slider\n   */\n  thumbTop,\n  /**\n   * @description update hue slider manually\n   */\n  update,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <div ref=\"bar\" :class=\"barKls\" @click=\"handleClick\" />\n    <div\n      ref=\"thumb\"\n      :class=\"thumbKls\"\n      :style=\"thumbStyle\"\n      :aria-label=\"ariaLabel\"\n      :aria-valuenow=\"currentValue\"\n      :aria-valuetext=\"ariaValuetext\"\n      :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n      :aria-valuemin=\"minValue\"\n      :aria-valuemax=\"maxValue\"\n      role=\"slider\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      @keydown=\"handleKeydown\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { useSlider, useSliderDOM } from '../composables/use-slider'\n\nimport type { HueSliderProps } from '../props/slider'\n\ndefineOptions({\n  name: 'ElColorHueSlider',\n})\n\nconst props = defineProps<HueSliderProps>()\nconst minValue = 0\nconst maxValue = 360\n\nconst { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } =\n  useSlider(props, { key: 'hue', minValue, maxValue })\n\nconst { rootKls, barKls, thumbKls, thumbStyle, thumbTop, update } =\n  useSliderDOM(props, {\n    namespace: 'color-hue-slider',\n    maxValue,\n    currentValue,\n    bar,\n    thumb,\n    handleDrag,\n  })\n\nconst { t } = useLocale()\n\nconst ariaLabel = computed(() => t('el.colorpicker.hueLabel'))\nconst ariaValuetext = computed(() => {\n  return t('el.colorpicker.hueDescription', {\n    hue: currentValue.value,\n    color: props.color.value,\n  })\n})\n\ndefineExpose({\n  /**\n   * @description bar element ref\n   */\n  bar,\n  /**\n   * @description thumb element ref\n   */\n  thumb,\n  /**\n   * @description thumb top position, only for vertical slider\n   */\n  thumbTop,\n  /**\n   * @description update hue slider manually\n   */\n  update,\n})\n</script>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Color from '../utils/color'\n\nexport interface PredefineProps {\n  colors: string[]\n  color: Color\n  enableAlpha: boolean\n  disabled?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `PredefineProps` instead.\n */\nexport const predefineProps = buildProps({\n  colors: {\n    type: definePropType<string[]>(Array),\n    required: true,\n  },\n  color: {\n    type: definePropType<Color>(Object),\n    required: true,\n  },\n  enableAlpha: {\n    type: Boolean,\n    required: true,\n  },\n  disabled: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `PredefineProps` instead.\n */\nexport type PredefinePropsPublic = ExtractPublicPropTypes<typeof predefineProps>\n","import { TinyColor } from '@ctrl/tinycolor'\nimport { hasOwn } from '@pit-element-plus/utils'\n\nimport type { ColorFormats } from '@ctrl/tinycolor'\n\ninterface ColorOptions {\n  enableAlpha: boolean\n  format: string\n  value?: string | null\n}\n\nexport default class Color {\n  private _hue = 0\n  private _saturation = 100\n  private _value = 100\n  private _alpha = 100\n  private _tiny = new TinyColor()\n  private _isValid = false\n  public enableAlpha = false\n  public format = ''\n  public value = ''\n  public selected?: boolean\n\n  constructor(options: Partial<ColorOptions> = {}) {\n    for (const option in options) {\n      if (hasOwn(options, option)) {\n        this[option] = options[option]\n      }\n    }\n    if (options.value) {\n      this.fromString(options.value)\n    } else {\n      this.doOnChange()\n    }\n  }\n\n  set(prop: { [key: string]: any } | any, value?: number) {\n    if (arguments.length === 1 && typeof prop === 'object') {\n      for (const p in prop) {\n        if (hasOwn(prop, p)) {\n          this.set(p, prop[p])\n        }\n      }\n\n      return\n    }\n    ;(this as any)[`_${prop}`] = value\n    this._isValid = true\n    this.doOnChange()\n  }\n\n  get(prop: string) {\n    if (['hue', 'saturation', 'value', 'alpha'].includes(prop)) {\n      return Math.round((this as any)[`_${prop}`])\n    }\n    return (this as any)[`_${prop}`]\n  }\n\n  toRgb() {\n    return this._isValid ? this._tiny.toRgb() : { r: 255, g: 255, b: 255, a: 0 }\n  }\n\n  fromString(value: string) {\n    const color = new TinyColor(value)\n    this._isValid = color.isValid\n    if (color.isValid) {\n      const { h, s, v, a } = color.toHsv()\n      this._hue = h\n      this._saturation = s * 100\n      this._value = v * 100\n      this._alpha = a * 100\n    } else {\n      this._hue = 0\n      this._saturation = 100\n      this._value = 100\n      this._alpha = 100\n    }\n    this.doOnChange()\n  }\n\n  clear() {\n    this._isValid = false\n    this.value = ''\n    this._hue = 0\n    this._saturation = 100\n    this._value = 100\n    this._alpha = 100\n  }\n\n  compare(color: this) {\n    const compareColor = new TinyColor({\n      h: color._hue,\n      s: color._saturation / 100,\n      v: color._value / 100,\n      a: color._alpha / 100,\n    })\n    return this._tiny.equals(compareColor)\n  }\n\n  doOnChange() {\n    const { _hue, _saturation, _value, _alpha, format, enableAlpha } = this\n    let _format = format || (enableAlpha ? 'rgb' : 'hex')\n    if (format === 'hex' && enableAlpha) {\n      _format = 'hex8'\n    }\n    this._tiny = new TinyColor({\n      h: _hue,\n      s: _saturation / 100,\n      v: _value / 100,\n      a: _alpha / 100,\n    })\n    this.value = this._isValid\n      ? this._tiny.toString(_format as ColorFormats)\n      : ''\n  }\n}\n","import { computed, inject, ref, watch, watchEffect } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { PredefineProps } from '../props/predefine'\nimport { colorPickerPanelContextKey } from '../color-picker-panel'\nimport Color from '../utils/color'\n\nimport type { Ref } from 'vue'\n\nexport const usePredefine = (props: PredefineProps) => {\n  const { currentColor } = inject(colorPickerPanelContextKey)!\n\n  const rgbaColors = ref(parseColors(props.colors, props.color)) as Ref<Color[]>\n\n  watch(\n    () => currentColor.value,\n    (val) => {\n      const color = new Color({\n        value: val,\n        enableAlpha: props.enableAlpha,\n      })\n\n      rgbaColors.value.forEach((item) => {\n        item.selected = color.compare(item)\n      })\n    }\n  )\n\n  watchEffect(() => {\n    rgbaColors.value = parseColors(props.colors, props.color)\n  })\n\n  function handleSelect(index: number) {\n    props.color.fromString(props.colors[index])\n  }\n\n  function parseColors(colors: string[], color: Color) {\n    return colors.map((value) => {\n      const c = new Color({\n        value,\n        enableAlpha: props.enableAlpha,\n      })\n      c.selected = c.compare(color)\n      return c\n    })\n  }\n\n  return {\n    rgbaColors,\n    handleSelect,\n  }\n}\n\nexport const usePredefineDOM = (props: PredefineProps) => {\n  const ns = useNamespace('color-predefine')\n\n  const rootKls = computed(() => [ns.b(), ns.is('disabled', props.disabled)])\n\n  const colorsKls = computed(() => ns.e('colors'))\n\n  function colorSelectorKls(item: Color) {\n    return [\n      ns.e('color-selector'),\n      ns.is('alpha', item.get('alpha') < 100),\n      { selected: item.selected },\n    ]\n  }\n\n  return {\n    rootKls,\n    colorsKls,\n    colorSelectorKls,\n  }\n}\n","<template>\n  <div :class=\"rootKls\">\n    <div :class=\"colorsKls\">\n      <button\n        v-for=\"(item, index) in rgbaColors\"\n        :key=\"colors[index]\"\n        type=\"button\"\n        :disabled=\"disabled\"\n        :aria-label=\"ariaLabel(item.value)\"\n        :class=\"colorSelectorKls(item)\"\n        @click=\"handleSelect(index)\"\n      >\n        <div :style=\"{ backgroundColor: item.value }\" />\n      </button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { usePredefine, usePredefineDOM } from '../composables/use-predefine'\nimport { useLocale } from '@pit-element-plus/hooks/use-locale'\n\nimport type { PredefineProps } from '../props/predefine'\n\ndefineOptions({\n  name: 'ElColorPredefine',\n})\n\nconst props = defineProps<PredefineProps>()\n\nconst { rgbaColors, handleSelect } = usePredefine(props)\nconst { rootKls, colorsKls, colorSelectorKls } = usePredefineDOM(props)\nconst { t } = useLocale()\n\nconst ariaLabel = (value: string) => {\n  return t('el.colorpicker.predefineDescription', { value })\n}\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <div :class=\"colorsKls\">\n      <button\n        v-for=\"(item, index) in rgbaColors\"\n        :key=\"colors[index]\"\n        type=\"button\"\n        :disabled=\"disabled\"\n        :aria-label=\"ariaLabel(item.value)\"\n        :class=\"colorSelectorKls(item)\"\n        @click=\"handleSelect(index)\"\n      >\n        <div :style=\"{ backgroundColor: item.value }\" />\n      </button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { usePredefine, usePredefineDOM } from '../composables/use-predefine'\nimport { useLocale } from '@pit-element-plus/hooks/use-locale'\n\nimport type { PredefineProps } from '../props/predefine'\n\ndefineOptions({\n  name: 'ElColorPredefine',\n})\n\nconst props = defineProps<PredefineProps>()\n\nconst { rgbaColors, handleSelect } = usePredefine(props)\nconst { rootKls, colorsKls, colorSelectorKls } = usePredefineDOM(props)\nconst { t } = useLocale()\n\nconst ariaLabel = (value: string) => {\n  return t('el.colorpicker.predefineDescription', { value })\n}\n</script>\n","<template>\n  <div :class=\"rootKls\">\n    <div :class=\"colorsKls\">\n      <button\n        v-for=\"(item, index) in rgbaColors\"\n        :key=\"colors[index]\"\n        type=\"button\"\n        :disabled=\"disabled\"\n        :aria-label=\"ariaLabel(item.value)\"\n        :class=\"colorSelectorKls(item)\"\n        @click=\"handleSelect(index)\"\n      >\n        <div :style=\"{ backgroundColor: item.value }\" />\n      </button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { usePredefine, usePredefineDOM } from '../composables/use-predefine'\nimport { useLocale } from '@pit-element-plus/hooks/use-locale'\n\nimport type { PredefineProps } from '../props/predefine'\n\ndefineOptions({\n  name: 'ElColorPredefine',\n})\n\nconst props = defineProps<PredefineProps>()\n\nconst { rgbaColors, handleSelect } = usePredefine(props)\nconst { rootKls, colorsKls, colorSelectorKls } = usePredefineDOM(props)\nconst { t } = useLocale()\n\nconst ariaLabel = (value: string) => {\n  return t('el.colorpicker.predefineDescription', { value })\n}\n</script>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Color from '../utils/color'\n\nexport interface SvPanelProps {\n  color: Color\n  disabled?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `SvPanelProps` instead.\n */\nexport const svPanelProps = buildProps({\n  color: {\n    type: definePropType<Color>(Object),\n    required: true,\n  },\n  disabled: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `SvPanelProps` instead.\n */\nexport type SvPanelPropsPublic = ExtractPublicPropTypes<typeof svPanelProps>\n","import { computed, getCurrentInstance, onMounted, ref, watch } from 'vue'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit, getClientXY, getEventCode } from '@pit-element-plus/utils'\nimport { draggable } from '../utils/draggable'\n\nimport type { SvPanelProps } from '../props/sv-panel'\n\nexport const useSvPanel = (props: SvPanelProps) => {\n  const instance = getCurrentInstance()!\n\n  const cursorRef = ref<HTMLElement>()\n  const cursorTop = ref(0)\n  const cursorLeft = ref(0)\n  const background = ref('hsl(0, 100%, 50%)')\n\n  const saturation = computed(() => props.color.get('saturation'))\n  const brightness = computed(() => props.color.get('value'))\n  const hue = computed(() => props.color.get('hue'))\n\n  function handleClick(event: MouseEvent | TouchEvent) {\n    if (props.disabled) return\n    const target = event.target\n\n    if (target !== cursorRef.value) {\n      handleDrag(event)\n    }\n    cursorRef.value?.focus({ preventScroll: true })\n  }\n\n  function handleDrag(event: MouseEvent | TouchEvent) {\n    if (props.disabled) return\n\n    const el = instance.vnode.el!\n    const rect = el.getBoundingClientRect()\n    const { clientX, clientY } = getClientXY(event)\n\n    let left = clientX - rect.left\n    let top = clientY - rect.top\n    left = Math.max(0, left)\n    left = Math.min(left, rect.width)\n\n    top = Math.max(0, top)\n    top = Math.min(top, rect.height)\n\n    cursorLeft.value = left\n    cursorTop.value = top\n    props.color.set({\n      saturation: (left / rect.width) * 100,\n      value: 100 - (top / rect.height) * 100,\n    })\n  }\n\n  function handleKeydown(event: KeyboardEvent) {\n    if (props.disabled) return\n    const { shiftKey } = event\n    const code = getEventCode(event)\n    const step = shiftKey ? 10 : 1\n    let isPreventDefault = true\n\n    switch (code) {\n      case EVENT_CODE.left:\n        incrementSaturation(-step)\n        break\n      case EVENT_CODE.right:\n        incrementSaturation(step)\n        break\n      case EVENT_CODE.up:\n        incrementBrightness(step)\n        break\n      case EVENT_CODE.down:\n        incrementBrightness(-step)\n        break\n      default:\n        isPreventDefault = false\n        break\n    }\n\n    isPreventDefault && event.preventDefault()\n  }\n\n  function incrementSaturation(step: number) {\n    let next = saturation.value + step\n    next = next < 0 ? 0 : next > 100 ? 100 : next\n    props.color.set('saturation', next)\n  }\n\n  function incrementBrightness(step: number) {\n    let next = brightness.value + step\n    next = next < 0 ? 0 : next > 100 ? 100 : next\n    props.color.set('value', next)\n  }\n\n  return {\n    cursorRef,\n    cursorTop,\n    cursorLeft,\n    background,\n    saturation,\n    brightness,\n    hue,\n    handleClick,\n    handleDrag,\n    handleKeydown,\n  }\n}\n\nexport const useSvPanelDOM = (\n  props: SvPanelProps,\n  {\n    cursorTop,\n    cursorLeft,\n    background,\n    handleDrag,\n  }: Pick<\n    ReturnType<typeof useSvPanel>,\n    'cursorTop' | 'cursorLeft' | 'background' | 'handleDrag'\n  >\n) => {\n  const instance = getCurrentInstance()!\n  const ns = useNamespace('color-svpanel')\n\n  function update() {\n    const saturation = props.color.get('saturation')\n    const brightness = props.color.get('value')\n\n    const el = instance.vnode.el!\n    const { clientWidth: width, clientHeight: height } = el\n\n    cursorLeft.value = (saturation * width) / 100\n    cursorTop.value = ((100 - brightness) * height) / 100\n\n    background.value = `hsl(${props.color.get('hue')}, 100%, 50%)`\n  }\n\n  onMounted(() => {\n    draggable(instance.vnode.el as HTMLElement, {\n      drag: (event) => {\n        handleDrag(event)\n      },\n      end: (event) => {\n        handleDrag(event)\n      },\n    })\n\n    update()\n  })\n\n  watch(\n    [\n      () => props.color.get('hue'),\n      () => props.color.get('value'),\n      () => props.color.value,\n    ],\n    () => update()\n  )\n\n  const rootKls = computed(() => ns.b())\n  const cursorKls = computed(() => ns.e('cursor'))\n  const rootStyle = computed(() => ({\n    backgroundColor: background.value,\n  }))\n  const cursorStyle = computed(() => ({\n    top: addUnit(cursorTop.value),\n    left: addUnit(cursorLeft.value),\n  }))\n\n  return {\n    rootKls,\n    cursorKls,\n    rootStyle,\n    cursorStyle,\n    update,\n  }\n}\n","<template>\n  <div :class=\"rootKls\" :style=\"rootStyle\" @click=\"handleClick\">\n    <div\n      ref=\"cursorRef\"\n      :class=\"cursorKls\"\n      :style=\"cursorStyle\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      role=\"slider\"\n      aria-valuemin=\"0,0\"\n      aria-valuemax=\"100,100\"\n      :aria-label=\"ariaLabel\"\n      :aria-valuenow=\"`${saturation},${brightness}`\"\n      :aria-valuetext=\"ariaValuetext\"\n      @keydown=\"handleKeydown\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks/use-locale'\nimport { useSvPanel, useSvPanelDOM } from '../composables/use-sv-panel'\n\nimport type { SvPanelProps } from '../props/sv-panel'\n\ndefineOptions({\n  name: 'ElSvPanel',\n})\n\nconst props = defineProps<SvPanelProps>()\n\nconst {\n  cursorRef,\n  cursorTop,\n  cursorLeft,\n  background,\n  saturation,\n  brightness,\n  handleClick,\n  handleDrag,\n  handleKeydown,\n} = useSvPanel(props)\n\nconst { rootKls, cursorKls, rootStyle, cursorStyle, update } = useSvPanelDOM(\n  props,\n  {\n    cursorTop,\n    cursorLeft,\n    background,\n    handleDrag,\n  }\n)\n\nconst { t } = useLocale()\n\nconst ariaLabel = computed(() => t('el.colorpicker.svLabel'))\nconst ariaValuetext = computed(() => {\n  return t('el.colorpicker.svDescription', {\n    saturation: saturation.value,\n    brightness: brightness.value,\n    color: props.color.value,\n  })\n})\n\ndefineExpose({\n  /**\n   * @description update sv panel manually\n   */\n  update,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\" :style=\"rootStyle\" @click=\"handleClick\">\n    <div\n      ref=\"cursorRef\"\n      :class=\"cursorKls\"\n      :style=\"cursorStyle\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      role=\"slider\"\n      aria-valuemin=\"0,0\"\n      aria-valuemax=\"100,100\"\n      :aria-label=\"ariaLabel\"\n      :aria-valuenow=\"`${saturation},${brightness}`\"\n      :aria-valuetext=\"ariaValuetext\"\n      @keydown=\"handleKeydown\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks/use-locale'\nimport { useSvPanel, useSvPanelDOM } from '../composables/use-sv-panel'\n\nimport type { SvPanelProps } from '../props/sv-panel'\n\ndefineOptions({\n  name: 'ElSvPanel',\n})\n\nconst props = defineProps<SvPanelProps>()\n\nconst {\n  cursorRef,\n  cursorTop,\n  cursorLeft,\n  background,\n  saturation,\n  brightness,\n  handleClick,\n  handleDrag,\n  handleKeydown,\n} = useSvPanel(props)\n\nconst { rootKls, cursorKls, rootStyle, cursorStyle, update } = useSvPanelDOM(\n  props,\n  {\n    cursorTop,\n    cursorLeft,\n    background,\n    handleDrag,\n  }\n)\n\nconst { t } = useLocale()\n\nconst ariaLabel = computed(() => t('el.colorpicker.svLabel'))\nconst ariaValuetext = computed(() => {\n  return t('el.colorpicker.svDescription', {\n    saturation: saturation.value,\n    brightness: brightness.value,\n    color: props.color.value,\n  })\n})\n\ndefineExpose({\n  /**\n   * @description update sv panel manually\n   */\n  update,\n})\n</script>\n","<template>\n  <div :class=\"rootKls\" :style=\"rootStyle\" @click=\"handleClick\">\n    <div\n      ref=\"cursorRef\"\n      :class=\"cursorKls\"\n      :style=\"cursorStyle\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      role=\"slider\"\n      aria-valuemin=\"0,0\"\n      aria-valuemax=\"100,100\"\n      :aria-label=\"ariaLabel\"\n      :aria-valuenow=\"`${saturation},${brightness}`\"\n      :aria-valuetext=\"ariaValuetext\"\n      @keydown=\"handleKeydown\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks/use-locale'\nimport { useSvPanel, useSvPanelDOM } from '../composables/use-sv-panel'\n\nimport type { SvPanelProps } from '../props/sv-panel'\n\ndefineOptions({\n  name: 'ElSvPanel',\n})\n\nconst props = defineProps<SvPanelProps>()\n\nconst {\n  cursorRef,\n  cursorTop,\n  cursorLeft,\n  background,\n  saturation,\n  brightness,\n  handleClick,\n  handleDrag,\n  handleKeydown,\n} = useSvPanel(props)\n\nconst { rootKls, cursorKls, rootStyle, cursorStyle, update } = useSvPanelDOM(\n  props,\n  {\n    cursorTop,\n    cursorLeft,\n    background,\n    handleDrag,\n  }\n)\n\nconst { t } = useLocale()\n\nconst ariaLabel = computed(() => t('el.colorpicker.svLabel'))\nconst ariaValuetext = computed(() => {\n  return t('el.colorpicker.svDescription', {\n    saturation: saturation.value,\n    brightness: brightness.value,\n    color: props.color.value,\n  })\n})\n\ndefineExpose({\n  /**\n   * @description update sv panel manually\n   */\n  update,\n})\n</script>\n","import { reactive, watch } from 'vue'\nimport Color from '../utils/color'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\ntype CommonColorProps = {\n  modelValue?: string | null\n  showAlpha: boolean\n  colorFormat?: string\n}\ntype CommonColorEmits = (event: 'update:modelValue', ...args: any[]) => void\n\nexport const useCommonColor = <\n  P extends CommonColorProps,\n  E extends CommonColorEmits,\n>(\n  props: P,\n  emit: E\n) => {\n  const color = reactive(\n    new Color({\n      enableAlpha: props.showAlpha,\n      format: props.colorFormat || '',\n      value: props.modelValue,\n    })\n  ) as Color\n\n  watch(\n    () => [props.colorFormat, props.showAlpha],\n    () => {\n      color.enableAlpha = props.showAlpha\n      color.format = props.colorFormat || color.format\n      color.doOnChange()\n      emit(UPDATE_MODEL_EVENT, color.value)\n    }\n  )\n\n  return {\n    color,\n  }\n}\n","<template>\n  <div\n    :class=\"[ns.b(), ns.is('disabled', disabled), ns.is('border', border)]\"\n    @focusout=\"handleFocusout\"\n  >\n    <div :class=\"ns.e('wrapper')\">\n      <hue-slider\n        ref=\"hueRef\"\n        class=\"hue-slider\"\n        :color=\"color\"\n        vertical\n        :disabled=\"disabled\"\n      />\n      <sv-panel ref=\"svRef\" :color=\"color\" :disabled=\"disabled\" />\n    </div>\n    <alpha-slider\n      v-if=\"showAlpha\"\n      ref=\"alphaRef\"\n      :color=\"color\"\n      :disabled=\"disabled\"\n    />\n    <predefine\n      v-if=\"predefine\"\n      ref=\"predefine\"\n      :enable-alpha=\"showAlpha\"\n      :color=\"color\"\n      :colors=\"predefine\"\n      :disabled=\"disabled\"\n    />\n    <div :class=\"ns.e('footer')\">\n      <el-input\n        ref=\"inputRef\"\n        v-model=\"customInput\"\n        :validate-event=\"false\"\n        size=\"small\"\n        :disabled=\"disabled\"\n        @change=\"handleConfirm\"\n      />\n      <slot name=\"footer\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, provide, ref, watch } from 'vue'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { useFormDisabled, useFormItem } from '@pit-element-plus/components/form'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport AlphaSlider from './components/alpha-slider.vue'\nimport HueSlider from './components/hue-slider.vue'\nimport Predefine from './components/predefine.vue'\nimport SvPanel from './components/sv-panel.vue'\nimport {\n  ROOT_COMMON_COLOR_INJECTION_KEY,\n  colorPickerPanelContextKey,\n  colorPickerPanelEmits,\n} from './color-picker-panel'\nimport { useCommonColor } from './composables/use-common-color'\n\nimport type { ColorPickerPanelProps } from './color-picker-panel'\nimport type { InputInstance } from '@pit-element-plus/components/input'\n\ndefineOptions({\n  name: 'ElColorPickerPanel',\n})\nconst props = withDefaults(defineProps<ColorPickerPanelProps>(), {\n  modelValue: undefined,\n  border: true,\n  validateEvent: true,\n  showAlpha: false,\n})\nconst emit = defineEmits(colorPickerPanelEmits)\n\nconst ns = useNamespace('color-picker-panel')\nconst { formItem } = useFormItem()\nconst disabled = useFormDisabled()\nconst hueRef = ref<InstanceType<typeof HueSlider>>()\nconst svRef = ref<InstanceType<typeof SvPanel>>()\nconst alphaRef = ref<InstanceType<typeof AlphaSlider>>()\nconst inputRef = ref<InputInstance>()\nconst customInput = ref('')\n\nconst { color } = inject(\n  ROOT_COMMON_COLOR_INJECTION_KEY,\n  () => useCommonColor(props, emit),\n  true\n)\n\nfunction handleConfirm() {\n  color.fromString(customInput.value)\n  if (color.value !== customInput.value) {\n    customInput.value = color.value\n  }\n}\n\nfunction handleFocusout() {\n  if (props.validateEvent) {\n    formItem?.validate?.('blur').catch((err) => debugWarn(err))\n  }\n}\n\nfunction update() {\n  hueRef.value?.update()\n  svRef.value?.update()\n  alphaRef.value?.update()\n}\n\nonMounted(() => {\n  if (props.modelValue) {\n    customInput.value = color.value\n  }\n  nextTick(update)\n})\n\nwatch(\n  () => props.modelValue,\n  (newVal) => {\n    if (newVal !== color.value) {\n      newVal ? color.fromString(newVal) : color.clear()\n    }\n  }\n)\n\nwatch(\n  () => color.value,\n  (val) => {\n    emit(UPDATE_MODEL_EVENT, val)\n    customInput.value = val\n    if (props.validateEvent) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n\nprovide(colorPickerPanelContextKey, {\n  currentColor: computed(() => color.value),\n})\n\ndefineExpose({\n  /**\n   * @description current color object\n   */\n  color,\n  /**\n   * @description custom input ref\n   */\n  inputRef,\n  /**\n   * @description update sub components\n   */\n  update,\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b(), ns.is('disabled', disabled), ns.is('border', border)]\"\n    @focusout=\"handleFocusout\"\n  >\n    <div :class=\"ns.e('wrapper')\">\n      <hue-slider\n        ref=\"hueRef\"\n        class=\"hue-slider\"\n        :color=\"color\"\n        vertical\n        :disabled=\"disabled\"\n      />\n      <sv-panel ref=\"svRef\" :color=\"color\" :disabled=\"disabled\" />\n    </div>\n    <alpha-slider\n      v-if=\"showAlpha\"\n      ref=\"alphaRef\"\n      :color=\"color\"\n      :disabled=\"disabled\"\n    />\n    <predefine\n      v-if=\"predefine\"\n      ref=\"predefine\"\n      :enable-alpha=\"showAlpha\"\n      :color=\"color\"\n      :colors=\"predefine\"\n      :disabled=\"disabled\"\n    />\n    <div :class=\"ns.e('footer')\">\n      <el-input\n        ref=\"inputRef\"\n        v-model=\"customInput\"\n        :validate-event=\"false\"\n        size=\"small\"\n        :disabled=\"disabled\"\n        @change=\"handleConfirm\"\n      />\n      <slot name=\"footer\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, provide, ref, watch } from 'vue'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { useFormDisabled, useFormItem } from '@pit-element-plus/components/form'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport AlphaSlider from './components/alpha-slider.vue'\nimport HueSlider from './components/hue-slider.vue'\nimport Predefine from './components/predefine.vue'\nimport SvPanel from './components/sv-panel.vue'\nimport {\n  ROOT_COMMON_COLOR_INJECTION_KEY,\n  colorPickerPanelContextKey,\n  colorPickerPanelEmits,\n} from './color-picker-panel'\nimport { useCommonColor } from './composables/use-common-color'\n\nimport type { ColorPickerPanelProps } from './color-picker-panel'\nimport type { InputInstance } from '@pit-element-plus/components/input'\n\ndefineOptions({\n  name: 'ElColorPickerPanel',\n})\nconst props = withDefaults(defineProps<ColorPickerPanelProps>(), {\n  modelValue: undefined,\n  border: true,\n  validateEvent: true,\n  showAlpha: false,\n})\nconst emit = defineEmits(colorPickerPanelEmits)\n\nconst ns = useNamespace('color-picker-panel')\nconst { formItem } = useFormItem()\nconst disabled = useFormDisabled()\nconst hueRef = ref<InstanceType<typeof HueSlider>>()\nconst svRef = ref<InstanceType<typeof SvPanel>>()\nconst alphaRef = ref<InstanceType<typeof AlphaSlider>>()\nconst inputRef = ref<InputInstance>()\nconst customInput = ref('')\n\nconst { color } = inject(\n  ROOT_COMMON_COLOR_INJECTION_KEY,\n  () => useCommonColor(props, emit),\n  true\n)\n\nfunction handleConfirm() {\n  color.fromString(customInput.value)\n  if (color.value !== customInput.value) {\n    customInput.value = color.value\n  }\n}\n\nfunction handleFocusout() {\n  if (props.validateEvent) {\n    formItem?.validate?.('blur').catch((err) => debugWarn(err))\n  }\n}\n\nfunction update() {\n  hueRef.value?.update()\n  svRef.value?.update()\n  alphaRef.value?.update()\n}\n\nonMounted(() => {\n  if (props.modelValue) {\n    customInput.value = color.value\n  }\n  nextTick(update)\n})\n\nwatch(\n  () => props.modelValue,\n  (newVal) => {\n    if (newVal !== color.value) {\n      newVal ? color.fromString(newVal) : color.clear()\n    }\n  }\n)\n\nwatch(\n  () => color.value,\n  (val) => {\n    emit(UPDATE_MODEL_EVENT, val)\n    customInput.value = val\n    if (props.validateEvent) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n\nprovide(colorPickerPanelContextKey, {\n  currentColor: computed(() => color.value),\n})\n\ndefineExpose({\n  /**\n   * @description current color object\n   */\n  color,\n  /**\n   * @description custom input ref\n   */\n  inputRef,\n  /**\n   * @description update sub components\n   */\n  update,\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b(), ns.is('disabled', disabled), ns.is('border', border)]\"\n    @focusout=\"handleFocusout\"\n  >\n    <div :class=\"ns.e('wrapper')\">\n      <hue-slider\n        ref=\"hueRef\"\n        class=\"hue-slider\"\n        :color=\"color\"\n        vertical\n        :disabled=\"disabled\"\n      />\n      <sv-panel ref=\"svRef\" :color=\"color\" :disabled=\"disabled\" />\n    </div>\n    <alpha-slider\n      v-if=\"showAlpha\"\n      ref=\"alphaRef\"\n      :color=\"color\"\n      :disabled=\"disabled\"\n    />\n    <predefine\n      v-if=\"predefine\"\n      ref=\"predefine\"\n      :enable-alpha=\"showAlpha\"\n      :color=\"color\"\n      :colors=\"predefine\"\n      :disabled=\"disabled\"\n    />\n    <div :class=\"ns.e('footer')\">\n      <el-input\n        ref=\"inputRef\"\n        v-model=\"customInput\"\n        :validate-event=\"false\"\n        size=\"small\"\n        :disabled=\"disabled\"\n        @change=\"handleConfirm\"\n      />\n      <slot name=\"footer\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, provide, ref, watch } from 'vue'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { useFormDisabled, useFormItem } from '@pit-element-plus/components/form'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport AlphaSlider from './components/alpha-slider.vue'\nimport HueSlider from './components/hue-slider.vue'\nimport Predefine from './components/predefine.vue'\nimport SvPanel from './components/sv-panel.vue'\nimport {\n  ROOT_COMMON_COLOR_INJECTION_KEY,\n  colorPickerPanelContextKey,\n  colorPickerPanelEmits,\n} from './color-picker-panel'\nimport { useCommonColor } from './composables/use-common-color'\n\nimport type { ColorPickerPanelProps } from './color-picker-panel'\nimport type { InputInstance } from '@pit-element-plus/components/input'\n\ndefineOptions({\n  name: 'ElColorPickerPanel',\n})\nconst props = withDefaults(defineProps<ColorPickerPanelProps>(), {\n  modelValue: undefined,\n  border: true,\n  validateEvent: true,\n  showAlpha: false,\n})\nconst emit = defineEmits(colorPickerPanelEmits)\n\nconst ns = useNamespace('color-picker-panel')\nconst { formItem } = useFormItem()\nconst disabled = useFormDisabled()\nconst hueRef = ref<InstanceType<typeof HueSlider>>()\nconst svRef = ref<InstanceType<typeof SvPanel>>()\nconst alphaRef = ref<InstanceType<typeof AlphaSlider>>()\nconst inputRef = ref<InputInstance>()\nconst customInput = ref('')\n\nconst { color } = inject(\n  ROOT_COMMON_COLOR_INJECTION_KEY,\n  () => useCommonColor(props, emit),\n  true\n)\n\nfunction handleConfirm() {\n  color.fromString(customInput.value)\n  if (color.value !== customInput.value) {\n    customInput.value = color.value\n  }\n}\n\nfunction handleFocusout() {\n  if (props.validateEvent) {\n    formItem?.validate?.('blur').catch((err) => debugWarn(err))\n  }\n}\n\nfunction update() {\n  hueRef.value?.update()\n  svRef.value?.update()\n  alphaRef.value?.update()\n}\n\nonMounted(() => {\n  if (props.modelValue) {\n    customInput.value = color.value\n  }\n  nextTick(update)\n})\n\nwatch(\n  () => props.modelValue,\n  (newVal) => {\n    if (newVal !== color.value) {\n      newVal ? color.fromString(newVal) : color.clear()\n    }\n  }\n)\n\nwatch(\n  () => color.value,\n  (val) => {\n    emit(UPDATE_MODEL_EVENT, val)\n    customInput.value = val\n    if (props.validateEvent) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n\nprovide(colorPickerPanelContextKey, {\n  currentColor: computed(() => color.value),\n})\n\ndefineExpose({\n  /**\n   * @description current color object\n   */\n  color,\n  /**\n   * @description custom input ref\n   */\n  inputRef,\n  /**\n   * @description update sub components\n   */\n  update,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport ColorPickerPanel from './src/color-picker-panel.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElColorPickerPanel: SFCWithInstall<typeof ColorPickerPanel> =\n  withInstall(ColorPickerPanel)\nexport default ElColorPickerPanel\n\nexport * from './src/color-picker-panel'\n","import { isNil } from 'lodash-unified'\nimport { buildProps, definePropType, isString } from '@pit-element-plus/utils'\nimport {\n  useAriaProps,\n  useEmptyValuesProps,\n  useSizeProp,\n} from '@pit-element-plus/hooks'\nimport { useTooltipContentProps } from '@pit-element-plus/components/tooltip'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ColorFormats } from '@ctrl/tinycolor'\nimport type ColorPicker from './color-picker.vue'\nimport type { AriaProps, UseEmptyValuesProps } from '@pit-element-plus/hooks'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { ElTooltipContentProps } from '@pit-element-plus/components/tooltip'\n\nexport interface ColorPickerProps\n  extends UseEmptyValuesProps, Pick<AriaProps, 'ariaLabel'> {\n  /**\n   * @description when color-picker inactive and persistent is false, the color panel will be destroyed\n   */\n  persistent?: boolean\n  /**\n   * @description binding value\n   */\n  modelValue?: string | null\n  /**\n   * @description ColorPicker id\n   */\n  id?: string\n  /**\n   * @description whether to display the alpha slider\n   */\n  showAlpha?: boolean\n  /**\n   * @description color format of v-model\n   */\n  colorFormat?: ColorFormats\n  /**\n   * @description whether to disable the ColorPicker\n   */\n  disabled?: boolean\n  /**\n   * @description whether to show clear button\n   */\n  clearable?: boolean\n  /**\n   * @description size of ColorPicker\n   */\n  size?: ComponentSize\n  /**\n   * @description custom class name for ColorPicker's dropdown\n   */\n  popperClass?: ElTooltipContentProps['popperClass']\n  /**\n   * @description custom style for ColorPicker's dropdown\n   */\n  popperStyle?: ElTooltipContentProps['popperStyle']\n  /**\n   * @description ColorPicker tabindex\n   */\n  tabindex?: string | number\n  /**\n   * @description whether color-picker popper is teleported to the body\n   */\n  teleported?: ElTooltipContentProps['teleported']\n  /**\n   * @description which color-picker panel appends to\n   */\n  appendTo?: ElTooltipContentProps['appendTo']\n  /**\n   * @description predefined color options\n   */\n  predefine?: string[]\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerProps` instead.\n */\nexport const colorPickerProps = buildProps({\n  /**\n   * @description when color-picker inactive and persistent is false, the color panel will be destroyed\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<string | null>(String),\n    default: undefined,\n  },\n  /**\n   * @description ColorPicker id\n   */\n  id: String,\n  /**\n   * @description whether to display the alpha slider\n   */\n  showAlpha: Boolean,\n  /**\n   * @description color format of v-model\n   */\n  colorFormat: {\n    type: definePropType<ColorFormats>(String),\n  },\n  /**\n   * @description whether to disable the ColorPicker\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether to show clear button\n   */\n  clearable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description size of ColorPicker\n   */\n  size: useSizeProp,\n  /**\n   * @description custom class name for ColorPicker's dropdown\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  /**\n   * @description custom style for ColorPicker's dropdown\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description ColorPicker tabindex\n   */\n  tabindex: {\n    type: [String, Number],\n    default: 0,\n  },\n  /**\n   * @description whether color-picker popper is teleported to the body\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description which color-picker panel appends to\n   */\n  appendTo: useTooltipContentProps.appendTo,\n  /**\n   * @description predefined color options\n   */\n  predefine: {\n    type: definePropType<string[]>(Array),\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  ...useEmptyValuesProps,\n  ...useAriaProps(['ariaLabel']),\n} as const)\nexport const colorPickerEmits = {\n  [UPDATE_MODEL_EVENT]: (val: string | null) => isString(val) || isNil(val),\n  [CHANGE_EVENT]: (val: string | null) => isString(val) || isNil(val),\n  activeChange: (val: string | null) => isString(val) || isNil(val),\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerProps` instead.\n */\nexport type ColorPickerPropsPublic = ExtractPublicPropTypes<\n  typeof colorPickerProps\n>\nexport type ColorPickerEmits = typeof colorPickerEmits\nexport type ColorPickerInstance = InstanceType<typeof ColorPicker> & unknown\n\n/**\n * @description default values for ColorPickerProps, used in components that extend ColorPickerProps\n */\nexport const colorPickerPropsDefaults = {\n  persistent: true,\n  modelValue: undefined,\n  disabled: undefined,\n  clearable: true,\n  popperStyle: undefined,\n  tabindex: 0,\n  teleported: true,\n  validateEvent: true,\n  valueOnClear: undefined,\n} as const\n","<template>\n  <el-tooltip\n    ref=\"popper\"\n    :visible=\"showPicker\"\n    :show-arrow=\"false\"\n    :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n    :offset=\"0\"\n    :gpu-acceleration=\"false\"\n    :popper-class=\"[ns.be('picker', 'panel'), popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :stop-popper-mouse-event=\"false\"\n    pure\n    loop\n    role=\"dialog\"\n    effect=\"light\"\n    trigger=\"click\"\n    :teleported=\"teleported\"\n    :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n    :persistent=\"persistent\"\n    :append-to=\"appendTo\"\n    @show=\"handleShowTooltip\"\n    @hide=\"setShowPicker(false)\"\n  >\n    <template #content>\n      <el-color-picker-panel\n        ref=\"pickerPanelRef\"\n        v-bind=\"panelProps\"\n        v-click-outside:[triggerRef]=\"handleClickOutside\"\n        :border=\"false\"\n        :validate-event=\"false\"\n        @keydown.esc=\"handleEsc\"\n      >\n        <template #footer>\n          <div>\n            <el-button\n              v-if=\"clearable\"\n              :class=\"ns.be('footer', 'link-btn')\"\n              text\n              size=\"small\"\n              @click=\"clear\"\n            >\n              {{ t('el.colorpicker.clear') }}\n            </el-button>\n            <el-button\n              plain\n              size=\"small\"\n              :class=\"ns.be('footer', 'btn')\"\n              @click=\"confirmValue\"\n            >\n              {{ t('el.colorpicker.confirm') }}\n            </el-button>\n          </div>\n        </template>\n      </el-color-picker-panel>\n    </template>\n    <template #default>\n      <div\n        :id=\"buttonId\"\n        ref=\"triggerRef\"\n        v-bind=\"$attrs\"\n        :class=\"btnKls\"\n        role=\"button\"\n        :aria-label=\"buttonAriaLabel\"\n        :aria-labelledby=\"buttonAriaLabelledby\"\n        :aria-description=\"\n          t('el.colorpicker.description', { color: modelValue || '' })\n        \"\n        :aria-disabled=\"colorDisabled\"\n        :tabindex=\"colorDisabled ? undefined : tabindex\"\n        @keydown=\"handleKeyDown\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n      >\n        <div :class=\"ns.be('picker', 'trigger')\" @click=\"handleTrigger\">\n          <span :class=\"[ns.be('picker', 'color'), ns.is('alpha', showAlpha)]\">\n            <span\n              :class=\"ns.be('picker', 'color-inner')\"\n              :style=\"{\n                backgroundColor: displayedColor,\n              }\"\n            >\n              <el-icon\n                v-show=\"modelValue || showPanelColor\"\n                :class=\"[ns.be('picker', 'icon'), ns.is('icon-arrow-down')]\"\n              >\n                <arrow-down />\n              </el-icon>\n              <el-icon\n                v-show=\"!modelValue && !showPanelColor\"\n                :class=\"[ns.be('picker', 'empty'), ns.is('icon-close')]\"\n              >\n                <close />\n              </el-icon>\n            </span>\n          </span>\n        </div>\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, provide, ref, watch } from 'vue'\nimport { debounce, pick } from 'lodash-unified'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { reactiveComputed } from '@vueuse/core'\nimport { ClickOutside as vClickOutside } from '@pit-element-plus/directives'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport {\n  useEmptyValues,\n  useFocusController,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { debugWarn, getEventCode } from '@pit-element-plus/utils'\nimport { ArrowDown, Close } from 'pit-element-icons'\nimport { colorPickerEmits, colorPickerPropsDefaults } from './color-picker'\nimport {\n  ElColorPickerPanel,\n  ROOT_COMMON_COLOR_INJECTION_KEY,\n  colorPickerPanelProps,\n} from '@pit-element-plus/components/color-picker-panel'\nimport Color from '@pit-element-plus/components/color-picker-panel/src/utils/color'\nimport { useCommonColor } from '@pit-element-plus/components/color-picker-panel/src/composables/use-common-color'\n\nimport type { ColorPickerPanelInstance } from '@pit-element-plus/components/color-picker-panel'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { ColorPickerProps } from './color-picker'\n\ndefineOptions({\n  name: 'ElColorPicker',\n})\nconst props = withDefaults(\n  defineProps<ColorPickerProps>(),\n  colorPickerPropsDefaults\n)\n\nconst emit = defineEmits(colorPickerEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('color')\nconst { formItem } = useFormItem()\nconst colorSize = useFormSize()\nconst colorDisabled = useFormDisabled()\nconst { valueOnClear, isEmptyValue } = useEmptyValues(props, null)\nconst commonColor = useCommonColor(props, emit)\nconst { inputId: buttonId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst popper = ref<TooltipInstance>()\nconst triggerRef = ref()\nconst pickerPanelRef = ref<ColorPickerPanelInstance>()\nconst showPicker = ref(false)\nconst showPanelColor = ref(false)\n\n// active-change is used to prevent modelValue changes from triggering.\nlet shouldActiveChange = true\n\nconst { isFocused, handleFocus, handleBlur } = useFocusController(triggerRef, {\n  disabled: colorDisabled,\n  beforeBlur(event) {\n    return popper.value?.isFocusInsideContent(event)\n  },\n  afterBlur() {\n    setShowPicker(false)\n    resetColor()\n    if (props.validateEvent) {\n      formItem?.validate?.('blur').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst color = reactiveComputed(\n  () => pickerPanelRef.value?.color ?? commonColor.color\n) as Color\n\nconst panelProps = computed(() =>\n  pick(props, Object.keys(colorPickerPanelProps))\n)\n\nconst displayedColor = computed(() => {\n  if (!props.modelValue && !showPanelColor.value) {\n    return 'transparent'\n  }\n  return displayedRgb(color, props.showAlpha)\n})\n\nconst currentColor = computed(() => {\n  return !props.modelValue && !showPanelColor.value ? '' : color.value\n})\n\nconst buttonAriaLabel = computed<string | undefined>(() => {\n  return !isLabeledByFormItem.value\n    ? props.ariaLabel || t('el.colorpicker.defaultLabel')\n    : undefined\n})\n\nconst buttonAriaLabelledby = computed<string | undefined>(() => {\n  return isLabeledByFormItem.value ? formItem?.labelId : undefined\n})\n\nconst btnKls = computed(() => {\n  return [\n    ns.b('picker'),\n    ns.is('disabled', colorDisabled.value),\n    ns.bm('picker', colorSize.value),\n    ns.is('focused', isFocused.value),\n  ]\n})\n\nfunction displayedRgb(color: Color, showAlpha: boolean) {\n  const { r, g, b, a } = color.toRgb()\n  return showAlpha ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`\n}\n\nfunction setShowPicker(value: boolean) {\n  showPicker.value = value\n}\n\nconst debounceSetShowPicker = debounce(setShowPicker, 100, { leading: true })\nfunction show() {\n  if (colorDisabled.value) return\n  setShowPicker(true)\n}\n\nfunction hide() {\n  debounceSetShowPicker(false)\n  resetColor()\n}\n\nfunction resetColor() {\n  nextTick(() => {\n    if (props.modelValue) {\n      color.fromString(props.modelValue)\n    } else {\n      color.value = ''\n      nextTick(() => {\n        showPanelColor.value = false\n      })\n    }\n  })\n}\n\nfunction handleTrigger() {\n  if (colorDisabled.value) return\n  if (showPicker.value) {\n    resetColor()\n  }\n  debounceSetShowPicker(!showPicker.value)\n}\n\nfunction confirmValue() {\n  const value = isEmptyValue(color.value) ? valueOnClear.value : color.value\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(CHANGE_EVENT, value)\n  if (props.validateEvent) {\n    formItem?.validate('change').catch((err) => debugWarn(err))\n  }\n  debounceSetShowPicker(false)\n  // check if modelValue change, if not change, then reset color.\n  nextTick(() => {\n    const newColor = new Color({\n      enableAlpha: props.showAlpha,\n      format: props.colorFormat || '',\n      value: props.modelValue,\n    })\n    if (!color.compare(newColor)) {\n      resetColor()\n    }\n  })\n}\n\nfunction clear() {\n  debounceSetShowPicker(false)\n  emit(UPDATE_MODEL_EVENT, valueOnClear.value)\n  emit(CHANGE_EVENT, valueOnClear.value)\n  if (props.modelValue !== valueOnClear.value && props.validateEvent) {\n    formItem?.validate('change').catch((err) => debugWarn(err))\n  }\n  resetColor()\n  emit('clear')\n}\n\nfunction handleShowTooltip() {\n  pickerPanelRef?.value?.inputRef?.focus()\n}\n\nfunction handleClickOutside() {\n  if (!showPicker.value) return\n  hide()\n  isFocused.value && focus()\n}\n\nfunction handleEsc(event: KeyboardEvent) {\n  event.preventDefault()\n  event.stopPropagation()\n  setShowPicker(false)\n  resetColor()\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n\n  switch (code) {\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n    case EVENT_CODE.space:\n      event.preventDefault()\n      event.stopPropagation()\n      show()\n      break\n    case EVENT_CODE.esc:\n      handleEsc(event)\n      break\n  }\n}\n\nfunction focus() {\n  triggerRef.value.focus()\n}\n\nfunction blur() {\n  triggerRef.value.blur()\n}\n\nwatch(\n  () => currentColor.value,\n  (val) => {\n    shouldActiveChange && emit('activeChange', val)\n    shouldActiveChange = true\n  }\n)\n\nwatch(\n  () => color.value,\n  () => {\n    if (!props.modelValue && !showPanelColor.value) {\n      showPanelColor.value = true\n    }\n  }\n)\n\nwatch(\n  () => props.modelValue,\n  (newVal) => {\n    if (!newVal) {\n      showPanelColor.value = false\n    } else if (newVal && newVal !== color.value) {\n      shouldActiveChange = false\n      color.fromString(newVal)\n    }\n  }\n)\n\nwatch(\n  () => showPicker.value,\n  () => {\n    pickerPanelRef.value && nextTick(pickerPanelRef.value.update)\n  }\n)\n\nprovide(ROOT_COMMON_COLOR_INJECTION_KEY, commonColor)\n\ndefineExpose({\n  /**\n   * @description current color object\n   */\n  color,\n  /**\n   * @description manually show ColorPicker\n   */\n  show,\n  /**\n   * @description manually hide ColorPicker\n   */\n  hide,\n  /**\n   * @description focus the input element\n   */\n  focus,\n  /**\n   * @description blur the input element\n   */\n  blur,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"popper\"\n    :visible=\"showPicker\"\n    :show-arrow=\"false\"\n    :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n    :offset=\"0\"\n    :gpu-acceleration=\"false\"\n    :popper-class=\"[ns.be('picker', 'panel'), popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :stop-popper-mouse-event=\"false\"\n    pure\n    loop\n    role=\"dialog\"\n    effect=\"light\"\n    trigger=\"click\"\n    :teleported=\"teleported\"\n    :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n    :persistent=\"persistent\"\n    :append-to=\"appendTo\"\n    @show=\"handleShowTooltip\"\n    @hide=\"setShowPicker(false)\"\n  >\n    <template #content>\n      <el-color-picker-panel\n        ref=\"pickerPanelRef\"\n        v-bind=\"panelProps\"\n        v-click-outside:[triggerRef]=\"handleClickOutside\"\n        :border=\"false\"\n        :validate-event=\"false\"\n        @keydown.esc=\"handleEsc\"\n      >\n        <template #footer>\n          <div>\n            <el-button\n              v-if=\"clearable\"\n              :class=\"ns.be('footer', 'link-btn')\"\n              text\n              size=\"small\"\n              @click=\"clear\"\n            >\n              {{ t('el.colorpicker.clear') }}\n            </el-button>\n            <el-button\n              plain\n              size=\"small\"\n              :class=\"ns.be('footer', 'btn')\"\n              @click=\"confirmValue\"\n            >\n              {{ t('el.colorpicker.confirm') }}\n            </el-button>\n          </div>\n        </template>\n      </el-color-picker-panel>\n    </template>\n    <template #default>\n      <div\n        :id=\"buttonId\"\n        ref=\"triggerRef\"\n        v-bind=\"$attrs\"\n        :class=\"btnKls\"\n        role=\"button\"\n        :aria-label=\"buttonAriaLabel\"\n        :aria-labelledby=\"buttonAriaLabelledby\"\n        :aria-description=\"\n          t('el.colorpicker.description', { color: modelValue || '' })\n        \"\n        :aria-disabled=\"colorDisabled\"\n        :tabindex=\"colorDisabled ? undefined : tabindex\"\n        @keydown=\"handleKeyDown\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n      >\n        <div :class=\"ns.be('picker', 'trigger')\" @click=\"handleTrigger\">\n          <span :class=\"[ns.be('picker', 'color'), ns.is('alpha', showAlpha)]\">\n            <span\n              :class=\"ns.be('picker', 'color-inner')\"\n              :style=\"{\n                backgroundColor: displayedColor,\n              }\"\n            >\n              <el-icon\n                v-show=\"modelValue || showPanelColor\"\n                :class=\"[ns.be('picker', 'icon'), ns.is('icon-arrow-down')]\"\n              >\n                <arrow-down />\n              </el-icon>\n              <el-icon\n                v-show=\"!modelValue && !showPanelColor\"\n                :class=\"[ns.be('picker', 'empty'), ns.is('icon-close')]\"\n              >\n                <close />\n              </el-icon>\n            </span>\n          </span>\n        </div>\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, provide, ref, watch } from 'vue'\nimport { debounce, pick } from 'lodash-unified'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { reactiveComputed } from '@vueuse/core'\nimport { ClickOutside as vClickOutside } from '@pit-element-plus/directives'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport {\n  useEmptyValues,\n  useFocusController,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { debugWarn, getEventCode } from '@pit-element-plus/utils'\nimport { ArrowDown, Close } from 'pit-element-icons'\nimport { colorPickerEmits, colorPickerPropsDefaults } from './color-picker'\nimport {\n  ElColorPickerPanel,\n  ROOT_COMMON_COLOR_INJECTION_KEY,\n  colorPickerPanelProps,\n} from '@pit-element-plus/components/color-picker-panel'\nimport Color from '@pit-element-plus/components/color-picker-panel/src/utils/color'\nimport { useCommonColor } from '@pit-element-plus/components/color-picker-panel/src/composables/use-common-color'\n\nimport type { ColorPickerPanelInstance } from '@pit-element-plus/components/color-picker-panel'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { ColorPickerProps } from './color-picker'\n\ndefineOptions({\n  name: 'ElColorPicker',\n})\nconst props = withDefaults(\n  defineProps<ColorPickerProps>(),\n  colorPickerPropsDefaults\n)\n\nconst emit = defineEmits(colorPickerEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('color')\nconst { formItem } = useFormItem()\nconst colorSize = useFormSize()\nconst colorDisabled = useFormDisabled()\nconst { valueOnClear, isEmptyValue } = useEmptyValues(props, null)\nconst commonColor = useCommonColor(props, emit)\nconst { inputId: buttonId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst popper = ref<TooltipInstance>()\nconst triggerRef = ref()\nconst pickerPanelRef = ref<ColorPickerPanelInstance>()\nconst showPicker = ref(false)\nconst showPanelColor = ref(false)\n\n// active-change is used to prevent modelValue changes from triggering.\nlet shouldActiveChange = true\n\nconst { isFocused, handleFocus, handleBlur } = useFocusController(triggerRef, {\n  disabled: colorDisabled,\n  beforeBlur(event) {\n    return popper.value?.isFocusInsideContent(event)\n  },\n  afterBlur() {\n    setShowPicker(false)\n    resetColor()\n    if (props.validateEvent) {\n      formItem?.validate?.('blur').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst color = reactiveComputed(\n  () => pickerPanelRef.value?.color ?? commonColor.color\n) as Color\n\nconst panelProps = computed(() =>\n  pick(props, Object.keys(colorPickerPanelProps))\n)\n\nconst displayedColor = computed(() => {\n  if (!props.modelValue && !showPanelColor.value) {\n    return 'transparent'\n  }\n  return displayedRgb(color, props.showAlpha)\n})\n\nconst currentColor = computed(() => {\n  return !props.modelValue && !showPanelColor.value ? '' : color.value\n})\n\nconst buttonAriaLabel = computed<string | undefined>(() => {\n  return !isLabeledByFormItem.value\n    ? props.ariaLabel || t('el.colorpicker.defaultLabel')\n    : undefined\n})\n\nconst buttonAriaLabelledby = computed<string | undefined>(() => {\n  return isLabeledByFormItem.value ? formItem?.labelId : undefined\n})\n\nconst btnKls = computed(() => {\n  return [\n    ns.b('picker'),\n    ns.is('disabled', colorDisabled.value),\n    ns.bm('picker', colorSize.value),\n    ns.is('focused', isFocused.value),\n  ]\n})\n\nfunction displayedRgb(color: Color, showAlpha: boolean) {\n  const { r, g, b, a } = color.toRgb()\n  return showAlpha ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`\n}\n\nfunction setShowPicker(value: boolean) {\n  showPicker.value = value\n}\n\nconst debounceSetShowPicker = debounce(setShowPicker, 100, { leading: true })\nfunction show() {\n  if (colorDisabled.value) return\n  setShowPicker(true)\n}\n\nfunction hide() {\n  debounceSetShowPicker(false)\n  resetColor()\n}\n\nfunction resetColor() {\n  nextTick(() => {\n    if (props.modelValue) {\n      color.fromString(props.modelValue)\n    } else {\n      color.value = ''\n      nextTick(() => {\n        showPanelColor.value = false\n      })\n    }\n  })\n}\n\nfunction handleTrigger() {\n  if (colorDisabled.value) return\n  if (showPicker.value) {\n    resetColor()\n  }\n  debounceSetShowPicker(!showPicker.value)\n}\n\nfunction confirmValue() {\n  const value = isEmptyValue(color.value) ? valueOnClear.value : color.value\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(CHANGE_EVENT, value)\n  if (props.validateEvent) {\n    formItem?.validate('change').catch((err) => debugWarn(err))\n  }\n  debounceSetShowPicker(false)\n  // check if modelValue change, if not change, then reset color.\n  nextTick(() => {\n    const newColor = new Color({\n      enableAlpha: props.showAlpha,\n      format: props.colorFormat || '',\n      value: props.modelValue,\n    })\n    if (!color.compare(newColor)) {\n      resetColor()\n    }\n  })\n}\n\nfunction clear() {\n  debounceSetShowPicker(false)\n  emit(UPDATE_MODEL_EVENT, valueOnClear.value)\n  emit(CHANGE_EVENT, valueOnClear.value)\n  if (props.modelValue !== valueOnClear.value && props.validateEvent) {\n    formItem?.validate('change').catch((err) => debugWarn(err))\n  }\n  resetColor()\n  emit('clear')\n}\n\nfunction handleShowTooltip() {\n  pickerPanelRef?.value?.inputRef?.focus()\n}\n\nfunction handleClickOutside() {\n  if (!showPicker.value) return\n  hide()\n  isFocused.value && focus()\n}\n\nfunction handleEsc(event: KeyboardEvent) {\n  event.preventDefault()\n  event.stopPropagation()\n  setShowPicker(false)\n  resetColor()\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n\n  switch (code) {\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n    case EVENT_CODE.space:\n      event.preventDefault()\n      event.stopPropagation()\n      show()\n      break\n    case EVENT_CODE.esc:\n      handleEsc(event)\n      break\n  }\n}\n\nfunction focus() {\n  triggerRef.value.focus()\n}\n\nfunction blur() {\n  triggerRef.value.blur()\n}\n\nwatch(\n  () => currentColor.value,\n  (val) => {\n    shouldActiveChange && emit('activeChange', val)\n    shouldActiveChange = true\n  }\n)\n\nwatch(\n  () => color.value,\n  () => {\n    if (!props.modelValue && !showPanelColor.value) {\n      showPanelColor.value = true\n    }\n  }\n)\n\nwatch(\n  () => props.modelValue,\n  (newVal) => {\n    if (!newVal) {\n      showPanelColor.value = false\n    } else if (newVal && newVal !== color.value) {\n      shouldActiveChange = false\n      color.fromString(newVal)\n    }\n  }\n)\n\nwatch(\n  () => showPicker.value,\n  () => {\n    pickerPanelRef.value && nextTick(pickerPanelRef.value.update)\n  }\n)\n\nprovide(ROOT_COMMON_COLOR_INJECTION_KEY, commonColor)\n\ndefineExpose({\n  /**\n   * @description current color object\n   */\n  color,\n  /**\n   * @description manually show ColorPicker\n   */\n  show,\n  /**\n   * @description manually hide ColorPicker\n   */\n  hide,\n  /**\n   * @description focus the input element\n   */\n  focus,\n  /**\n   * @description blur the input element\n   */\n  blur,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"popper\"\n    :visible=\"showPicker\"\n    :show-arrow=\"false\"\n    :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n    :offset=\"0\"\n    :gpu-acceleration=\"false\"\n    :popper-class=\"[ns.be('picker', 'panel'), popperClass!]\"\n    :popper-style=\"popperStyle\"\n    :stop-popper-mouse-event=\"false\"\n    pure\n    loop\n    role=\"dialog\"\n    effect=\"light\"\n    trigger=\"click\"\n    :teleported=\"teleported\"\n    :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n    :persistent=\"persistent\"\n    :append-to=\"appendTo\"\n    @show=\"handleShowTooltip\"\n    @hide=\"setShowPicker(false)\"\n  >\n    <template #content>\n      <el-color-picker-panel\n        ref=\"pickerPanelRef\"\n        v-bind=\"panelProps\"\n        v-click-outside:[triggerRef]=\"handleClickOutside\"\n        :border=\"false\"\n        :validate-event=\"false\"\n        @keydown.esc=\"handleEsc\"\n      >\n        <template #footer>\n          <div>\n            <el-button\n              v-if=\"clearable\"\n              :class=\"ns.be('footer', 'link-btn')\"\n              text\n              size=\"small\"\n              @click=\"clear\"\n            >\n              {{ t('el.colorpicker.clear') }}\n            </el-button>\n            <el-button\n              plain\n              size=\"small\"\n              :class=\"ns.be('footer', 'btn')\"\n              @click=\"confirmValue\"\n            >\n              {{ t('el.colorpicker.confirm') }}\n            </el-button>\n          </div>\n        </template>\n      </el-color-picker-panel>\n    </template>\n    <template #default>\n      <div\n        :id=\"buttonId\"\n        ref=\"triggerRef\"\n        v-bind=\"$attrs\"\n        :class=\"btnKls\"\n        role=\"button\"\n        :aria-label=\"buttonAriaLabel\"\n        :aria-labelledby=\"buttonAriaLabelledby\"\n        :aria-description=\"\n          t('el.colorpicker.description', { color: modelValue || '' })\n        \"\n        :aria-disabled=\"colorDisabled\"\n        :tabindex=\"colorDisabled ? undefined : tabindex\"\n        @keydown=\"handleKeyDown\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n      >\n        <div :class=\"ns.be('picker', 'trigger')\" @click=\"handleTrigger\">\n          <span :class=\"[ns.be('picker', 'color'), ns.is('alpha', showAlpha)]\">\n            <span\n              :class=\"ns.be('picker', 'color-inner')\"\n              :style=\"{\n                backgroundColor: displayedColor,\n              }\"\n            >\n              <el-icon\n                v-show=\"modelValue || showPanelColor\"\n                :class=\"[ns.be('picker', 'icon'), ns.is('icon-arrow-down')]\"\n              >\n                <arrow-down />\n              </el-icon>\n              <el-icon\n                v-show=\"!modelValue && !showPanelColor\"\n                :class=\"[ns.be('picker', 'empty'), ns.is('icon-close')]\"\n              >\n                <close />\n              </el-icon>\n            </span>\n          </span>\n        </div>\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, provide, ref, watch } from 'vue'\nimport { debounce, pick } from 'lodash-unified'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { reactiveComputed } from '@vueuse/core'\nimport { ClickOutside as vClickOutside } from '@pit-element-plus/directives'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport {\n  useEmptyValues,\n  useFocusController,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { debugWarn, getEventCode } from '@pit-element-plus/utils'\nimport { ArrowDown, Close } from 'pit-element-icons'\nimport { colorPickerEmits, colorPickerPropsDefaults } from './color-picker'\nimport {\n  ElColorPickerPanel,\n  ROOT_COMMON_COLOR_INJECTION_KEY,\n  colorPickerPanelProps,\n} from '@pit-element-plus/components/color-picker-panel'\nimport Color from '@pit-element-plus/components/color-picker-panel/src/utils/color'\nimport { useCommonColor } from '@pit-element-plus/components/color-picker-panel/src/composables/use-common-color'\n\nimport type { ColorPickerPanelInstance } from '@pit-element-plus/components/color-picker-panel'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { ColorPickerProps } from './color-picker'\n\ndefineOptions({\n  name: 'ElColorPicker',\n})\nconst props = withDefaults(\n  defineProps<ColorPickerProps>(),\n  colorPickerPropsDefaults\n)\n\nconst emit = defineEmits(colorPickerEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('color')\nconst { formItem } = useFormItem()\nconst colorSize = useFormSize()\nconst colorDisabled = useFormDisabled()\nconst { valueOnClear, isEmptyValue } = useEmptyValues(props, null)\nconst commonColor = useCommonColor(props, emit)\nconst { inputId: buttonId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst popper = ref<TooltipInstance>()\nconst triggerRef = ref()\nconst pickerPanelRef = ref<ColorPickerPanelInstance>()\nconst showPicker = ref(false)\nconst showPanelColor = ref(false)\n\n// active-change is used to prevent modelValue changes from triggering.\nlet shouldActiveChange = true\n\nconst { isFocused, handleFocus, handleBlur } = useFocusController(triggerRef, {\n  disabled: colorDisabled,\n  beforeBlur(event) {\n    return popper.value?.isFocusInsideContent(event)\n  },\n  afterBlur() {\n    setShowPicker(false)\n    resetColor()\n    if (props.validateEvent) {\n      formItem?.validate?.('blur').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst color = reactiveComputed(\n  () => pickerPanelRef.value?.color ?? commonColor.color\n) as Color\n\nconst panelProps = computed(() =>\n  pick(props, Object.keys(colorPickerPanelProps))\n)\n\nconst displayedColor = computed(() => {\n  if (!props.modelValue && !showPanelColor.value) {\n    return 'transparent'\n  }\n  return displayedRgb(color, props.showAlpha)\n})\n\nconst currentColor = computed(() => {\n  return !props.modelValue && !showPanelColor.value ? '' : color.value\n})\n\nconst buttonAriaLabel = computed<string | undefined>(() => {\n  return !isLabeledByFormItem.value\n    ? props.ariaLabel || t('el.colorpicker.defaultLabel')\n    : undefined\n})\n\nconst buttonAriaLabelledby = computed<string | undefined>(() => {\n  return isLabeledByFormItem.value ? formItem?.labelId : undefined\n})\n\nconst btnKls = computed(() => {\n  return [\n    ns.b('picker'),\n    ns.is('disabled', colorDisabled.value),\n    ns.bm('picker', colorSize.value),\n    ns.is('focused', isFocused.value),\n  ]\n})\n\nfunction displayedRgb(color: Color, showAlpha: boolean) {\n  const { r, g, b, a } = color.toRgb()\n  return showAlpha ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`\n}\n\nfunction setShowPicker(value: boolean) {\n  showPicker.value = value\n}\n\nconst debounceSetShowPicker = debounce(setShowPicker, 100, { leading: true })\nfunction show() {\n  if (colorDisabled.value) return\n  setShowPicker(true)\n}\n\nfunction hide() {\n  debounceSetShowPicker(false)\n  resetColor()\n}\n\nfunction resetColor() {\n  nextTick(() => {\n    if (props.modelValue) {\n      color.fromString(props.modelValue)\n    } else {\n      color.value = ''\n      nextTick(() => {\n        showPanelColor.value = false\n      })\n    }\n  })\n}\n\nfunction handleTrigger() {\n  if (colorDisabled.value) return\n  if (showPicker.value) {\n    resetColor()\n  }\n  debounceSetShowPicker(!showPicker.value)\n}\n\nfunction confirmValue() {\n  const value = isEmptyValue(color.value) ? valueOnClear.value : color.value\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(CHANGE_EVENT, value)\n  if (props.validateEvent) {\n    formItem?.validate('change').catch((err) => debugWarn(err))\n  }\n  debounceSetShowPicker(false)\n  // check if modelValue change, if not change, then reset color.\n  nextTick(() => {\n    const newColor = new Color({\n      enableAlpha: props.showAlpha,\n      format: props.colorFormat || '',\n      value: props.modelValue,\n    })\n    if (!color.compare(newColor)) {\n      resetColor()\n    }\n  })\n}\n\nfunction clear() {\n  debounceSetShowPicker(false)\n  emit(UPDATE_MODEL_EVENT, valueOnClear.value)\n  emit(CHANGE_EVENT, valueOnClear.value)\n  if (props.modelValue !== valueOnClear.value && props.validateEvent) {\n    formItem?.validate('change').catch((err) => debugWarn(err))\n  }\n  resetColor()\n  emit('clear')\n}\n\nfunction handleShowTooltip() {\n  pickerPanelRef?.value?.inputRef?.focus()\n}\n\nfunction handleClickOutside() {\n  if (!showPicker.value) return\n  hide()\n  isFocused.value && focus()\n}\n\nfunction handleEsc(event: KeyboardEvent) {\n  event.preventDefault()\n  event.stopPropagation()\n  setShowPicker(false)\n  resetColor()\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n\n  switch (code) {\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n    case EVENT_CODE.space:\n      event.preventDefault()\n      event.stopPropagation()\n      show()\n      break\n    case EVENT_CODE.esc:\n      handleEsc(event)\n      break\n  }\n}\n\nfunction focus() {\n  triggerRef.value.focus()\n}\n\nfunction blur() {\n  triggerRef.value.blur()\n}\n\nwatch(\n  () => currentColor.value,\n  (val) => {\n    shouldActiveChange && emit('activeChange', val)\n    shouldActiveChange = true\n  }\n)\n\nwatch(\n  () => color.value,\n  () => {\n    if (!props.modelValue && !showPanelColor.value) {\n      showPanelColor.value = true\n    }\n  }\n)\n\nwatch(\n  () => props.modelValue,\n  (newVal) => {\n    if (!newVal) {\n      showPanelColor.value = false\n    } else if (newVal && newVal !== color.value) {\n      shouldActiveChange = false\n      color.fromString(newVal)\n    }\n  }\n)\n\nwatch(\n  () => showPicker.value,\n  () => {\n    pickerPanelRef.value && nextTick(pickerPanelRef.value.update)\n  }\n)\n\nprovide(ROOT_COMMON_COLOR_INJECTION_KEY, commonColor)\n\ndefineExpose({\n  /**\n   * @description current color object\n   */\n  color,\n  /**\n   * @description manually show ColorPicker\n   */\n  show,\n  /**\n   * @description manually hide ColorPicker\n   */\n  hide,\n  /**\n   * @description focus the input element\n   */\n  focus,\n  /**\n   * @description blur the input element\n   */\n  blur,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport ColorPicker from './src/color-picker.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElColorPicker: SFCWithInstall<typeof ColorPicker> =\n  withInstall(ColorPicker)\nexport default ElColorPicker\n\nexport * from './src/color-picker'\n","<template>\n  <section :class=\"[ns.b(), ns.is('vertical', isVertical)]\">\n    <slot />\n  </section>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { Component, VNode } from 'vue'\n\ninterface ContainerProps {\n  /**\n   * @description layout direction for child elements\n   */\n  direction?: 'horizontal' | 'vertical'\n}\n\ndefineOptions({\n  name: 'ElContainer',\n})\n\nconst props = defineProps<ContainerProps>()\nconst slots = useSlots()\n\nconst ns = useNamespace('container')\n\nconst isVertical = computed(() => {\n  if (props.direction === 'vertical') {\n    return true\n  } else if (props.direction === 'horizontal') {\n    return false\n  }\n  if (slots && slots.default) {\n    const vNodes: VNode[] = slots.default()\n    return vNodes.some((vNode) => {\n      const tag = (vNode.type as Component).name\n      return tag === 'ElHeader' || tag === 'ElFooter'\n    })\n  } else {\n    return false\n  }\n})\n</script>\n","<template>\n  <section :class=\"[ns.b(), ns.is('vertical', isVertical)]\">\n    <slot />\n  </section>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { Component, VNode } from 'vue'\n\ninterface ContainerProps {\n  /**\n   * @description layout direction for child elements\n   */\n  direction?: 'horizontal' | 'vertical'\n}\n\ndefineOptions({\n  name: 'ElContainer',\n})\n\nconst props = defineProps<ContainerProps>()\nconst slots = useSlots()\n\nconst ns = useNamespace('container')\n\nconst isVertical = computed(() => {\n  if (props.direction === 'vertical') {\n    return true\n  } else if (props.direction === 'horizontal') {\n    return false\n  }\n  if (slots && slots.default) {\n    const vNodes: VNode[] = slots.default()\n    return vNodes.some((vNode) => {\n      const tag = (vNode.type as Component).name\n      return tag === 'ElHeader' || tag === 'ElFooter'\n    })\n  } else {\n    return false\n  }\n})\n</script>\n","<template>\n  <section :class=\"[ns.b(), ns.is('vertical', isVertical)]\">\n    <slot />\n  </section>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { Component, VNode } from 'vue'\n\ninterface ContainerProps {\n  /**\n   * @description layout direction for child elements\n   */\n  direction?: 'horizontal' | 'vertical'\n}\n\ndefineOptions({\n  name: 'ElContainer',\n})\n\nconst props = defineProps<ContainerProps>()\nconst slots = useSlots()\n\nconst ns = useNamespace('container')\n\nconst isVertical = computed(() => {\n  if (props.direction === 'vertical') {\n    return true\n  } else if (props.direction === 'horizontal') {\n    return false\n  }\n  if (slots && slots.default) {\n    const vNodes: VNode[] = slots.default()\n    return vNodes.some((vNode) => {\n      const tag = (vNode.type as Component).name\n      return tag === 'ElHeader' || tag === 'ElFooter'\n    })\n  } else {\n    return false\n  }\n})\n</script>\n","<template>\n  <aside :class=\"ns.b()\" :style=\"style\">\n    <slot />\n  </aside>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\n\ninterface AsideProps {\n  /**\n   * @description width of the side section\n   */\n  width?: string | null\n}\n\ndefineOptions({\n  name: 'ElAside',\n})\nconst props = withDefaults(defineProps<AsideProps>(), {\n  width: null,\n})\n\nconst ns = useNamespace('aside')\nconst style = computed(\n  () =>\n    (props.width ? ns.cssVarBlock({ width: props.width }) : {}) as CSSProperties\n)\n</script>\n","<template>\n  <aside :class=\"ns.b()\" :style=\"style\">\n    <slot />\n  </aside>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\n\ninterface AsideProps {\n  /**\n   * @description width of the side section\n   */\n  width?: string | null\n}\n\ndefineOptions({\n  name: 'ElAside',\n})\nconst props = withDefaults(defineProps<AsideProps>(), {\n  width: null,\n})\n\nconst ns = useNamespace('aside')\nconst style = computed(\n  () =>\n    (props.width ? ns.cssVarBlock({ width: props.width }) : {}) as CSSProperties\n)\n</script>\n","<template>\n  <aside :class=\"ns.b()\" :style=\"style\">\n    <slot />\n  </aside>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\n\ninterface AsideProps {\n  /**\n   * @description width of the side section\n   */\n  width?: string | null\n}\n\ndefineOptions({\n  name: 'ElAside',\n})\nconst props = withDefaults(defineProps<AsideProps>(), {\n  width: null,\n})\n\nconst ns = useNamespace('aside')\nconst style = computed(\n  () =>\n    (props.width ? ns.cssVarBlock({ width: props.width }) : {}) as CSSProperties\n)\n</script>\n","<template>\n  <footer :class=\"ns.b()\" :style=\"style\">\n    <slot />\n  </footer>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\n\ninterface FooterProps {\n  /**\n   * @description height of the footer\n   */\n  height?: string | null\n}\n\ndefineOptions({\n  name: 'ElFooter',\n})\nconst props = withDefaults(defineProps<FooterProps>(), {\n  height: null,\n})\n\nconst ns = useNamespace('footer')\n\nconst style = computed(\n  () =>\n    (props.height\n      ? ns.cssVarBlock({ height: props.height })\n      : {}) as CSSProperties\n)\n</script>\n","<template>\n  <footer :class=\"ns.b()\" :style=\"style\">\n    <slot />\n  </footer>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\n\ninterface FooterProps {\n  /**\n   * @description height of the footer\n   */\n  height?: string | null\n}\n\ndefineOptions({\n  name: 'ElFooter',\n})\nconst props = withDefaults(defineProps<FooterProps>(), {\n  height: null,\n})\n\nconst ns = useNamespace('footer')\n\nconst style = computed(\n  () =>\n    (props.height\n      ? ns.cssVarBlock({ height: props.height })\n      : {}) as CSSProperties\n)\n</script>\n","<template>\n  <footer :class=\"ns.b()\" :style=\"style\">\n    <slot />\n  </footer>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\n\ninterface FooterProps {\n  /**\n   * @description height of the footer\n   */\n  height?: string | null\n}\n\ndefineOptions({\n  name: 'ElFooter',\n})\nconst props = withDefaults(defineProps<FooterProps>(), {\n  height: null,\n})\n\nconst ns = useNamespace('footer')\n\nconst style = computed(\n  () =>\n    (props.height\n      ? ns.cssVarBlock({ height: props.height })\n      : {}) as CSSProperties\n)\n</script>\n","<template>\n  <header :class=\"ns.b()\" :style=\"style\">\n    <slot />\n  </header>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\n\ninterface HeaderProps {\n  /**\n   * @description height of the header\n   */\n  height?: string | null\n}\n\ndefineOptions({\n  name: 'ElHeader',\n})\n\nconst props = withDefaults(defineProps<HeaderProps>(), {\n  height: null,\n})\n\nconst ns = useNamespace('header')\nconst style = computed(() => {\n  return props.height\n    ? (ns.cssVarBlock({\n        height: props.height,\n      }) as CSSProperties)\n    : {}\n})\n</script>\n","<template>\n  <header :class=\"ns.b()\" :style=\"style\">\n    <slot />\n  </header>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\n\ninterface HeaderProps {\n  /**\n   * @description height of the header\n   */\n  height?: string | null\n}\n\ndefineOptions({\n  name: 'ElHeader',\n})\n\nconst props = withDefaults(defineProps<HeaderProps>(), {\n  height: null,\n})\n\nconst ns = useNamespace('header')\nconst style = computed(() => {\n  return props.height\n    ? (ns.cssVarBlock({\n        height: props.height,\n      }) as CSSProperties)\n    : {}\n})\n</script>\n","<template>\n  <header :class=\"ns.b()\" :style=\"style\">\n    <slot />\n  </header>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\n\ninterface HeaderProps {\n  /**\n   * @description height of the header\n   */\n  height?: string | null\n}\n\ndefineOptions({\n  name: 'ElHeader',\n})\n\nconst props = withDefaults(defineProps<HeaderProps>(), {\n  height: null,\n})\n\nconst ns = useNamespace('header')\nconst style = computed(() => {\n  return props.height\n    ? (ns.cssVarBlock({\n        height: props.height,\n      }) as CSSProperties)\n    : {}\n})\n</script>\n","<template>\n  <main :class=\"ns.b()\">\n    <slot />\n  </main>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\n\ndefineOptions({\n  name: 'ElMain',\n})\n\nconst ns = useNamespace('main')\n</script>\n","<template>\n  <main :class=\"ns.b()\">\n    <slot />\n  </main>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\n\ndefineOptions({\n  name: 'ElMain',\n})\n\nconst ns = useNamespace('main')\n</script>\n","<template>\n  <main :class=\"ns.b()\">\n    <slot />\n  </main>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\n\ndefineOptions({\n  name: 'ElMain',\n})\n\nconst ns = useNamespace('main')\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Container from './src/container.vue'\nimport Aside from './src/aside.vue'\nimport Footer from './src/footer.vue'\nimport Header from './src/header.vue'\nimport Main from './src/main.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElContainer: SFCWithInstall<typeof Container> & {\n  Aside: typeof Aside\n  Footer: typeof Footer\n  Header: typeof Header\n  Main: typeof Main\n} = withInstall(Container, {\n  Aside,\n  Footer,\n  Header,\n  Main,\n})\n\nexport default ElContainer\nexport const ElAside: SFCWithInstall<typeof Aside> = withNoopInstall(Aside)\nexport const ElFooter: SFCWithInstall<typeof Footer> = withNoopInstall(Footer)\nexport const ElHeader: SFCWithInstall<typeof Header> = withNoopInstall(Header)\nexport const ElMain: SFCWithInstall<typeof Main> = withNoopInstall(Main)\n\nexport type ContainerInstance = InstanceType<typeof Container> & unknown\nexport type AsideInstance = InstanceType<typeof Aside> & unknown\nexport type FooterInstance = InstanceType<typeof Footer> & unknown\nexport type HeaderInstance = InstanceType<typeof Header> & unknown\nexport type MainInstance = InstanceType<typeof Main> & unknown\n","import { buildProps, definePropType, isNumber } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\n\nimport type { ExtractPublicPropTypes, StyleValue } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type Countdown from './countdown.vue'\n\nexport interface CountdownProps {\n  /**\n   * @description Formatting the countdown display\n   */\n  format?: string\n  /**\n   * @description Sets the prefix of a countdown\n   */\n  prefix?: string\n  /**\n   * @description Sets the suffix of a countdown\n   */\n  suffix?: string\n  /**\n   * @description countdown titles\n   */\n  title?: string\n  /**\n   * @description target time\n   */\n  value?: number | Dayjs\n  /**\n   * @description Styles countdown values\n   */\n  valueStyle?: StyleValue\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `CountdownProps` instead.\n */\nexport const countdownProps = buildProps({\n  /**\n   * @description Formatting the countdown display\n   */\n  format: {\n    type: String,\n    default: 'HH:mm:ss',\n  },\n  /**\n   * @description Sets the prefix of a countdown\n   */\n  prefix: String,\n  /**\n   * @description Sets the suffix of a countdown\n   */\n  suffix: String,\n  /**\n   * @description countdown titles\n   */\n  title: String,\n  /**\n   * @description target time\n   */\n  value: {\n    type: definePropType<number | Dayjs>([Number, Object]),\n    default: 0,\n  },\n  /**\n   * @description Styles countdown values\n   */\n  valueStyle: {\n    type: definePropType<StyleValue>([String, Object, Array]),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `CountdownProps` instead.\n */\nexport type CountdownPropsPublic = ExtractPublicPropTypes<typeof countdownProps>\n\nexport const countdownEmits = {\n  finish: () => true,\n  [CHANGE_EVENT]: (value: number) => isNumber(value),\n}\nexport type CountdownEmits = typeof countdownEmits\n\nexport type CountdownInstance = InstanceType<typeof Countdown> & unknown\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes, StyleValue } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type Statistic from './statistic.vue'\n\nexport interface StatisticProps {\n  /**\n   * @description Setting the decimal point\n   */\n  decimalSeparator?: string\n  /**\n   * @description Sets the thousandth identifier\n   */\n  groupSeparator?: string\n  /**\n   * @description numerical precision\n   */\n  precision?: number\n  /**\n   * @description Custom numerical presentation\n   */\n  formatter?: (...args: any[]) => string | number\n  /**\n   * @description Numerical content\n   */\n  value?: number | Dayjs\n  /**\n   * @description Sets the prefix of a number\n   */\n  prefix?: string\n  /**\n   * @description  Sets the suffix of a number\n   */\n  suffix?: string\n  /**\n   * @description Numeric titles\n   */\n  title?: string\n  /**\n   * @description Styles numeric values\n   */\n  valueStyle?: StyleValue\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `StatisticProps` instead.\n */\nexport const statisticProps = buildProps({\n  /**\n   * @description Setting the decimal point\n   */\n  decimalSeparator: {\n    type: String,\n    default: '.',\n  },\n  /**\n   * @description Sets the thousandth identifier\n   */\n  groupSeparator: {\n    type: String,\n    default: ',',\n  },\n  /**\n   * @description numerical precision\n   */\n  precision: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description Custom numerical presentation\n   */\n  formatter: Function,\n  /**\n   * @description Numerical content\n   */\n  value: {\n    type: definePropType<number | Dayjs>([Number, Object]),\n    default: 0,\n  },\n  /**\n   * @description Sets the prefix of a number\n   */\n  prefix: String,\n\n  /**\n   * @description  Sets the suffix of a number\n   */\n  suffix: String,\n  /**\n   * @description Numeric titles\n   */\n  title: String,\n  /**\n   * @description Styles numeric values\n   */\n  valueStyle: {\n    type: definePropType<StyleValue>([String, Object, Array]),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `StatisticProps` instead.\n */\nexport type StatisticPropsPublic = ExtractPublicPropTypes<typeof statisticProps>\n\nexport type StatisticInstance = InstanceType<typeof Statistic> & unknown\n","<template>\n  <div :class=\"ns.b()\">\n    <div v-if=\"$slots.title || title\" :class=\"ns.e('head')\">\n      <slot name=\"title\">\n        {{ title }}\n      </slot>\n    </div>\n    <div :class=\"ns.e('content')\">\n      <div v-if=\"$slots.prefix || prefix\" :class=\"ns.e('prefix')\">\n        <slot name=\"prefix\">\n          <span>{{ prefix }}</span>\n        </slot>\n      </div>\n      <span :class=\"ns.e('number')\" :style=\"valueStyle\">\n        {{ displayValue }}\n      </span>\n      <div v-if=\"$slots.suffix || suffix\" :class=\"ns.e('suffix')\">\n        <slot name=\"suffix\">\n          <span>{{ suffix }}</span>\n        </slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isNumber } from '@pit-element-plus/utils'\n\nimport type { StatisticProps } from './statistic'\n\ndefineOptions({\n  name: 'ElStatistic',\n})\n\nconst props = withDefaults(defineProps<StatisticProps>(), {\n  decimalSeparator: '.',\n  groupSeparator: ',',\n  precision: 0,\n  value: 0,\n  valueStyle: undefined,\n})\nconst ns = useNamespace('statistic')\n\nconst displayValue = computed(() => {\n  const { value, formatter, precision, decimalSeparator, groupSeparator } =\n    props\n\n  if (isFunction(formatter)) return formatter(value)\n\n  // https://github.com/element-plus/element-plus/issues/17784\n  if (!isNumber(value) || Number.isNaN(value)) return value\n\n  let [integer, decimal = ''] = String(value).split('.')\n  decimal = decimal\n    .padEnd(precision, '0')\n    .slice(0, precision > 0 ? precision : 0)\n  integer = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, groupSeparator)\n  return [integer, decimal].join(decimal ? decimalSeparator : '')\n})\n\ndefineExpose({\n  /**\n   * @description current display value\n   */\n  displayValue,\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div v-if=\"$slots.title || title\" :class=\"ns.e('head')\">\n      <slot name=\"title\">\n        {{ title }}\n      </slot>\n    </div>\n    <div :class=\"ns.e('content')\">\n      <div v-if=\"$slots.prefix || prefix\" :class=\"ns.e('prefix')\">\n        <slot name=\"prefix\">\n          <span>{{ prefix }}</span>\n        </slot>\n      </div>\n      <span :class=\"ns.e('number')\" :style=\"valueStyle\">\n        {{ displayValue }}\n      </span>\n      <div v-if=\"$slots.suffix || suffix\" :class=\"ns.e('suffix')\">\n        <slot name=\"suffix\">\n          <span>{{ suffix }}</span>\n        </slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isNumber } from '@pit-element-plus/utils'\n\nimport type { StatisticProps } from './statistic'\n\ndefineOptions({\n  name: 'ElStatistic',\n})\n\nconst props = withDefaults(defineProps<StatisticProps>(), {\n  decimalSeparator: '.',\n  groupSeparator: ',',\n  precision: 0,\n  value: 0,\n  valueStyle: undefined,\n})\nconst ns = useNamespace('statistic')\n\nconst displayValue = computed(() => {\n  const { value, formatter, precision, decimalSeparator, groupSeparator } =\n    props\n\n  if (isFunction(formatter)) return formatter(value)\n\n  // https://github.com/element-plus/element-plus/issues/17784\n  if (!isNumber(value) || Number.isNaN(value)) return value\n\n  let [integer, decimal = ''] = String(value).split('.')\n  decimal = decimal\n    .padEnd(precision, '0')\n    .slice(0, precision > 0 ? precision : 0)\n  integer = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, groupSeparator)\n  return [integer, decimal].join(decimal ? decimalSeparator : '')\n})\n\ndefineExpose({\n  /**\n   * @description current display value\n   */\n  displayValue,\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div v-if=\"$slots.title || title\" :class=\"ns.e('head')\">\n      <slot name=\"title\">\n        {{ title }}\n      </slot>\n    </div>\n    <div :class=\"ns.e('content')\">\n      <div v-if=\"$slots.prefix || prefix\" :class=\"ns.e('prefix')\">\n        <slot name=\"prefix\">\n          <span>{{ prefix }}</span>\n        </slot>\n      </div>\n      <span :class=\"ns.e('number')\" :style=\"valueStyle\">\n        {{ displayValue }}\n      </span>\n      <div v-if=\"$slots.suffix || suffix\" :class=\"ns.e('suffix')\">\n        <slot name=\"suffix\">\n          <span>{{ suffix }}</span>\n        </slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isNumber } from '@pit-element-plus/utils'\n\nimport type { StatisticProps } from './statistic'\n\ndefineOptions({\n  name: 'ElStatistic',\n})\n\nconst props = withDefaults(defineProps<StatisticProps>(), {\n  decimalSeparator: '.',\n  groupSeparator: ',',\n  precision: 0,\n  value: 0,\n  valueStyle: undefined,\n})\nconst ns = useNamespace('statistic')\n\nconst displayValue = computed(() => {\n  const { value, formatter, precision, decimalSeparator, groupSeparator } =\n    props\n\n  if (isFunction(formatter)) return formatter(value)\n\n  // https://github.com/element-plus/element-plus/issues/17784\n  if (!isNumber(value) || Number.isNaN(value)) return value\n\n  let [integer, decimal = ''] = String(value).split('.')\n  decimal = decimal\n    .padEnd(precision, '0')\n    .slice(0, precision > 0 ? precision : 0)\n  integer = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, groupSeparator)\n  return [integer, decimal].join(decimal ? decimalSeparator : '')\n})\n\ndefineExpose({\n  /**\n   * @description current display value\n   */\n  displayValue,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Statistic from './src/statistic.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElStatistic: SFCWithInstall<typeof Statistic> =\n  withInstall(Statistic)\n\nexport default ElStatistic\nexport * from './src/statistic'\n","import { isNumber } from '@pit-element-plus/utils'\n\nimport type { Dayjs } from 'dayjs'\n\nconst timeUnits = [\n  ['Y', 1000 * 60 * 60 * 24 * 365], // years\n  ['M', 1000 * 60 * 60 * 24 * 30], // months\n  ['D', 1000 * 60 * 60 * 24], // days\n  ['H', 1000 * 60 * 60], // hours\n  ['m', 1000 * 60], // minutes\n  ['s', 1000], // seconds\n  ['S', 1], // million seconds\n] as const\n\nexport const getTime = (value: number | Dayjs) => {\n  return isNumber(value) ? new Date(value).getTime() : value.valueOf()\n}\n\nexport const formatTime = (timestamp: number, format: string) => {\n  let timeLeft = timestamp\n  const escapeRegex = /\\[([^\\]]*)]/g\n\n  const replacedText = timeUnits.reduce((current, [name, unit]) => {\n    const replaceRegex = new RegExp(`${name}+(?![^\\\\[\\\\]]*\\\\])`, 'g')\n    if (replaceRegex.test(current)) {\n      const value = Math.floor(timeLeft / unit)\n      timeLeft -= value * unit\n      return current.replace(replaceRegex, (match) =>\n        String(value).padStart(match.length, '0')\n      )\n    }\n    return current\n  }, format)\n\n  return replacedText.replace(escapeRegex, '$1')\n}\n","<template>\n  <el-statistic\n    :value=\"rawValue\"\n    :title=\"title\"\n    :prefix=\"prefix\"\n    :suffix=\"suffix\"\n    :value-style=\"valueStyle\"\n    :formatter=\"formatter\"\n  >\n    <template v-for=\"(_, name) in $slots\" #[name]>\n      <slot :name=\"name\" />\n    </template>\n  </el-statistic>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { ElStatistic } from '@pit-element-plus/components/statistic'\nimport { cAF, rAF } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { countdownEmits } from './countdown'\nimport { formatTime, getTime } from './utils'\n\nimport type { CountdownProps } from './countdown'\n\ndefineOptions({\n  name: 'ElCountdown',\n})\nconst props = withDefaults(defineProps<CountdownProps>(), {\n  format: 'HH:mm:ss',\n  value: 0,\n  valueStyle: undefined,\n})\nconst emit = defineEmits(countdownEmits)\n\nlet timer: ReturnType<typeof rAF> | undefined\nconst rawValue = ref<number>(0)\nconst displayValue = computed(() => formatTime(rawValue.value, props.format))\n\nconst formatter = (val: number) => formatTime(val, props.format)\n\nconst stopTimer = () => {\n  if (timer) {\n    cAF(timer)\n    timer = undefined\n  }\n}\n\nconst startTimer = () => {\n  const timestamp = getTime(props.value)\n  const frameFunc = () => {\n    let diff = timestamp - Date.now()\n    emit(CHANGE_EVENT, diff)\n    if (diff <= 0) {\n      diff = 0\n      stopTimer()\n      emit('finish')\n    } else {\n      timer = rAF(frameFunc)\n    }\n    rawValue.value = diff\n  }\n  timer = rAF(frameFunc)\n}\n\nonMounted(() => {\n  rawValue.value = getTime(props.value) - Date.now()\n\n  watch(\n    () => [props.value, props.format],\n    () => {\n      stopTimer()\n      startTimer()\n    },\n    {\n      immediate: true,\n    }\n  )\n})\n\nonBeforeUnmount(() => {\n  stopTimer()\n})\n\ndefineExpose({\n  /**\n   * @description current display value\n   */\n  displayValue,\n})\n</script>\n","<template>\n  <el-statistic\n    :value=\"rawValue\"\n    :title=\"title\"\n    :prefix=\"prefix\"\n    :suffix=\"suffix\"\n    :value-style=\"valueStyle\"\n    :formatter=\"formatter\"\n  >\n    <template v-for=\"(_, name) in $slots\" #[name]>\n      <slot :name=\"name\" />\n    </template>\n  </el-statistic>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { ElStatistic } from '@pit-element-plus/components/statistic'\nimport { cAF, rAF } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { countdownEmits } from './countdown'\nimport { formatTime, getTime } from './utils'\n\nimport type { CountdownProps } from './countdown'\n\ndefineOptions({\n  name: 'ElCountdown',\n})\nconst props = withDefaults(defineProps<CountdownProps>(), {\n  format: 'HH:mm:ss',\n  value: 0,\n  valueStyle: undefined,\n})\nconst emit = defineEmits(countdownEmits)\n\nlet timer: ReturnType<typeof rAF> | undefined\nconst rawValue = ref<number>(0)\nconst displayValue = computed(() => formatTime(rawValue.value, props.format))\n\nconst formatter = (val: number) => formatTime(val, props.format)\n\nconst stopTimer = () => {\n  if (timer) {\n    cAF(timer)\n    timer = undefined\n  }\n}\n\nconst startTimer = () => {\n  const timestamp = getTime(props.value)\n  const frameFunc = () => {\n    let diff = timestamp - Date.now()\n    emit(CHANGE_EVENT, diff)\n    if (diff <= 0) {\n      diff = 0\n      stopTimer()\n      emit('finish')\n    } else {\n      timer = rAF(frameFunc)\n    }\n    rawValue.value = diff\n  }\n  timer = rAF(frameFunc)\n}\n\nonMounted(() => {\n  rawValue.value = getTime(props.value) - Date.now()\n\n  watch(\n    () => [props.value, props.format],\n    () => {\n      stopTimer()\n      startTimer()\n    },\n    {\n      immediate: true,\n    }\n  )\n})\n\nonBeforeUnmount(() => {\n  stopTimer()\n})\n\ndefineExpose({\n  /**\n   * @description current display value\n   */\n  displayValue,\n})\n</script>\n","<template>\n  <el-statistic\n    :value=\"rawValue\"\n    :title=\"title\"\n    :prefix=\"prefix\"\n    :suffix=\"suffix\"\n    :value-style=\"valueStyle\"\n    :formatter=\"formatter\"\n  >\n    <template v-for=\"(_, name) in $slots\" #[name]>\n      <slot :name=\"name\" />\n    </template>\n  </el-statistic>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { ElStatistic } from '@pit-element-plus/components/statistic'\nimport { cAF, rAF } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { countdownEmits } from './countdown'\nimport { formatTime, getTime } from './utils'\n\nimport type { CountdownProps } from './countdown'\n\ndefineOptions({\n  name: 'ElCountdown',\n})\nconst props = withDefaults(defineProps<CountdownProps>(), {\n  format: 'HH:mm:ss',\n  value: 0,\n  valueStyle: undefined,\n})\nconst emit = defineEmits(countdownEmits)\n\nlet timer: ReturnType<typeof rAF> | undefined\nconst rawValue = ref<number>(0)\nconst displayValue = computed(() => formatTime(rawValue.value, props.format))\n\nconst formatter = (val: number) => formatTime(val, props.format)\n\nconst stopTimer = () => {\n  if (timer) {\n    cAF(timer)\n    timer = undefined\n  }\n}\n\nconst startTimer = () => {\n  const timestamp = getTime(props.value)\n  const frameFunc = () => {\n    let diff = timestamp - Date.now()\n    emit(CHANGE_EVENT, diff)\n    if (diff <= 0) {\n      diff = 0\n      stopTimer()\n      emit('finish')\n    } else {\n      timer = rAF(frameFunc)\n    }\n    rawValue.value = diff\n  }\n  timer = rAF(frameFunc)\n}\n\nonMounted(() => {\n  rawValue.value = getTime(props.value) - Date.now()\n\n  watch(\n    () => [props.value, props.format],\n    () => {\n      stopTimer()\n      startTimer()\n    },\n    {\n      immediate: true,\n    }\n  )\n})\n\nonBeforeUnmount(() => {\n  stopTimer()\n})\n\ndefineExpose({\n  /**\n   * @description current display value\n   */\n  displayValue,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Countdown from './src/countdown.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElCountdown: SFCWithInstall<typeof Countdown> =\n  withInstall(Countdown)\nexport default ElCountdown\n\nexport * from './src/countdown'\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekYear=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_dayOfYear=t()}(this,(function(){\"use strict\";return function(e,t,n){t.prototype.dayOfYear=function(e){var t=Math.round((n(this).startOf(\"day\")-n(this).startOf(\"year\"))/864e5)+1;return null==e?t:this.add(e-t,\"day\")}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { disabledTimeListsProps } from '@pit-element-plus/components/time-picker/src/props/shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type {\n  ModelValueType,\n  SingleOrRange,\n} from '@pit-element-plus/components/time-picker'\nimport type { DatePickerType } from '../types'\n\nexport const datePickerPanelProps = buildProps({\n  /**\n   * @description optional, format of binding value. If not specified, the binding value will be a Date object\n   */\n  valueFormat: String,\n  /**\n   * @description optional, format of the date displayed in input's inner panel\n   */\n  dateFormat: String,\n  /**\n   * @description optional, format of the time displayed in input's inner panel\n   */\n  timeFormat: String,\n  /**\n   * @description whether picker is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description binding value, if it is an array, the length should be 2\n   */\n  modelValue: {\n    type: definePropType<ModelValueType>([Date, Array, String, Number]),\n    default: '',\n  },\n  /**\n   * @description optional, default date of the calendar\n   */\n  defaultValue: {\n    type: definePropType<SingleOrRange<Date>>([Date, Array]),\n  },\n  /**\n   * @description optional, the time value to use when selecting date range\n   */\n  defaultTime: {\n    type: definePropType<SingleOrRange<Date>>([Date, Array]),\n  },\n  /**\n   * @description whether to pick a time range\n   */\n  isRange: Boolean,\n  ...disabledTimeListsProps,\n  /**\n   * @description a function determining if a date is disabled with that date as its parameter. Should return a Boolean\n   */\n  disabledDate: {\n    type: Function,\n  },\n  /**\n   * @description set custom className\n   */\n  cellClassName: {\n    type: Function,\n  },\n  /**\n   * @description an object array to set shortcut options\n   */\n  shortcuts: {\n    type: Array,\n    default: () => [],\n  },\n  /**\n   * @description whether to pick time using arrow buttons\n   */\n  arrowControl: Boolean,\n  /**\n   * @description unlink two date-panels in range-picker\n   */\n  unlinkPanels: Boolean,\n  /**\n   * @description whether to show the now button\n   */\n  showNow: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to show the confirm button\n   */\n  showConfirm: Boolean,\n  /**\n   * @description whether to show footer\n   */\n  showFooter: Boolean,\n  /**\n   * @description whether to show the number of the calendar week\n   */\n  showWeekNumber: Boolean,\n  /**\n   * @description type of the picker\n   */\n  type: {\n    type: definePropType<DatePickerType>(String),\n    default: 'date',\n  },\n  /**\n   * @description whether to show clear button in range mode\n   */\n  clearable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether the date picker is bordered\n   */\n  border: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether the input is editable\n   */\n  editable: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\nexport type DatePickerPanelProps = ExtractPropTypes<typeof datePickerPanelProps>\nexport type DatePickerPanelPropsPublic = ExtractPublicPropTypes<\n  typeof datePickerPanelProps\n>\n","import type { InjectionKey, SetupContext } from 'vue'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\n\ninterface DatePickerContext {\n  slots: SetupContext['slots']\n  pickerNs: UseNamespaceReturn\n}\n\nexport const ROOT_PICKER_INJECTION_KEY: InjectionKey<DatePickerContext> =\n  Symbol('rootPickerContextKey')\n\nexport const ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = 'ElIsDefaultFormat'\n","import { buildProps, definePropType, isArray } from '@pit-element-plus/utils'\nimport { datePickTypes } from '@pit-element-plus/constants'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { DatePickType } from '@pit-element-plus/constants'\nimport type { DayOrDays } from '@pit-element-plus/components/time-picker'\n\nconst selectionModes = [\n  'date',\n  'dates',\n  'year',\n  'years',\n  'month',\n  'months',\n  'week',\n  'range',\n]\n\nexport type RangeState = {\n  endDate: null | Dayjs\n  selecting: boolean\n}\n\nexport type DisabledDateType = (date: Date) => boolean\nexport type CellClassNameType = (date: Date) => string\n\nexport const datePickerSharedProps = buildProps({\n  cellClassName: {\n    type: definePropType<CellClassNameType>(Function),\n  },\n  disabledDate: {\n    type: definePropType<DisabledDateType>(Function),\n  },\n  date: {\n    type: definePropType<Dayjs>(Object),\n    required: true,\n  },\n  minDate: {\n    type: definePropType<Dayjs | null>(Object),\n  },\n  maxDate: {\n    type: definePropType<Dayjs | null>(Object),\n  },\n  parsedValue: {\n    type: definePropType<Dayjs | Dayjs[]>([Object, Array]),\n  },\n  rangeState: {\n    type: definePropType<RangeState>(Object),\n    default: () => ({\n      endDate: null,\n      selecting: false,\n    }),\n  },\n  disabled: Boolean,\n} as const)\n\nexport const panelSharedProps = buildProps({\n  type: {\n    type: definePropType<DatePickType>(String),\n    required: true,\n    values: datePickTypes,\n  },\n  dateFormat: String,\n  timeFormat: String,\n  showNow: {\n    type: Boolean,\n    default: true,\n  },\n  showConfirm: Boolean,\n  showFooter: {\n    type: Boolean,\n    default: true,\n  },\n  showWeekNumber: Boolean,\n  border: Boolean,\n  disabled: Boolean,\n  editable: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\nexport const panelRangeSharedProps = buildProps({\n  unlinkPanels: Boolean,\n  visible: {\n    type: Boolean,\n    default: true,\n  },\n  showConfirm: Boolean,\n  showFooter: {\n    type: Boolean,\n    default: true,\n  },\n  border: Boolean,\n  disabled: Boolean,\n  parsedValue: {\n    type: definePropType<DayOrDays>(Array),\n  },\n} as const)\n\nexport const selectionModeWithDefault = (\n  mode: (typeof selectionModes)[number]\n) => {\n  return {\n    type: String,\n    values: selectionModes,\n    default: mode,\n  }\n}\n\nexport const rangePickerSharedEmits = {\n  pick: (range: [Dayjs, Dayjs]) => isArray(range),\n}\n\nexport type RangePickerSharedEmits = typeof rangePickerSharedEmits\nexport type PanelRangeSharedProps = ExtractPropTypes<\n  typeof panelRangeSharedProps\n>\nexport type PanelRangeSharedPropsPublic = ExtractPublicPropTypes<\n  typeof panelRangeSharedProps\n>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { panelSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { DayOrDays } from '@pit-element-plus/components/time-picker'\n\nexport const panelDatePickProps = buildProps({\n  ...panelSharedProps,\n  parsedValue: {\n    type: definePropType<DayOrDays>([Object, Array]),\n  },\n  visible: {\n    type: Boolean,\n    default: true,\n  },\n  format: {\n    type: String,\n    default: '',\n  },\n} as const)\n\nexport type PanelDatePickProps = ExtractPropTypes<typeof panelDatePickProps>\nexport type PanelDatePickPropsPublic = ExtractPublicPropTypes<\n  typeof panelDatePickProps\n>\n","import dayjs from 'dayjs'\nimport { isArray, isString } from '@pit-element-plus/utils'\nimport { rangeArr } from '@pit-element-plus/components/time-picker'\n\nimport type { ComputedRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { DateCell } from './types'\nimport type { DisabledDateType } from './props/shared'\n\ntype DayRange = [Dayjs | undefined, Dayjs | undefined]\n\nexport const isValidRange = (range: DayRange): boolean => {\n  if (!isArray(range)) return false\n\n  const [left, right] = range\n\n  return (\n    dayjs.isDayjs(left) &&\n    dayjs.isDayjs(right) &&\n    dayjs(left).isValid() &&\n    dayjs(right).isValid() &&\n    left.isSameOrBefore(right)\n  )\n}\n\ntype GetDefaultValueParams = {\n  lang: string\n  step?: number\n  unit: 'month' | 'year'\n  unlinkPanels: boolean\n}\n\nexport type DefaultValue = [Date, Date] | Date | undefined\n\nexport const getDefaultValue = (\n  defaultValue: DefaultValue,\n  { lang, step = 1, unit, unlinkPanels }: GetDefaultValueParams\n) => {\n  let start: Dayjs\n\n  if (isArray(defaultValue)) {\n    let [left, right] = defaultValue.map((d) => dayjs(d).locale(lang))\n    if (!unlinkPanels) {\n      right = left.add(step, unit)\n    }\n    return [left, right]\n  } else if (defaultValue) {\n    start = dayjs(defaultValue)\n  } else {\n    start = dayjs()\n  }\n  start = start.locale(lang)\n  return [start, start.add(step, unit)]\n}\n\ntype Dimension = {\n  row: number\n  column: number\n}\n\ntype BuildPickerTableMetadata = {\n  startDate?: Dayjs | null\n  unit: 'month' | 'day'\n  columnIndexOffset: number\n  now: Dayjs\n  nextEndDate: Dayjs | null\n  relativeDateGetter: (index: number) => Dayjs\n  setCellMetadata?: (\n    cell: DateCell,\n    dimension: { rowIndex: number; columnIndex: number }\n  ) => void\n  setRowMetadata?: (row: DateCell[]) => void\n}\n\nexport const buildPickerTable = (\n  dimension: Dimension,\n  rows: DateCell[][],\n  {\n    columnIndexOffset,\n    startDate,\n    nextEndDate,\n    now,\n    unit,\n    relativeDateGetter,\n    setCellMetadata,\n    setRowMetadata,\n  }: BuildPickerTableMetadata\n) => {\n  for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) {\n    const row = rows[rowIndex]\n    for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) {\n      let cell = row[columnIndex + columnIndexOffset]\n      if (!cell) {\n        cell = {\n          row: rowIndex,\n          column: columnIndex,\n          type: 'normal',\n          inRange: false,\n          start: false,\n          end: false,\n        }\n      }\n      const index = rowIndex * dimension.column + columnIndex\n      const nextStartDate = relativeDateGetter(index)\n      cell.dayjs = nextStartDate\n      cell.date = nextStartDate.toDate()\n      cell.timestamp = nextStartDate.valueOf()\n      cell.type = 'normal'\n\n      cell.inRange =\n        !!(\n          startDate &&\n          nextStartDate.isSameOrAfter(startDate, unit) &&\n          nextEndDate &&\n          nextStartDate.isSameOrBefore(nextEndDate, unit)\n        ) ||\n        !!(\n          startDate &&\n          nextStartDate.isSameOrBefore(startDate, unit) &&\n          nextEndDate &&\n          nextStartDate.isSameOrAfter(nextEndDate, unit)\n        )\n\n      if (startDate?.isSameOrAfter(nextEndDate)) {\n        cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit)\n        cell.end = startDate && nextStartDate.isSame(startDate, unit)\n      } else {\n        cell.start = !!startDate && nextStartDate.isSame(startDate, unit)\n        cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit)\n      }\n\n      const isToday = nextStartDate.isSame(now, unit)\n\n      if (isToday) {\n        cell.type = 'today'\n      }\n      setCellMetadata?.(cell, { rowIndex, columnIndex })\n      row[columnIndex + columnIndexOffset] = cell\n    }\n    setRowMetadata?.(row)\n  }\n}\n\nexport const datesInMonth = (\n  date: Dayjs,\n  year: number,\n  month: number,\n  lang: string\n) => {\n  const firstDay = dayjs()\n    .locale(lang)\n    .startOf('month')\n    .month(month)\n    .year(year)\n    .hour(date.hour())\n    .minute(date.minute())\n    .second(date.second())\n\n  const numOfDays = firstDay.daysInMonth()\n  return rangeArr(numOfDays).map((n) => firstDay.add(n, 'day').toDate())\n}\n\nexport const getValidDateOfMonth = (\n  date: Dayjs,\n  year: number,\n  month: number,\n  lang: string,\n  disabledDate?: DisabledDateType\n) => {\n  const _value = dayjs()\n    .year(year)\n    .month(month)\n    .startOf('month')\n    .hour(date.hour())\n    .minute(date.minute())\n    .second(date.second())\n  const _date = datesInMonth(date, year, month, lang).find((date) => {\n    return !disabledDate?.(date)\n  })\n  if (_date) {\n    return dayjs(_date).locale(lang)\n  }\n  return _value.locale(lang)\n}\n\nexport const getValidDateOfYear = (\n  value: Dayjs,\n  lang: string,\n  disabledDate?: DisabledDateType\n) => {\n  const year = value.year()\n  if (!disabledDate?.(value.toDate())) {\n    return value.locale(lang)\n  }\n  const month = value.month()\n  if (!datesInMonth(value, year, month, lang).every(disabledDate)) {\n    return getValidDateOfMonth(value, year, month, lang, disabledDate)\n  }\n  for (let i = 0; i < 12; i++) {\n    if (!datesInMonth(value, year, i, lang).every(disabledDate)) {\n      return getValidDateOfMonth(value, year, i, lang, disabledDate)\n    }\n  }\n  return value\n}\n\nexport const correctlyParseUserInput = (\n  value: string | Dayjs | Dayjs[],\n  format: string,\n  lang: string,\n  defaultFormat: ComputedRef<boolean> | undefined\n): Dayjs | Dayjs[] => {\n  if (isArray(value)) {\n    return value.map(\n      (v) => correctlyParseUserInput(v, format, lang, defaultFormat) as Dayjs\n    )\n  }\n  if (isString(value)) {\n    const dayjsValue = defaultFormat?.value\n      ? dayjs(value)\n      : dayjs(value, format)\n    if (!dayjsValue.isValid()) {\n      // return directly if not valid\n      return dayjsValue\n    }\n  }\n  return dayjs(value, format).locale(lang)\n}\n","import { buildProps } from '@pit-element-plus/utils'\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const basicDateTableProps = buildProps({\n  ...datePickerSharedProps,\n  showWeekNumber: Boolean,\n  selectionMode: selectionModeWithDefault('date'),\n} as const)\n\nexport const basicDateTableEmits = ['changerange', 'pick', 'select']\n\nexport type BasicDateTableProps = ExtractPropTypes<typeof basicDateTableProps>\nexport type BasicDateTablePropsPublic = ExtractPublicPropTypes<\n  typeof basicDateTableProps\n>\nexport type BasicDateTableEmits = typeof basicDateTableEmits\n\nexport type RangePickerEmits = { minDate: Dayjs; maxDate: null }\nexport type DatePickerEmits = Dayjs\nexport type DatesPickerEmits = Dayjs[]\nexport type MonthsPickerEmits = Dayjs[]\nexport type YearsPickerEmits = Dayjs[]\nexport type WeekPickerEmits = {\n  year: number\n  week: number\n  value: string\n  date: Dayjs\n}\n\nexport type DateTableEmits =\n  | RangePickerEmits\n  | DatePickerEmits\n  | DatesPickerEmits\n  | WeekPickerEmits\n","import { computed, nextTick, ref, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { flatten } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { castArray, isArray } from '@pit-element-plus/utils'\nimport { buildPickerTable } from '../utils'\n\nimport type { SetupContext } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { DateCell } from '../types'\nimport type {\n  BasicDateTableEmits,\n  BasicDateTableProps,\n} from '../props/basic-date-table'\n\nconst isNormalDay = (type = '') => {\n  return ['normal', 'today'].includes(type)\n}\n\nexport const useBasicDateTable = (\n  props: BasicDateTableProps,\n  emit: SetupContext<BasicDateTableEmits>['emit']\n) => {\n  const { lang } = useLocale()\n  const tbodyRef = ref<HTMLElement>()\n  const currentCellRef = ref<HTMLElement>()\n  // data\n  const lastRow = ref<number>()\n  const lastColumn = ref<number>()\n  const tableRows = ref<DateCell[][]>([[], [], [], [], [], []])\n\n  let focusWithClick = false\n\n  // todo better way to get Day.js locale object\n  const firstDayOfWeek = (props.date as any).$locale().weekStart || 7\n  const WEEKS_CONSTANT = props.date\n    .locale('en')\n    .localeData()\n    .weekdaysShort()\n    .map((_) => _.toLowerCase())\n\n  const offsetDay = computed(() => {\n    // Sunday 7(0), cal the left and right offset days, 3217654, such as Monday is -1, the is to adjust the position of the first two rows of dates\n    return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek\n  })\n\n  const startDate = computed(() => {\n    const startDayOfMonth = props.date.startOf('month')\n    return startDayOfMonth.subtract(startDayOfMonth.day() || 7, 'day')\n  })\n\n  const WEEKS = computed(() => {\n    return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(\n      firstDayOfWeek,\n      firstDayOfWeek + 7\n    )\n  })\n\n  const hasCurrent = computed<boolean>(() => {\n    return flatten(unref(rows)).some((row) => {\n      return row.isCurrent\n    })\n  })\n\n  const days = computed(() => {\n    const startOfMonth = props.date.startOf('month')\n    const startOfMonthDay = startOfMonth.day() || 7 // day of first day\n    const dateCountOfMonth = startOfMonth.daysInMonth()\n\n    const dateCountOfLastMonth = startOfMonth.subtract(1, 'month').daysInMonth()\n\n    return {\n      startOfMonthDay,\n      dateCountOfMonth,\n      dateCountOfLastMonth,\n    }\n  })\n\n  const selectedDate = computed<Dayjs[]>(() => {\n    return props.selectionMode === 'dates' ? castArray(props.parsedValue!) : []\n  })\n\n  // Return value indicates should the counter be incremented\n  type CellCoordinate = { columnIndex: number; rowIndex: number }\n  type CellMeta = CellCoordinate & {\n    count: number\n  }\n  const setDateText = (\n    cell: DateCell,\n    { count, rowIndex, columnIndex }: CellMeta\n  ): boolean => {\n    const { startOfMonthDay, dateCountOfMonth, dateCountOfLastMonth } =\n      unref(days)\n    const offset = unref(offsetDay)\n    if (rowIndex >= 0 && rowIndex <= 1) {\n      const numberOfDaysFromPreviousMonth =\n        startOfMonthDay + offset < 0\n          ? 7 + startOfMonthDay + offset\n          : startOfMonthDay + offset\n\n      if (columnIndex + rowIndex * 7 >= numberOfDaysFromPreviousMonth) {\n        cell.text = count\n        return true\n      } else {\n        cell.text =\n          dateCountOfLastMonth -\n          (numberOfDaysFromPreviousMonth - (columnIndex % 7)) +\n          1 +\n          rowIndex * 7\n        cell.type = 'prev-month'\n      }\n    } else {\n      if (count <= dateCountOfMonth) {\n        cell.text = count\n      } else {\n        cell.text = count - dateCountOfMonth\n        cell.type = 'next-month'\n      }\n      return true\n    }\n    return false\n  }\n\n  const setCellMetadata = (\n    cell: DateCell,\n    { columnIndex, rowIndex }: CellCoordinate,\n    count: number\n  ) => {\n    const { disabledDate, cellClassName } = props\n    const _selectedDate = unref(selectedDate)\n    const shouldIncrement = setDateText(cell, { count, rowIndex, columnIndex })\n\n    const cellDate = cell.dayjs!.toDate()\n    cell.selected = _selectedDate.find((d) => d.isSame(cell.dayjs, 'day'))\n    cell.isSelected = !!cell.selected\n    cell.isCurrent = isCurrent(cell)\n    cell.disabled = disabledDate?.(cellDate)\n    cell.customClass = cellClassName?.(cellDate)\n    return shouldIncrement\n  }\n\n  const setRowMetadata = (row: DateCell[]) => {\n    if (props.selectionMode === 'week') {\n      const [start, end] = props.showWeekNumber ? [1, 7] : [0, 6]\n      const isActive = isWeekActive(row[start + 1])\n      row[start].inRange = isActive\n      row[start].start = isActive\n      row[end].inRange = isActive\n      row[end].end = isActive\n    }\n  }\n\n  const rows = computed(() => {\n    const { minDate, maxDate, rangeState, showWeekNumber } = props\n\n    const offset = unref(offsetDay)\n    const rows_ = unref(tableRows)\n    const dateUnit = 'day'\n    let count = 1\n\n    buildPickerTable({ row: 6, column: 7 }, rows_, {\n      startDate: minDate,\n      columnIndexOffset: showWeekNumber ? 1 : 0,\n      nextEndDate:\n        rangeState.endDate ||\n        maxDate ||\n        (rangeState.selecting && minDate) ||\n        null,\n      now: dayjs().locale(unref(lang)).startOf(dateUnit),\n      unit: dateUnit,\n      relativeDateGetter: (idx: number) =>\n        unref(startDate).add(idx - offset, dateUnit),\n      setCellMetadata: (...args) => {\n        if (setCellMetadata(...args, count)) {\n          count += 1\n        }\n      },\n\n      setRowMetadata,\n    })\n\n    if (showWeekNumber) {\n      for (let rowIndex = 0; rowIndex < 6; rowIndex++) {\n        if (rows_[rowIndex][1].dayjs) {\n          rows_[rowIndex][0] = {\n            type: 'week',\n            text: rows_[rowIndex][1].dayjs!.week(),\n          }\n        }\n      }\n    }\n\n    return rows_\n  })\n\n  watch(\n    () => props.date,\n    async () => {\n      if (unref(tbodyRef)?.contains(document.activeElement)) {\n        await nextTick()\n        await focus()\n        // currentCellRef.value?.focus()\n      }\n    }\n  )\n\n  const focus = async () => unref(currentCellRef)?.focus()\n\n  const isCurrent = (cell: DateCell): boolean => {\n    return (\n      props.selectionMode === 'date' &&\n      isNormalDay(cell.type) &&\n      cellMatchesDate(cell, props.parsedValue as Dayjs)\n    )\n  }\n\n  const cellMatchesDate = (cell: DateCell, date: Dayjs) => {\n    if (!date) return false\n    return dayjs(date)\n      .locale(unref(lang))\n      .isSame(props.date.date(Number(cell.text)), 'day')\n  }\n\n  const getDateOfCell = (row: number, column: number) => {\n    //NOTE: because relying of startDate is not reliable in every weekStart (especially 2, 3); we re-create it\n    const startOfMonthDay = unref(days).startOfMonthDay\n    const offset = unref(offsetDay)\n    const numberOfDaysFromPreviousMonth =\n      startOfMonthDay + offset < 0\n        ? 7 + startOfMonthDay + offset\n        : startOfMonthDay + offset\n    const offsetFromStart = row * 7 + (column - (props.showWeekNumber ? 1 : 0))\n    return props.date\n      .startOf('month')\n      .subtract(numberOfDaysFromPreviousMonth, 'day')\n      .add(offsetFromStart, 'day')\n  }\n\n  const handleMouseMove = (event: MouseEvent) => {\n    if (!props.rangeState.selecting) return\n\n    let target = event.target as HTMLElement\n    if (target.tagName === 'SPAN') {\n      target = target.parentNode?.parentNode as HTMLElement\n    }\n    if (target.tagName === 'DIV') {\n      target = target.parentNode as HTMLElement\n    }\n    if (target.tagName !== 'TD') return\n\n    const row = (target.parentNode as HTMLTableRowElement).rowIndex - 1\n    const column = (target as HTMLTableCellElement).cellIndex\n\n    // can not select disabled date\n    if (unref(rows)[row][column].disabled) return\n\n    // only update rangeState when mouse moves to a new cell\n    // this avoids frequent Date object creation and improves performance\n    if (row !== unref(lastRow) || column !== unref(lastColumn)) {\n      lastRow.value = row\n      lastColumn.value = column\n      emit('changerange', {\n        selecting: true,\n        endDate: getDateOfCell(row, column),\n      })\n    }\n  }\n\n  const isSelectedCell = (cell: DateCell) => {\n    return (\n      (!unref(hasCurrent) && cell?.text === 1 && isNormalDay(cell.type)) ||\n      cell.isCurrent\n    )\n  }\n\n  const handleFocus = (event: FocusEvent) => {\n    if (focusWithClick || unref(hasCurrent) || props.selectionMode !== 'date')\n      return\n    handlePickDate(event, true)\n  }\n\n  const handleMouseDown = (event: MouseEvent) => {\n    const target = (event.target as HTMLElement).closest('td')\n    if (!target) return\n    focusWithClick = true\n  }\n\n  const handleMouseUp = (event: MouseEvent) => {\n    const target = (event.target as HTMLElement).closest('td')\n    if (!target) return\n    focusWithClick = false\n  }\n\n  const handleRangePick = (newDate: Dayjs) => {\n    if (!props.rangeState.selecting || !props.minDate) {\n      emit('pick', { minDate: newDate, maxDate: null })\n      emit('select', true)\n    } else {\n      if (newDate >= props.minDate) {\n        emit('pick', { minDate: props.minDate, maxDate: newDate })\n      } else {\n        emit('pick', { minDate: newDate, maxDate: props.minDate })\n      }\n      emit('select', false)\n    }\n  }\n\n  const handleWeekPick = (newDate: Dayjs) => {\n    const weekNumber = newDate.week()\n    const value = `${newDate.year()}w${weekNumber}`\n    emit('pick', {\n      year: newDate.year(),\n      week: weekNumber,\n      value,\n      date: newDate.startOf('week'),\n    })\n  }\n\n  const handleDatesPick = (newDate: Dayjs, selected: boolean) => {\n    const newValue = selected\n      ? castArray(props.parsedValue).filter(\n          (d) => d?.valueOf() !== newDate.valueOf()\n        )\n      : castArray(props.parsedValue).concat([newDate])\n    emit('pick', newValue)\n  }\n\n  const handlePickDate = (\n    event: FocusEvent | MouseEvent,\n    isKeyboardMovement = false\n  ) => {\n    if (props.disabled) return\n    const target = (event.target as HTMLElement).closest('td')\n\n    if (!target) return\n\n    const row = (target.parentNode as HTMLTableRowElement).rowIndex - 1\n    const column = (target as HTMLTableCellElement).cellIndex\n    const cell = unref(rows)[row][column]\n\n    if (cell.disabled || cell.type === 'week') return\n\n    const newDate = getDateOfCell(row, column)\n\n    switch (props.selectionMode) {\n      case 'range': {\n        handleRangePick(newDate)\n        break\n      }\n      case 'date': {\n        emit('pick', newDate, isKeyboardMovement)\n        break\n      }\n      case 'week': {\n        handleWeekPick(newDate)\n        break\n      }\n      case 'dates': {\n        handleDatesPick(newDate, !!cell.selected)\n        break\n      }\n      default: {\n        break\n      }\n    }\n  }\n\n  const isWeekActive = (cell: DateCell) => {\n    if (props.selectionMode !== 'week') return false\n    let newDate = props.date.startOf('day')\n\n    if (cell.type === 'prev-month') {\n      newDate = newDate.subtract(1, 'month')\n    }\n\n    if (cell.type === 'next-month') {\n      newDate = newDate.add(1, 'month')\n    }\n\n    newDate = newDate.date(Number.parseInt(cell.text as any, 10))\n\n    if (props.parsedValue && !isArray(props.parsedValue)) {\n      const dayOffset = ((props.parsedValue.day() - firstDayOfWeek + 7) % 7) - 1\n      const weekDate = props.parsedValue.subtract(dayOffset, 'day')\n      return weekDate.isSame(newDate, 'day')\n    }\n    return false\n  }\n\n  return {\n    WEEKS,\n    rows,\n    tbodyRef,\n    currentCellRef,\n\n    // cellMatchesDate,\n    // getDateOfCell,\n    focus,\n    isCurrent,\n    isWeekActive,\n    isSelectedCell,\n\n    handlePickDate,\n    handleMouseUp,\n    handleMouseDown,\n    handleMouseMove,\n    handleFocus,\n  }\n}\n\nexport const useBasicDateTableDOM = (\n  props: BasicDateTableProps,\n  {\n    isCurrent,\n    isWeekActive,\n  }: Pick<ReturnType<typeof useBasicDateTable>, 'isCurrent' | 'isWeekActive'>\n) => {\n  const ns = useNamespace('date-table')\n  const { t } = useLocale()\n\n  const tableKls = computed(() => [\n    ns.b(),\n    ns.is('week-mode', props.selectionMode === 'week' && !props.disabled),\n  ])\n\n  const tableLabel = computed(() => t('el.datepicker.dateTablePrompt'))\n\n  const getCellClasses = (cell: DateCell) => {\n    const classes: string[] = []\n    if (isNormalDay(cell.type) && !cell.disabled) {\n      classes.push('available')\n      if (cell.type === 'today') {\n        classes.push('today')\n      }\n    } else {\n      classes.push(cell.type!)\n    }\n\n    if (isCurrent(cell)) {\n      classes.push('current')\n    }\n\n    if (\n      cell.inRange &&\n      (isNormalDay(cell.type) || props.selectionMode === 'week')\n    ) {\n      classes.push('in-range')\n\n      if (cell.start) {\n        classes.push('start-date')\n      }\n\n      if (cell.end) {\n        classes.push('end-date')\n      }\n    }\n\n    if (cell.disabled || props.disabled) {\n      classes.push('disabled')\n    }\n\n    if (cell.selected) {\n      classes.push('selected')\n    }\n\n    if (cell.customClass) {\n      classes.push(cell.customClass)\n    }\n\n    return classes.join(' ')\n  }\n\n  const getRowKls = (cell: DateCell) => [\n    ns.e('row'),\n    { current: isWeekActive(cell) },\n  ]\n\n  return {\n    tableKls,\n    tableLabel,\n    weekHeaderClass: ns.e('week-header'),\n\n    getCellClasses,\n    getRowKls,\n    t,\n  }\n}\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { DateCell } from '../types'\n\nexport const basicCellProps = buildProps({\n  cell: {\n    type: definePropType<DateCell>(Object),\n  },\n} as const)\n\nexport type BasicCellProps = ExtractPropTypes<typeof basicCellProps>\nexport type BasicCellPropsPublic = ExtractPublicPropTypes<typeof basicCellProps>\n","import { defineComponent, inject, renderSlot } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ROOT_PICKER_INJECTION_KEY } from '../constants'\nimport { basicCellProps } from '../props/basic-cell'\n\nexport default defineComponent({\n  name: 'ElDatePickerCell',\n  props: basicCellProps,\n  setup(props) {\n    const ns = useNamespace('date-table-cell')\n    const { slots } = inject(ROOT_PICKER_INJECTION_KEY)!\n    return () => {\n      const { cell } = props\n\n      return renderSlot(slots, 'default', { ...cell }, () => [\n        <div class={ns.b()}>\n          <span class={ns.e('text')}>{cell?.renderText ?? cell?.text}</span>\n        </div>,\n      ])\n    }\n  },\n})\n","<template>\n  <table\n    :aria-label=\"tableLabel\"\n    :class=\"tableKls\"\n    cellspacing=\"0\"\n    cellpadding=\"0\"\n    role=\"grid\"\n    @click=\"handlePickDate\"\n    @mousemove=\"handleMouseMove\"\n    @mousedown=\"handleMouseDown\"\n    @mouseup=\"handleMouseUp\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr>\n        <th v-if=\"showWeekNumber\" scope=\"col\" :class=\"weekHeaderClass\" />\n        <th\n          v-for=\"(week, key) in WEEKS\"\n          :key=\"key\"\n          :aria-label=\"t('el.datepicker.weeksFull.' + week)\"\n          scope=\"col\"\n        >\n          {{ t('el.datepicker.weeks.' + week) }}\n        </th>\n      </tr>\n      <tr\n        v-for=\"(row, rowKey) in rows\"\n        :key=\"rowKey\"\n        :class=\"getRowKls(showWeekNumber ? row[2] : row[1])\"\n      >\n        <td\n          v-for=\"(cell, columnKey) in row\"\n          :key=\"`${rowKey}.${columnKey}`\"\n          :ref=\"\n            (el) =>\n              !isUnmounting &&\n              isSelectedCell(cell) &&\n              (currentCellRef = el as HTMLElement)\n          \"\n          :class=\"getCellClasses(cell)\"\n          :aria-current=\"cell.isCurrent ? 'date' : undefined\"\n          :aria-selected=\"cell.isCurrent\"\n          :tabindex=\"disabled ? undefined : isSelectedCell(cell) ? 0 : -1\"\n          :aria-disabled=\"disabled\"\n          @focus=\"handleFocus\"\n        >\n          <el-date-picker-cell :cell=\"cell\" />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onBeforeUnmount } from 'vue'\nimport {\n  basicDateTableEmits,\n  basicDateTableProps,\n} from '../props/basic-date-table'\nimport {\n  useBasicDateTable,\n  useBasicDateTableDOM,\n} from '../composables/use-basic-date-table'\nimport ElDatePickerCell from './basic-cell-render'\n\nconst props = defineProps(basicDateTableProps)\nconst emit = defineEmits(basicDateTableEmits)\n\nconst {\n  WEEKS,\n  rows,\n  tbodyRef,\n  currentCellRef,\n\n  focus,\n  isCurrent,\n  isWeekActive,\n  isSelectedCell,\n\n  handlePickDate,\n  handleMouseUp,\n  handleMouseDown,\n  handleMouseMove,\n  handleFocus,\n} = useBasicDateTable(props, emit)\nconst { tableLabel, tableKls, getCellClasses, getRowKls, weekHeaderClass, t } =\n  useBasicDateTableDOM(props, {\n    isCurrent,\n    isWeekActive,\n  })\nlet isUnmounting = false\n\nonBeforeUnmount(() => {\n  isUnmounting = true\n})\n\ndefineExpose({\n  /**\n   * @description focus on current cell\n   */\n  focus,\n})\n</script>\n","<template>\n  <table\n    :aria-label=\"tableLabel\"\n    :class=\"tableKls\"\n    cellspacing=\"0\"\n    cellpadding=\"0\"\n    role=\"grid\"\n    @click=\"handlePickDate\"\n    @mousemove=\"handleMouseMove\"\n    @mousedown=\"handleMouseDown\"\n    @mouseup=\"handleMouseUp\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr>\n        <th v-if=\"showWeekNumber\" scope=\"col\" :class=\"weekHeaderClass\" />\n        <th\n          v-for=\"(week, key) in WEEKS\"\n          :key=\"key\"\n          :aria-label=\"t('el.datepicker.weeksFull.' + week)\"\n          scope=\"col\"\n        >\n          {{ t('el.datepicker.weeks.' + week) }}\n        </th>\n      </tr>\n      <tr\n        v-for=\"(row, rowKey) in rows\"\n        :key=\"rowKey\"\n        :class=\"getRowKls(showWeekNumber ? row[2] : row[1])\"\n      >\n        <td\n          v-for=\"(cell, columnKey) in row\"\n          :key=\"`${rowKey}.${columnKey}`\"\n          :ref=\"\n            (el) =>\n              !isUnmounting &&\n              isSelectedCell(cell) &&\n              (currentCellRef = el as HTMLElement)\n          \"\n          :class=\"getCellClasses(cell)\"\n          :aria-current=\"cell.isCurrent ? 'date' : undefined\"\n          :aria-selected=\"cell.isCurrent\"\n          :tabindex=\"disabled ? undefined : isSelectedCell(cell) ? 0 : -1\"\n          :aria-disabled=\"disabled\"\n          @focus=\"handleFocus\"\n        >\n          <el-date-picker-cell :cell=\"cell\" />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onBeforeUnmount } from 'vue'\nimport {\n  basicDateTableEmits,\n  basicDateTableProps,\n} from '../props/basic-date-table'\nimport {\n  useBasicDateTable,\n  useBasicDateTableDOM,\n} from '../composables/use-basic-date-table'\nimport ElDatePickerCell from './basic-cell-render'\n\nconst props = defineProps(basicDateTableProps)\nconst emit = defineEmits(basicDateTableEmits)\n\nconst {\n  WEEKS,\n  rows,\n  tbodyRef,\n  currentCellRef,\n\n  focus,\n  isCurrent,\n  isWeekActive,\n  isSelectedCell,\n\n  handlePickDate,\n  handleMouseUp,\n  handleMouseDown,\n  handleMouseMove,\n  handleFocus,\n} = useBasicDateTable(props, emit)\nconst { tableLabel, tableKls, getCellClasses, getRowKls, weekHeaderClass, t } =\n  useBasicDateTableDOM(props, {\n    isCurrent,\n    isWeekActive,\n  })\nlet isUnmounting = false\n\nonBeforeUnmount(() => {\n  isUnmounting = true\n})\n\ndefineExpose({\n  /**\n   * @description focus on current cell\n   */\n  focus,\n})\n</script>\n","<template>\n  <table\n    :aria-label=\"tableLabel\"\n    :class=\"tableKls\"\n    cellspacing=\"0\"\n    cellpadding=\"0\"\n    role=\"grid\"\n    @click=\"handlePickDate\"\n    @mousemove=\"handleMouseMove\"\n    @mousedown=\"handleMouseDown\"\n    @mouseup=\"handleMouseUp\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr>\n        <th v-if=\"showWeekNumber\" scope=\"col\" :class=\"weekHeaderClass\" />\n        <th\n          v-for=\"(week, key) in WEEKS\"\n          :key=\"key\"\n          :aria-label=\"t('el.datepicker.weeksFull.' + week)\"\n          scope=\"col\"\n        >\n          {{ t('el.datepicker.weeks.' + week) }}\n        </th>\n      </tr>\n      <tr\n        v-for=\"(row, rowKey) in rows\"\n        :key=\"rowKey\"\n        :class=\"getRowKls(showWeekNumber ? row[2] : row[1])\"\n      >\n        <td\n          v-for=\"(cell, columnKey) in row\"\n          :key=\"`${rowKey}.${columnKey}`\"\n          :ref=\"\n            (el) =>\n              !isUnmounting &&\n              isSelectedCell(cell) &&\n              (currentCellRef = el as HTMLElement)\n          \"\n          :class=\"getCellClasses(cell)\"\n          :aria-current=\"cell.isCurrent ? 'date' : undefined\"\n          :aria-selected=\"cell.isCurrent\"\n          :tabindex=\"disabled ? undefined : isSelectedCell(cell) ? 0 : -1\"\n          :aria-disabled=\"disabled\"\n          @focus=\"handleFocus\"\n        >\n          <el-date-picker-cell :cell=\"cell\" />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onBeforeUnmount } from 'vue'\nimport {\n  basicDateTableEmits,\n  basicDateTableProps,\n} from '../props/basic-date-table'\nimport {\n  useBasicDateTable,\n  useBasicDateTableDOM,\n} from '../composables/use-basic-date-table'\nimport ElDatePickerCell from './basic-cell-render'\n\nconst props = defineProps(basicDateTableProps)\nconst emit = defineEmits(basicDateTableEmits)\n\nconst {\n  WEEKS,\n  rows,\n  tbodyRef,\n  currentCellRef,\n\n  focus,\n  isCurrent,\n  isWeekActive,\n  isSelectedCell,\n\n  handlePickDate,\n  handleMouseUp,\n  handleMouseDown,\n  handleMouseMove,\n  handleFocus,\n} = useBasicDateTable(props, emit)\nconst { tableLabel, tableKls, getCellClasses, getRowKls, weekHeaderClass, t } =\n  useBasicDateTableDOM(props, {\n    isCurrent,\n    isWeekActive,\n  })\nlet isUnmounting = false\n\nonBeforeUnmount(() => {\n  isUnmounting = true\n})\n\ndefineExpose({\n  /**\n   * @description focus on current cell\n   */\n  focus,\n})\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const basicMonthTableProps = buildProps({\n  ...datePickerSharedProps,\n  selectionMode: selectionModeWithDefault('month'),\n})\n\nexport type BasicMonthTableProps = ExtractPropTypes<typeof basicMonthTableProps>\nexport type BasicMonthTablePropsPublic = ExtractPublicPropTypes<\n  typeof basicMonthTableProps\n>\n","<template>\n  <table\n    role=\"grid\"\n    :aria-label=\"t('el.datepicker.monthTablePrompt')\"\n    :class=\"ns.b()\"\n    @click=\"handleMonthTableClick\"\n    @mousemove=\"handleMouseMove\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr v-for=\"(row, key) in rows\" :key=\"key\">\n        <td\n          v-for=\"(cell, key_) in row\"\n          :key=\"key_\"\n          :ref=\"(el) => cell.isSelected && (currentCellRef = el as HTMLElement)\"\n          :class=\"getCellStyle(cell)\"\n          :aria-selected=\"!!cell.isSelected\"\n          :aria-label=\"t(`el.datepicker.month${+cell.text + 1}`)\"\n          :tabindex=\"cell.isSelected ? 0 : -1\"\n          @keydown.space.prevent.stop=\"handleMonthTableClick\"\n          @keydown.enter.prevent.stop=\"handleMonthTableClick\"\n        >\n          <el-date-picker-cell\n            :cell=\"{\n              ...cell,\n              renderText: t('el.datepicker.months.' + months[cell.text]),\n            }\"\n          />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { castArray, hasClass } from '@pit-element-plus/utils'\nimport { basicMonthTableProps } from '../props/basic-month-table'\nimport { datesInMonth, getValidDateOfMonth } from '../utils'\nimport ElDatePickerCell from './basic-cell-render'\n\nimport type { Dayjs } from 'dayjs'\n\ntype MonthCell = {\n  column: number\n  customClass: string | undefined\n  disabled: boolean\n  end: boolean\n  inRange: boolean\n  row: number\n  selected: Dayjs | undefined\n  isCurrent: boolean | undefined\n  isSelected: boolean\n  start: boolean\n  text: number\n  renderText: string | undefined\n  timestamp: number | undefined\n  date: Date | undefined\n  dayjs: Dayjs | undefined\n  type: 'normal' | 'today'\n}\n\nconst props = defineProps(basicMonthTableProps)\nconst emit = defineEmits(['changerange', 'pick', 'select'])\n\nconst ns = useNamespace('month-table')\n\nconst { t, lang } = useLocale()\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst months = ref(\n  props.date\n    .locale('en')\n    .localeData()\n    .monthsShort()\n    .map((_) => _.toLowerCase())\n)\nconst tableRows = ref<MonthCell[][]>([[], [], []])\nconst lastRow = ref<number>()\nconst lastColumn = ref<number>()\nconst rows = computed<MonthCell[][]>(() => {\n  const rows = tableRows.value\n\n  const now = dayjs().locale(lang.value).startOf('month')\n\n  for (let i = 0; i < 3; i++) {\n    const row = rows[i]\n    for (let j = 0; j < 4; j++) {\n      const cell = (row[j] ||= {\n        row: i,\n        column: j,\n        type: 'normal',\n        inRange: false,\n        start: false,\n        end: false,\n        text: -1,\n        disabled: false,\n        isSelected: false,\n        customClass: undefined,\n        date: undefined,\n        dayjs: undefined,\n        isCurrent: undefined,\n        selected: undefined,\n        renderText: undefined,\n        timestamp: undefined,\n      })\n\n      cell.type = 'normal'\n\n      const index = i * 4 + j\n      const calTime = props.date.startOf('year').month(index)\n\n      const calEndDate =\n        props.rangeState.endDate ||\n        props.maxDate ||\n        (props.rangeState.selecting && props.minDate) ||\n        null\n\n      cell.inRange =\n        !!(\n          props.minDate &&\n          calTime.isSameOrAfter(props.minDate, 'month') &&\n          calEndDate &&\n          calTime.isSameOrBefore(calEndDate, 'month')\n        ) ||\n        !!(\n          props.minDate &&\n          calTime.isSameOrBefore(props.minDate, 'month') &&\n          calEndDate &&\n          calTime.isSameOrAfter(calEndDate, 'month')\n        )\n\n      if (props.minDate?.isSameOrAfter(calEndDate)) {\n        cell.start = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n        cell.end = props.minDate && calTime.isSame(props.minDate, 'month')\n      } else {\n        cell.start = !!(props.minDate && calTime.isSame(props.minDate, 'month'))\n        cell.end = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n      }\n\n      const isToday = now.isSame(calTime)\n      if (isToday) {\n        cell.type = 'today'\n      }\n\n      const cellDate = calTime.toDate()\n      cell.text = index\n      cell.disabled = props.disabledDate?.(cellDate) || false\n      cell.date = cellDate\n      cell.customClass = props.cellClassName?.(cellDate)\n      cell.dayjs = calTime\n      cell.timestamp = calTime.valueOf()\n      cell.isSelected = isSelectedCell(cell)\n    }\n  }\n  return rows\n})\n\nconst focus = () => {\n  currentCellRef.value?.focus()\n}\n\nconst getCellStyle = (cell: MonthCell) => {\n  const style = {} as any\n  const year = props.date.year()\n  const today = new Date()\n  const month = cell.text\n\n  style.disabled =\n    props.disabled ||\n    (props.disabledDate\n      ? datesInMonth(props.date, year, month, lang.value).every(\n          props.disabledDate\n        )\n      : false)\n  style.current = castArray(props.parsedValue).some(\n    (date) =>\n      dayjs.isDayjs(date) && date.year() === year && date.month() === month\n  )\n  style.today = today.getFullYear() === year && today.getMonth() === month\n\n  if (cell.customClass) {\n    style[cell.customClass] = true\n  }\n  if (cell.inRange) {\n    style['in-range'] = true\n\n    if (cell.start) {\n      style['start-date'] = true\n    }\n\n    if (cell.end) {\n      style['end-date'] = true\n    }\n  }\n  return style\n}\n\nconst isSelectedCell = (cell: MonthCell) => {\n  const year = props.date.year()\n  const month = cell.text\n  return castArray(props.date).some(\n    (date) => date.year() === year && date.month() === month\n  )\n}\n\nconst handleMouseMove = (event: MouseEvent) => {\n  if (!props.rangeState.selecting) return\n\n  let target = event.target as HTMLElement\n  if (target.tagName === 'SPAN') {\n    target = target.parentNode?.parentNode as HTMLElement\n  }\n  if (target.tagName === 'DIV') {\n    target = target.parentNode as HTMLElement\n  }\n  if (target.tagName !== 'TD') return\n\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const column = (target as HTMLTableCellElement).cellIndex\n  // can not select disabled date\n  if (rows.value[row][column].disabled) return\n\n  // only update rangeState when mouse moves to a new cell\n  // this avoids frequent Date object creation and improves performance\n  if (row !== lastRow.value || column !== lastColumn.value) {\n    lastRow.value = row\n    lastColumn.value = column\n    emit('changerange', {\n      selecting: true,\n      endDate: props.date.startOf('year').month(row * 4 + column),\n    })\n  }\n}\nconst handleMonthTableClick = (event: MouseEvent | KeyboardEvent) => {\n  if (props.disabled) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (target?.tagName !== 'TD') return\n  if (hasClass(target, 'disabled')) return\n  const column = target.cellIndex\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const month = row * 4 + column\n  const newDate = props.date.startOf('year').month(month)\n  if (props.selectionMode === 'months') {\n    if (event.type === 'keydown') {\n      emit('pick', castArray(props.parsedValue), false)\n      return\n    }\n    const newMonth = getValidDateOfMonth(\n      props.date,\n      props.date.year(),\n      month,\n      lang.value,\n      props.disabledDate\n    )\n    const newValue = hasClass(target, 'current')\n      ? castArray(props.parsedValue).filter(\n          (d) =>\n            // Filter out the selected month only when both year and month match\n            // This allows remove same months from different years #20019\n            d?.year() !== newMonth.year() || d?.month() !== newMonth.month()\n        )\n      : castArray(props.parsedValue).concat([dayjs(newMonth)])\n    emit('pick', newValue)\n  } else if (props.selectionMode === 'range') {\n    if (!props.rangeState.selecting) {\n      emit('pick', { minDate: newDate, maxDate: null })\n      emit('select', true)\n    } else {\n      if (props.minDate && newDate >= props.minDate) {\n        emit('pick', { minDate: props.minDate, maxDate: newDate })\n      } else {\n        emit('pick', { minDate: newDate, maxDate: props.minDate })\n      }\n      emit('select', false)\n    }\n  } else {\n    emit('pick', month)\n  }\n}\n\nwatch(\n  () => props.date,\n  async () => {\n    if (tbodyRef.value?.contains(document.activeElement)) {\n      await nextTick()\n      currentCellRef.value?.focus()\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description focus current cell\n   */\n  focus,\n})\n</script>\n","<template>\n  <table\n    role=\"grid\"\n    :aria-label=\"t('el.datepicker.monthTablePrompt')\"\n    :class=\"ns.b()\"\n    @click=\"handleMonthTableClick\"\n    @mousemove=\"handleMouseMove\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr v-for=\"(row, key) in rows\" :key=\"key\">\n        <td\n          v-for=\"(cell, key_) in row\"\n          :key=\"key_\"\n          :ref=\"(el) => cell.isSelected && (currentCellRef = el as HTMLElement)\"\n          :class=\"getCellStyle(cell)\"\n          :aria-selected=\"!!cell.isSelected\"\n          :aria-label=\"t(`el.datepicker.month${+cell.text + 1}`)\"\n          :tabindex=\"cell.isSelected ? 0 : -1\"\n          @keydown.space.prevent.stop=\"handleMonthTableClick\"\n          @keydown.enter.prevent.stop=\"handleMonthTableClick\"\n        >\n          <el-date-picker-cell\n            :cell=\"{\n              ...cell,\n              renderText: t('el.datepicker.months.' + months[cell.text]),\n            }\"\n          />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { castArray, hasClass } from '@pit-element-plus/utils'\nimport { basicMonthTableProps } from '../props/basic-month-table'\nimport { datesInMonth, getValidDateOfMonth } from '../utils'\nimport ElDatePickerCell from './basic-cell-render'\n\nimport type { Dayjs } from 'dayjs'\n\ntype MonthCell = {\n  column: number\n  customClass: string | undefined\n  disabled: boolean\n  end: boolean\n  inRange: boolean\n  row: number\n  selected: Dayjs | undefined\n  isCurrent: boolean | undefined\n  isSelected: boolean\n  start: boolean\n  text: number\n  renderText: string | undefined\n  timestamp: number | undefined\n  date: Date | undefined\n  dayjs: Dayjs | undefined\n  type: 'normal' | 'today'\n}\n\nconst props = defineProps(basicMonthTableProps)\nconst emit = defineEmits(['changerange', 'pick', 'select'])\n\nconst ns = useNamespace('month-table')\n\nconst { t, lang } = useLocale()\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst months = ref(\n  props.date\n    .locale('en')\n    .localeData()\n    .monthsShort()\n    .map((_) => _.toLowerCase())\n)\nconst tableRows = ref<MonthCell[][]>([[], [], []])\nconst lastRow = ref<number>()\nconst lastColumn = ref<number>()\nconst rows = computed<MonthCell[][]>(() => {\n  const rows = tableRows.value\n\n  const now = dayjs().locale(lang.value).startOf('month')\n\n  for (let i = 0; i < 3; i++) {\n    const row = rows[i]\n    for (let j = 0; j < 4; j++) {\n      const cell = (row[j] ||= {\n        row: i,\n        column: j,\n        type: 'normal',\n        inRange: false,\n        start: false,\n        end: false,\n        text: -1,\n        disabled: false,\n        isSelected: false,\n        customClass: undefined,\n        date: undefined,\n        dayjs: undefined,\n        isCurrent: undefined,\n        selected: undefined,\n        renderText: undefined,\n        timestamp: undefined,\n      })\n\n      cell.type = 'normal'\n\n      const index = i * 4 + j\n      const calTime = props.date.startOf('year').month(index)\n\n      const calEndDate =\n        props.rangeState.endDate ||\n        props.maxDate ||\n        (props.rangeState.selecting && props.minDate) ||\n        null\n\n      cell.inRange =\n        !!(\n          props.minDate &&\n          calTime.isSameOrAfter(props.minDate, 'month') &&\n          calEndDate &&\n          calTime.isSameOrBefore(calEndDate, 'month')\n        ) ||\n        !!(\n          props.minDate &&\n          calTime.isSameOrBefore(props.minDate, 'month') &&\n          calEndDate &&\n          calTime.isSameOrAfter(calEndDate, 'month')\n        )\n\n      if (props.minDate?.isSameOrAfter(calEndDate)) {\n        cell.start = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n        cell.end = props.minDate && calTime.isSame(props.minDate, 'month')\n      } else {\n        cell.start = !!(props.minDate && calTime.isSame(props.minDate, 'month'))\n        cell.end = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n      }\n\n      const isToday = now.isSame(calTime)\n      if (isToday) {\n        cell.type = 'today'\n      }\n\n      const cellDate = calTime.toDate()\n      cell.text = index\n      cell.disabled = props.disabledDate?.(cellDate) || false\n      cell.date = cellDate\n      cell.customClass = props.cellClassName?.(cellDate)\n      cell.dayjs = calTime\n      cell.timestamp = calTime.valueOf()\n      cell.isSelected = isSelectedCell(cell)\n    }\n  }\n  return rows\n})\n\nconst focus = () => {\n  currentCellRef.value?.focus()\n}\n\nconst getCellStyle = (cell: MonthCell) => {\n  const style = {} as any\n  const year = props.date.year()\n  const today = new Date()\n  const month = cell.text\n\n  style.disabled =\n    props.disabled ||\n    (props.disabledDate\n      ? datesInMonth(props.date, year, month, lang.value).every(\n          props.disabledDate\n        )\n      : false)\n  style.current = castArray(props.parsedValue).some(\n    (date) =>\n      dayjs.isDayjs(date) && date.year() === year && date.month() === month\n  )\n  style.today = today.getFullYear() === year && today.getMonth() === month\n\n  if (cell.customClass) {\n    style[cell.customClass] = true\n  }\n  if (cell.inRange) {\n    style['in-range'] = true\n\n    if (cell.start) {\n      style['start-date'] = true\n    }\n\n    if (cell.end) {\n      style['end-date'] = true\n    }\n  }\n  return style\n}\n\nconst isSelectedCell = (cell: MonthCell) => {\n  const year = props.date.year()\n  const month = cell.text\n  return castArray(props.date).some(\n    (date) => date.year() === year && date.month() === month\n  )\n}\n\nconst handleMouseMove = (event: MouseEvent) => {\n  if (!props.rangeState.selecting) return\n\n  let target = event.target as HTMLElement\n  if (target.tagName === 'SPAN') {\n    target = target.parentNode?.parentNode as HTMLElement\n  }\n  if (target.tagName === 'DIV') {\n    target = target.parentNode as HTMLElement\n  }\n  if (target.tagName !== 'TD') return\n\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const column = (target as HTMLTableCellElement).cellIndex\n  // can not select disabled date\n  if (rows.value[row][column].disabled) return\n\n  // only update rangeState when mouse moves to a new cell\n  // this avoids frequent Date object creation and improves performance\n  if (row !== lastRow.value || column !== lastColumn.value) {\n    lastRow.value = row\n    lastColumn.value = column\n    emit('changerange', {\n      selecting: true,\n      endDate: props.date.startOf('year').month(row * 4 + column),\n    })\n  }\n}\nconst handleMonthTableClick = (event: MouseEvent | KeyboardEvent) => {\n  if (props.disabled) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (target?.tagName !== 'TD') return\n  if (hasClass(target, 'disabled')) return\n  const column = target.cellIndex\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const month = row * 4 + column\n  const newDate = props.date.startOf('year').month(month)\n  if (props.selectionMode === 'months') {\n    if (event.type === 'keydown') {\n      emit('pick', castArray(props.parsedValue), false)\n      return\n    }\n    const newMonth = getValidDateOfMonth(\n      props.date,\n      props.date.year(),\n      month,\n      lang.value,\n      props.disabledDate\n    )\n    const newValue = hasClass(target, 'current')\n      ? castArray(props.parsedValue).filter(\n          (d) =>\n            // Filter out the selected month only when both year and month match\n            // This allows remove same months from different years #20019\n            d?.year() !== newMonth.year() || d?.month() !== newMonth.month()\n        )\n      : castArray(props.parsedValue).concat([dayjs(newMonth)])\n    emit('pick', newValue)\n  } else if (props.selectionMode === 'range') {\n    if (!props.rangeState.selecting) {\n      emit('pick', { minDate: newDate, maxDate: null })\n      emit('select', true)\n    } else {\n      if (props.minDate && newDate >= props.minDate) {\n        emit('pick', { minDate: props.minDate, maxDate: newDate })\n      } else {\n        emit('pick', { minDate: newDate, maxDate: props.minDate })\n      }\n      emit('select', false)\n    }\n  } else {\n    emit('pick', month)\n  }\n}\n\nwatch(\n  () => props.date,\n  async () => {\n    if (tbodyRef.value?.contains(document.activeElement)) {\n      await nextTick()\n      currentCellRef.value?.focus()\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description focus current cell\n   */\n  focus,\n})\n</script>\n","<template>\n  <table\n    role=\"grid\"\n    :aria-label=\"t('el.datepicker.monthTablePrompt')\"\n    :class=\"ns.b()\"\n    @click=\"handleMonthTableClick\"\n    @mousemove=\"handleMouseMove\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr v-for=\"(row, key) in rows\" :key=\"key\">\n        <td\n          v-for=\"(cell, key_) in row\"\n          :key=\"key_\"\n          :ref=\"(el) => cell.isSelected && (currentCellRef = el as HTMLElement)\"\n          :class=\"getCellStyle(cell)\"\n          :aria-selected=\"!!cell.isSelected\"\n          :aria-label=\"t(`el.datepicker.month${+cell.text + 1}`)\"\n          :tabindex=\"cell.isSelected ? 0 : -1\"\n          @keydown.space.prevent.stop=\"handleMonthTableClick\"\n          @keydown.enter.prevent.stop=\"handleMonthTableClick\"\n        >\n          <el-date-picker-cell\n            :cell=\"{\n              ...cell,\n              renderText: t('el.datepicker.months.' + months[cell.text]),\n            }\"\n          />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { castArray, hasClass } from '@pit-element-plus/utils'\nimport { basicMonthTableProps } from '../props/basic-month-table'\nimport { datesInMonth, getValidDateOfMonth } from '../utils'\nimport ElDatePickerCell from './basic-cell-render'\n\nimport type { Dayjs } from 'dayjs'\n\ntype MonthCell = {\n  column: number\n  customClass: string | undefined\n  disabled: boolean\n  end: boolean\n  inRange: boolean\n  row: number\n  selected: Dayjs | undefined\n  isCurrent: boolean | undefined\n  isSelected: boolean\n  start: boolean\n  text: number\n  renderText: string | undefined\n  timestamp: number | undefined\n  date: Date | undefined\n  dayjs: Dayjs | undefined\n  type: 'normal' | 'today'\n}\n\nconst props = defineProps(basicMonthTableProps)\nconst emit = defineEmits(['changerange', 'pick', 'select'])\n\nconst ns = useNamespace('month-table')\n\nconst { t, lang } = useLocale()\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst months = ref(\n  props.date\n    .locale('en')\n    .localeData()\n    .monthsShort()\n    .map((_) => _.toLowerCase())\n)\nconst tableRows = ref<MonthCell[][]>([[], [], []])\nconst lastRow = ref<number>()\nconst lastColumn = ref<number>()\nconst rows = computed<MonthCell[][]>(() => {\n  const rows = tableRows.value\n\n  const now = dayjs().locale(lang.value).startOf('month')\n\n  for (let i = 0; i < 3; i++) {\n    const row = rows[i]\n    for (let j = 0; j < 4; j++) {\n      const cell = (row[j] ||= {\n        row: i,\n        column: j,\n        type: 'normal',\n        inRange: false,\n        start: false,\n        end: false,\n        text: -1,\n        disabled: false,\n        isSelected: false,\n        customClass: undefined,\n        date: undefined,\n        dayjs: undefined,\n        isCurrent: undefined,\n        selected: undefined,\n        renderText: undefined,\n        timestamp: undefined,\n      })\n\n      cell.type = 'normal'\n\n      const index = i * 4 + j\n      const calTime = props.date.startOf('year').month(index)\n\n      const calEndDate =\n        props.rangeState.endDate ||\n        props.maxDate ||\n        (props.rangeState.selecting && props.minDate) ||\n        null\n\n      cell.inRange =\n        !!(\n          props.minDate &&\n          calTime.isSameOrAfter(props.minDate, 'month') &&\n          calEndDate &&\n          calTime.isSameOrBefore(calEndDate, 'month')\n        ) ||\n        !!(\n          props.minDate &&\n          calTime.isSameOrBefore(props.minDate, 'month') &&\n          calEndDate &&\n          calTime.isSameOrAfter(calEndDate, 'month')\n        )\n\n      if (props.minDate?.isSameOrAfter(calEndDate)) {\n        cell.start = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n        cell.end = props.minDate && calTime.isSame(props.minDate, 'month')\n      } else {\n        cell.start = !!(props.minDate && calTime.isSame(props.minDate, 'month'))\n        cell.end = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n      }\n\n      const isToday = now.isSame(calTime)\n      if (isToday) {\n        cell.type = 'today'\n      }\n\n      const cellDate = calTime.toDate()\n      cell.text = index\n      cell.disabled = props.disabledDate?.(cellDate) || false\n      cell.date = cellDate\n      cell.customClass = props.cellClassName?.(cellDate)\n      cell.dayjs = calTime\n      cell.timestamp = calTime.valueOf()\n      cell.isSelected = isSelectedCell(cell)\n    }\n  }\n  return rows\n})\n\nconst focus = () => {\n  currentCellRef.value?.focus()\n}\n\nconst getCellStyle = (cell: MonthCell) => {\n  const style = {} as any\n  const year = props.date.year()\n  const today = new Date()\n  const month = cell.text\n\n  style.disabled =\n    props.disabled ||\n    (props.disabledDate\n      ? datesInMonth(props.date, year, month, lang.value).every(\n          props.disabledDate\n        )\n      : false)\n  style.current = castArray(props.parsedValue).some(\n    (date) =>\n      dayjs.isDayjs(date) && date.year() === year && date.month() === month\n  )\n  style.today = today.getFullYear() === year && today.getMonth() === month\n\n  if (cell.customClass) {\n    style[cell.customClass] = true\n  }\n  if (cell.inRange) {\n    style['in-range'] = true\n\n    if (cell.start) {\n      style['start-date'] = true\n    }\n\n    if (cell.end) {\n      style['end-date'] = true\n    }\n  }\n  return style\n}\n\nconst isSelectedCell = (cell: MonthCell) => {\n  const year = props.date.year()\n  const month = cell.text\n  return castArray(props.date).some(\n    (date) => date.year() === year && date.month() === month\n  )\n}\n\nconst handleMouseMove = (event: MouseEvent) => {\n  if (!props.rangeState.selecting) return\n\n  let target = event.target as HTMLElement\n  if (target.tagName === 'SPAN') {\n    target = target.parentNode?.parentNode as HTMLElement\n  }\n  if (target.tagName === 'DIV') {\n    target = target.parentNode as HTMLElement\n  }\n  if (target.tagName !== 'TD') return\n\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const column = (target as HTMLTableCellElement).cellIndex\n  // can not select disabled date\n  if (rows.value[row][column].disabled) return\n\n  // only update rangeState when mouse moves to a new cell\n  // this avoids frequent Date object creation and improves performance\n  if (row !== lastRow.value || column !== lastColumn.value) {\n    lastRow.value = row\n    lastColumn.value = column\n    emit('changerange', {\n      selecting: true,\n      endDate: props.date.startOf('year').month(row * 4 + column),\n    })\n  }\n}\nconst handleMonthTableClick = (event: MouseEvent | KeyboardEvent) => {\n  if (props.disabled) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (target?.tagName !== 'TD') return\n  if (hasClass(target, 'disabled')) return\n  const column = target.cellIndex\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const month = row * 4 + column\n  const newDate = props.date.startOf('year').month(month)\n  if (props.selectionMode === 'months') {\n    if (event.type === 'keydown') {\n      emit('pick', castArray(props.parsedValue), false)\n      return\n    }\n    const newMonth = getValidDateOfMonth(\n      props.date,\n      props.date.year(),\n      month,\n      lang.value,\n      props.disabledDate\n    )\n    const newValue = hasClass(target, 'current')\n      ? castArray(props.parsedValue).filter(\n          (d) =>\n            // Filter out the selected month only when both year and month match\n            // This allows remove same months from different years #20019\n            d?.year() !== newMonth.year() || d?.month() !== newMonth.month()\n        )\n      : castArray(props.parsedValue).concat([dayjs(newMonth)])\n    emit('pick', newValue)\n  } else if (props.selectionMode === 'range') {\n    if (!props.rangeState.selecting) {\n      emit('pick', { minDate: newDate, maxDate: null })\n      emit('select', true)\n    } else {\n      if (props.minDate && newDate >= props.minDate) {\n        emit('pick', { minDate: props.minDate, maxDate: newDate })\n      } else {\n        emit('pick', { minDate: newDate, maxDate: props.minDate })\n      }\n      emit('select', false)\n    }\n  } else {\n    emit('pick', month)\n  }\n}\n\nwatch(\n  () => props.date,\n  async () => {\n    if (tbodyRef.value?.contains(document.activeElement)) {\n      await nextTick()\n      currentCellRef.value?.focus()\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description focus current cell\n   */\n  focus,\n})\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const basicYearTableProps = buildProps({\n  ...datePickerSharedProps,\n  selectionMode: selectionModeWithDefault('year'),\n} as const)\n\nexport type BasicYearTableProps = ExtractPropTypes<typeof basicYearTableProps>\nexport type BasicYearTablePropsPublic = ExtractPublicPropTypes<\n  typeof basicYearTableProps\n>\n","<template>\n  <table\n    role=\"grid\"\n    :aria-label=\"t('el.datepicker.yearTablePrompt')\"\n    :class=\"ns.b()\"\n    @click=\"handleYearTableClick\"\n    @mousemove=\"handleMouseMove\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr v-for=\"(row, rowKey) in rows\" :key=\"rowKey\">\n        <td\n          v-for=\"(cell, cellKey) in row\"\n          :key=\"`${rowKey}_${cellKey}`\"\n          :ref=\"(el) => cell.isSelected && (currentCellRef = el as HTMLElement)\"\n          class=\"available\"\n          :class=\"getCellKls(cell)\"\n          :aria-selected=\"cell.isSelected\"\n          :aria-label=\"String(cell.text)\"\n          :tabindex=\"cell.isSelected ? 0 : -1\"\n          @keydown.space.prevent.stop=\"handleYearTableClick\"\n          @keydown.enter.prevent.stop=\"handleYearTableClick\"\n        >\n          <el-date-picker-cell :cell=\"cell\" />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { rangeArr } from '@pit-element-plus/components/time-picker'\nimport { castArray, hasClass } from '@pit-element-plus/utils'\nimport { basicYearTableProps } from '../props/basic-year-table'\nimport { getValidDateOfYear } from '../utils'\nimport ElDatePickerCell from './basic-cell-render'\n\nimport type { Dayjs } from 'dayjs'\n\ntype YearCell = {\n  column: number\n  customClass: string | undefined\n  disabled: boolean\n  end: boolean\n  inRange: boolean\n  row: number\n  selected: Dayjs | undefined\n  isCurrent: boolean | undefined\n  isSelected: boolean\n  start: boolean\n  text: number\n  renderText: string | undefined\n  timestamp: number | undefined\n  type: 'normal' | 'today'\n  date: Date | undefined\n  dayjs: Dayjs | undefined\n}\n\nconst datesInYear = (year: number, lang: string) => {\n  const firstDay = dayjs(String(year)).locale(lang).startOf('year')\n  const lastDay = firstDay.endOf('year')\n  const numOfDays = lastDay.dayOfYear()\n  return rangeArr(numOfDays).map((n) => firstDay.add(n, 'day').toDate())\n}\n\nconst props = defineProps(basicYearTableProps)\nconst emit = defineEmits(['changerange', 'pick', 'select'])\n\nconst ns = useNamespace('year-table')\n\nconst { t, lang } = useLocale()\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst startYear = computed(() => {\n  return Math.floor(props.date.year() / 10) * 10\n})\n\nconst tableRows = ref<YearCell[][]>([[], [], []])\nconst lastRow = ref<number>()\nconst lastColumn = ref<number>()\nconst rows = computed(() => {\n  const rows = tableRows.value\n  const now = dayjs().locale(lang.value).startOf('year')\n\n  for (let i = 0; i < 3; i++) {\n    const row = rows[i]\n    for (let j = 0; j < 4; j++) {\n      if (i * 4 + j >= 10) {\n        break\n      }\n      let cell = row[j]\n      if (!cell) {\n        cell = {\n          row: i,\n          column: j,\n          type: 'normal',\n          inRange: false,\n          start: false,\n          end: false,\n          text: -1,\n          disabled: false,\n          isSelected: false,\n          customClass: undefined,\n          date: undefined,\n          dayjs: undefined,\n          isCurrent: undefined,\n          selected: undefined,\n          renderText: undefined,\n          timestamp: undefined,\n        }\n      }\n      cell.type = 'normal'\n      const index = i * 4 + j + startYear.value\n      const calTime = dayjs().year(index)\n\n      const calEndDate =\n        props.rangeState.endDate ||\n        props.maxDate ||\n        (props.rangeState.selecting && props.minDate) ||\n        null\n\n      cell.inRange =\n        !!(\n          props.minDate &&\n          calTime.isSameOrAfter(props.minDate, 'year') &&\n          calEndDate &&\n          calTime.isSameOrBefore(calEndDate, 'year')\n        ) ||\n        !!(\n          props.minDate &&\n          calTime.isSameOrBefore(props.minDate, 'year') &&\n          calEndDate &&\n          calTime.isSameOrAfter(calEndDate, 'year')\n        )\n\n      if (props.minDate?.isSameOrAfter(calEndDate)) {\n        cell.start = !!(calEndDate && calTime.isSame(calEndDate, 'year'))\n        cell.end = !!(props.minDate && calTime.isSame(props.minDate, 'year'))\n      } else {\n        cell.start = !!(props.minDate && calTime.isSame(props.minDate, 'year'))\n        cell.end = !!(calEndDate && calTime.isSame(calEndDate, 'year'))\n      }\n\n      const isToday = now.isSame(calTime)\n      if (isToday) {\n        cell.type = 'today'\n      }\n      cell.text = index\n      const cellDate = calTime.toDate()\n      cell.disabled = props.disabledDate?.(cellDate) || false\n      cell.date = cellDate\n      cell.customClass = props.cellClassName?.(cellDate)\n      cell.dayjs = calTime\n      cell.timestamp = calTime.valueOf()\n      cell.isSelected = isSelectedCell(cell)\n      row[j] = cell\n    }\n  }\n  return rows\n})\n\nconst focus = () => {\n  currentCellRef.value?.focus()\n}\n\nconst getCellKls = (cell: YearCell) => {\n  const kls: Record<string, boolean> = {}\n  const today = dayjs().locale(lang.value)\n  const year = cell.text\n\n  kls.disabled =\n    props.disabled ||\n    (props.disabledDate\n      ? datesInYear(year, lang.value).every(props.disabledDate)\n      : false)\n\n  kls.today = today.year() === year\n  kls.current = castArray(props.parsedValue).some((d) => d!.year() === year)\n\n  if (cell.customClass) {\n    kls[cell.customClass] = true\n  }\n  if (cell.inRange) {\n    kls['in-range'] = true\n\n    if (cell.start) {\n      kls['start-date'] = true\n    }\n\n    if (cell.end) {\n      kls['end-date'] = true\n    }\n  }\n  return kls\n}\n\nconst isSelectedCell = (cell: YearCell) => {\n  const year = cell.text\n  return castArray(props.date).some((date) => date.year() === year)\n}\n\nconst handleYearTableClick = (event: MouseEvent | KeyboardEvent) => {\n  if (props.disabled) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (!target || !target.textContent || hasClass(target, 'disabled')) return\n\n  const column = target.cellIndex\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const selectedYear = row * 4 + column + startYear.value\n  const newDate = dayjs().year(selectedYear)\n  if (props.selectionMode === 'range') {\n    if (!props.rangeState.selecting) {\n      emit('pick', { minDate: newDate, maxDate: null })\n      emit('select', true)\n    } else {\n      if (props.minDate && newDate >= props.minDate) {\n        emit('pick', { minDate: props.minDate, maxDate: newDate })\n      } else {\n        emit('pick', { minDate: newDate, maxDate: props.minDate })\n      }\n      emit('select', false)\n    }\n  } else if (props.selectionMode === 'years') {\n    if (event.type === 'keydown') {\n      emit('pick', castArray(props.parsedValue), false)\n      return\n    }\n    const vaildYear = getValidDateOfYear(\n      newDate.startOf('year'),\n      lang.value,\n      props.disabledDate\n    )\n    const newValue = hasClass(target, 'current')\n      ? castArray(props.parsedValue).filter((d) => d?.year() !== selectedYear)\n      : castArray(props.parsedValue).concat([vaildYear])\n    emit('pick', newValue)\n  } else {\n    emit('pick', selectedYear)\n  }\n}\n\nconst handleMouseMove = (event: MouseEvent) => {\n  if (!props.rangeState.selecting) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (!target) return\n\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const column = (target as HTMLTableCellElement).cellIndex\n\n  // can not select disabled date\n  if (rows.value[row][column].disabled) return\n\n  // only update rangeState when mouse moves to a new cell\n  // this avoids frequent Date object creation and improves performance\n  if (row !== lastRow.value || column !== lastColumn.value) {\n    lastRow.value = row\n    lastColumn.value = column\n    emit('changerange', {\n      selecting: true,\n      endDate: dayjs()\n        .year(startYear.value)\n        .add(row * 4 + column, 'year'),\n    })\n  }\n}\n\nwatch(\n  () => props.date,\n  async () => {\n    if (tbodyRef.value?.contains(document.activeElement)) {\n      await nextTick()\n      currentCellRef.value?.focus()\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description focus on the current cell\n   */\n  focus,\n})\n</script>\n","<template>\n  <table\n    role=\"grid\"\n    :aria-label=\"t('el.datepicker.yearTablePrompt')\"\n    :class=\"ns.b()\"\n    @click=\"handleYearTableClick\"\n    @mousemove=\"handleMouseMove\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr v-for=\"(row, rowKey) in rows\" :key=\"rowKey\">\n        <td\n          v-for=\"(cell, cellKey) in row\"\n          :key=\"`${rowKey}_${cellKey}`\"\n          :ref=\"(el) => cell.isSelected && (currentCellRef = el as HTMLElement)\"\n          class=\"available\"\n          :class=\"getCellKls(cell)\"\n          :aria-selected=\"cell.isSelected\"\n          :aria-label=\"String(cell.text)\"\n          :tabindex=\"cell.isSelected ? 0 : -1\"\n          @keydown.space.prevent.stop=\"handleYearTableClick\"\n          @keydown.enter.prevent.stop=\"handleYearTableClick\"\n        >\n          <el-date-picker-cell :cell=\"cell\" />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { rangeArr } from '@pit-element-plus/components/time-picker'\nimport { castArray, hasClass } from '@pit-element-plus/utils'\nimport { basicYearTableProps } from '../props/basic-year-table'\nimport { getValidDateOfYear } from '../utils'\nimport ElDatePickerCell from './basic-cell-render'\n\nimport type { Dayjs } from 'dayjs'\n\ntype YearCell = {\n  column: number\n  customClass: string | undefined\n  disabled: boolean\n  end: boolean\n  inRange: boolean\n  row: number\n  selected: Dayjs | undefined\n  isCurrent: boolean | undefined\n  isSelected: boolean\n  start: boolean\n  text: number\n  renderText: string | undefined\n  timestamp: number | undefined\n  type: 'normal' | 'today'\n  date: Date | undefined\n  dayjs: Dayjs | undefined\n}\n\nconst datesInYear = (year: number, lang: string) => {\n  const firstDay = dayjs(String(year)).locale(lang).startOf('year')\n  const lastDay = firstDay.endOf('year')\n  const numOfDays = lastDay.dayOfYear()\n  return rangeArr(numOfDays).map((n) => firstDay.add(n, 'day').toDate())\n}\n\nconst props = defineProps(basicYearTableProps)\nconst emit = defineEmits(['changerange', 'pick', 'select'])\n\nconst ns = useNamespace('year-table')\n\nconst { t, lang } = useLocale()\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst startYear = computed(() => {\n  return Math.floor(props.date.year() / 10) * 10\n})\n\nconst tableRows = ref<YearCell[][]>([[], [], []])\nconst lastRow = ref<number>()\nconst lastColumn = ref<number>()\nconst rows = computed(() => {\n  const rows = tableRows.value\n  const now = dayjs().locale(lang.value).startOf('year')\n\n  for (let i = 0; i < 3; i++) {\n    const row = rows[i]\n    for (let j = 0; j < 4; j++) {\n      if (i * 4 + j >= 10) {\n        break\n      }\n      let cell = row[j]\n      if (!cell) {\n        cell = {\n          row: i,\n          column: j,\n          type: 'normal',\n          inRange: false,\n          start: false,\n          end: false,\n          text: -1,\n          disabled: false,\n          isSelected: false,\n          customClass: undefined,\n          date: undefined,\n          dayjs: undefined,\n          isCurrent: undefined,\n          selected: undefined,\n          renderText: undefined,\n          timestamp: undefined,\n        }\n      }\n      cell.type = 'normal'\n      const index = i * 4 + j + startYear.value\n      const calTime = dayjs().year(index)\n\n      const calEndDate =\n        props.rangeState.endDate ||\n        props.maxDate ||\n        (props.rangeState.selecting && props.minDate) ||\n        null\n\n      cell.inRange =\n        !!(\n          props.minDate &&\n          calTime.isSameOrAfter(props.minDate, 'year') &&\n          calEndDate &&\n          calTime.isSameOrBefore(calEndDate, 'year')\n        ) ||\n        !!(\n          props.minDate &&\n          calTime.isSameOrBefore(props.minDate, 'year') &&\n          calEndDate &&\n          calTime.isSameOrAfter(calEndDate, 'year')\n        )\n\n      if (props.minDate?.isSameOrAfter(calEndDate)) {\n        cell.start = !!(calEndDate && calTime.isSame(calEndDate, 'year'))\n        cell.end = !!(props.minDate && calTime.isSame(props.minDate, 'year'))\n      } else {\n        cell.start = !!(props.minDate && calTime.isSame(props.minDate, 'year'))\n        cell.end = !!(calEndDate && calTime.isSame(calEndDate, 'year'))\n      }\n\n      const isToday = now.isSame(calTime)\n      if (isToday) {\n        cell.type = 'today'\n      }\n      cell.text = index\n      const cellDate = calTime.toDate()\n      cell.disabled = props.disabledDate?.(cellDate) || false\n      cell.date = cellDate\n      cell.customClass = props.cellClassName?.(cellDate)\n      cell.dayjs = calTime\n      cell.timestamp = calTime.valueOf()\n      cell.isSelected = isSelectedCell(cell)\n      row[j] = cell\n    }\n  }\n  return rows\n})\n\nconst focus = () => {\n  currentCellRef.value?.focus()\n}\n\nconst getCellKls = (cell: YearCell) => {\n  const kls: Record<string, boolean> = {}\n  const today = dayjs().locale(lang.value)\n  const year = cell.text\n\n  kls.disabled =\n    props.disabled ||\n    (props.disabledDate\n      ? datesInYear(year, lang.value).every(props.disabledDate)\n      : false)\n\n  kls.today = today.year() === year\n  kls.current = castArray(props.parsedValue).some((d) => d!.year() === year)\n\n  if (cell.customClass) {\n    kls[cell.customClass] = true\n  }\n  if (cell.inRange) {\n    kls['in-range'] = true\n\n    if (cell.start) {\n      kls['start-date'] = true\n    }\n\n    if (cell.end) {\n      kls['end-date'] = true\n    }\n  }\n  return kls\n}\n\nconst isSelectedCell = (cell: YearCell) => {\n  const year = cell.text\n  return castArray(props.date).some((date) => date.year() === year)\n}\n\nconst handleYearTableClick = (event: MouseEvent | KeyboardEvent) => {\n  if (props.disabled) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (!target || !target.textContent || hasClass(target, 'disabled')) return\n\n  const column = target.cellIndex\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const selectedYear = row * 4 + column + startYear.value\n  const newDate = dayjs().year(selectedYear)\n  if (props.selectionMode === 'range') {\n    if (!props.rangeState.selecting) {\n      emit('pick', { minDate: newDate, maxDate: null })\n      emit('select', true)\n    } else {\n      if (props.minDate && newDate >= props.minDate) {\n        emit('pick', { minDate: props.minDate, maxDate: newDate })\n      } else {\n        emit('pick', { minDate: newDate, maxDate: props.minDate })\n      }\n      emit('select', false)\n    }\n  } else if (props.selectionMode === 'years') {\n    if (event.type === 'keydown') {\n      emit('pick', castArray(props.parsedValue), false)\n      return\n    }\n    const vaildYear = getValidDateOfYear(\n      newDate.startOf('year'),\n      lang.value,\n      props.disabledDate\n    )\n    const newValue = hasClass(target, 'current')\n      ? castArray(props.parsedValue).filter((d) => d?.year() !== selectedYear)\n      : castArray(props.parsedValue).concat([vaildYear])\n    emit('pick', newValue)\n  } else {\n    emit('pick', selectedYear)\n  }\n}\n\nconst handleMouseMove = (event: MouseEvent) => {\n  if (!props.rangeState.selecting) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (!target) return\n\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const column = (target as HTMLTableCellElement).cellIndex\n\n  // can not select disabled date\n  if (rows.value[row][column].disabled) return\n\n  // only update rangeState when mouse moves to a new cell\n  // this avoids frequent Date object creation and improves performance\n  if (row !== lastRow.value || column !== lastColumn.value) {\n    lastRow.value = row\n    lastColumn.value = column\n    emit('changerange', {\n      selecting: true,\n      endDate: dayjs()\n        .year(startYear.value)\n        .add(row * 4 + column, 'year'),\n    })\n  }\n}\n\nwatch(\n  () => props.date,\n  async () => {\n    if (tbodyRef.value?.contains(document.activeElement)) {\n      await nextTick()\n      currentCellRef.value?.focus()\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description focus on the current cell\n   */\n  focus,\n})\n</script>\n","<template>\n  <table\n    role=\"grid\"\n    :aria-label=\"t('el.datepicker.yearTablePrompt')\"\n    :class=\"ns.b()\"\n    @click=\"handleYearTableClick\"\n    @mousemove=\"handleMouseMove\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr v-for=\"(row, rowKey) in rows\" :key=\"rowKey\">\n        <td\n          v-for=\"(cell, cellKey) in row\"\n          :key=\"`${rowKey}_${cellKey}`\"\n          :ref=\"(el) => cell.isSelected && (currentCellRef = el as HTMLElement)\"\n          class=\"available\"\n          :class=\"getCellKls(cell)\"\n          :aria-selected=\"cell.isSelected\"\n          :aria-label=\"String(cell.text)\"\n          :tabindex=\"cell.isSelected ? 0 : -1\"\n          @keydown.space.prevent.stop=\"handleYearTableClick\"\n          @keydown.enter.prevent.stop=\"handleYearTableClick\"\n        >\n          <el-date-picker-cell :cell=\"cell\" />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { rangeArr } from '@pit-element-plus/components/time-picker'\nimport { castArray, hasClass } from '@pit-element-plus/utils'\nimport { basicYearTableProps } from '../props/basic-year-table'\nimport { getValidDateOfYear } from '../utils'\nimport ElDatePickerCell from './basic-cell-render'\n\nimport type { Dayjs } from 'dayjs'\n\ntype YearCell = {\n  column: number\n  customClass: string | undefined\n  disabled: boolean\n  end: boolean\n  inRange: boolean\n  row: number\n  selected: Dayjs | undefined\n  isCurrent: boolean | undefined\n  isSelected: boolean\n  start: boolean\n  text: number\n  renderText: string | undefined\n  timestamp: number | undefined\n  type: 'normal' | 'today'\n  date: Date | undefined\n  dayjs: Dayjs | undefined\n}\n\nconst datesInYear = (year: number, lang: string) => {\n  const firstDay = dayjs(String(year)).locale(lang).startOf('year')\n  const lastDay = firstDay.endOf('year')\n  const numOfDays = lastDay.dayOfYear()\n  return rangeArr(numOfDays).map((n) => firstDay.add(n, 'day').toDate())\n}\n\nconst props = defineProps(basicYearTableProps)\nconst emit = defineEmits(['changerange', 'pick', 'select'])\n\nconst ns = useNamespace('year-table')\n\nconst { t, lang } = useLocale()\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst startYear = computed(() => {\n  return Math.floor(props.date.year() / 10) * 10\n})\n\nconst tableRows = ref<YearCell[][]>([[], [], []])\nconst lastRow = ref<number>()\nconst lastColumn = ref<number>()\nconst rows = computed(() => {\n  const rows = tableRows.value\n  const now = dayjs().locale(lang.value).startOf('year')\n\n  for (let i = 0; i < 3; i++) {\n    const row = rows[i]\n    for (let j = 0; j < 4; j++) {\n      if (i * 4 + j >= 10) {\n        break\n      }\n      let cell = row[j]\n      if (!cell) {\n        cell = {\n          row: i,\n          column: j,\n          type: 'normal',\n          inRange: false,\n          start: false,\n          end: false,\n          text: -1,\n          disabled: false,\n          isSelected: false,\n          customClass: undefined,\n          date: undefined,\n          dayjs: undefined,\n          isCurrent: undefined,\n          selected: undefined,\n          renderText: undefined,\n          timestamp: undefined,\n        }\n      }\n      cell.type = 'normal'\n      const index = i * 4 + j + startYear.value\n      const calTime = dayjs().year(index)\n\n      const calEndDate =\n        props.rangeState.endDate ||\n        props.maxDate ||\n        (props.rangeState.selecting && props.minDate) ||\n        null\n\n      cell.inRange =\n        !!(\n          props.minDate &&\n          calTime.isSameOrAfter(props.minDate, 'year') &&\n          calEndDate &&\n          calTime.isSameOrBefore(calEndDate, 'year')\n        ) ||\n        !!(\n          props.minDate &&\n          calTime.isSameOrBefore(props.minDate, 'year') &&\n          calEndDate &&\n          calTime.isSameOrAfter(calEndDate, 'year')\n        )\n\n      if (props.minDate?.isSameOrAfter(calEndDate)) {\n        cell.start = !!(calEndDate && calTime.isSame(calEndDate, 'year'))\n        cell.end = !!(props.minDate && calTime.isSame(props.minDate, 'year'))\n      } else {\n        cell.start = !!(props.minDate && calTime.isSame(props.minDate, 'year'))\n        cell.end = !!(calEndDate && calTime.isSame(calEndDate, 'year'))\n      }\n\n      const isToday = now.isSame(calTime)\n      if (isToday) {\n        cell.type = 'today'\n      }\n      cell.text = index\n      const cellDate = calTime.toDate()\n      cell.disabled = props.disabledDate?.(cellDate) || false\n      cell.date = cellDate\n      cell.customClass = props.cellClassName?.(cellDate)\n      cell.dayjs = calTime\n      cell.timestamp = calTime.valueOf()\n      cell.isSelected = isSelectedCell(cell)\n      row[j] = cell\n    }\n  }\n  return rows\n})\n\nconst focus = () => {\n  currentCellRef.value?.focus()\n}\n\nconst getCellKls = (cell: YearCell) => {\n  const kls: Record<string, boolean> = {}\n  const today = dayjs().locale(lang.value)\n  const year = cell.text\n\n  kls.disabled =\n    props.disabled ||\n    (props.disabledDate\n      ? datesInYear(year, lang.value).every(props.disabledDate)\n      : false)\n\n  kls.today = today.year() === year\n  kls.current = castArray(props.parsedValue).some((d) => d!.year() === year)\n\n  if (cell.customClass) {\n    kls[cell.customClass] = true\n  }\n  if (cell.inRange) {\n    kls['in-range'] = true\n\n    if (cell.start) {\n      kls['start-date'] = true\n    }\n\n    if (cell.end) {\n      kls['end-date'] = true\n    }\n  }\n  return kls\n}\n\nconst isSelectedCell = (cell: YearCell) => {\n  const year = cell.text\n  return castArray(props.date).some((date) => date.year() === year)\n}\n\nconst handleYearTableClick = (event: MouseEvent | KeyboardEvent) => {\n  if (props.disabled) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (!target || !target.textContent || hasClass(target, 'disabled')) return\n\n  const column = target.cellIndex\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const selectedYear = row * 4 + column + startYear.value\n  const newDate = dayjs().year(selectedYear)\n  if (props.selectionMode === 'range') {\n    if (!props.rangeState.selecting) {\n      emit('pick', { minDate: newDate, maxDate: null })\n      emit('select', true)\n    } else {\n      if (props.minDate && newDate >= props.minDate) {\n        emit('pick', { minDate: props.minDate, maxDate: newDate })\n      } else {\n        emit('pick', { minDate: newDate, maxDate: props.minDate })\n      }\n      emit('select', false)\n    }\n  } else if (props.selectionMode === 'years') {\n    if (event.type === 'keydown') {\n      emit('pick', castArray(props.parsedValue), false)\n      return\n    }\n    const vaildYear = getValidDateOfYear(\n      newDate.startOf('year'),\n      lang.value,\n      props.disabledDate\n    )\n    const newValue = hasClass(target, 'current')\n      ? castArray(props.parsedValue).filter((d) => d?.year() !== selectedYear)\n      : castArray(props.parsedValue).concat([vaildYear])\n    emit('pick', newValue)\n  } else {\n    emit('pick', selectedYear)\n  }\n}\n\nconst handleMouseMove = (event: MouseEvent) => {\n  if (!props.rangeState.selecting) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (!target) return\n\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const column = (target as HTMLTableCellElement).cellIndex\n\n  // can not select disabled date\n  if (rows.value[row][column].disabled) return\n\n  // only update rangeState when mouse moves to a new cell\n  // this avoids frequent Date object creation and improves performance\n  if (row !== lastRow.value || column !== lastColumn.value) {\n    lastRow.value = row\n    lastColumn.value = column\n    emit('changerange', {\n      selecting: true,\n      endDate: dayjs()\n        .year(startYear.value)\n        .add(row * 4 + column, 'year'),\n    })\n  }\n}\n\nwatch(\n  () => props.date,\n  async () => {\n    if (tbodyRef.value?.contains(document.activeElement)) {\n      await nextTick()\n      currentCellRef.value?.focus()\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description focus on the current cell\n   */\n  focus,\n})\n</script>\n","<template>\n  <div\n    :class=\"[\n      ppNs.b(),\n      dpNs.b(),\n      ppNs.is('border', border),\n      ppNs.is('disabled', dateDisabled),\n      {\n        'has-sidebar': $slots.sidebar || hasShortcuts,\n        'has-time': showTime,\n      },\n    ]\"\n  >\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :disabled=\"dateDisabled\"\n          :class=\"ppNs.e('shortcut')\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div v-if=\"showTime\" :class=\"dpNs.e('time-header')\">\n          <span :class=\"dpNs.e('editor-wrap')\">\n            <el-input\n              :placeholder=\"t('el.datepicker.selectDate')\"\n              :model-value=\"visibleDate\"\n              size=\"small\"\n              :validate-event=\"false\"\n              :disabled=\"dateDisabled\"\n              :readonly=\"!editable\"\n              @input=\"(val) => (userInputDate = val)\"\n              @change=\"handleVisibleDateChange\"\n            />\n          </span>\n          <span\n            v-click-outside=\"handleTimePickClose\"\n            :class=\"dpNs.e('editor-wrap')\"\n          >\n            <el-input\n              :placeholder=\"t('el.datepicker.selectTime')\"\n              :model-value=\"visibleTime\"\n              size=\"small\"\n              :validate-event=\"false\"\n              :disabled=\"dateDisabled\"\n              :readonly=\"!editable\"\n              @focus=\"onTimePickerInputFocus\"\n              @input=\"(val) => (userInputTime = val)\"\n              @change=\"handleVisibleTimeChange\"\n            />\n            <time-pick-panel\n              :visible=\"timePickerVisible\"\n              :format=\"timeFormat\"\n              :parsed-value=\"innerDate\"\n              @pick=\"handleTimePick\"\n            />\n          </span>\n        </div>\n        <div\n          v-show=\"currentView !== 'time'\"\n          :class=\"[\n            dpNs.e('header'),\n            (currentView === 'year' || currentView === 'month') &&\n              dpNs.em('header', 'bordered'),\n          ]\"\n        >\n          <span :class=\"dpNs.e('prev-btn')\">\n            <button\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.prevYear`)\"\n              class=\"d-arrow-left\"\n              :class=\"ppNs.e('icon-btn')\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByYear(false)\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              v-show=\"currentView === 'date'\"\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.prevMonth`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"arrow-left\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByMonth(false)\"\n            >\n              <slot name=\"prev-month\">\n                <el-icon><arrow-left /></el-icon>\n              </slot>\n            </button>\n          </span>\n          <span\n            role=\"button\"\n            :class=\"dpNs.e('header-label')\"\n            aria-live=\"polite\"\n            :tabindex=\"disabled ? undefined : 0\"\n            :aria-disabled=\"disabled\"\n            @keydown.enter=\"showPicker('year')\"\n            @click=\"showPicker('year')\"\n            >{{ yearLabel }}</span\n          >\n          <span\n            v-show=\"currentView === 'date'\"\n            role=\"button\"\n            aria-live=\"polite\"\n            :tabindex=\"disabled ? undefined : 0\"\n            :aria-disabled=\"disabled\"\n            :class=\"[\n              dpNs.e('header-label'),\n              { active: currentView === 'month' },\n            ]\"\n            @keydown.enter=\"showPicker('month')\"\n            @click=\"showPicker('month')\"\n            >{{ t(`el.datepicker.month${month + 1}`) }}</span\n          >\n          <span :class=\"dpNs.e('next-btn')\">\n            <button\n              v-show=\"currentView === 'date'\"\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.nextMonth`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"arrow-right\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByMonth(true)\"\n            >\n              <slot name=\"next-month\">\n                <el-icon><arrow-right /></el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.nextYear`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"d-arrow-right\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByYear(true)\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n          </span>\n        </div>\n        <div :class=\"ppNs.e('content')\" @keydown=\"handleKeydownTable\">\n          <date-table\n            v-if=\"currentView === 'date'\"\n            ref=\"currentViewRef\"\n            :selection-mode=\"selectionMode\"\n            :date=\"innerDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateDisabled\"\n            :cell-class-name=\"cellClassName\"\n            :show-week-number=\"showWeekNumber\"\n            @pick=\"handleDatePick\"\n          />\n          <year-table\n            v-if=\"currentView === 'year'\"\n            ref=\"currentViewRef\"\n            :selection-mode=\"selectionMode\"\n            :date=\"innerDate\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateDisabled\"\n            :parsed-value=\"parsedValue\"\n            :cell-class-name=\"cellClassName\"\n            @pick=\"handleYearPick\"\n          />\n          <month-table\n            v-if=\"currentView === 'month'\"\n            ref=\"currentViewRef\"\n            :selection-mode=\"selectionMode\"\n            :date=\"innerDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @pick=\"handleMonthPick\"\n          />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"showFooter && footerVisible && footerFilled\"\n      :class=\"ppNs.e('footer')\"\n    >\n      <el-button\n        v-show=\"!isMultipleType && showNow\"\n        text\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        :disabled=\"disabledNow\"\n        @click=\"changeToNow\"\n      >\n        {{ t('el.datepicker.now') }}\n      </el-button>\n      <el-button\n        v-if=\"showConfirm\"\n        plain\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        :disabled=\"disabledConfirm\"\n        @click=\"onConfirm\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </el-button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  ref,\n  toRef,\n  useAttrs,\n  useSlots,\n  watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@pit-element-plus/components/button'\nimport { ClickOutside as vClickOutside } from '@pit-element-plus/directives'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElInput from '@pit-element-plus/components/input'\nimport {\n  DEFAULT_FORMATS_DATE,\n  DEFAULT_FORMATS_TIME,\n  PICKER_BASE_INJECTION_KEY,\n  TimePickPanel,\n  extractDateFormat,\n  extractTimeFormat,\n} from '@pit-element-plus/components/time-picker'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  extractFirst,\n  getEventCode,\n  isArray,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  DArrowLeft,\n  DArrowRight,\n} from 'pit-element-icons'\nimport { panelDatePickProps } from '../props/panel-date-pick'\nimport {\n  correctlyParseUserInput,\n  getValidDateOfMonth,\n  getValidDateOfYear,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport DateTable from './basic-date-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { SetupContext } from 'vue'\nimport type { ConfigType, Dayjs } from 'dayjs'\nimport type { PanelDatePickProps } from '../props/panel-date-pick'\nimport type {\n  DateTableEmits,\n  DatesPickerEmits,\n  MonthsPickerEmits,\n  WeekPickerEmits,\n  YearsPickerEmits,\n} from '../props/basic-date-table'\n\ntype DatePickType = PanelDatePickProps['type']\n// todo\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst timeWithinRange = (_: ConfigType, __: any, ___: string) => true\nconst props = defineProps(panelDatePickProps)\nconst contextEmit = defineEmits(['pick', 'set-picker-option', 'panel-change'])\nconst ppNs = useNamespace('picker-panel')\nconst dpNs = useNamespace('date-picker')\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst { t, lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst currentViewRef = ref<{ focus: () => void }>()\n\nconst innerDate = ref(dayjs().locale(lang.value))\n\nconst isChangeToNow = ref(false)\n\nlet isShortcut = false\n\nconst defaultTimeD = computed(() => {\n  return dayjs(defaultTime).locale(lang.value)\n})\n\nconst month = computed(() => {\n  return innerDate.value.month()\n})\n\nconst year = computed(() => {\n  return innerDate.value.year()\n})\n\nconst selectableRange = ref([])\nconst userInputDate = ref<string | null>(null)\nconst userInputTime = ref<string | null>(null)\n// todo update to disableHour\nconst checkDateWithinRange = (date: ConfigType) => {\n  return selectableRange.value.length > 0\n    ? timeWithinRange(date, selectableRange.value, props.format || 'HH:mm:ss')\n    : true\n}\nconst formatEmit = (emitDayjs: Dayjs) => {\n  if (\n    defaultTime &&\n    !visibleTime.value &&\n    !isChangeToNow.value &&\n    !isShortcut\n  ) {\n    return defaultTimeD.value\n      .year(emitDayjs.year())\n      .month(emitDayjs.month())\n      .date(emitDayjs.date())\n  }\n  if (showTime.value) return emitDayjs.millisecond(0)\n  return emitDayjs.startOf('day')\n}\nconst emit = (value: Dayjs | Dayjs[], ...args: any[]) => {\n  if (!value) {\n    contextEmit('pick', value, ...args)\n  } else if (isArray(value)) {\n    const dates = value.map(formatEmit)\n    contextEmit('pick', dates, ...args)\n  } else {\n    contextEmit('pick', formatEmit(value), ...args)\n  }\n  userInputDate.value = null\n  userInputTime.value = null\n  isChangeToNow.value = false\n  isShortcut = false\n}\nconst handleDatePick = async (value: DateTableEmits, keepOpen?: boolean) => {\n  if (selectionMode.value === 'date' && dayjs.isDayjs(value)) {\n    const parsedDateValue = extractFirst(props.parsedValue)\n    let newDate = parsedDateValue\n      ? parsedDateValue\n          .year(value.year())\n          .month(value.month())\n          .date(value.date())\n      : value\n    // change default time while out of selectableRange\n    if (!checkDateWithinRange(newDate)) {\n      newDate = (selectableRange.value[0][0] as Dayjs)\n        .year(value.year())\n        .month(value.month())\n        .date(value.date())\n    }\n    innerDate.value = newDate\n    emit(newDate, showTime.value || keepOpen)\n  } else if (selectionMode.value === 'week') {\n    emit((value as WeekPickerEmits).date)\n  } else if (selectionMode.value === 'dates') {\n    emit(value as DatesPickerEmits, true) // set true to keep panel open\n  }\n}\n\nconst moveByMonth = (forward: boolean) => {\n  const action = forward ? 'add' : 'subtract'\n  innerDate.value = innerDate.value[action](1, 'month')\n  handlePanelChange('month')\n}\n\nconst moveByYear = (forward: boolean) => {\n  const currentDate = innerDate.value\n  const action = forward ? 'add' : 'subtract'\n\n  innerDate.value =\n    currentView.value === 'year'\n      ? currentDate[action](10, 'year')\n      : currentDate[action](1, 'year')\n\n  handlePanelChange('year')\n}\n\nconst currentView = ref('date')\n\nconst yearLabel = computed(() => {\n  const yearTranslation = t('el.datepicker.year')\n  if (currentView.value === 'year') {\n    const startYear = Math.floor(year.value / 10) * 10\n    if (yearTranslation) {\n      return `${startYear} ${yearTranslation} - ${\n        startYear + 9\n      } ${yearTranslation}`\n    }\n    return `${startYear} - ${startYear + 9}`\n  }\n  return `${year.value} ${yearTranslation}`\n})\n\ntype Shortcut = {\n  value: (() => Dayjs) | Dayjs\n  onClick?: (ctx: Omit<SetupContext, 'expose'>) => void\n}\n\nconst handleShortcutClick = (shortcut: Shortcut) => {\n  const shortcutValue = isFunction(shortcut.value)\n    ? shortcut.value()\n    : shortcut.value\n  if (shortcutValue) {\n    isShortcut = true\n    emit(dayjs(shortcutValue).locale(lang.value))\n    return\n  }\n  if (shortcut.onClick) {\n    shortcut.onClick({\n      attrs,\n      slots,\n      emit: contextEmit as SetupContext['emit'],\n    })\n  }\n}\n\nconst selectionMode = computed<DatePickType>(() => {\n  const { type } = props\n  if (['week', 'month', 'months', 'year', 'years', 'dates'].includes(type))\n    return type\n  return 'date'\n})\n\nconst isMultipleType = computed(() => {\n  return (\n    selectionMode.value === 'dates' ||\n    selectionMode.value === 'months' ||\n    selectionMode.value === 'years'\n  )\n})\n\nconst keyboardMode = computed<string>(() => {\n  return selectionMode.value === 'date'\n    ? currentView.value\n    : selectionMode.value\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst handleMonthPick = async (\n  month: number | MonthsPickerEmits,\n  keepOpen?: boolean\n) => {\n  if (selectionMode.value === 'month') {\n    innerDate.value = getValidDateOfMonth(\n      innerDate.value,\n      innerDate.value.year(),\n      month as number,\n      lang.value,\n      disabledDate\n    )\n    emit(innerDate.value, false)\n  } else if (selectionMode.value === 'months') {\n    emit(month as MonthsPickerEmits, keepOpen ?? true)\n  } else {\n    innerDate.value = getValidDateOfMonth(\n      innerDate.value,\n      innerDate.value.year(),\n      month as number,\n      lang.value,\n      disabledDate\n    )\n    currentView.value = 'date'\n    if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n      emit(innerDate.value, true)\n      await nextTick()\n      handleFocusPicker()\n    }\n  }\n  handlePanelChange('month')\n}\n\nconst handleYearPick = async (\n  year: number | YearsPickerEmits,\n  keepOpen?: boolean\n) => {\n  if (selectionMode.value === 'year') {\n    const data = innerDate.value.startOf('year').year(year as number)\n    innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n    emit(innerDate.value, false)\n  } else if (selectionMode.value === 'years') {\n    emit(year as YearsPickerEmits, keepOpen ?? true)\n  } else {\n    const data = innerDate.value.year(year as number)\n    innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n    currentView.value = 'month'\n    if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n      emit(innerDate.value, true)\n      await nextTick()\n      handleFocusPicker()\n    }\n  }\n  handlePanelChange('year')\n}\n\nconst dateDisabled = useFormDisabled()\n\nconst showPicker = async (view: 'month' | 'year') => {\n  if (dateDisabled.value) return\n  currentView.value = view\n  await nextTick()\n  handleFocusPicker()\n}\n\nconst showTime = computed(\n  () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst footerVisible = computed(() => {\n  const showDateFooter = showTime.value || selectionMode.value === 'dates'\n  const showYearFooter = selectionMode.value === 'years'\n  const showMonthFooter = selectionMode.value === 'months'\n  const isDateView = currentView.value === 'date'\n  const isYearView = currentView.value === 'year'\n  const isMonthView = currentView.value === 'month'\n  return (\n    (showDateFooter && isDateView) ||\n    (showYearFooter && isYearView) ||\n    (showMonthFooter && isMonthView)\n  )\n})\n\nconst footerFilled = computed(\n  () => (!isMultipleType.value && props.showNow) || props.showConfirm\n)\n\nconst disabledConfirm = computed(() => {\n  if (!disabledDate) return false\n  if (!props.parsedValue) return true\n  if (isArray(props.parsedValue)) {\n    return disabledDate(props.parsedValue[0].toDate())\n  }\n  return disabledDate(props.parsedValue.toDate())\n})\nconst onConfirm = () => {\n  if (isMultipleType.value) {\n    emit(props.parsedValue as Dayjs[])\n  } else {\n    // deal with the scenario where: user opens the date time picker, then confirm without doing anything\n    let result = extractFirst(props.parsedValue)\n    if (!result) {\n      const defaultTimeD = dayjs(defaultTime).locale(lang.value)\n      const defaultValueD = getDefaultValue()\n      result = defaultTimeD\n        .year(defaultValueD.year())\n        .month(defaultValueD.month())\n        .date(defaultValueD.date())\n    }\n    innerDate.value = result\n    emit(result)\n  }\n}\n\nconst disabledNow = computed(() => {\n  if (!disabledDate) return false\n  return disabledDate(dayjs().locale(lang.value).toDate())\n})\nconst changeToNow = () => {\n  // NOTE: not a permanent solution\n  //       consider disable \"now\" button in the future\n  const now = dayjs().locale(lang.value)\n  const nowDate = now.toDate()\n  isChangeToNow.value = true\n  if (\n    (!disabledDate || !disabledDate(nowDate)) &&\n    checkDateWithinRange(nowDate)\n  ) {\n    innerDate.value = dayjs().locale(lang.value)\n    emit(innerDate.value)\n  }\n}\n\nconst timeFormat = computed(() => {\n  return (\n    props.timeFormat || extractTimeFormat(props.format) || DEFAULT_FORMATS_TIME\n  )\n})\n\nconst dateFormat = computed(() => {\n  return (\n    props.dateFormat || extractDateFormat(props.format) || DEFAULT_FORMATS_DATE\n  )\n})\n\nconst visibleTime = computed(() => {\n  if (userInputTime.value) return userInputTime.value\n  if (!props.parsedValue && !defaultValue.value) return\n  const dateValue = extractFirst(props.parsedValue) || innerDate.value\n  return dateValue.format(timeFormat.value)\n})\n\nconst visibleDate = computed(() => {\n  if (userInputDate.value) return userInputDate.value\n  if (!props.parsedValue && !defaultValue.value) return\n  const dateValue = extractFirst(props.parsedValue) || innerDate.value\n  return dateValue.format(dateFormat.value)\n})\n\nconst timePickerVisible = ref(false)\nconst onTimePickerInputFocus = () => {\n  timePickerVisible.value = true\n}\nconst handleTimePickClose = () => {\n  timePickerVisible.value = false\n}\n\nconst getUnits = (date: Dayjs) => {\n  return {\n    hour: date.hour(),\n    minute: date.minute(),\n    second: date.second(),\n    year: date.year(),\n    month: date.month(),\n    date: date.date(),\n  }\n}\n\nconst handleTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n  const { hour, minute, second } = getUnits(value)\n  const parsedDateValue = extractFirst(props.parsedValue)\n  const newDate = parsedDateValue\n    ? parsedDateValue.hour(hour).minute(minute).second(second)\n    : value\n  innerDate.value = newDate\n  emit(innerDate.value, true)\n  if (!first) {\n    timePickerVisible.value = visible\n  }\n}\n\nconst handleVisibleTimeChange = (value: string) => {\n  const newDate = dayjs(value, timeFormat.value).locale(lang.value)\n  if (newDate.isValid() && checkDateWithinRange(newDate)) {\n    const { year, month, date } = getUnits(innerDate.value)\n    innerDate.value = newDate.year(year).month(month).date(date)\n    userInputTime.value = null\n    timePickerVisible.value = false\n    emit(innerDate.value, true)\n  }\n}\n\nconst handleVisibleDateChange = (value: string) => {\n  const newDate = correctlyParseUserInput(\n    value,\n    dateFormat.value,\n    lang.value,\n    isDefaultFormat\n  ) as Dayjs\n  if (newDate.isValid()) {\n    if (disabledDate && disabledDate(newDate.toDate())) {\n      return\n    }\n    const { hour, minute, second } = getUnits(innerDate.value)\n    innerDate.value = newDate.hour(hour).minute(minute).second(second)\n    userInputDate.value = null\n    emit(innerDate.value, true)\n  }\n}\n\nconst isValidValue = (date: unknown) => {\n  return (\n    dayjs.isDayjs(date) &&\n    date.isValid() &&\n    (disabledDate ? !disabledDate(date.toDate()) : true)\n  )\n}\n\nconst parseUserInput = (value: Dayjs) => {\n  return correctlyParseUserInput(\n    value,\n    props.format,\n    lang.value,\n    isDefaultFormat\n  )\n}\n\nconst getDefaultValue = () => {\n  const parseDate = dayjs(defaultValue.value).locale(lang.value)\n  if (!defaultValue.value) {\n    const defaultTimeDValue = defaultTimeD.value\n    return dayjs()\n      .hour(defaultTimeDValue.hour())\n      .minute(defaultTimeDValue.minute())\n      .second(defaultTimeDValue.second())\n      .locale(lang.value)\n  }\n  return parseDate\n}\n\nconst handleFocusPicker = () => {\n  if (['week', 'month', 'year', 'date'].includes(selectionMode.value)) {\n    currentViewRef.value?.focus()\n  }\n}\n\nconst _handleFocusPicker = () => {\n  handleFocusPicker()\n  // TODO: After focus the date input, the first time you use the ArrowDown keys, you cannot focus on the date cell\n  if (selectionMode.value === 'week') {\n    handleKeyControl(EVENT_CODE.down)\n  }\n}\n\nconst handleKeydownTable = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n\n  const validCode = [\n    EVENT_CODE.up,\n    EVENT_CODE.down,\n    EVENT_CODE.left,\n    EVENT_CODE.right,\n    EVENT_CODE.home,\n    EVENT_CODE.end,\n    EVENT_CODE.pageUp,\n    EVENT_CODE.pageDown,\n  ]\n  if (validCode.includes(code)) {\n    handleKeyControl(code)\n    event.stopPropagation()\n    event.preventDefault()\n  }\n  if (\n    [EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(\n      code\n    ) &&\n    userInputDate.value === null &&\n    userInputTime.value === null\n  ) {\n    event.preventDefault()\n    emit(innerDate.value, false)\n  }\n}\n\nconst handleKeyControl = (code: string) => {\n  type KeyControlMappingCallableOffset = (date: Date, step?: number) => number\n  type KeyControl = {\n    [key: string]:\n      | number\n      | KeyControlMappingCallableOffset\n      | ((date: Date, step: number) => any)\n    offset: (date: Date, step: number) => any\n  }\n  interface KeyControlMapping {\n    [key: string]: KeyControl\n  }\n\n  const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE\n  const mapping: KeyControlMapping = {\n    year: {\n      [up]: -4,\n      [down]: 4,\n      [left]: -1,\n      [right]: 1,\n      offset: (date: Date, step: number) =>\n        date.setFullYear(date.getFullYear() + step),\n    },\n    month: {\n      [up]: -4,\n      [down]: 4,\n      [left]: -1,\n      [right]: 1,\n      offset: (date: Date, step: number) =>\n        date.setMonth(date.getMonth() + step),\n    },\n    week: {\n      [up]: -1,\n      [down]: 1,\n      [left]: -1,\n      [right]: 1,\n      offset: (date: Date, step: number) =>\n        date.setDate(date.getDate() + step * 7),\n    },\n    date: {\n      [up]: -7,\n      [down]: 7,\n      [left]: -1,\n      [right]: 1,\n      [home]: (date: Date) => -date.getDay(),\n      [end]: (date: Date) => -date.getDay() + 6,\n      [pageUp]: (date: Date) =>\n        -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),\n      [pageDown]: (date: Date) =>\n        new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),\n      offset: (date: Date, step: number) => date.setDate(date.getDate() + step),\n    },\n  }\n\n  const newDate = innerDate.value.toDate()\n  while (Math.abs(innerDate.value.diff(newDate, 'year', true)) < 1) {\n    const map = mapping[keyboardMode.value]\n    if (!map) return\n    map.offset(\n      newDate,\n      isFunction(map[code])\n        ? (map[code] as unknown as KeyControlMappingCallableOffset)(newDate)\n        : ((map[code] as number) ?? 0)\n    )\n    if (disabledDate && disabledDate(newDate)) {\n      break\n    }\n    const result = dayjs(newDate).locale(lang.value)\n    innerDate.value = result\n    contextEmit('pick', result, true)\n    break\n  }\n}\n\nconst handlePanelChange = (mode: 'month' | 'year') => {\n  contextEmit('panel-change', innerDate.value.toDate(), mode, currentView.value)\n}\n\nwatch(\n  () => selectionMode.value,\n  (val) => {\n    if (['month', 'year'].includes(val)) {\n      currentView.value = val\n      return\n    } else if (val === 'years') {\n      currentView.value = 'year'\n      return\n    } else if (val === 'months') {\n      currentView.value = 'month'\n      return\n    }\n    currentView.value = 'date'\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => defaultValue.value,\n  (val) => {\n    if (val) {\n      innerDate.value = getDefaultValue()\n    }\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => props.parsedValue,\n  (val) => {\n    if (val) {\n      if (isMultipleType.value) return\n      if (isArray(val)) return\n      innerDate.value = val\n    } else {\n      innerDate.value = getDefaultValue()\n    }\n  },\n  { immediate: true }\n)\n\ncontextEmit('set-picker-option', ['isValidValue', isValidValue])\ncontextEmit('set-picker-option', ['parseUserInput', parseUserInput])\ncontextEmit('set-picker-option', ['handleFocusPicker', _handleFocusPicker])\n</script>\n","<template>\n  <div\n    :class=\"[\n      ppNs.b(),\n      dpNs.b(),\n      ppNs.is('border', border),\n      ppNs.is('disabled', dateDisabled),\n      {\n        'has-sidebar': $slots.sidebar || hasShortcuts,\n        'has-time': showTime,\n      },\n    ]\"\n  >\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :disabled=\"dateDisabled\"\n          :class=\"ppNs.e('shortcut')\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div v-if=\"showTime\" :class=\"dpNs.e('time-header')\">\n          <span :class=\"dpNs.e('editor-wrap')\">\n            <el-input\n              :placeholder=\"t('el.datepicker.selectDate')\"\n              :model-value=\"visibleDate\"\n              size=\"small\"\n              :validate-event=\"false\"\n              :disabled=\"dateDisabled\"\n              :readonly=\"!editable\"\n              @input=\"(val) => (userInputDate = val)\"\n              @change=\"handleVisibleDateChange\"\n            />\n          </span>\n          <span\n            v-click-outside=\"handleTimePickClose\"\n            :class=\"dpNs.e('editor-wrap')\"\n          >\n            <el-input\n              :placeholder=\"t('el.datepicker.selectTime')\"\n              :model-value=\"visibleTime\"\n              size=\"small\"\n              :validate-event=\"false\"\n              :disabled=\"dateDisabled\"\n              :readonly=\"!editable\"\n              @focus=\"onTimePickerInputFocus\"\n              @input=\"(val) => (userInputTime = val)\"\n              @change=\"handleVisibleTimeChange\"\n            />\n            <time-pick-panel\n              :visible=\"timePickerVisible\"\n              :format=\"timeFormat\"\n              :parsed-value=\"innerDate\"\n              @pick=\"handleTimePick\"\n            />\n          </span>\n        </div>\n        <div\n          v-show=\"currentView !== 'time'\"\n          :class=\"[\n            dpNs.e('header'),\n            (currentView === 'year' || currentView === 'month') &&\n              dpNs.em('header', 'bordered'),\n          ]\"\n        >\n          <span :class=\"dpNs.e('prev-btn')\">\n            <button\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.prevYear`)\"\n              class=\"d-arrow-left\"\n              :class=\"ppNs.e('icon-btn')\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByYear(false)\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              v-show=\"currentView === 'date'\"\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.prevMonth`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"arrow-left\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByMonth(false)\"\n            >\n              <slot name=\"prev-month\">\n                <el-icon><arrow-left /></el-icon>\n              </slot>\n            </button>\n          </span>\n          <span\n            role=\"button\"\n            :class=\"dpNs.e('header-label')\"\n            aria-live=\"polite\"\n            :tabindex=\"disabled ? undefined : 0\"\n            :aria-disabled=\"disabled\"\n            @keydown.enter=\"showPicker('year')\"\n            @click=\"showPicker('year')\"\n            >{{ yearLabel }}</span\n          >\n          <span\n            v-show=\"currentView === 'date'\"\n            role=\"button\"\n            aria-live=\"polite\"\n            :tabindex=\"disabled ? undefined : 0\"\n            :aria-disabled=\"disabled\"\n            :class=\"[\n              dpNs.e('header-label'),\n              { active: currentView === 'month' },\n            ]\"\n            @keydown.enter=\"showPicker('month')\"\n            @click=\"showPicker('month')\"\n            >{{ t(`el.datepicker.month${month + 1}`) }}</span\n          >\n          <span :class=\"dpNs.e('next-btn')\">\n            <button\n              v-show=\"currentView === 'date'\"\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.nextMonth`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"arrow-right\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByMonth(true)\"\n            >\n              <slot name=\"next-month\">\n                <el-icon><arrow-right /></el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.nextYear`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"d-arrow-right\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByYear(true)\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n          </span>\n        </div>\n        <div :class=\"ppNs.e('content')\" @keydown=\"handleKeydownTable\">\n          <date-table\n            v-if=\"currentView === 'date'\"\n            ref=\"currentViewRef\"\n            :selection-mode=\"selectionMode\"\n            :date=\"innerDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateDisabled\"\n            :cell-class-name=\"cellClassName\"\n            :show-week-number=\"showWeekNumber\"\n            @pick=\"handleDatePick\"\n          />\n          <year-table\n            v-if=\"currentView === 'year'\"\n            ref=\"currentViewRef\"\n            :selection-mode=\"selectionMode\"\n            :date=\"innerDate\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateDisabled\"\n            :parsed-value=\"parsedValue\"\n            :cell-class-name=\"cellClassName\"\n            @pick=\"handleYearPick\"\n          />\n          <month-table\n            v-if=\"currentView === 'month'\"\n            ref=\"currentViewRef\"\n            :selection-mode=\"selectionMode\"\n            :date=\"innerDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @pick=\"handleMonthPick\"\n          />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"showFooter && footerVisible && footerFilled\"\n      :class=\"ppNs.e('footer')\"\n    >\n      <el-button\n        v-show=\"!isMultipleType && showNow\"\n        text\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        :disabled=\"disabledNow\"\n        @click=\"changeToNow\"\n      >\n        {{ t('el.datepicker.now') }}\n      </el-button>\n      <el-button\n        v-if=\"showConfirm\"\n        plain\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        :disabled=\"disabledConfirm\"\n        @click=\"onConfirm\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </el-button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  ref,\n  toRef,\n  useAttrs,\n  useSlots,\n  watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@pit-element-plus/components/button'\nimport { ClickOutside as vClickOutside } from '@pit-element-plus/directives'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElInput from '@pit-element-plus/components/input'\nimport {\n  DEFAULT_FORMATS_DATE,\n  DEFAULT_FORMATS_TIME,\n  PICKER_BASE_INJECTION_KEY,\n  TimePickPanel,\n  extractDateFormat,\n  extractTimeFormat,\n} from '@pit-element-plus/components/time-picker'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  extractFirst,\n  getEventCode,\n  isArray,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  DArrowLeft,\n  DArrowRight,\n} from 'pit-element-icons'\nimport { panelDatePickProps } from '../props/panel-date-pick'\nimport {\n  correctlyParseUserInput,\n  getValidDateOfMonth,\n  getValidDateOfYear,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport DateTable from './basic-date-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { SetupContext } from 'vue'\nimport type { ConfigType, Dayjs } from 'dayjs'\nimport type { PanelDatePickProps } from '../props/panel-date-pick'\nimport type {\n  DateTableEmits,\n  DatesPickerEmits,\n  MonthsPickerEmits,\n  WeekPickerEmits,\n  YearsPickerEmits,\n} from '../props/basic-date-table'\n\ntype DatePickType = PanelDatePickProps['type']\n// todo\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst timeWithinRange = (_: ConfigType, __: any, ___: string) => true\nconst props = defineProps(panelDatePickProps)\nconst contextEmit = defineEmits(['pick', 'set-picker-option', 'panel-change'])\nconst ppNs = useNamespace('picker-panel')\nconst dpNs = useNamespace('date-picker')\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst { t, lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst currentViewRef = ref<{ focus: () => void }>()\n\nconst innerDate = ref(dayjs().locale(lang.value))\n\nconst isChangeToNow = ref(false)\n\nlet isShortcut = false\n\nconst defaultTimeD = computed(() => {\n  return dayjs(defaultTime).locale(lang.value)\n})\n\nconst month = computed(() => {\n  return innerDate.value.month()\n})\n\nconst year = computed(() => {\n  return innerDate.value.year()\n})\n\nconst selectableRange = ref([])\nconst userInputDate = ref<string | null>(null)\nconst userInputTime = ref<string | null>(null)\n// todo update to disableHour\nconst checkDateWithinRange = (date: ConfigType) => {\n  return selectableRange.value.length > 0\n    ? timeWithinRange(date, selectableRange.value, props.format || 'HH:mm:ss')\n    : true\n}\nconst formatEmit = (emitDayjs: Dayjs) => {\n  if (\n    defaultTime &&\n    !visibleTime.value &&\n    !isChangeToNow.value &&\n    !isShortcut\n  ) {\n    return defaultTimeD.value\n      .year(emitDayjs.year())\n      .month(emitDayjs.month())\n      .date(emitDayjs.date())\n  }\n  if (showTime.value) return emitDayjs.millisecond(0)\n  return emitDayjs.startOf('day')\n}\nconst emit = (value: Dayjs | Dayjs[], ...args: any[]) => {\n  if (!value) {\n    contextEmit('pick', value, ...args)\n  } else if (isArray(value)) {\n    const dates = value.map(formatEmit)\n    contextEmit('pick', dates, ...args)\n  } else {\n    contextEmit('pick', formatEmit(value), ...args)\n  }\n  userInputDate.value = null\n  userInputTime.value = null\n  isChangeToNow.value = false\n  isShortcut = false\n}\nconst handleDatePick = async (value: DateTableEmits, keepOpen?: boolean) => {\n  if (selectionMode.value === 'date' && dayjs.isDayjs(value)) {\n    const parsedDateValue = extractFirst(props.parsedValue)\n    let newDate = parsedDateValue\n      ? parsedDateValue\n          .year(value.year())\n          .month(value.month())\n          .date(value.date())\n      : value\n    // change default time while out of selectableRange\n    if (!checkDateWithinRange(newDate)) {\n      newDate = (selectableRange.value[0][0] as Dayjs)\n        .year(value.year())\n        .month(value.month())\n        .date(value.date())\n    }\n    innerDate.value = newDate\n    emit(newDate, showTime.value || keepOpen)\n  } else if (selectionMode.value === 'week') {\n    emit((value as WeekPickerEmits).date)\n  } else if (selectionMode.value === 'dates') {\n    emit(value as DatesPickerEmits, true) // set true to keep panel open\n  }\n}\n\nconst moveByMonth = (forward: boolean) => {\n  const action = forward ? 'add' : 'subtract'\n  innerDate.value = innerDate.value[action](1, 'month')\n  handlePanelChange('month')\n}\n\nconst moveByYear = (forward: boolean) => {\n  const currentDate = innerDate.value\n  const action = forward ? 'add' : 'subtract'\n\n  innerDate.value =\n    currentView.value === 'year'\n      ? currentDate[action](10, 'year')\n      : currentDate[action](1, 'year')\n\n  handlePanelChange('year')\n}\n\nconst currentView = ref('date')\n\nconst yearLabel = computed(() => {\n  const yearTranslation = t('el.datepicker.year')\n  if (currentView.value === 'year') {\n    const startYear = Math.floor(year.value / 10) * 10\n    if (yearTranslation) {\n      return `${startYear} ${yearTranslation} - ${\n        startYear + 9\n      } ${yearTranslation}`\n    }\n    return `${startYear} - ${startYear + 9}`\n  }\n  return `${year.value} ${yearTranslation}`\n})\n\ntype Shortcut = {\n  value: (() => Dayjs) | Dayjs\n  onClick?: (ctx: Omit<SetupContext, 'expose'>) => void\n}\n\nconst handleShortcutClick = (shortcut: Shortcut) => {\n  const shortcutValue = isFunction(shortcut.value)\n    ? shortcut.value()\n    : shortcut.value\n  if (shortcutValue) {\n    isShortcut = true\n    emit(dayjs(shortcutValue).locale(lang.value))\n    return\n  }\n  if (shortcut.onClick) {\n    shortcut.onClick({\n      attrs,\n      slots,\n      emit: contextEmit as SetupContext['emit'],\n    })\n  }\n}\n\nconst selectionMode = computed<DatePickType>(() => {\n  const { type } = props\n  if (['week', 'month', 'months', 'year', 'years', 'dates'].includes(type))\n    return type\n  return 'date'\n})\n\nconst isMultipleType = computed(() => {\n  return (\n    selectionMode.value === 'dates' ||\n    selectionMode.value === 'months' ||\n    selectionMode.value === 'years'\n  )\n})\n\nconst keyboardMode = computed<string>(() => {\n  return selectionMode.value === 'date'\n    ? currentView.value\n    : selectionMode.value\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst handleMonthPick = async (\n  month: number | MonthsPickerEmits,\n  keepOpen?: boolean\n) => {\n  if (selectionMode.value === 'month') {\n    innerDate.value = getValidDateOfMonth(\n      innerDate.value,\n      innerDate.value.year(),\n      month as number,\n      lang.value,\n      disabledDate\n    )\n    emit(innerDate.value, false)\n  } else if (selectionMode.value === 'months') {\n    emit(month as MonthsPickerEmits, keepOpen ?? true)\n  } else {\n    innerDate.value = getValidDateOfMonth(\n      innerDate.value,\n      innerDate.value.year(),\n      month as number,\n      lang.value,\n      disabledDate\n    )\n    currentView.value = 'date'\n    if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n      emit(innerDate.value, true)\n      await nextTick()\n      handleFocusPicker()\n    }\n  }\n  handlePanelChange('month')\n}\n\nconst handleYearPick = async (\n  year: number | YearsPickerEmits,\n  keepOpen?: boolean\n) => {\n  if (selectionMode.value === 'year') {\n    const data = innerDate.value.startOf('year').year(year as number)\n    innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n    emit(innerDate.value, false)\n  } else if (selectionMode.value === 'years') {\n    emit(year as YearsPickerEmits, keepOpen ?? true)\n  } else {\n    const data = innerDate.value.year(year as number)\n    innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n    currentView.value = 'month'\n    if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n      emit(innerDate.value, true)\n      await nextTick()\n      handleFocusPicker()\n    }\n  }\n  handlePanelChange('year')\n}\n\nconst dateDisabled = useFormDisabled()\n\nconst showPicker = async (view: 'month' | 'year') => {\n  if (dateDisabled.value) return\n  currentView.value = view\n  await nextTick()\n  handleFocusPicker()\n}\n\nconst showTime = computed(\n  () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst footerVisible = computed(() => {\n  const showDateFooter = showTime.value || selectionMode.value === 'dates'\n  const showYearFooter = selectionMode.value === 'years'\n  const showMonthFooter = selectionMode.value === 'months'\n  const isDateView = currentView.value === 'date'\n  const isYearView = currentView.value === 'year'\n  const isMonthView = currentView.value === 'month'\n  return (\n    (showDateFooter && isDateView) ||\n    (showYearFooter && isYearView) ||\n    (showMonthFooter && isMonthView)\n  )\n})\n\nconst footerFilled = computed(\n  () => (!isMultipleType.value && props.showNow) || props.showConfirm\n)\n\nconst disabledConfirm = computed(() => {\n  if (!disabledDate) return false\n  if (!props.parsedValue) return true\n  if (isArray(props.parsedValue)) {\n    return disabledDate(props.parsedValue[0].toDate())\n  }\n  return disabledDate(props.parsedValue.toDate())\n})\nconst onConfirm = () => {\n  if (isMultipleType.value) {\n    emit(props.parsedValue as Dayjs[])\n  } else {\n    // deal with the scenario where: user opens the date time picker, then confirm without doing anything\n    let result = extractFirst(props.parsedValue)\n    if (!result) {\n      const defaultTimeD = dayjs(defaultTime).locale(lang.value)\n      const defaultValueD = getDefaultValue()\n      result = defaultTimeD\n        .year(defaultValueD.year())\n        .month(defaultValueD.month())\n        .date(defaultValueD.date())\n    }\n    innerDate.value = result\n    emit(result)\n  }\n}\n\nconst disabledNow = computed(() => {\n  if (!disabledDate) return false\n  return disabledDate(dayjs().locale(lang.value).toDate())\n})\nconst changeToNow = () => {\n  // NOTE: not a permanent solution\n  //       consider disable \"now\" button in the future\n  const now = dayjs().locale(lang.value)\n  const nowDate = now.toDate()\n  isChangeToNow.value = true\n  if (\n    (!disabledDate || !disabledDate(nowDate)) &&\n    checkDateWithinRange(nowDate)\n  ) {\n    innerDate.value = dayjs().locale(lang.value)\n    emit(innerDate.value)\n  }\n}\n\nconst timeFormat = computed(() => {\n  return (\n    props.timeFormat || extractTimeFormat(props.format) || DEFAULT_FORMATS_TIME\n  )\n})\n\nconst dateFormat = computed(() => {\n  return (\n    props.dateFormat || extractDateFormat(props.format) || DEFAULT_FORMATS_DATE\n  )\n})\n\nconst visibleTime = computed(() => {\n  if (userInputTime.value) return userInputTime.value\n  if (!props.parsedValue && !defaultValue.value) return\n  const dateValue = extractFirst(props.parsedValue) || innerDate.value\n  return dateValue.format(timeFormat.value)\n})\n\nconst visibleDate = computed(() => {\n  if (userInputDate.value) return userInputDate.value\n  if (!props.parsedValue && !defaultValue.value) return\n  const dateValue = extractFirst(props.parsedValue) || innerDate.value\n  return dateValue.format(dateFormat.value)\n})\n\nconst timePickerVisible = ref(false)\nconst onTimePickerInputFocus = () => {\n  timePickerVisible.value = true\n}\nconst handleTimePickClose = () => {\n  timePickerVisible.value = false\n}\n\nconst getUnits = (date: Dayjs) => {\n  return {\n    hour: date.hour(),\n    minute: date.minute(),\n    second: date.second(),\n    year: date.year(),\n    month: date.month(),\n    date: date.date(),\n  }\n}\n\nconst handleTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n  const { hour, minute, second } = getUnits(value)\n  const parsedDateValue = extractFirst(props.parsedValue)\n  const newDate = parsedDateValue\n    ? parsedDateValue.hour(hour).minute(minute).second(second)\n    : value\n  innerDate.value = newDate\n  emit(innerDate.value, true)\n  if (!first) {\n    timePickerVisible.value = visible\n  }\n}\n\nconst handleVisibleTimeChange = (value: string) => {\n  const newDate = dayjs(value, timeFormat.value).locale(lang.value)\n  if (newDate.isValid() && checkDateWithinRange(newDate)) {\n    const { year, month, date } = getUnits(innerDate.value)\n    innerDate.value = newDate.year(year).month(month).date(date)\n    userInputTime.value = null\n    timePickerVisible.value = false\n    emit(innerDate.value, true)\n  }\n}\n\nconst handleVisibleDateChange = (value: string) => {\n  const newDate = correctlyParseUserInput(\n    value,\n    dateFormat.value,\n    lang.value,\n    isDefaultFormat\n  ) as Dayjs\n  if (newDate.isValid()) {\n    if (disabledDate && disabledDate(newDate.toDate())) {\n      return\n    }\n    const { hour, minute, second } = getUnits(innerDate.value)\n    innerDate.value = newDate.hour(hour).minute(minute).second(second)\n    userInputDate.value = null\n    emit(innerDate.value, true)\n  }\n}\n\nconst isValidValue = (date: unknown) => {\n  return (\n    dayjs.isDayjs(date) &&\n    date.isValid() &&\n    (disabledDate ? !disabledDate(date.toDate()) : true)\n  )\n}\n\nconst parseUserInput = (value: Dayjs) => {\n  return correctlyParseUserInput(\n    value,\n    props.format,\n    lang.value,\n    isDefaultFormat\n  )\n}\n\nconst getDefaultValue = () => {\n  const parseDate = dayjs(defaultValue.value).locale(lang.value)\n  if (!defaultValue.value) {\n    const defaultTimeDValue = defaultTimeD.value\n    return dayjs()\n      .hour(defaultTimeDValue.hour())\n      .minute(defaultTimeDValue.minute())\n      .second(defaultTimeDValue.second())\n      .locale(lang.value)\n  }\n  return parseDate\n}\n\nconst handleFocusPicker = () => {\n  if (['week', 'month', 'year', 'date'].includes(selectionMode.value)) {\n    currentViewRef.value?.focus()\n  }\n}\n\nconst _handleFocusPicker = () => {\n  handleFocusPicker()\n  // TODO: After focus the date input, the first time you use the ArrowDown keys, you cannot focus on the date cell\n  if (selectionMode.value === 'week') {\n    handleKeyControl(EVENT_CODE.down)\n  }\n}\n\nconst handleKeydownTable = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n\n  const validCode = [\n    EVENT_CODE.up,\n    EVENT_CODE.down,\n    EVENT_CODE.left,\n    EVENT_CODE.right,\n    EVENT_CODE.home,\n    EVENT_CODE.end,\n    EVENT_CODE.pageUp,\n    EVENT_CODE.pageDown,\n  ]\n  if (validCode.includes(code)) {\n    handleKeyControl(code)\n    event.stopPropagation()\n    event.preventDefault()\n  }\n  if (\n    [EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(\n      code\n    ) &&\n    userInputDate.value === null &&\n    userInputTime.value === null\n  ) {\n    event.preventDefault()\n    emit(innerDate.value, false)\n  }\n}\n\nconst handleKeyControl = (code: string) => {\n  type KeyControlMappingCallableOffset = (date: Date, step?: number) => number\n  type KeyControl = {\n    [key: string]:\n      | number\n      | KeyControlMappingCallableOffset\n      | ((date: Date, step: number) => any)\n    offset: (date: Date, step: number) => any\n  }\n  interface KeyControlMapping {\n    [key: string]: KeyControl\n  }\n\n  const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE\n  const mapping: KeyControlMapping = {\n    year: {\n      [up]: -4,\n      [down]: 4,\n      [left]: -1,\n      [right]: 1,\n      offset: (date: Date, step: number) =>\n        date.setFullYear(date.getFullYear() + step),\n    },\n    month: {\n      [up]: -4,\n      [down]: 4,\n      [left]: -1,\n      [right]: 1,\n      offset: (date: Date, step: number) =>\n        date.setMonth(date.getMonth() + step),\n    },\n    week: {\n      [up]: -1,\n      [down]: 1,\n      [left]: -1,\n      [right]: 1,\n      offset: (date: Date, step: number) =>\n        date.setDate(date.getDate() + step * 7),\n    },\n    date: {\n      [up]: -7,\n      [down]: 7,\n      [left]: -1,\n      [right]: 1,\n      [home]: (date: Date) => -date.getDay(),\n      [end]: (date: Date) => -date.getDay() + 6,\n      [pageUp]: (date: Date) =>\n        -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),\n      [pageDown]: (date: Date) =>\n        new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),\n      offset: (date: Date, step: number) => date.setDate(date.getDate() + step),\n    },\n  }\n\n  const newDate = innerDate.value.toDate()\n  while (Math.abs(innerDate.value.diff(newDate, 'year', true)) < 1) {\n    const map = mapping[keyboardMode.value]\n    if (!map) return\n    map.offset(\n      newDate,\n      isFunction(map[code])\n        ? (map[code] as unknown as KeyControlMappingCallableOffset)(newDate)\n        : ((map[code] as number) ?? 0)\n    )\n    if (disabledDate && disabledDate(newDate)) {\n      break\n    }\n    const result = dayjs(newDate).locale(lang.value)\n    innerDate.value = result\n    contextEmit('pick', result, true)\n    break\n  }\n}\n\nconst handlePanelChange = (mode: 'month' | 'year') => {\n  contextEmit('panel-change', innerDate.value.toDate(), mode, currentView.value)\n}\n\nwatch(\n  () => selectionMode.value,\n  (val) => {\n    if (['month', 'year'].includes(val)) {\n      currentView.value = val\n      return\n    } else if (val === 'years') {\n      currentView.value = 'year'\n      return\n    } else if (val === 'months') {\n      currentView.value = 'month'\n      return\n    }\n    currentView.value = 'date'\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => defaultValue.value,\n  (val) => {\n    if (val) {\n      innerDate.value = getDefaultValue()\n    }\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => props.parsedValue,\n  (val) => {\n    if (val) {\n      if (isMultipleType.value) return\n      if (isArray(val)) return\n      innerDate.value = val\n    } else {\n      innerDate.value = getDefaultValue()\n    }\n  },\n  { immediate: true }\n)\n\ncontextEmit('set-picker-option', ['isValidValue', isValidValue])\ncontextEmit('set-picker-option', ['parseUserInput', parseUserInput])\ncontextEmit('set-picker-option', ['handleFocusPicker', _handleFocusPicker])\n</script>\n","<template>\n  <div\n    :class=\"[\n      ppNs.b(),\n      dpNs.b(),\n      ppNs.is('border', border),\n      ppNs.is('disabled', dateDisabled),\n      {\n        'has-sidebar': $slots.sidebar || hasShortcuts,\n        'has-time': showTime,\n      },\n    ]\"\n  >\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :disabled=\"dateDisabled\"\n          :class=\"ppNs.e('shortcut')\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div v-if=\"showTime\" :class=\"dpNs.e('time-header')\">\n          <span :class=\"dpNs.e('editor-wrap')\">\n            <el-input\n              :placeholder=\"t('el.datepicker.selectDate')\"\n              :model-value=\"visibleDate\"\n              size=\"small\"\n              :validate-event=\"false\"\n              :disabled=\"dateDisabled\"\n              :readonly=\"!editable\"\n              @input=\"(val) => (userInputDate = val)\"\n              @change=\"handleVisibleDateChange\"\n            />\n          </span>\n          <span\n            v-click-outside=\"handleTimePickClose\"\n            :class=\"dpNs.e('editor-wrap')\"\n          >\n            <el-input\n              :placeholder=\"t('el.datepicker.selectTime')\"\n              :model-value=\"visibleTime\"\n              size=\"small\"\n              :validate-event=\"false\"\n              :disabled=\"dateDisabled\"\n              :readonly=\"!editable\"\n              @focus=\"onTimePickerInputFocus\"\n              @input=\"(val) => (userInputTime = val)\"\n              @change=\"handleVisibleTimeChange\"\n            />\n            <time-pick-panel\n              :visible=\"timePickerVisible\"\n              :format=\"timeFormat\"\n              :parsed-value=\"innerDate\"\n              @pick=\"handleTimePick\"\n            />\n          </span>\n        </div>\n        <div\n          v-show=\"currentView !== 'time'\"\n          :class=\"[\n            dpNs.e('header'),\n            (currentView === 'year' || currentView === 'month') &&\n              dpNs.em('header', 'bordered'),\n          ]\"\n        >\n          <span :class=\"dpNs.e('prev-btn')\">\n            <button\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.prevYear`)\"\n              class=\"d-arrow-left\"\n              :class=\"ppNs.e('icon-btn')\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByYear(false)\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              v-show=\"currentView === 'date'\"\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.prevMonth`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"arrow-left\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByMonth(false)\"\n            >\n              <slot name=\"prev-month\">\n                <el-icon><arrow-left /></el-icon>\n              </slot>\n            </button>\n          </span>\n          <span\n            role=\"button\"\n            :class=\"dpNs.e('header-label')\"\n            aria-live=\"polite\"\n            :tabindex=\"disabled ? undefined : 0\"\n            :aria-disabled=\"disabled\"\n            @keydown.enter=\"showPicker('year')\"\n            @click=\"showPicker('year')\"\n            >{{ yearLabel }}</span\n          >\n          <span\n            v-show=\"currentView === 'date'\"\n            role=\"button\"\n            aria-live=\"polite\"\n            :tabindex=\"disabled ? undefined : 0\"\n            :aria-disabled=\"disabled\"\n            :class=\"[\n              dpNs.e('header-label'),\n              { active: currentView === 'month' },\n            ]\"\n            @keydown.enter=\"showPicker('month')\"\n            @click=\"showPicker('month')\"\n            >{{ t(`el.datepicker.month${month + 1}`) }}</span\n          >\n          <span :class=\"dpNs.e('next-btn')\">\n            <button\n              v-show=\"currentView === 'date'\"\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.nextMonth`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"arrow-right\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByMonth(true)\"\n            >\n              <slot name=\"next-month\">\n                <el-icon><arrow-right /></el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.nextYear`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"d-arrow-right\"\n              :disabled=\"dateDisabled\"\n              @click=\"moveByYear(true)\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n          </span>\n        </div>\n        <div :class=\"ppNs.e('content')\" @keydown=\"handleKeydownTable\">\n          <date-table\n            v-if=\"currentView === 'date'\"\n            ref=\"currentViewRef\"\n            :selection-mode=\"selectionMode\"\n            :date=\"innerDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateDisabled\"\n            :cell-class-name=\"cellClassName\"\n            :show-week-number=\"showWeekNumber\"\n            @pick=\"handleDatePick\"\n          />\n          <year-table\n            v-if=\"currentView === 'year'\"\n            ref=\"currentViewRef\"\n            :selection-mode=\"selectionMode\"\n            :date=\"innerDate\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateDisabled\"\n            :parsed-value=\"parsedValue\"\n            :cell-class-name=\"cellClassName\"\n            @pick=\"handleYearPick\"\n          />\n          <month-table\n            v-if=\"currentView === 'month'\"\n            ref=\"currentViewRef\"\n            :selection-mode=\"selectionMode\"\n            :date=\"innerDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @pick=\"handleMonthPick\"\n          />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"showFooter && footerVisible && footerFilled\"\n      :class=\"ppNs.e('footer')\"\n    >\n      <el-button\n        v-show=\"!isMultipleType && showNow\"\n        text\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        :disabled=\"disabledNow\"\n        @click=\"changeToNow\"\n      >\n        {{ t('el.datepicker.now') }}\n      </el-button>\n      <el-button\n        v-if=\"showConfirm\"\n        plain\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        :disabled=\"disabledConfirm\"\n        @click=\"onConfirm\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </el-button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  ref,\n  toRef,\n  useAttrs,\n  useSlots,\n  watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@pit-element-plus/components/button'\nimport { ClickOutside as vClickOutside } from '@pit-element-plus/directives'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElInput from '@pit-element-plus/components/input'\nimport {\n  DEFAULT_FORMATS_DATE,\n  DEFAULT_FORMATS_TIME,\n  PICKER_BASE_INJECTION_KEY,\n  TimePickPanel,\n  extractDateFormat,\n  extractTimeFormat,\n} from '@pit-element-plus/components/time-picker'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  extractFirst,\n  getEventCode,\n  isArray,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  DArrowLeft,\n  DArrowRight,\n} from 'pit-element-icons'\nimport { panelDatePickProps } from '../props/panel-date-pick'\nimport {\n  correctlyParseUserInput,\n  getValidDateOfMonth,\n  getValidDateOfYear,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport DateTable from './basic-date-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { SetupContext } from 'vue'\nimport type { ConfigType, Dayjs } from 'dayjs'\nimport type { PanelDatePickProps } from '../props/panel-date-pick'\nimport type {\n  DateTableEmits,\n  DatesPickerEmits,\n  MonthsPickerEmits,\n  WeekPickerEmits,\n  YearsPickerEmits,\n} from '../props/basic-date-table'\n\ntype DatePickType = PanelDatePickProps['type']\n// todo\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst timeWithinRange = (_: ConfigType, __: any, ___: string) => true\nconst props = defineProps(panelDatePickProps)\nconst contextEmit = defineEmits(['pick', 'set-picker-option', 'panel-change'])\nconst ppNs = useNamespace('picker-panel')\nconst dpNs = useNamespace('date-picker')\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nconst { t, lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst currentViewRef = ref<{ focus: () => void }>()\n\nconst innerDate = ref(dayjs().locale(lang.value))\n\nconst isChangeToNow = ref(false)\n\nlet isShortcut = false\n\nconst defaultTimeD = computed(() => {\n  return dayjs(defaultTime).locale(lang.value)\n})\n\nconst month = computed(() => {\n  return innerDate.value.month()\n})\n\nconst year = computed(() => {\n  return innerDate.value.year()\n})\n\nconst selectableRange = ref([])\nconst userInputDate = ref<string | null>(null)\nconst userInputTime = ref<string | null>(null)\n// todo update to disableHour\nconst checkDateWithinRange = (date: ConfigType) => {\n  return selectableRange.value.length > 0\n    ? timeWithinRange(date, selectableRange.value, props.format || 'HH:mm:ss')\n    : true\n}\nconst formatEmit = (emitDayjs: Dayjs) => {\n  if (\n    defaultTime &&\n    !visibleTime.value &&\n    !isChangeToNow.value &&\n    !isShortcut\n  ) {\n    return defaultTimeD.value\n      .year(emitDayjs.year())\n      .month(emitDayjs.month())\n      .date(emitDayjs.date())\n  }\n  if (showTime.value) return emitDayjs.millisecond(0)\n  return emitDayjs.startOf('day')\n}\nconst emit = (value: Dayjs | Dayjs[], ...args: any[]) => {\n  if (!value) {\n    contextEmit('pick', value, ...args)\n  } else if (isArray(value)) {\n    const dates = value.map(formatEmit)\n    contextEmit('pick', dates, ...args)\n  } else {\n    contextEmit('pick', formatEmit(value), ...args)\n  }\n  userInputDate.value = null\n  userInputTime.value = null\n  isChangeToNow.value = false\n  isShortcut = false\n}\nconst handleDatePick = async (value: DateTableEmits, keepOpen?: boolean) => {\n  if (selectionMode.value === 'date' && dayjs.isDayjs(value)) {\n    const parsedDateValue = extractFirst(props.parsedValue)\n    let newDate = parsedDateValue\n      ? parsedDateValue\n          .year(value.year())\n          .month(value.month())\n          .date(value.date())\n      : value\n    // change default time while out of selectableRange\n    if (!checkDateWithinRange(newDate)) {\n      newDate = (selectableRange.value[0][0] as Dayjs)\n        .year(value.year())\n        .month(value.month())\n        .date(value.date())\n    }\n    innerDate.value = newDate\n    emit(newDate, showTime.value || keepOpen)\n  } else if (selectionMode.value === 'week') {\n    emit((value as WeekPickerEmits).date)\n  } else if (selectionMode.value === 'dates') {\n    emit(value as DatesPickerEmits, true) // set true to keep panel open\n  }\n}\n\nconst moveByMonth = (forward: boolean) => {\n  const action = forward ? 'add' : 'subtract'\n  innerDate.value = innerDate.value[action](1, 'month')\n  handlePanelChange('month')\n}\n\nconst moveByYear = (forward: boolean) => {\n  const currentDate = innerDate.value\n  const action = forward ? 'add' : 'subtract'\n\n  innerDate.value =\n    currentView.value === 'year'\n      ? currentDate[action](10, 'year')\n      : currentDate[action](1, 'year')\n\n  handlePanelChange('year')\n}\n\nconst currentView = ref('date')\n\nconst yearLabel = computed(() => {\n  const yearTranslation = t('el.datepicker.year')\n  if (currentView.value === 'year') {\n    const startYear = Math.floor(year.value / 10) * 10\n    if (yearTranslation) {\n      return `${startYear} ${yearTranslation} - ${\n        startYear + 9\n      } ${yearTranslation}`\n    }\n    return `${startYear} - ${startYear + 9}`\n  }\n  return `${year.value} ${yearTranslation}`\n})\n\ntype Shortcut = {\n  value: (() => Dayjs) | Dayjs\n  onClick?: (ctx: Omit<SetupContext, 'expose'>) => void\n}\n\nconst handleShortcutClick = (shortcut: Shortcut) => {\n  const shortcutValue = isFunction(shortcut.value)\n    ? shortcut.value()\n    : shortcut.value\n  if (shortcutValue) {\n    isShortcut = true\n    emit(dayjs(shortcutValue).locale(lang.value))\n    return\n  }\n  if (shortcut.onClick) {\n    shortcut.onClick({\n      attrs,\n      slots,\n      emit: contextEmit as SetupContext['emit'],\n    })\n  }\n}\n\nconst selectionMode = computed<DatePickType>(() => {\n  const { type } = props\n  if (['week', 'month', 'months', 'year', 'years', 'dates'].includes(type))\n    return type\n  return 'date'\n})\n\nconst isMultipleType = computed(() => {\n  return (\n    selectionMode.value === 'dates' ||\n    selectionMode.value === 'months' ||\n    selectionMode.value === 'years'\n  )\n})\n\nconst keyboardMode = computed<string>(() => {\n  return selectionMode.value === 'date'\n    ? currentView.value\n    : selectionMode.value\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst handleMonthPick = async (\n  month: number | MonthsPickerEmits,\n  keepOpen?: boolean\n) => {\n  if (selectionMode.value === 'month') {\n    innerDate.value = getValidDateOfMonth(\n      innerDate.value,\n      innerDate.value.year(),\n      month as number,\n      lang.value,\n      disabledDate\n    )\n    emit(innerDate.value, false)\n  } else if (selectionMode.value === 'months') {\n    emit(month as MonthsPickerEmits, keepOpen ?? true)\n  } else {\n    innerDate.value = getValidDateOfMonth(\n      innerDate.value,\n      innerDate.value.year(),\n      month as number,\n      lang.value,\n      disabledDate\n    )\n    currentView.value = 'date'\n    if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n      emit(innerDate.value, true)\n      await nextTick()\n      handleFocusPicker()\n    }\n  }\n  handlePanelChange('month')\n}\n\nconst handleYearPick = async (\n  year: number | YearsPickerEmits,\n  keepOpen?: boolean\n) => {\n  if (selectionMode.value === 'year') {\n    const data = innerDate.value.startOf('year').year(year as number)\n    innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n    emit(innerDate.value, false)\n  } else if (selectionMode.value === 'years') {\n    emit(year as YearsPickerEmits, keepOpen ?? true)\n  } else {\n    const data = innerDate.value.year(year as number)\n    innerDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n    currentView.value = 'month'\n    if (['month', 'year', 'date', 'week'].includes(selectionMode.value)) {\n      emit(innerDate.value, true)\n      await nextTick()\n      handleFocusPicker()\n    }\n  }\n  handlePanelChange('year')\n}\n\nconst dateDisabled = useFormDisabled()\n\nconst showPicker = async (view: 'month' | 'year') => {\n  if (dateDisabled.value) return\n  currentView.value = view\n  await nextTick()\n  handleFocusPicker()\n}\n\nconst showTime = computed(\n  () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst footerVisible = computed(() => {\n  const showDateFooter = showTime.value || selectionMode.value === 'dates'\n  const showYearFooter = selectionMode.value === 'years'\n  const showMonthFooter = selectionMode.value === 'months'\n  const isDateView = currentView.value === 'date'\n  const isYearView = currentView.value === 'year'\n  const isMonthView = currentView.value === 'month'\n  return (\n    (showDateFooter && isDateView) ||\n    (showYearFooter && isYearView) ||\n    (showMonthFooter && isMonthView)\n  )\n})\n\nconst footerFilled = computed(\n  () => (!isMultipleType.value && props.showNow) || props.showConfirm\n)\n\nconst disabledConfirm = computed(() => {\n  if (!disabledDate) return false\n  if (!props.parsedValue) return true\n  if (isArray(props.parsedValue)) {\n    return disabledDate(props.parsedValue[0].toDate())\n  }\n  return disabledDate(props.parsedValue.toDate())\n})\nconst onConfirm = () => {\n  if (isMultipleType.value) {\n    emit(props.parsedValue as Dayjs[])\n  } else {\n    // deal with the scenario where: user opens the date time picker, then confirm without doing anything\n    let result = extractFirst(props.parsedValue)\n    if (!result) {\n      const defaultTimeD = dayjs(defaultTime).locale(lang.value)\n      const defaultValueD = getDefaultValue()\n      result = defaultTimeD\n        .year(defaultValueD.year())\n        .month(defaultValueD.month())\n        .date(defaultValueD.date())\n    }\n    innerDate.value = result\n    emit(result)\n  }\n}\n\nconst disabledNow = computed(() => {\n  if (!disabledDate) return false\n  return disabledDate(dayjs().locale(lang.value).toDate())\n})\nconst changeToNow = () => {\n  // NOTE: not a permanent solution\n  //       consider disable \"now\" button in the future\n  const now = dayjs().locale(lang.value)\n  const nowDate = now.toDate()\n  isChangeToNow.value = true\n  if (\n    (!disabledDate || !disabledDate(nowDate)) &&\n    checkDateWithinRange(nowDate)\n  ) {\n    innerDate.value = dayjs().locale(lang.value)\n    emit(innerDate.value)\n  }\n}\n\nconst timeFormat = computed(() => {\n  return (\n    props.timeFormat || extractTimeFormat(props.format) || DEFAULT_FORMATS_TIME\n  )\n})\n\nconst dateFormat = computed(() => {\n  return (\n    props.dateFormat || extractDateFormat(props.format) || DEFAULT_FORMATS_DATE\n  )\n})\n\nconst visibleTime = computed(() => {\n  if (userInputTime.value) return userInputTime.value\n  if (!props.parsedValue && !defaultValue.value) return\n  const dateValue = extractFirst(props.parsedValue) || innerDate.value\n  return dateValue.format(timeFormat.value)\n})\n\nconst visibleDate = computed(() => {\n  if (userInputDate.value) return userInputDate.value\n  if (!props.parsedValue && !defaultValue.value) return\n  const dateValue = extractFirst(props.parsedValue) || innerDate.value\n  return dateValue.format(dateFormat.value)\n})\n\nconst timePickerVisible = ref(false)\nconst onTimePickerInputFocus = () => {\n  timePickerVisible.value = true\n}\nconst handleTimePickClose = () => {\n  timePickerVisible.value = false\n}\n\nconst getUnits = (date: Dayjs) => {\n  return {\n    hour: date.hour(),\n    minute: date.minute(),\n    second: date.second(),\n    year: date.year(),\n    month: date.month(),\n    date: date.date(),\n  }\n}\n\nconst handleTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n  const { hour, minute, second } = getUnits(value)\n  const parsedDateValue = extractFirst(props.parsedValue)\n  const newDate = parsedDateValue\n    ? parsedDateValue.hour(hour).minute(minute).second(second)\n    : value\n  innerDate.value = newDate\n  emit(innerDate.value, true)\n  if (!first) {\n    timePickerVisible.value = visible\n  }\n}\n\nconst handleVisibleTimeChange = (value: string) => {\n  const newDate = dayjs(value, timeFormat.value).locale(lang.value)\n  if (newDate.isValid() && checkDateWithinRange(newDate)) {\n    const { year, month, date } = getUnits(innerDate.value)\n    innerDate.value = newDate.year(year).month(month).date(date)\n    userInputTime.value = null\n    timePickerVisible.value = false\n    emit(innerDate.value, true)\n  }\n}\n\nconst handleVisibleDateChange = (value: string) => {\n  const newDate = correctlyParseUserInput(\n    value,\n    dateFormat.value,\n    lang.value,\n    isDefaultFormat\n  ) as Dayjs\n  if (newDate.isValid()) {\n    if (disabledDate && disabledDate(newDate.toDate())) {\n      return\n    }\n    const { hour, minute, second } = getUnits(innerDate.value)\n    innerDate.value = newDate.hour(hour).minute(minute).second(second)\n    userInputDate.value = null\n    emit(innerDate.value, true)\n  }\n}\n\nconst isValidValue = (date: unknown) => {\n  return (\n    dayjs.isDayjs(date) &&\n    date.isValid() &&\n    (disabledDate ? !disabledDate(date.toDate()) : true)\n  )\n}\n\nconst parseUserInput = (value: Dayjs) => {\n  return correctlyParseUserInput(\n    value,\n    props.format,\n    lang.value,\n    isDefaultFormat\n  )\n}\n\nconst getDefaultValue = () => {\n  const parseDate = dayjs(defaultValue.value).locale(lang.value)\n  if (!defaultValue.value) {\n    const defaultTimeDValue = defaultTimeD.value\n    return dayjs()\n      .hour(defaultTimeDValue.hour())\n      .minute(defaultTimeDValue.minute())\n      .second(defaultTimeDValue.second())\n      .locale(lang.value)\n  }\n  return parseDate\n}\n\nconst handleFocusPicker = () => {\n  if (['week', 'month', 'year', 'date'].includes(selectionMode.value)) {\n    currentViewRef.value?.focus()\n  }\n}\n\nconst _handleFocusPicker = () => {\n  handleFocusPicker()\n  // TODO: After focus the date input, the first time you use the ArrowDown keys, you cannot focus on the date cell\n  if (selectionMode.value === 'week') {\n    handleKeyControl(EVENT_CODE.down)\n  }\n}\n\nconst handleKeydownTable = (event: KeyboardEvent) => {\n  const code = getEventCode(event)\n\n  const validCode = [\n    EVENT_CODE.up,\n    EVENT_CODE.down,\n    EVENT_CODE.left,\n    EVENT_CODE.right,\n    EVENT_CODE.home,\n    EVENT_CODE.end,\n    EVENT_CODE.pageUp,\n    EVENT_CODE.pageDown,\n  ]\n  if (validCode.includes(code)) {\n    handleKeyControl(code)\n    event.stopPropagation()\n    event.preventDefault()\n  }\n  if (\n    [EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(\n      code\n    ) &&\n    userInputDate.value === null &&\n    userInputTime.value === null\n  ) {\n    event.preventDefault()\n    emit(innerDate.value, false)\n  }\n}\n\nconst handleKeyControl = (code: string) => {\n  type KeyControlMappingCallableOffset = (date: Date, step?: number) => number\n  type KeyControl = {\n    [key: string]:\n      | number\n      | KeyControlMappingCallableOffset\n      | ((date: Date, step: number) => any)\n    offset: (date: Date, step: number) => any\n  }\n  interface KeyControlMapping {\n    [key: string]: KeyControl\n  }\n\n  const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE\n  const mapping: KeyControlMapping = {\n    year: {\n      [up]: -4,\n      [down]: 4,\n      [left]: -1,\n      [right]: 1,\n      offset: (date: Date, step: number) =>\n        date.setFullYear(date.getFullYear() + step),\n    },\n    month: {\n      [up]: -4,\n      [down]: 4,\n      [left]: -1,\n      [right]: 1,\n      offset: (date: Date, step: number) =>\n        date.setMonth(date.getMonth() + step),\n    },\n    week: {\n      [up]: -1,\n      [down]: 1,\n      [left]: -1,\n      [right]: 1,\n      offset: (date: Date, step: number) =>\n        date.setDate(date.getDate() + step * 7),\n    },\n    date: {\n      [up]: -7,\n      [down]: 7,\n      [left]: -1,\n      [right]: 1,\n      [home]: (date: Date) => -date.getDay(),\n      [end]: (date: Date) => -date.getDay() + 6,\n      [pageUp]: (date: Date) =>\n        -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),\n      [pageDown]: (date: Date) =>\n        new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),\n      offset: (date: Date, step: number) => date.setDate(date.getDate() + step),\n    },\n  }\n\n  const newDate = innerDate.value.toDate()\n  while (Math.abs(innerDate.value.diff(newDate, 'year', true)) < 1) {\n    const map = mapping[keyboardMode.value]\n    if (!map) return\n    map.offset(\n      newDate,\n      isFunction(map[code])\n        ? (map[code] as unknown as KeyControlMappingCallableOffset)(newDate)\n        : ((map[code] as number) ?? 0)\n    )\n    if (disabledDate && disabledDate(newDate)) {\n      break\n    }\n    const result = dayjs(newDate).locale(lang.value)\n    innerDate.value = result\n    contextEmit('pick', result, true)\n    break\n  }\n}\n\nconst handlePanelChange = (mode: 'month' | 'year') => {\n  contextEmit('panel-change', innerDate.value.toDate(), mode, currentView.value)\n}\n\nwatch(\n  () => selectionMode.value,\n  (val) => {\n    if (['month', 'year'].includes(val)) {\n      currentView.value = val\n      return\n    } else if (val === 'years') {\n      currentView.value = 'year'\n      return\n    } else if (val === 'months') {\n      currentView.value = 'month'\n      return\n    }\n    currentView.value = 'date'\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => defaultValue.value,\n  (val) => {\n    if (val) {\n      innerDate.value = getDefaultValue()\n    }\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => props.parsedValue,\n  (val) => {\n    if (val) {\n      if (isMultipleType.value) return\n      if (isArray(val)) return\n      innerDate.value = val\n    } else {\n      innerDate.value = getDefaultValue()\n    }\n  },\n  { immediate: true }\n)\n\ncontextEmit('set-picker-option', ['isValidValue', isValidValue])\ncontextEmit('set-picker-option', ['parseUserInput', parseUserInput])\ncontextEmit('set-picker-option', ['handleFocusPicker', _handleFocusPicker])\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\nimport { panelRangeSharedProps, panelSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const panelDateRangeProps = buildProps({\n  ...panelSharedProps,\n  ...panelRangeSharedProps,\n} as const)\n\nexport type PanelDateRangeProps = ExtractPropTypes<typeof panelDateRangeProps>\nexport type PanelDateRangePropsPublic = ExtractPublicPropTypes<\n  typeof panelDateRangeProps\n>\n","import { getCurrentInstance, useAttrs, useSlots } from 'vue'\nimport dayjs from 'dayjs'\nimport { isFunction } from '@pit-element-plus/utils'\n\nimport type { SetupContext } from 'vue'\nimport type { useLocale } from '@pit-element-plus/hooks'\nimport type { RangePickerSharedEmits } from '../props/shared'\n\n// FIXME: extract this to `date-picker.ts`\nexport type Shortcut = {\n  text: string\n  value: [Date, Date] | (() => [Date, Date])\n  onClick?: (ctx: Omit<SetupContext<RangePickerSharedEmits>, 'expose'>) => void\n}\n\nexport const useShortcut = (lang: ReturnType<typeof useLocale>['lang']) => {\n  const { emit } = getCurrentInstance()!\n  const attrs = useAttrs()\n  const slots = useSlots()\n\n  const handleShortcutClick = (shortcut: Shortcut) => {\n    const shortcutValues = isFunction(shortcut.value)\n      ? shortcut.value()\n      : shortcut.value\n\n    if (shortcutValues) {\n      emit('pick', [\n        dayjs(shortcutValues[0]).locale(lang.value),\n        dayjs(shortcutValues[1]).locale(lang.value),\n      ])\n      return\n    }\n    if (shortcut.onClick) {\n      shortcut.onClick({\n        attrs,\n        slots,\n        emit,\n      })\n    }\n  }\n\n  return handleShortcutClick\n}\n","import { getCurrentInstance, inject, ref, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { isArray } from '@pit-element-plus/utils'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { isEqual } from 'lodash-unified'\nimport { getDefaultValue, isValidRange } from '../utils'\nimport { ROOT_PICKER_INJECTION_KEY } from '../constants'\nimport { useShortcut } from './use-shortcut'\n\nimport type { Ref } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { PanelRangeSharedProps, RangeState } from '../props/shared'\nimport type { DefaultValue } from '../utils'\n\ntype UseRangePickerProps = {\n  sortDates: (minDate: Dayjs | undefined, maxDate: Dayjs | undefined) => void\n  defaultValue: Ref<DefaultValue>\n  defaultTime?: Ref<DefaultValue>\n  leftDate: Ref<Dayjs>\n  rightDate: Ref<Dayjs>\n  step?: number\n  unit: 'month' | 'year'\n}\n\nexport const useRangePicker = (\n  props: PanelRangeSharedProps,\n  {\n    defaultValue,\n    defaultTime,\n    leftDate,\n    rightDate,\n    step,\n    unit,\n\n    sortDates,\n  }: UseRangePickerProps\n) => {\n  const { emit } = getCurrentInstance()!\n\n  const { pickerNs } = inject(ROOT_PICKER_INJECTION_KEY)!\n  const drpNs = useNamespace('date-range-picker')\n  const { t, lang } = useLocale()\n  const handleShortcutClick = useShortcut(lang)\n  const minDate = ref<Dayjs>()\n  const maxDate = ref<Dayjs>()\n  const rangeState = ref<RangeState>({\n    endDate: null,\n    selecting: false,\n  })\n\n  const handleChangeRange = (val: RangeState) => {\n    rangeState.value = val\n  }\n\n  const handleRangeConfirm = (visible = false) => {\n    const _minDate = unref(minDate)\n    const _maxDate = unref(maxDate)\n\n    if (isValidRange([_minDate, _maxDate])) {\n      emit('pick', [_minDate, _maxDate], visible)\n    }\n  }\n\n  const onSelect = (selecting: boolean) => {\n    rangeState.value.selecting = selecting\n    if (!selecting) {\n      rangeState.value.endDate = null\n    }\n  }\n\n  const parseValue = (parsedValue: PanelRangeSharedProps['parsedValue']) => {\n    if (isArray(parsedValue) && parsedValue.length === 2) {\n      const [start, end] = parsedValue\n      minDate.value = start\n      leftDate.value = start\n      maxDate.value = end\n      sortDates(unref(minDate), unref(maxDate))\n    } else {\n      restoreDefault()\n    }\n  }\n\n  const restoreDefault = () => {\n    let [start, end] = getDefaultValue(unref(defaultValue), {\n      lang: unref(lang),\n      step,\n      unit,\n      unlinkPanels: props.unlinkPanels,\n    })\n    const getShift = (day: Dayjs) => {\n      return day.diff(day.startOf('d'), 'ms')\n    }\n    const maybeTimes = unref(defaultTime)\n    if (maybeTimes) {\n      let leftShift = 0\n      let rightShift = 0\n      if (isArray(maybeTimes)) {\n        const [timeStart, timeEnd] = maybeTimes.map(dayjs)\n        leftShift = getShift(timeStart)\n        rightShift = getShift(timeEnd)\n      } else {\n        const shift = getShift(dayjs(maybeTimes))\n        leftShift = shift\n        rightShift = shift\n      }\n      start = start.startOf('d').add(leftShift, 'ms')\n      end = end.startOf('d').add(rightShift, 'ms')\n    }\n\n    minDate.value = undefined\n    maxDate.value = undefined\n    leftDate.value = start\n    rightDate.value = end\n  }\n\n  watch(\n    defaultValue,\n    (val) => {\n      if (val) {\n        restoreDefault()\n      }\n    },\n    { immediate: true }\n  )\n\n  watch(\n    () => props.parsedValue,\n    (parsedValue) => {\n      if (\n        !(parsedValue as [Dayjs, Dayjs])?.length ||\n        !isEqual(parsedValue, [minDate.value, maxDate.value])\n      ) {\n        parseValue(parsedValue)\n      }\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  watch(\n    () => props.visible,\n    () => {\n      if (props.visible) {\n        parseValue(props.parsedValue)\n      }\n    },\n    { immediate: true }\n  )\n\n  return {\n    minDate,\n    maxDate,\n    rangeState,\n    lang,\n    ppNs: pickerNs,\n    drpNs,\n\n    handleChangeRange,\n    handleRangeConfirm,\n    handleShortcutClick,\n    onSelect,\n    parseValue,\n    t,\n  }\n}\n","import { computed, inject, nextTick, ref } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { PICKER_BASE_INJECTION_KEY } from '@pit-element-plus/components/time-picker'\nimport { getValidDateOfMonth, getValidDateOfYear } from '../utils'\n\nimport type { PanelDateRangeProps } from '../props/panel-date-range'\nimport type { Dayjs } from 'dayjs'\nimport type { ComputedRef, Ref } from 'vue'\n\ntype CurrentView = 'date' | 'year' | 'month'\ntype CurrentViewRef = { focus: () => void }\n\nexport type Emits = (\n  event: 'pick' | 'set-picker-option' | 'calendar-change' | 'panel-change',\n  ...args: any[]\n) => void\n\nexport const usePanelDateRange = (\n  props: PanelDateRangeProps,\n  emit: Emits,\n  leftDate: Ref<Dayjs>,\n  rightDate: Ref<Dayjs>\n) => {\n  const leftCurrentView = ref<CurrentView>('date')\n  const leftCurrentViewRef = ref<CurrentViewRef>()\n  const rightCurrentView = ref<CurrentView>('date')\n  const rightCurrentViewRef = ref<CurrentViewRef>()\n  const pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\n  const { disabledDate } = pickerBase.props\n  const { t, lang } = useLocale()\n\n  const leftYear = computed(() => {\n    return leftDate.value.year()\n  })\n  const leftMonth = computed(() => {\n    return leftDate.value.month()\n  })\n\n  const rightYear = computed(() => {\n    return rightDate.value.year()\n  })\n  const rightMonth = computed(() => {\n    return rightDate.value.month()\n  })\n\n  function computedYearLabel(\n    currentView: Ref<CurrentView>,\n    yearValue: ComputedRef<number>\n  ) {\n    const yearTranslation = t('el.datepicker.year')\n    if (currentView.value === 'year') {\n      const startYear = Math.floor(yearValue.value! / 10) * 10\n      return yearTranslation\n        ? `${startYear} ${yearTranslation} - ${\n            startYear + 9\n          } ${yearTranslation}`\n        : `${startYear} - ${startYear + 9}`\n    }\n    return `${yearValue.value} ${yearTranslation}`\n  }\n\n  function focusPicker(currentViewRef?: CurrentViewRef) {\n    currentViewRef?.focus()\n  }\n\n  async function showPicker(\n    pickerType: 'left' | 'right',\n    view: 'month' | 'year'\n  ) {\n    if (props.disabled) return\n    const currentView =\n      pickerType === 'left' ? leftCurrentView : rightCurrentView\n    const currentViewRef =\n      pickerType === 'left' ? leftCurrentViewRef : rightCurrentViewRef\n    currentView.value = view\n    await nextTick()\n    focusPicker(currentViewRef.value)\n  }\n\n  async function handlePick(\n    mode: 'month' | 'year',\n    pickerType: 'left' | 'right',\n    value: number\n  ) {\n    if (props.disabled) return\n    const isLeftPicker = pickerType === 'left'\n    const startDate = isLeftPicker ? leftDate : rightDate\n    const endDate = isLeftPicker ? rightDate : leftDate\n    const currentView = isLeftPicker ? leftCurrentView : rightCurrentView\n    const currentViewRef = isLeftPicker\n      ? leftCurrentViewRef\n      : rightCurrentViewRef\n\n    if (mode === 'year') {\n      const data = startDate.value.year(value)\n      startDate.value = getValidDateOfYear(data, lang.value, disabledDate)\n    }\n\n    if (mode === 'month') {\n      startDate.value = getValidDateOfMonth(\n        startDate.value,\n        startDate.value.year(),\n        value,\n        lang.value,\n        disabledDate\n      )\n    }\n\n    if (!props.unlinkPanels) {\n      endDate.value =\n        pickerType === 'left'\n          ? startDate.value.add(1, 'month')\n          : startDate.value.subtract(1, 'month')\n    }\n\n    currentView.value = mode === 'year' ? 'month' : 'date'\n    await nextTick()\n    focusPicker(currentViewRef.value)\n    handlePanelChange(mode)\n  }\n\n  function handlePanelChange(mode: 'month' | 'year') {\n    emit(\n      'panel-change',\n      [leftDate.value.toDate(), rightDate.value.toDate()],\n      mode\n    )\n  }\n\n  function adjustDateByView(\n    currentView: CurrentView,\n    date: Dayjs,\n    forward: boolean\n  ) {\n    const action = forward ? 'add' : 'subtract'\n    return currentView === 'year'\n      ? date[action](10, 'year')\n      : date[action](1, 'year')\n  }\n\n  return {\n    leftCurrentView,\n    rightCurrentView,\n    leftCurrentViewRef,\n    rightCurrentViewRef,\n    leftYear,\n    rightYear,\n    leftMonth,\n    rightMonth,\n    leftYearLabel: computed(() => computedYearLabel(leftCurrentView, leftYear)),\n    rightYearLabel: computed(() =>\n      computedYearLabel(rightCurrentView, rightYear)\n    ),\n    showLeftPicker: (view: 'month' | 'year') => showPicker('left', view),\n    showRightPicker: (view: 'month' | 'year') => showPicker('right', view),\n    handleLeftYearPick: (year: number) => handlePick('year', 'left', year),\n    handleRightYearPick: (year: number) => handlePick('year', 'right', year),\n    handleLeftMonthPick: (month: number) => handlePick('month', 'left', month),\n    handleRightMonthPick: (month: number) =>\n      handlePick('month', 'right', month),\n    handlePanelChange,\n    adjustDateByView,\n  }\n}\n","<template>\n  <div\n    :class=\"[\n      ppNs.b(),\n      drpNs.b(),\n      ppNs.is('border', border),\n      ppNs.is('disabled', dateRangeDisabled),\n      {\n        'has-sidebar': $slots.sidebar || hasShortcuts,\n        'has-time': showTime,\n      },\n    ]\"\n  >\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :disabled=\"dateRangeDisabled\"\n          :class=\"ppNs.e('shortcut')\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div v-if=\"showTime\" :class=\"drpNs.e('time-header')\">\n          <span :class=\"drpNs.e('editors-wrap')\">\n            <span :class=\"drpNs.e('time-picker-wrap')\">\n              <el-input\n                size=\"small\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.startDate')\"\n                :class=\"drpNs.e('editor')\"\n                :model-value=\"minVisibleDate\"\n                :validate-event=\"false\"\n                :readonly=\"!editable\"\n                @input=\"(val) => handleDateInput(val, 'min')\"\n                @change=\"(val) => handleDateChange(val, 'min')\"\n              />\n            </span>\n            <span\n              v-clickoutside=\"handleMinTimeClose\"\n              :class=\"drpNs.e('time-picker-wrap')\"\n            >\n              <el-input\n                size=\"small\"\n                :class=\"drpNs.e('editor')\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.startTime')\"\n                :model-value=\"minVisibleTime\"\n                :validate-event=\"false\"\n                :readonly=\"!editable\"\n                @focus=\"minTimePickerVisible = true\"\n                @input=\"(val) => handleTimeInput(val, 'min')\"\n                @change=\"(val) => handleTimeChange(val, 'min')\"\n              />\n              <time-pick-panel\n                :visible=\"minTimePickerVisible\"\n                :format=\"timeFormat\"\n                datetime-role=\"start\"\n                :parsed-value=\"minDate || leftDate\"\n                @pick=\"handleMinTimePick\"\n              />\n            </span>\n          </span>\n          <span>\n            <el-icon><arrow-right /></el-icon>\n          </span>\n          <span :class=\"drpNs.e('editors-wrap')\" class=\"is-right\">\n            <span :class=\"drpNs.e('time-picker-wrap')\">\n              <el-input\n                size=\"small\"\n                :class=\"drpNs.e('editor')\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.endDate')\"\n                :model-value=\"maxVisibleDate\"\n                :readonly=\"!minDate || !editable\"\n                :validate-event=\"false\"\n                @input=\"(val) => handleDateInput(val, 'max')\"\n                @change=\"(val) => handleDateChange(val, 'max')\"\n              />\n            </span>\n            <span\n              v-clickoutside=\"handleMaxTimeClose\"\n              :class=\"drpNs.e('time-picker-wrap')\"\n            >\n              <el-input\n                size=\"small\"\n                :class=\"drpNs.e('editor')\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.endTime')\"\n                :model-value=\"maxVisibleTime\"\n                :readonly=\"!minDate || !editable\"\n                :validate-event=\"false\"\n                @focus=\"minDate && (maxTimePickerVisible = true)\"\n                @input=\"(val) => handleTimeInput(val, 'max')\"\n                @change=\"(val) => handleTimeChange(val, 'max')\"\n              />\n              <time-pick-panel\n                datetime-role=\"end\"\n                :visible=\"maxTimePickerVisible\"\n                :format=\"timeFormat\"\n                :parsed-value=\"maxDate || rightDate\"\n                @pick=\"handleMaxTimePick\"\n              />\n            </span>\n          </span>\n        </div>\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-left\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              :aria-label=\"t(`el.datepicker.prevYear`)\"\n              class=\"d-arrow-left\"\n              :disabled=\"dateRangeDisabled\"\n              @click=\"leftPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon>\n                  <d-arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-show=\"leftCurrentView === 'date'\"\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              :aria-label=\"t(`el.datepicker.prevMonth`)\"\n              class=\"arrow-left\"\n              :disabled=\"dateRangeDisabled\"\n              @click=\"leftPrevMonth\"\n            >\n              <slot name=\"prev-month\">\n                <el-icon>\n                  <arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.nextYear`)\"\n              class=\"d-arrow-right\"\n              @click=\"leftNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon>\n                  <d-arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels && leftCurrentView === 'date'\"\n              type=\"button\"\n              :disabled=\"!enableMonthArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableMonthArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.nextMonth`)\"\n              class=\"arrow-right\"\n              @click=\"leftNextMonth\"\n            >\n              <slot name=\"next-month\">\n                <el-icon>\n                  <arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <div>\n              <span\n                role=\"button\"\n                :class=\"drpNs.e('header-label')\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                @keydown.enter=\"showLeftPicker('year')\"\n                @click=\"showLeftPicker('year')\"\n              >\n                {{ leftYearLabel }}\n              </span>\n              <span\n                v-show=\"leftCurrentView === 'date'\"\n                role=\"button\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                :class=\"[\n                  drpNs.e('header-label'),\n                  { active: leftCurrentView === 'month' },\n                ]\"\n                @keydown.enter=\"showLeftPicker('month')\"\n                @click=\"showLeftPicker('month')\"\n              >\n                {{ t(`el.datepicker.month${leftDate.month() + 1}`) }}\n              </span>\n            </div>\n          </div>\n          <date-table\n            v-if=\"leftCurrentView === 'date'\"\n            ref=\"leftCurrentViewRef\"\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :cell-class-name=\"cellClassName\"\n            :show-week-number=\"showWeekNumber\"\n            :disabled=\"dateRangeDisabled\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n          <year-table\n            v-if=\"leftCurrentView === 'year'\"\n            ref=\"leftCurrentViewRef\"\n            selection-mode=\"year\"\n            :date=\"leftDate\"\n            :disabled-date=\"disabledDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleLeftYearPick\"\n          />\n          <month-table\n            v-if=\"leftCurrentView === 'month'\"\n            ref=\"leftCurrentViewRef\"\n            selection-mode=\"month\"\n            :date=\"leftDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleLeftMonthPick\"\n          />\n        </div>\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-right\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.prevYear`)\"\n              class=\"d-arrow-left\"\n              @click=\"rightPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon>\n                  <d-arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels && rightCurrentView === 'date'\"\n              type=\"button\"\n              :disabled=\"!enableMonthArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableMonthArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.prevMonth`)\"\n              class=\"arrow-left\"\n              @click=\"rightPrevMonth\"\n            >\n              <slot name=\"prev-month\">\n                <el-icon>\n                  <arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.nextYear`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              :disabled=\"dateRangeDisabled\"\n              class=\"d-arrow-right\"\n              @click=\"rightNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon>\n                  <d-arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-show=\"rightCurrentView === 'date'\"\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              :disabled=\"dateRangeDisabled\"\n              :aria-label=\"t(`el.datepicker.nextMonth`)\"\n              class=\"arrow-right\"\n              @click=\"rightNextMonth\"\n            >\n              <slot name=\"next-month\">\n                <el-icon>\n                  <arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <div>\n              <span\n                role=\"button\"\n                :class=\"drpNs.e('header-label')\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                @keydown.enter=\"showRightPicker('year')\"\n                @click=\"showRightPicker('year')\"\n              >\n                {{ rightYearLabel }}\n              </span>\n              <span\n                v-show=\"rightCurrentView === 'date'\"\n                role=\"button\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                :class=\"[\n                  drpNs.e('header-label'),\n                  { active: rightCurrentView === 'month' },\n                ]\"\n                @keydown.enter=\"showRightPicker('month')\"\n                @click=\"showRightPicker('month')\"\n              >\n                {{ t(`el.datepicker.month${rightDate.month() + 1}`) }}\n              </span>\n            </div>\n          </div>\n          <date-table\n            v-if=\"rightCurrentView === 'date'\"\n            ref=\"rightCurrentViewRef\"\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :cell-class-name=\"cellClassName\"\n            :show-week-number=\"showWeekNumber\"\n            :disabled=\"dateRangeDisabled\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n          <year-table\n            v-if=\"rightCurrentView === 'year'\"\n            ref=\"rightCurrentViewRef\"\n            selection-mode=\"year\"\n            :date=\"rightDate\"\n            :disabled-date=\"disabledDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleRightYearPick\"\n          />\n          <month-table\n            v-if=\"rightCurrentView === 'month'\"\n            ref=\"rightCurrentViewRef\"\n            selection-mode=\"month\"\n            :date=\"rightDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleRightMonthPick\"\n          />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"showFooter && showTime && (showConfirm || clearable)\"\n      :class=\"ppNs.e('footer')\"\n    >\n      <el-button\n        v-if=\"clearable\"\n        text\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        @click=\"onClear\"\n      >\n        {{ t('el.datepicker.clear') }}\n      </el-button>\n      <el-button\n        v-if=\"showConfirm\"\n        plain\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        :disabled=\"btnDisabled\"\n        @click=\"handleRangeConfirm(false)\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </el-button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, toRef, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { ClickOutside as vClickoutside } from '@pit-element-plus/directives'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElInput from '@pit-element-plus/components/input'\nimport {\n  DEFAULT_FORMATS_DATE,\n  DEFAULT_FORMATS_TIME,\n  PICKER_BASE_INJECTION_KEY,\n  TimePickPanel,\n  extractDateFormat,\n  extractTimeFormat,\n} from '@pit-element-plus/components/time-picker'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  DArrowLeft,\n  DArrowRight,\n} from 'pit-element-icons'\nimport { panelDateRangeProps } from '../props/panel-date-range'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport {\n  correctlyParseUserInput,\n  getDefaultValue,\n  isValidRange,\n} from '../utils'\nimport { usePanelDateRange } from '../composables/use-panel-date-range'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport YearTable from './basic-year-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport DateTable from './basic-date-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { Ref } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\ntype ChangeType = 'min' | 'max'\ntype UserInput = {\n  min: string | null\n  max: string | null\n}\n\nconst props = defineProps(panelDateRangeProps)\nconst emit = defineEmits([\n  'pick',\n  'set-picker-option',\n  'calendar-change',\n  'panel-change',\n  'clear',\n])\n\nconst unit = 'month'\n// FIXME: fix the type for ep picker\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst { disabledDate, cellClassName, defaultTime, clearable } = pickerBase.props\nconst format: Ref<string | undefined> = toRef(pickerBase.props, 'format')\nconst shortcuts = toRef(pickerBase.props, 'shortcuts')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\nconst { lang } = useLocale()\nconst leftDate = ref<Dayjs>(dayjs().locale(lang.value))\nconst rightDate = ref<Dayjs>(dayjs().locale(lang.value).add(1, unit))\n\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n  ppNs,\n  drpNs,\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  parseValue,\n  t,\n} = useRangePicker(props, {\n  defaultValue,\n  defaultTime,\n  leftDate,\n  rightDate,\n  unit,\n  sortDates,\n})\n\nwatch(\n  () => props.visible,\n  (visible) => {\n    if (!visible && rangeState.value.selecting) {\n      parseValue(props.parsedValue)\n      onSelect(false)\n    }\n  }\n)\n\nconst dateUserInput = ref<UserInput>({\n  min: null,\n  max: null,\n})\n\nconst timeUserInput = ref<UserInput>({\n  min: null,\n  max: null,\n})\n\nconst {\n  leftCurrentView,\n  rightCurrentView,\n  leftCurrentViewRef,\n  rightCurrentViewRef,\n  leftYear,\n  rightYear,\n  leftMonth,\n  rightMonth,\n  leftYearLabel,\n  rightYearLabel,\n  showLeftPicker,\n  showRightPicker,\n  handleLeftYearPick,\n  handleRightYearPick,\n  handleLeftMonthPick,\n  handleRightMonthPick,\n  handlePanelChange,\n  adjustDateByView,\n} = usePanelDateRange(props, emit, leftDate, rightDate)\n\nconst hasShortcuts = computed(() => !!shortcuts.value.length)\n\nconst minVisibleDate = computed(() => {\n  if (dateUserInput.value.min !== null) return dateUserInput.value.min\n  if (minDate.value) return minDate.value.format(dateFormat.value)\n  return ''\n})\n\nconst maxVisibleDate = computed(() => {\n  if (dateUserInput.value.max !== null) return dateUserInput.value.max\n  if (maxDate.value || minDate.value)\n    return (maxDate.value || minDate.value)!.format(dateFormat.value)\n  return ''\n})\n\nconst minVisibleTime = computed(() => {\n  if (timeUserInput.value.min !== null) return timeUserInput.value.min\n  if (minDate.value) return minDate.value.format(timeFormat.value)\n  return ''\n})\n\nconst maxVisibleTime = computed(() => {\n  if (timeUserInput.value.max !== null) return timeUserInput.value.max\n  if (maxDate.value || minDate.value)\n    return (maxDate.value || minDate.value)!.format(timeFormat.value)\n  return ''\n})\n\nconst timeFormat = computed(() => {\n  return (\n    props.timeFormat ||\n    extractTimeFormat(format.value || '') ||\n    DEFAULT_FORMATS_TIME\n  )\n})\n\nconst dateFormat = computed(() => {\n  return (\n    props.dateFormat ||\n    extractDateFormat(format.value || '') ||\n    DEFAULT_FORMATS_DATE\n  )\n})\n\nconst isValidValue = (date: [Dayjs, Dayjs]) => {\n  return (\n    isValidRange(date) &&\n    (disabledDate\n      ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate())\n      : true)\n  )\n}\n\nconst leftPrevYear = () => {\n  leftDate.value = adjustDateByView(\n    leftCurrentView.value,\n    leftDate.value,\n    false\n  )\n\n  if (!props.unlinkPanels) {\n    rightDate.value = leftDate.value.add(1, 'month')\n  }\n  handlePanelChange('year')\n}\n\nconst leftPrevMonth = () => {\n  leftDate.value = leftDate.value.subtract(1, 'month')\n  if (!props.unlinkPanels) {\n    rightDate.value = leftDate.value.add(1, 'month')\n  }\n  handlePanelChange('month')\n}\n\nconst rightNextYear = () => {\n  if (!props.unlinkPanels) {\n    leftDate.value = adjustDateByView(\n      rightCurrentView.value,\n      leftDate.value,\n      true\n    )\n\n    rightDate.value = leftDate.value.add(1, 'month')\n  } else {\n    rightDate.value = adjustDateByView(\n      rightCurrentView.value,\n      rightDate.value,\n      true\n    )\n  }\n  handlePanelChange('year')\n}\n\nconst rightNextMonth = () => {\n  if (!props.unlinkPanels) {\n    leftDate.value = leftDate.value.add(1, 'month')\n    rightDate.value = leftDate.value.add(1, 'month')\n  } else {\n    rightDate.value = rightDate.value.add(1, 'month')\n  }\n  handlePanelChange('month')\n}\n\nconst leftNextYear = () => {\n  leftDate.value = adjustDateByView(leftCurrentView.value, leftDate.value, true)\n\n  handlePanelChange('year')\n}\n\nconst leftNextMonth = () => {\n  leftDate.value = leftDate.value.add(1, 'month')\n  handlePanelChange('month')\n}\n\nconst rightPrevYear = () => {\n  rightDate.value = adjustDateByView(\n    rightCurrentView.value,\n    rightDate.value,\n    false\n  )\n\n  handlePanelChange('year')\n}\n\nconst rightPrevMonth = () => {\n  rightDate.value = rightDate.value.subtract(1, 'month')\n  handlePanelChange('month')\n}\n\nconst enableMonthArrow = computed(() => {\n  const nextMonth = (leftMonth.value + 1) % 12\n  const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0\n  return (\n    props.unlinkPanels &&\n    new Date(leftYear.value + yearOffset, nextMonth) <\n      new Date(rightYear.value, rightMonth.value)\n  )\n})\n\nconst enableYearArrow = computed(() => {\n  return (\n    props.unlinkPanels &&\n    rightYear.value * 12 +\n      rightMonth.value -\n      (leftYear.value * 12 + leftMonth.value + 1) >=\n      12\n  )\n})\n\nconst dateRangeDisabled = useFormDisabled()\n\nconst btnDisabled = computed(() => {\n  return !(\n    minDate.value &&\n    maxDate.value &&\n    !rangeState.value.selecting &&\n    isValidRange([minDate.value, maxDate.value]) &&\n    !dateRangeDisabled.value\n  )\n})\n\nconst showTime = computed(\n  () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst formatEmit = (emitDayjs: Dayjs | null, index?: number) => {\n  if (!emitDayjs) return\n  if (defaultTime) {\n    const defaultTimeD = dayjs(\n      defaultTime[index as number] || defaultTime\n    ).locale(lang.value)\n    return defaultTimeD\n      .year(emitDayjs.year())\n      .month(emitDayjs.month())\n      .date(emitDayjs.date())\n  }\n  return emitDayjs\n}\n\nconst handleRangePick = (\n  val: {\n    minDate: Dayjs\n    maxDate: Dayjs | null\n  },\n  close = true\n) => {\n  const min_ = val.minDate\n  const max_ = val.maxDate\n  const minDate_ = formatEmit(min_, 0)\n  const maxDate_ = formatEmit(max_, 1)\n\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [min_.toDate(), max_ && max_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!showTime.value && close) {\n    close = !minDate_ || !maxDate_\n  }\n  handleRangeConfirm(close)\n}\n\nconst minTimePickerVisible = ref(false)\nconst maxTimePickerVisible = ref(false)\n\nconst handleMinTimeClose = () => {\n  minTimePickerVisible.value = false\n}\n\nconst handleMaxTimeClose = () => {\n  maxTimePickerVisible.value = false\n}\n\nconst handleDateInput = (value: string | null, type: ChangeType) => {\n  dateUserInput.value[type] = value\n  const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value)\n  if (parsedValueD.isValid()) {\n    if (disabledDate && disabledDate(parsedValueD.toDate())) {\n      return\n    }\n    if (type === 'min') {\n      leftDate.value = parsedValueD\n      minDate.value = (minDate.value || leftDate.value)\n        .year(parsedValueD.year())\n        .month(parsedValueD.month())\n        .date(parsedValueD.date())\n      if (\n        !props.unlinkPanels &&\n        (!maxDate.value || maxDate.value.isBefore(minDate.value))\n      ) {\n        rightDate.value = parsedValueD.add(1, 'month')\n        maxDate.value = minDate.value.add(1, 'month')\n      }\n    } else {\n      rightDate.value = parsedValueD\n      maxDate.value = (maxDate.value || rightDate.value)\n        .year(parsedValueD.year())\n        .month(parsedValueD.month())\n        .date(parsedValueD.date())\n      if (\n        !props.unlinkPanels &&\n        (!minDate.value || minDate.value.isAfter(maxDate.value))\n      ) {\n        leftDate.value = parsedValueD.subtract(1, 'month')\n        minDate.value = maxDate.value.subtract(1, 'month')\n      }\n    }\n    sortDates(minDate.value, maxDate.value)\n    handleRangeConfirm(true)\n  }\n}\n\nconst handleDateChange = (_: unknown, type: ChangeType) => {\n  dateUserInput.value[type] = null\n}\n\nconst handleTimeInput = (value: string | null, type: ChangeType) => {\n  timeUserInput.value[type] = value\n  const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value)\n\n  if (parsedValueD.isValid()) {\n    if (type === 'min') {\n      minTimePickerVisible.value = true\n      minDate.value = (minDate.value || leftDate.value)\n        .hour(parsedValueD.hour())\n        .minute(parsedValueD.minute())\n        .second(parsedValueD.second())\n      leftDate.value = minDate.value\n    } else {\n      maxTimePickerVisible.value = true\n      maxDate.value = (maxDate.value || rightDate.value)\n        .hour(parsedValueD.hour())\n        .minute(parsedValueD.minute())\n        .second(parsedValueD.second())\n      rightDate.value = maxDate.value\n    }\n  }\n}\n\nconst handleTimeChange = (_value: string | null, type: ChangeType) => {\n  timeUserInput.value[type] = null\n  if (type === 'min') {\n    leftDate.value = minDate.value!\n    minTimePickerVisible.value = false\n    if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n      maxDate.value = minDate.value\n    }\n  } else {\n    rightDate.value = maxDate.value!\n    maxTimePickerVisible.value = false\n    if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n      minDate.value = maxDate.value\n    }\n  }\n  handleRangeConfirm(true)\n}\n\nconst handleMinTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n  if (timeUserInput.value.min) return\n  if (value) {\n    minDate.value = (minDate.value || leftDate.value)\n      .hour(value.hour())\n      .minute(value.minute())\n      .second(value.second())\n  }\n\n  if (!first) {\n    minTimePickerVisible.value = visible\n  }\n\n  if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n    maxDate.value = minDate.value\n    rightDate.value = value\n    nextTick(() => {\n      parseValue(props.parsedValue)\n    })\n  }\n  handleRangeConfirm(true)\n}\n\nconst handleMaxTimePick = (\n  value: Dayjs | null,\n  visible: boolean,\n  first: boolean\n) => {\n  if (timeUserInput.value.max) return\n  if (value) {\n    maxDate.value = (maxDate.value || rightDate.value)\n      .hour(value.hour())\n      .minute(value.minute())\n      .second(value.second())\n  }\n\n  if (!first) {\n    maxTimePickerVisible.value = visible\n  }\n\n  if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n    minDate.value = maxDate.value\n  }\n  handleRangeConfirm(true)\n}\n\nconst onClear = () => {\n  handleClear()\n  emit('clear')\n}\n\nconst handleClear = () => {\n  let valueOnClear = null\n  if (pickerBase?.emptyValues) {\n    valueOnClear = pickerBase.emptyValues.valueOnClear.value\n  }\n  leftDate.value = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    unit: 'month',\n    unlinkPanels: props.unlinkPanels,\n  })[0]\n  rightDate.value = leftDate.value.add(1, 'month')\n  maxDate.value = undefined\n  minDate.value = undefined\n\n  handleRangeConfirm(true)\n  emit('pick', valueOnClear)\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return correctlyParseUserInput(\n    value,\n    format.value || '',\n    lang.value,\n    isDefaultFormat\n  )\n}\nfunction sortDates(minDate: Dayjs | undefined, maxDate: Dayjs | undefined) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const minDateMonth = minDate?.month() || 0\n    const maxDateYear = maxDate.year()\n    const maxDateMonth = maxDate.month()\n    rightDate.value =\n      minDateYear === maxDateYear && minDateMonth === maxDateMonth\n        ? maxDate.add(1, unit)\n        : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(1, unit)\n    if (maxDate) {\n      rightDate.value = rightDate.value\n        .hour(maxDate.hour())\n        .minute(maxDate.minute())\n        .second(maxDate.second())\n    }\n  }\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n","<template>\n  <div\n    :class=\"[\n      ppNs.b(),\n      drpNs.b(),\n      ppNs.is('border', border),\n      ppNs.is('disabled', dateRangeDisabled),\n      {\n        'has-sidebar': $slots.sidebar || hasShortcuts,\n        'has-time': showTime,\n      },\n    ]\"\n  >\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :disabled=\"dateRangeDisabled\"\n          :class=\"ppNs.e('shortcut')\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div v-if=\"showTime\" :class=\"drpNs.e('time-header')\">\n          <span :class=\"drpNs.e('editors-wrap')\">\n            <span :class=\"drpNs.e('time-picker-wrap')\">\n              <el-input\n                size=\"small\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.startDate')\"\n                :class=\"drpNs.e('editor')\"\n                :model-value=\"minVisibleDate\"\n                :validate-event=\"false\"\n                :readonly=\"!editable\"\n                @input=\"(val) => handleDateInput(val, 'min')\"\n                @change=\"(val) => handleDateChange(val, 'min')\"\n              />\n            </span>\n            <span\n              v-clickoutside=\"handleMinTimeClose\"\n              :class=\"drpNs.e('time-picker-wrap')\"\n            >\n              <el-input\n                size=\"small\"\n                :class=\"drpNs.e('editor')\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.startTime')\"\n                :model-value=\"minVisibleTime\"\n                :validate-event=\"false\"\n                :readonly=\"!editable\"\n                @focus=\"minTimePickerVisible = true\"\n                @input=\"(val) => handleTimeInput(val, 'min')\"\n                @change=\"(val) => handleTimeChange(val, 'min')\"\n              />\n              <time-pick-panel\n                :visible=\"minTimePickerVisible\"\n                :format=\"timeFormat\"\n                datetime-role=\"start\"\n                :parsed-value=\"minDate || leftDate\"\n                @pick=\"handleMinTimePick\"\n              />\n            </span>\n          </span>\n          <span>\n            <el-icon><arrow-right /></el-icon>\n          </span>\n          <span :class=\"drpNs.e('editors-wrap')\" class=\"is-right\">\n            <span :class=\"drpNs.e('time-picker-wrap')\">\n              <el-input\n                size=\"small\"\n                :class=\"drpNs.e('editor')\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.endDate')\"\n                :model-value=\"maxVisibleDate\"\n                :readonly=\"!minDate || !editable\"\n                :validate-event=\"false\"\n                @input=\"(val) => handleDateInput(val, 'max')\"\n                @change=\"(val) => handleDateChange(val, 'max')\"\n              />\n            </span>\n            <span\n              v-clickoutside=\"handleMaxTimeClose\"\n              :class=\"drpNs.e('time-picker-wrap')\"\n            >\n              <el-input\n                size=\"small\"\n                :class=\"drpNs.e('editor')\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.endTime')\"\n                :model-value=\"maxVisibleTime\"\n                :readonly=\"!minDate || !editable\"\n                :validate-event=\"false\"\n                @focus=\"minDate && (maxTimePickerVisible = true)\"\n                @input=\"(val) => handleTimeInput(val, 'max')\"\n                @change=\"(val) => handleTimeChange(val, 'max')\"\n              />\n              <time-pick-panel\n                datetime-role=\"end\"\n                :visible=\"maxTimePickerVisible\"\n                :format=\"timeFormat\"\n                :parsed-value=\"maxDate || rightDate\"\n                @pick=\"handleMaxTimePick\"\n              />\n            </span>\n          </span>\n        </div>\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-left\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              :aria-label=\"t(`el.datepicker.prevYear`)\"\n              class=\"d-arrow-left\"\n              :disabled=\"dateRangeDisabled\"\n              @click=\"leftPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon>\n                  <d-arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-show=\"leftCurrentView === 'date'\"\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              :aria-label=\"t(`el.datepicker.prevMonth`)\"\n              class=\"arrow-left\"\n              :disabled=\"dateRangeDisabled\"\n              @click=\"leftPrevMonth\"\n            >\n              <slot name=\"prev-month\">\n                <el-icon>\n                  <arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.nextYear`)\"\n              class=\"d-arrow-right\"\n              @click=\"leftNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon>\n                  <d-arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels && leftCurrentView === 'date'\"\n              type=\"button\"\n              :disabled=\"!enableMonthArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableMonthArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.nextMonth`)\"\n              class=\"arrow-right\"\n              @click=\"leftNextMonth\"\n            >\n              <slot name=\"next-month\">\n                <el-icon>\n                  <arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <div>\n              <span\n                role=\"button\"\n                :class=\"drpNs.e('header-label')\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                @keydown.enter=\"showLeftPicker('year')\"\n                @click=\"showLeftPicker('year')\"\n              >\n                {{ leftYearLabel }}\n              </span>\n              <span\n                v-show=\"leftCurrentView === 'date'\"\n                role=\"button\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                :class=\"[\n                  drpNs.e('header-label'),\n                  { active: leftCurrentView === 'month' },\n                ]\"\n                @keydown.enter=\"showLeftPicker('month')\"\n                @click=\"showLeftPicker('month')\"\n              >\n                {{ t(`el.datepicker.month${leftDate.month() + 1}`) }}\n              </span>\n            </div>\n          </div>\n          <date-table\n            v-if=\"leftCurrentView === 'date'\"\n            ref=\"leftCurrentViewRef\"\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :cell-class-name=\"cellClassName\"\n            :show-week-number=\"showWeekNumber\"\n            :disabled=\"dateRangeDisabled\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n          <year-table\n            v-if=\"leftCurrentView === 'year'\"\n            ref=\"leftCurrentViewRef\"\n            selection-mode=\"year\"\n            :date=\"leftDate\"\n            :disabled-date=\"disabledDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleLeftYearPick\"\n          />\n          <month-table\n            v-if=\"leftCurrentView === 'month'\"\n            ref=\"leftCurrentViewRef\"\n            selection-mode=\"month\"\n            :date=\"leftDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleLeftMonthPick\"\n          />\n        </div>\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-right\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.prevYear`)\"\n              class=\"d-arrow-left\"\n              @click=\"rightPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon>\n                  <d-arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels && rightCurrentView === 'date'\"\n              type=\"button\"\n              :disabled=\"!enableMonthArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableMonthArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.prevMonth`)\"\n              class=\"arrow-left\"\n              @click=\"rightPrevMonth\"\n            >\n              <slot name=\"prev-month\">\n                <el-icon>\n                  <arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.nextYear`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              :disabled=\"dateRangeDisabled\"\n              class=\"d-arrow-right\"\n              @click=\"rightNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon>\n                  <d-arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-show=\"rightCurrentView === 'date'\"\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              :disabled=\"dateRangeDisabled\"\n              :aria-label=\"t(`el.datepicker.nextMonth`)\"\n              class=\"arrow-right\"\n              @click=\"rightNextMonth\"\n            >\n              <slot name=\"next-month\">\n                <el-icon>\n                  <arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <div>\n              <span\n                role=\"button\"\n                :class=\"drpNs.e('header-label')\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                @keydown.enter=\"showRightPicker('year')\"\n                @click=\"showRightPicker('year')\"\n              >\n                {{ rightYearLabel }}\n              </span>\n              <span\n                v-show=\"rightCurrentView === 'date'\"\n                role=\"button\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                :class=\"[\n                  drpNs.e('header-label'),\n                  { active: rightCurrentView === 'month' },\n                ]\"\n                @keydown.enter=\"showRightPicker('month')\"\n                @click=\"showRightPicker('month')\"\n              >\n                {{ t(`el.datepicker.month${rightDate.month() + 1}`) }}\n              </span>\n            </div>\n          </div>\n          <date-table\n            v-if=\"rightCurrentView === 'date'\"\n            ref=\"rightCurrentViewRef\"\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :cell-class-name=\"cellClassName\"\n            :show-week-number=\"showWeekNumber\"\n            :disabled=\"dateRangeDisabled\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n          <year-table\n            v-if=\"rightCurrentView === 'year'\"\n            ref=\"rightCurrentViewRef\"\n            selection-mode=\"year\"\n            :date=\"rightDate\"\n            :disabled-date=\"disabledDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleRightYearPick\"\n          />\n          <month-table\n            v-if=\"rightCurrentView === 'month'\"\n            ref=\"rightCurrentViewRef\"\n            selection-mode=\"month\"\n            :date=\"rightDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleRightMonthPick\"\n          />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"showFooter && showTime && (showConfirm || clearable)\"\n      :class=\"ppNs.e('footer')\"\n    >\n      <el-button\n        v-if=\"clearable\"\n        text\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        @click=\"onClear\"\n      >\n        {{ t('el.datepicker.clear') }}\n      </el-button>\n      <el-button\n        v-if=\"showConfirm\"\n        plain\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        :disabled=\"btnDisabled\"\n        @click=\"handleRangeConfirm(false)\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </el-button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, toRef, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { ClickOutside as vClickoutside } from '@pit-element-plus/directives'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElInput from '@pit-element-plus/components/input'\nimport {\n  DEFAULT_FORMATS_DATE,\n  DEFAULT_FORMATS_TIME,\n  PICKER_BASE_INJECTION_KEY,\n  TimePickPanel,\n  extractDateFormat,\n  extractTimeFormat,\n} from '@pit-element-plus/components/time-picker'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  DArrowLeft,\n  DArrowRight,\n} from 'pit-element-icons'\nimport { panelDateRangeProps } from '../props/panel-date-range'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport {\n  correctlyParseUserInput,\n  getDefaultValue,\n  isValidRange,\n} from '../utils'\nimport { usePanelDateRange } from '../composables/use-panel-date-range'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport YearTable from './basic-year-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport DateTable from './basic-date-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { Ref } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\ntype ChangeType = 'min' | 'max'\ntype UserInput = {\n  min: string | null\n  max: string | null\n}\n\nconst props = defineProps(panelDateRangeProps)\nconst emit = defineEmits([\n  'pick',\n  'set-picker-option',\n  'calendar-change',\n  'panel-change',\n  'clear',\n])\n\nconst unit = 'month'\n// FIXME: fix the type for ep picker\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst { disabledDate, cellClassName, defaultTime, clearable } = pickerBase.props\nconst format: Ref<string | undefined> = toRef(pickerBase.props, 'format')\nconst shortcuts = toRef(pickerBase.props, 'shortcuts')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\nconst { lang } = useLocale()\nconst leftDate = ref<Dayjs>(dayjs().locale(lang.value))\nconst rightDate = ref<Dayjs>(dayjs().locale(lang.value).add(1, unit))\n\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n  ppNs,\n  drpNs,\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  parseValue,\n  t,\n} = useRangePicker(props, {\n  defaultValue,\n  defaultTime,\n  leftDate,\n  rightDate,\n  unit,\n  sortDates,\n})\n\nwatch(\n  () => props.visible,\n  (visible) => {\n    if (!visible && rangeState.value.selecting) {\n      parseValue(props.parsedValue)\n      onSelect(false)\n    }\n  }\n)\n\nconst dateUserInput = ref<UserInput>({\n  min: null,\n  max: null,\n})\n\nconst timeUserInput = ref<UserInput>({\n  min: null,\n  max: null,\n})\n\nconst {\n  leftCurrentView,\n  rightCurrentView,\n  leftCurrentViewRef,\n  rightCurrentViewRef,\n  leftYear,\n  rightYear,\n  leftMonth,\n  rightMonth,\n  leftYearLabel,\n  rightYearLabel,\n  showLeftPicker,\n  showRightPicker,\n  handleLeftYearPick,\n  handleRightYearPick,\n  handleLeftMonthPick,\n  handleRightMonthPick,\n  handlePanelChange,\n  adjustDateByView,\n} = usePanelDateRange(props, emit, leftDate, rightDate)\n\nconst hasShortcuts = computed(() => !!shortcuts.value.length)\n\nconst minVisibleDate = computed(() => {\n  if (dateUserInput.value.min !== null) return dateUserInput.value.min\n  if (minDate.value) return minDate.value.format(dateFormat.value)\n  return ''\n})\n\nconst maxVisibleDate = computed(() => {\n  if (dateUserInput.value.max !== null) return dateUserInput.value.max\n  if (maxDate.value || minDate.value)\n    return (maxDate.value || minDate.value)!.format(dateFormat.value)\n  return ''\n})\n\nconst minVisibleTime = computed(() => {\n  if (timeUserInput.value.min !== null) return timeUserInput.value.min\n  if (minDate.value) return minDate.value.format(timeFormat.value)\n  return ''\n})\n\nconst maxVisibleTime = computed(() => {\n  if (timeUserInput.value.max !== null) return timeUserInput.value.max\n  if (maxDate.value || minDate.value)\n    return (maxDate.value || minDate.value)!.format(timeFormat.value)\n  return ''\n})\n\nconst timeFormat = computed(() => {\n  return (\n    props.timeFormat ||\n    extractTimeFormat(format.value || '') ||\n    DEFAULT_FORMATS_TIME\n  )\n})\n\nconst dateFormat = computed(() => {\n  return (\n    props.dateFormat ||\n    extractDateFormat(format.value || '') ||\n    DEFAULT_FORMATS_DATE\n  )\n})\n\nconst isValidValue = (date: [Dayjs, Dayjs]) => {\n  return (\n    isValidRange(date) &&\n    (disabledDate\n      ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate())\n      : true)\n  )\n}\n\nconst leftPrevYear = () => {\n  leftDate.value = adjustDateByView(\n    leftCurrentView.value,\n    leftDate.value,\n    false\n  )\n\n  if (!props.unlinkPanels) {\n    rightDate.value = leftDate.value.add(1, 'month')\n  }\n  handlePanelChange('year')\n}\n\nconst leftPrevMonth = () => {\n  leftDate.value = leftDate.value.subtract(1, 'month')\n  if (!props.unlinkPanels) {\n    rightDate.value = leftDate.value.add(1, 'month')\n  }\n  handlePanelChange('month')\n}\n\nconst rightNextYear = () => {\n  if (!props.unlinkPanels) {\n    leftDate.value = adjustDateByView(\n      rightCurrentView.value,\n      leftDate.value,\n      true\n    )\n\n    rightDate.value = leftDate.value.add(1, 'month')\n  } else {\n    rightDate.value = adjustDateByView(\n      rightCurrentView.value,\n      rightDate.value,\n      true\n    )\n  }\n  handlePanelChange('year')\n}\n\nconst rightNextMonth = () => {\n  if (!props.unlinkPanels) {\n    leftDate.value = leftDate.value.add(1, 'month')\n    rightDate.value = leftDate.value.add(1, 'month')\n  } else {\n    rightDate.value = rightDate.value.add(1, 'month')\n  }\n  handlePanelChange('month')\n}\n\nconst leftNextYear = () => {\n  leftDate.value = adjustDateByView(leftCurrentView.value, leftDate.value, true)\n\n  handlePanelChange('year')\n}\n\nconst leftNextMonth = () => {\n  leftDate.value = leftDate.value.add(1, 'month')\n  handlePanelChange('month')\n}\n\nconst rightPrevYear = () => {\n  rightDate.value = adjustDateByView(\n    rightCurrentView.value,\n    rightDate.value,\n    false\n  )\n\n  handlePanelChange('year')\n}\n\nconst rightPrevMonth = () => {\n  rightDate.value = rightDate.value.subtract(1, 'month')\n  handlePanelChange('month')\n}\n\nconst enableMonthArrow = computed(() => {\n  const nextMonth = (leftMonth.value + 1) % 12\n  const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0\n  return (\n    props.unlinkPanels &&\n    new Date(leftYear.value + yearOffset, nextMonth) <\n      new Date(rightYear.value, rightMonth.value)\n  )\n})\n\nconst enableYearArrow = computed(() => {\n  return (\n    props.unlinkPanels &&\n    rightYear.value * 12 +\n      rightMonth.value -\n      (leftYear.value * 12 + leftMonth.value + 1) >=\n      12\n  )\n})\n\nconst dateRangeDisabled = useFormDisabled()\n\nconst btnDisabled = computed(() => {\n  return !(\n    minDate.value &&\n    maxDate.value &&\n    !rangeState.value.selecting &&\n    isValidRange([minDate.value, maxDate.value]) &&\n    !dateRangeDisabled.value\n  )\n})\n\nconst showTime = computed(\n  () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst formatEmit = (emitDayjs: Dayjs | null, index?: number) => {\n  if (!emitDayjs) return\n  if (defaultTime) {\n    const defaultTimeD = dayjs(\n      defaultTime[index as number] || defaultTime\n    ).locale(lang.value)\n    return defaultTimeD\n      .year(emitDayjs.year())\n      .month(emitDayjs.month())\n      .date(emitDayjs.date())\n  }\n  return emitDayjs\n}\n\nconst handleRangePick = (\n  val: {\n    minDate: Dayjs\n    maxDate: Dayjs | null\n  },\n  close = true\n) => {\n  const min_ = val.minDate\n  const max_ = val.maxDate\n  const minDate_ = formatEmit(min_, 0)\n  const maxDate_ = formatEmit(max_, 1)\n\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [min_.toDate(), max_ && max_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!showTime.value && close) {\n    close = !minDate_ || !maxDate_\n  }\n  handleRangeConfirm(close)\n}\n\nconst minTimePickerVisible = ref(false)\nconst maxTimePickerVisible = ref(false)\n\nconst handleMinTimeClose = () => {\n  minTimePickerVisible.value = false\n}\n\nconst handleMaxTimeClose = () => {\n  maxTimePickerVisible.value = false\n}\n\nconst handleDateInput = (value: string | null, type: ChangeType) => {\n  dateUserInput.value[type] = value\n  const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value)\n  if (parsedValueD.isValid()) {\n    if (disabledDate && disabledDate(parsedValueD.toDate())) {\n      return\n    }\n    if (type === 'min') {\n      leftDate.value = parsedValueD\n      minDate.value = (minDate.value || leftDate.value)\n        .year(parsedValueD.year())\n        .month(parsedValueD.month())\n        .date(parsedValueD.date())\n      if (\n        !props.unlinkPanels &&\n        (!maxDate.value || maxDate.value.isBefore(minDate.value))\n      ) {\n        rightDate.value = parsedValueD.add(1, 'month')\n        maxDate.value = minDate.value.add(1, 'month')\n      }\n    } else {\n      rightDate.value = parsedValueD\n      maxDate.value = (maxDate.value || rightDate.value)\n        .year(parsedValueD.year())\n        .month(parsedValueD.month())\n        .date(parsedValueD.date())\n      if (\n        !props.unlinkPanels &&\n        (!minDate.value || minDate.value.isAfter(maxDate.value))\n      ) {\n        leftDate.value = parsedValueD.subtract(1, 'month')\n        minDate.value = maxDate.value.subtract(1, 'month')\n      }\n    }\n    sortDates(minDate.value, maxDate.value)\n    handleRangeConfirm(true)\n  }\n}\n\nconst handleDateChange = (_: unknown, type: ChangeType) => {\n  dateUserInput.value[type] = null\n}\n\nconst handleTimeInput = (value: string | null, type: ChangeType) => {\n  timeUserInput.value[type] = value\n  const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value)\n\n  if (parsedValueD.isValid()) {\n    if (type === 'min') {\n      minTimePickerVisible.value = true\n      minDate.value = (minDate.value || leftDate.value)\n        .hour(parsedValueD.hour())\n        .minute(parsedValueD.minute())\n        .second(parsedValueD.second())\n      leftDate.value = minDate.value\n    } else {\n      maxTimePickerVisible.value = true\n      maxDate.value = (maxDate.value || rightDate.value)\n        .hour(parsedValueD.hour())\n        .minute(parsedValueD.minute())\n        .second(parsedValueD.second())\n      rightDate.value = maxDate.value\n    }\n  }\n}\n\nconst handleTimeChange = (_value: string | null, type: ChangeType) => {\n  timeUserInput.value[type] = null\n  if (type === 'min') {\n    leftDate.value = minDate.value!\n    minTimePickerVisible.value = false\n    if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n      maxDate.value = minDate.value\n    }\n  } else {\n    rightDate.value = maxDate.value!\n    maxTimePickerVisible.value = false\n    if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n      minDate.value = maxDate.value\n    }\n  }\n  handleRangeConfirm(true)\n}\n\nconst handleMinTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n  if (timeUserInput.value.min) return\n  if (value) {\n    minDate.value = (minDate.value || leftDate.value)\n      .hour(value.hour())\n      .minute(value.minute())\n      .second(value.second())\n  }\n\n  if (!first) {\n    minTimePickerVisible.value = visible\n  }\n\n  if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n    maxDate.value = minDate.value\n    rightDate.value = value\n    nextTick(() => {\n      parseValue(props.parsedValue)\n    })\n  }\n  handleRangeConfirm(true)\n}\n\nconst handleMaxTimePick = (\n  value: Dayjs | null,\n  visible: boolean,\n  first: boolean\n) => {\n  if (timeUserInput.value.max) return\n  if (value) {\n    maxDate.value = (maxDate.value || rightDate.value)\n      .hour(value.hour())\n      .minute(value.minute())\n      .second(value.second())\n  }\n\n  if (!first) {\n    maxTimePickerVisible.value = visible\n  }\n\n  if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n    minDate.value = maxDate.value\n  }\n  handleRangeConfirm(true)\n}\n\nconst onClear = () => {\n  handleClear()\n  emit('clear')\n}\n\nconst handleClear = () => {\n  let valueOnClear = null\n  if (pickerBase?.emptyValues) {\n    valueOnClear = pickerBase.emptyValues.valueOnClear.value\n  }\n  leftDate.value = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    unit: 'month',\n    unlinkPanels: props.unlinkPanels,\n  })[0]\n  rightDate.value = leftDate.value.add(1, 'month')\n  maxDate.value = undefined\n  minDate.value = undefined\n\n  handleRangeConfirm(true)\n  emit('pick', valueOnClear)\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return correctlyParseUserInput(\n    value,\n    format.value || '',\n    lang.value,\n    isDefaultFormat\n  )\n}\nfunction sortDates(minDate: Dayjs | undefined, maxDate: Dayjs | undefined) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const minDateMonth = minDate?.month() || 0\n    const maxDateYear = maxDate.year()\n    const maxDateMonth = maxDate.month()\n    rightDate.value =\n      minDateYear === maxDateYear && minDateMonth === maxDateMonth\n        ? maxDate.add(1, unit)\n        : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(1, unit)\n    if (maxDate) {\n      rightDate.value = rightDate.value\n        .hour(maxDate.hour())\n        .minute(maxDate.minute())\n        .second(maxDate.second())\n    }\n  }\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n","<template>\n  <div\n    :class=\"[\n      ppNs.b(),\n      drpNs.b(),\n      ppNs.is('border', border),\n      ppNs.is('disabled', dateRangeDisabled),\n      {\n        'has-sidebar': $slots.sidebar || hasShortcuts,\n        'has-time': showTime,\n      },\n    ]\"\n  >\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :disabled=\"dateRangeDisabled\"\n          :class=\"ppNs.e('shortcut')\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div v-if=\"showTime\" :class=\"drpNs.e('time-header')\">\n          <span :class=\"drpNs.e('editors-wrap')\">\n            <span :class=\"drpNs.e('time-picker-wrap')\">\n              <el-input\n                size=\"small\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.startDate')\"\n                :class=\"drpNs.e('editor')\"\n                :model-value=\"minVisibleDate\"\n                :validate-event=\"false\"\n                :readonly=\"!editable\"\n                @input=\"(val) => handleDateInput(val, 'min')\"\n                @change=\"(val) => handleDateChange(val, 'min')\"\n              />\n            </span>\n            <span\n              v-clickoutside=\"handleMinTimeClose\"\n              :class=\"drpNs.e('time-picker-wrap')\"\n            >\n              <el-input\n                size=\"small\"\n                :class=\"drpNs.e('editor')\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.startTime')\"\n                :model-value=\"minVisibleTime\"\n                :validate-event=\"false\"\n                :readonly=\"!editable\"\n                @focus=\"minTimePickerVisible = true\"\n                @input=\"(val) => handleTimeInput(val, 'min')\"\n                @change=\"(val) => handleTimeChange(val, 'min')\"\n              />\n              <time-pick-panel\n                :visible=\"minTimePickerVisible\"\n                :format=\"timeFormat\"\n                datetime-role=\"start\"\n                :parsed-value=\"minDate || leftDate\"\n                @pick=\"handleMinTimePick\"\n              />\n            </span>\n          </span>\n          <span>\n            <el-icon><arrow-right /></el-icon>\n          </span>\n          <span :class=\"drpNs.e('editors-wrap')\" class=\"is-right\">\n            <span :class=\"drpNs.e('time-picker-wrap')\">\n              <el-input\n                size=\"small\"\n                :class=\"drpNs.e('editor')\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.endDate')\"\n                :model-value=\"maxVisibleDate\"\n                :readonly=\"!minDate || !editable\"\n                :validate-event=\"false\"\n                @input=\"(val) => handleDateInput(val, 'max')\"\n                @change=\"(val) => handleDateChange(val, 'max')\"\n              />\n            </span>\n            <span\n              v-clickoutside=\"handleMaxTimeClose\"\n              :class=\"drpNs.e('time-picker-wrap')\"\n            >\n              <el-input\n                size=\"small\"\n                :class=\"drpNs.e('editor')\"\n                :disabled=\"rangeState.selecting || dateRangeDisabled\"\n                :placeholder=\"t('el.datepicker.endTime')\"\n                :model-value=\"maxVisibleTime\"\n                :readonly=\"!minDate || !editable\"\n                :validate-event=\"false\"\n                @focus=\"minDate && (maxTimePickerVisible = true)\"\n                @input=\"(val) => handleTimeInput(val, 'max')\"\n                @change=\"(val) => handleTimeChange(val, 'max')\"\n              />\n              <time-pick-panel\n                datetime-role=\"end\"\n                :visible=\"maxTimePickerVisible\"\n                :format=\"timeFormat\"\n                :parsed-value=\"maxDate || rightDate\"\n                @pick=\"handleMaxTimePick\"\n              />\n            </span>\n          </span>\n        </div>\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-left\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              :aria-label=\"t(`el.datepicker.prevYear`)\"\n              class=\"d-arrow-left\"\n              :disabled=\"dateRangeDisabled\"\n              @click=\"leftPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon>\n                  <d-arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-show=\"leftCurrentView === 'date'\"\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              :aria-label=\"t(`el.datepicker.prevMonth`)\"\n              class=\"arrow-left\"\n              :disabled=\"dateRangeDisabled\"\n              @click=\"leftPrevMonth\"\n            >\n              <slot name=\"prev-month\">\n                <el-icon>\n                  <arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.nextYear`)\"\n              class=\"d-arrow-right\"\n              @click=\"leftNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon>\n                  <d-arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels && leftCurrentView === 'date'\"\n              type=\"button\"\n              :disabled=\"!enableMonthArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableMonthArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.nextMonth`)\"\n              class=\"arrow-right\"\n              @click=\"leftNextMonth\"\n            >\n              <slot name=\"next-month\">\n                <el-icon>\n                  <arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <div>\n              <span\n                role=\"button\"\n                :class=\"drpNs.e('header-label')\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                @keydown.enter=\"showLeftPicker('year')\"\n                @click=\"showLeftPicker('year')\"\n              >\n                {{ leftYearLabel }}\n              </span>\n              <span\n                v-show=\"leftCurrentView === 'date'\"\n                role=\"button\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                :class=\"[\n                  drpNs.e('header-label'),\n                  { active: leftCurrentView === 'month' },\n                ]\"\n                @keydown.enter=\"showLeftPicker('month')\"\n                @click=\"showLeftPicker('month')\"\n              >\n                {{ t(`el.datepicker.month${leftDate.month() + 1}`) }}\n              </span>\n            </div>\n          </div>\n          <date-table\n            v-if=\"leftCurrentView === 'date'\"\n            ref=\"leftCurrentViewRef\"\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :cell-class-name=\"cellClassName\"\n            :show-week-number=\"showWeekNumber\"\n            :disabled=\"dateRangeDisabled\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n          <year-table\n            v-if=\"leftCurrentView === 'year'\"\n            ref=\"leftCurrentViewRef\"\n            selection-mode=\"year\"\n            :date=\"leftDate\"\n            :disabled-date=\"disabledDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleLeftYearPick\"\n          />\n          <month-table\n            v-if=\"leftCurrentView === 'month'\"\n            ref=\"leftCurrentViewRef\"\n            selection-mode=\"month\"\n            :date=\"leftDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleLeftMonthPick\"\n          />\n        </div>\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-right\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.prevYear`)\"\n              class=\"d-arrow-left\"\n              @click=\"rightPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon>\n                  <d-arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels && rightCurrentView === 'date'\"\n              type=\"button\"\n              :disabled=\"!enableMonthArrow || dateRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableMonthArrow || dateRangeDisabled),\n              ]\"\n              :aria-label=\"t(`el.datepicker.prevMonth`)\"\n              class=\"arrow-left\"\n              @click=\"rightPrevMonth\"\n            >\n              <slot name=\"prev-month\">\n                <el-icon>\n                  <arrow-left />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :aria-label=\"t(`el.datepicker.nextYear`)\"\n              :class=\"ppNs.e('icon-btn')\"\n              :disabled=\"dateRangeDisabled\"\n              class=\"d-arrow-right\"\n              @click=\"rightNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon>\n                  <d-arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <button\n              v-show=\"rightCurrentView === 'date'\"\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              :disabled=\"dateRangeDisabled\"\n              :aria-label=\"t(`el.datepicker.nextMonth`)\"\n              class=\"arrow-right\"\n              @click=\"rightNextMonth\"\n            >\n              <slot name=\"next-month\">\n                <el-icon>\n                  <arrow-right />\n                </el-icon>\n              </slot>\n            </button>\n            <div>\n              <span\n                role=\"button\"\n                :class=\"drpNs.e('header-label')\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                @keydown.enter=\"showRightPicker('year')\"\n                @click=\"showRightPicker('year')\"\n              >\n                {{ rightYearLabel }}\n              </span>\n              <span\n                v-show=\"rightCurrentView === 'date'\"\n                role=\"button\"\n                aria-live=\"polite\"\n                :tabindex=\"disabled ? undefined : 0\"\n                :aria-disabled=\"disabled\"\n                :class=\"[\n                  drpNs.e('header-label'),\n                  { active: rightCurrentView === 'month' },\n                ]\"\n                @keydown.enter=\"showRightPicker('month')\"\n                @click=\"showRightPicker('month')\"\n              >\n                {{ t(`el.datepicker.month${rightDate.month() + 1}`) }}\n              </span>\n            </div>\n          </div>\n          <date-table\n            v-if=\"rightCurrentView === 'date'\"\n            ref=\"rightCurrentViewRef\"\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :cell-class-name=\"cellClassName\"\n            :show-week-number=\"showWeekNumber\"\n            :disabled=\"dateRangeDisabled\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n          <year-table\n            v-if=\"rightCurrentView === 'year'\"\n            ref=\"rightCurrentViewRef\"\n            selection-mode=\"year\"\n            :date=\"rightDate\"\n            :disabled-date=\"disabledDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleRightYearPick\"\n          />\n          <month-table\n            v-if=\"rightCurrentView === 'month'\"\n            ref=\"rightCurrentViewRef\"\n            selection-mode=\"month\"\n            :date=\"rightDate\"\n            :parsed-value=\"parsedValue\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"dateRangeDisabled\"\n            @pick=\"handleRightMonthPick\"\n          />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"showFooter && showTime && (showConfirm || clearable)\"\n      :class=\"ppNs.e('footer')\"\n    >\n      <el-button\n        v-if=\"clearable\"\n        text\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        @click=\"onClear\"\n      >\n        {{ t('el.datepicker.clear') }}\n      </el-button>\n      <el-button\n        v-if=\"showConfirm\"\n        plain\n        size=\"small\"\n        :class=\"ppNs.e('link-btn')\"\n        :disabled=\"btnDisabled\"\n        @click=\"handleRangeConfirm(false)\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </el-button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref, toRef, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { ClickOutside as vClickoutside } from '@pit-element-plus/directives'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElInput from '@pit-element-plus/components/input'\nimport {\n  DEFAULT_FORMATS_DATE,\n  DEFAULT_FORMATS_TIME,\n  PICKER_BASE_INJECTION_KEY,\n  TimePickPanel,\n  extractDateFormat,\n  extractTimeFormat,\n} from '@pit-element-plus/components/time-picker'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  DArrowLeft,\n  DArrowRight,\n} from 'pit-element-icons'\nimport { panelDateRangeProps } from '../props/panel-date-range'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport {\n  correctlyParseUserInput,\n  getDefaultValue,\n  isValidRange,\n} from '../utils'\nimport { usePanelDateRange } from '../composables/use-panel-date-range'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport YearTable from './basic-year-table.vue'\nimport MonthTable from './basic-month-table.vue'\nimport DateTable from './basic-date-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { Ref } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\ntype ChangeType = 'min' | 'max'\ntype UserInput = {\n  min: string | null\n  max: string | null\n}\n\nconst props = defineProps(panelDateRangeProps)\nconst emit = defineEmits([\n  'pick',\n  'set-picker-option',\n  'calendar-change',\n  'panel-change',\n  'clear',\n])\n\nconst unit = 'month'\n// FIXME: fix the type for ep picker\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst { disabledDate, cellClassName, defaultTime, clearable } = pickerBase.props\nconst format: Ref<string | undefined> = toRef(pickerBase.props, 'format')\nconst shortcuts = toRef(pickerBase.props, 'shortcuts')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\nconst { lang } = useLocale()\nconst leftDate = ref<Dayjs>(dayjs().locale(lang.value))\nconst rightDate = ref<Dayjs>(dayjs().locale(lang.value).add(1, unit))\n\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n  ppNs,\n  drpNs,\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  parseValue,\n  t,\n} = useRangePicker(props, {\n  defaultValue,\n  defaultTime,\n  leftDate,\n  rightDate,\n  unit,\n  sortDates,\n})\n\nwatch(\n  () => props.visible,\n  (visible) => {\n    if (!visible && rangeState.value.selecting) {\n      parseValue(props.parsedValue)\n      onSelect(false)\n    }\n  }\n)\n\nconst dateUserInput = ref<UserInput>({\n  min: null,\n  max: null,\n})\n\nconst timeUserInput = ref<UserInput>({\n  min: null,\n  max: null,\n})\n\nconst {\n  leftCurrentView,\n  rightCurrentView,\n  leftCurrentViewRef,\n  rightCurrentViewRef,\n  leftYear,\n  rightYear,\n  leftMonth,\n  rightMonth,\n  leftYearLabel,\n  rightYearLabel,\n  showLeftPicker,\n  showRightPicker,\n  handleLeftYearPick,\n  handleRightYearPick,\n  handleLeftMonthPick,\n  handleRightMonthPick,\n  handlePanelChange,\n  adjustDateByView,\n} = usePanelDateRange(props, emit, leftDate, rightDate)\n\nconst hasShortcuts = computed(() => !!shortcuts.value.length)\n\nconst minVisibleDate = computed(() => {\n  if (dateUserInput.value.min !== null) return dateUserInput.value.min\n  if (minDate.value) return minDate.value.format(dateFormat.value)\n  return ''\n})\n\nconst maxVisibleDate = computed(() => {\n  if (dateUserInput.value.max !== null) return dateUserInput.value.max\n  if (maxDate.value || minDate.value)\n    return (maxDate.value || minDate.value)!.format(dateFormat.value)\n  return ''\n})\n\nconst minVisibleTime = computed(() => {\n  if (timeUserInput.value.min !== null) return timeUserInput.value.min\n  if (minDate.value) return minDate.value.format(timeFormat.value)\n  return ''\n})\n\nconst maxVisibleTime = computed(() => {\n  if (timeUserInput.value.max !== null) return timeUserInput.value.max\n  if (maxDate.value || minDate.value)\n    return (maxDate.value || minDate.value)!.format(timeFormat.value)\n  return ''\n})\n\nconst timeFormat = computed(() => {\n  return (\n    props.timeFormat ||\n    extractTimeFormat(format.value || '') ||\n    DEFAULT_FORMATS_TIME\n  )\n})\n\nconst dateFormat = computed(() => {\n  return (\n    props.dateFormat ||\n    extractDateFormat(format.value || '') ||\n    DEFAULT_FORMATS_DATE\n  )\n})\n\nconst isValidValue = (date: [Dayjs, Dayjs]) => {\n  return (\n    isValidRange(date) &&\n    (disabledDate\n      ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate())\n      : true)\n  )\n}\n\nconst leftPrevYear = () => {\n  leftDate.value = adjustDateByView(\n    leftCurrentView.value,\n    leftDate.value,\n    false\n  )\n\n  if (!props.unlinkPanels) {\n    rightDate.value = leftDate.value.add(1, 'month')\n  }\n  handlePanelChange('year')\n}\n\nconst leftPrevMonth = () => {\n  leftDate.value = leftDate.value.subtract(1, 'month')\n  if (!props.unlinkPanels) {\n    rightDate.value = leftDate.value.add(1, 'month')\n  }\n  handlePanelChange('month')\n}\n\nconst rightNextYear = () => {\n  if (!props.unlinkPanels) {\n    leftDate.value = adjustDateByView(\n      rightCurrentView.value,\n      leftDate.value,\n      true\n    )\n\n    rightDate.value = leftDate.value.add(1, 'month')\n  } else {\n    rightDate.value = adjustDateByView(\n      rightCurrentView.value,\n      rightDate.value,\n      true\n    )\n  }\n  handlePanelChange('year')\n}\n\nconst rightNextMonth = () => {\n  if (!props.unlinkPanels) {\n    leftDate.value = leftDate.value.add(1, 'month')\n    rightDate.value = leftDate.value.add(1, 'month')\n  } else {\n    rightDate.value = rightDate.value.add(1, 'month')\n  }\n  handlePanelChange('month')\n}\n\nconst leftNextYear = () => {\n  leftDate.value = adjustDateByView(leftCurrentView.value, leftDate.value, true)\n\n  handlePanelChange('year')\n}\n\nconst leftNextMonth = () => {\n  leftDate.value = leftDate.value.add(1, 'month')\n  handlePanelChange('month')\n}\n\nconst rightPrevYear = () => {\n  rightDate.value = adjustDateByView(\n    rightCurrentView.value,\n    rightDate.value,\n    false\n  )\n\n  handlePanelChange('year')\n}\n\nconst rightPrevMonth = () => {\n  rightDate.value = rightDate.value.subtract(1, 'month')\n  handlePanelChange('month')\n}\n\nconst enableMonthArrow = computed(() => {\n  const nextMonth = (leftMonth.value + 1) % 12\n  const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0\n  return (\n    props.unlinkPanels &&\n    new Date(leftYear.value + yearOffset, nextMonth) <\n      new Date(rightYear.value, rightMonth.value)\n  )\n})\n\nconst enableYearArrow = computed(() => {\n  return (\n    props.unlinkPanels &&\n    rightYear.value * 12 +\n      rightMonth.value -\n      (leftYear.value * 12 + leftMonth.value + 1) >=\n      12\n  )\n})\n\nconst dateRangeDisabled = useFormDisabled()\n\nconst btnDisabled = computed(() => {\n  return !(\n    minDate.value &&\n    maxDate.value &&\n    !rangeState.value.selecting &&\n    isValidRange([minDate.value, maxDate.value]) &&\n    !dateRangeDisabled.value\n  )\n})\n\nconst showTime = computed(\n  () => props.type === 'datetime' || props.type === 'datetimerange'\n)\n\nconst formatEmit = (emitDayjs: Dayjs | null, index?: number) => {\n  if (!emitDayjs) return\n  if (defaultTime) {\n    const defaultTimeD = dayjs(\n      defaultTime[index as number] || defaultTime\n    ).locale(lang.value)\n    return defaultTimeD\n      .year(emitDayjs.year())\n      .month(emitDayjs.month())\n      .date(emitDayjs.date())\n  }\n  return emitDayjs\n}\n\nconst handleRangePick = (\n  val: {\n    minDate: Dayjs\n    maxDate: Dayjs | null\n  },\n  close = true\n) => {\n  const min_ = val.minDate\n  const max_ = val.maxDate\n  const minDate_ = formatEmit(min_, 0)\n  const maxDate_ = formatEmit(max_, 1)\n\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [min_.toDate(), max_ && max_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!showTime.value && close) {\n    close = !minDate_ || !maxDate_\n  }\n  handleRangeConfirm(close)\n}\n\nconst minTimePickerVisible = ref(false)\nconst maxTimePickerVisible = ref(false)\n\nconst handleMinTimeClose = () => {\n  minTimePickerVisible.value = false\n}\n\nconst handleMaxTimeClose = () => {\n  maxTimePickerVisible.value = false\n}\n\nconst handleDateInput = (value: string | null, type: ChangeType) => {\n  dateUserInput.value[type] = value\n  const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value)\n  if (parsedValueD.isValid()) {\n    if (disabledDate && disabledDate(parsedValueD.toDate())) {\n      return\n    }\n    if (type === 'min') {\n      leftDate.value = parsedValueD\n      minDate.value = (minDate.value || leftDate.value)\n        .year(parsedValueD.year())\n        .month(parsedValueD.month())\n        .date(parsedValueD.date())\n      if (\n        !props.unlinkPanels &&\n        (!maxDate.value || maxDate.value.isBefore(minDate.value))\n      ) {\n        rightDate.value = parsedValueD.add(1, 'month')\n        maxDate.value = minDate.value.add(1, 'month')\n      }\n    } else {\n      rightDate.value = parsedValueD\n      maxDate.value = (maxDate.value || rightDate.value)\n        .year(parsedValueD.year())\n        .month(parsedValueD.month())\n        .date(parsedValueD.date())\n      if (\n        !props.unlinkPanels &&\n        (!minDate.value || minDate.value.isAfter(maxDate.value))\n      ) {\n        leftDate.value = parsedValueD.subtract(1, 'month')\n        minDate.value = maxDate.value.subtract(1, 'month')\n      }\n    }\n    sortDates(minDate.value, maxDate.value)\n    handleRangeConfirm(true)\n  }\n}\n\nconst handleDateChange = (_: unknown, type: ChangeType) => {\n  dateUserInput.value[type] = null\n}\n\nconst handleTimeInput = (value: string | null, type: ChangeType) => {\n  timeUserInput.value[type] = value\n  const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value)\n\n  if (parsedValueD.isValid()) {\n    if (type === 'min') {\n      minTimePickerVisible.value = true\n      minDate.value = (minDate.value || leftDate.value)\n        .hour(parsedValueD.hour())\n        .minute(parsedValueD.minute())\n        .second(parsedValueD.second())\n      leftDate.value = minDate.value\n    } else {\n      maxTimePickerVisible.value = true\n      maxDate.value = (maxDate.value || rightDate.value)\n        .hour(parsedValueD.hour())\n        .minute(parsedValueD.minute())\n        .second(parsedValueD.second())\n      rightDate.value = maxDate.value\n    }\n  }\n}\n\nconst handleTimeChange = (_value: string | null, type: ChangeType) => {\n  timeUserInput.value[type] = null\n  if (type === 'min') {\n    leftDate.value = minDate.value!\n    minTimePickerVisible.value = false\n    if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n      maxDate.value = minDate.value\n    }\n  } else {\n    rightDate.value = maxDate.value!\n    maxTimePickerVisible.value = false\n    if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n      minDate.value = maxDate.value\n    }\n  }\n  handleRangeConfirm(true)\n}\n\nconst handleMinTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n  if (timeUserInput.value.min) return\n  if (value) {\n    minDate.value = (minDate.value || leftDate.value)\n      .hour(value.hour())\n      .minute(value.minute())\n      .second(value.second())\n  }\n\n  if (!first) {\n    minTimePickerVisible.value = visible\n  }\n\n  if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n    maxDate.value = minDate.value\n    rightDate.value = value\n    nextTick(() => {\n      parseValue(props.parsedValue)\n    })\n  }\n  handleRangeConfirm(true)\n}\n\nconst handleMaxTimePick = (\n  value: Dayjs | null,\n  visible: boolean,\n  first: boolean\n) => {\n  if (timeUserInput.value.max) return\n  if (value) {\n    maxDate.value = (maxDate.value || rightDate.value)\n      .hour(value.hour())\n      .minute(value.minute())\n      .second(value.second())\n  }\n\n  if (!first) {\n    maxTimePickerVisible.value = visible\n  }\n\n  if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n    minDate.value = maxDate.value\n  }\n  handleRangeConfirm(true)\n}\n\nconst onClear = () => {\n  handleClear()\n  emit('clear')\n}\n\nconst handleClear = () => {\n  let valueOnClear = null\n  if (pickerBase?.emptyValues) {\n    valueOnClear = pickerBase.emptyValues.valueOnClear.value\n  }\n  leftDate.value = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    unit: 'month',\n    unlinkPanels: props.unlinkPanels,\n  })[0]\n  rightDate.value = leftDate.value.add(1, 'month')\n  maxDate.value = undefined\n  minDate.value = undefined\n\n  handleRangeConfirm(true)\n  emit('pick', valueOnClear)\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return correctlyParseUserInput(\n    value,\n    format.value || '',\n    lang.value,\n    isDefaultFormat\n  )\n}\nfunction sortDates(minDate: Dayjs | undefined, maxDate: Dayjs | undefined) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const minDateMonth = minDate?.month() || 0\n    const maxDateYear = maxDate.year()\n    const maxDateMonth = maxDate.month()\n    rightDate.value =\n      minDateYear === maxDateYear && minDateMonth === maxDateMonth\n        ? maxDate.add(1, unit)\n        : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(1, unit)\n    if (maxDate) {\n      rightDate.value = rightDate.value\n        .hour(maxDate.hour())\n        .minute(maxDate.minute())\n        .second(maxDate.second())\n    }\n  }\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\nimport { panelRangeSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const panelMonthRangeProps = buildProps({\n  ...panelRangeSharedProps,\n} as const)\n\nexport const panelMonthRangeEmits = [\n  'pick',\n  'set-picker-option',\n  'calendar-change',\n]\n\nexport type PanelMonthRangeProps = ExtractPropTypes<typeof panelMonthRangeProps>\nexport type PanelMonthRangePropsPublic = ExtractPublicPropTypes<\n  typeof panelMonthRangeProps\n>\n","import { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\n\nimport type { Ref, ToRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const useMonthRangeHeader = ({\n  unlinkPanels,\n  leftDate,\n  rightDate,\n}: {\n  unlinkPanels: ToRef<boolean>\n  leftDate: Ref<Dayjs>\n  rightDate: Ref<Dayjs>\n}) => {\n  const { t } = useLocale()\n  const leftPrevYear = () => {\n    leftDate.value = leftDate.value.subtract(1, 'year')\n    if (!unlinkPanels.value) {\n      rightDate.value = rightDate.value.subtract(1, 'year')\n    }\n  }\n\n  const rightNextYear = () => {\n    if (!unlinkPanels.value) {\n      leftDate.value = leftDate.value.add(1, 'year')\n    }\n    rightDate.value = rightDate.value.add(1, 'year')\n  }\n\n  const leftNextYear = () => {\n    leftDate.value = leftDate.value.add(1, 'year')\n  }\n\n  const rightPrevYear = () => {\n    rightDate.value = rightDate.value.subtract(1, 'year')\n  }\n  const leftLabel = computed(() => {\n    return `${leftDate.value.year()} ${t('el.datepicker.year')}`\n  })\n\n  const rightLabel = computed(() => {\n    return `${rightDate.value.year()} ${t('el.datepicker.year')}`\n  })\n\n  const leftYear = computed(() => {\n    return leftDate.value.year()\n  })\n\n  const rightYear = computed(() => {\n    return rightDate.value.year() === leftDate.value.year()\n      ? leftDate.value.year() + 1\n      : rightDate.value.year()\n  })\n\n  return {\n    leftPrevYear,\n    rightNextYear,\n    leftNextYear,\n    rightPrevYear,\n    leftLabel,\n    rightLabel,\n    leftYear,\n    rightYear,\n  }\n}\n","<template>\n  <div\n    :class=\"[\n      ppNs.b(),\n      drpNs.b(),\n      ppNs.is('border', border),\n      ppNs.is('disabled', monthRangeDisabled),\n      {\n        'has-sidebar': Boolean($slots.sidebar) || hasShortcuts,\n      },\n    ]\"\n  >\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :class=\"ppNs.e('shortcut')\"\n          :disabled=\"monthRangeDisabled\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-left\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"d-arrow-left\"\n              :disabled=\"monthRangeDisabled\"\n              @click=\"leftPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || monthRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || monthRangeDisabled),\n              ]\"\n              class=\"d-arrow-right\"\n              @click=\"leftNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ leftLabel }}</div>\n          </div>\n          <month-table\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"monthRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-right\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || monthRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || monthRangeDisabled),\n              ]\"\n              class=\"d-arrow-left\"\n              @click=\"rightPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"d-arrow-right\"\n              :disabled=\"monthRangeDisabled\"\n              @click=\"rightNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ rightLabel }}</div>\n          </div>\n          <month-table\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"monthRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { DArrowLeft, DArrowRight } from 'pit-element-icons'\nimport { PICKER_BASE_INJECTION_KEY } from '@pit-element-plus/components/time-picker'\nimport {\n  correctlyParseUserInput,\n  getDefaultValue,\n  isValidRange,\n} from '../utils'\nimport {\n  panelMonthRangeEmits,\n  panelMonthRangeProps,\n} from '../props/panel-month-range'\nimport { useMonthRangeHeader } from '../composables/use-month-range-header'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport MonthTable from './basic-month-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { Dayjs } from 'dayjs'\n\ndefineOptions({\n  name: 'DatePickerMonthRange',\n})\n\nconst props = defineProps(panelMonthRangeProps)\nconst emit = defineEmits(panelMonthRangeEmits)\nconst unit = 'year'\n\nconst { lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName } = pickerBase.props\nconst format = toRef(pickerBase.props, 'format')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\nconst leftDate = ref(dayjs().locale(lang.value))\nconst rightDate = ref(dayjs().locale(lang.value).add(1, unit))\n\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n  ppNs,\n  drpNs,\n\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  parseValue,\n} = useRangePicker(props, {\n  defaultValue,\n  leftDate,\n  rightDate,\n  unit,\n  sortDates,\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst {\n  leftPrevYear,\n  rightNextYear,\n  leftNextYear,\n  rightPrevYear,\n  leftLabel,\n  rightLabel,\n  leftYear,\n  rightYear,\n} = useMonthRangeHeader({\n  unlinkPanels: toRef(props, 'unlinkPanels'),\n  leftDate,\n  rightDate,\n})\n\nconst enableYearArrow = computed(() => {\n  return props.unlinkPanels && rightYear.value > leftYear.value + 1\n})\n\ntype RangePickValue = {\n  minDate: Dayjs\n  maxDate: Dayjs\n}\n\nconst handleRangePick = (val: RangePickValue, close = true) => {\n  // const defaultTime = props.defaultTime || []\n  // const minDate_ = modifyWithTimeString(val.minDate, defaultTime[0])\n  // const maxDate_ = modifyWithTimeString(val.maxDate, defaultTime[1])\n  // todo\n  const minDate_ = val.minDate\n  const maxDate_ = val.maxDate\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [minDate_.toDate(), maxDate_ && maxDate_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!close) return\n  handleRangeConfirm()\n}\n\nconst handleClear = () => {\n  let valueOnClear = null\n  if (pickerBase?.emptyValues) {\n    valueOnClear = pickerBase.emptyValues.valueOnClear.value\n  }\n  leftDate.value = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    unit: 'year',\n    unlinkPanels: props.unlinkPanels,\n  })[0]\n  rightDate.value = leftDate.value.add(1, 'year')\n  emit('pick', valueOnClear)\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return correctlyParseUserInput(\n    value,\n    format.value,\n    lang.value,\n    isDefaultFormat\n  )\n}\n\nfunction sortDates(minDate: Dayjs | undefined, maxDate: Dayjs | undefined) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const maxDateYear = maxDate.year()\n    rightDate.value =\n      minDateYear === maxDateYear ? maxDate.add(1, unit) : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(1, unit)\n  }\n}\n\nconst monthRangeDisabled = useFormDisabled()\n\nwatch(\n  () => props.visible,\n  (visible) => {\n    if (!visible && rangeState.value.selecting) {\n      parseValue(props.parsedValue)\n      onSelect(false)\n    }\n  }\n)\n\nemit('set-picker-option', ['isValidValue', isValidRange])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n","<template>\n  <div\n    :class=\"[\n      ppNs.b(),\n      drpNs.b(),\n      ppNs.is('border', border),\n      ppNs.is('disabled', monthRangeDisabled),\n      {\n        'has-sidebar': Boolean($slots.sidebar) || hasShortcuts,\n      },\n    ]\"\n  >\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :class=\"ppNs.e('shortcut')\"\n          :disabled=\"monthRangeDisabled\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-left\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"d-arrow-left\"\n              :disabled=\"monthRangeDisabled\"\n              @click=\"leftPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || monthRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || monthRangeDisabled),\n              ]\"\n              class=\"d-arrow-right\"\n              @click=\"leftNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ leftLabel }}</div>\n          </div>\n          <month-table\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"monthRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-right\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || monthRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || monthRangeDisabled),\n              ]\"\n              class=\"d-arrow-left\"\n              @click=\"rightPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"d-arrow-right\"\n              :disabled=\"monthRangeDisabled\"\n              @click=\"rightNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ rightLabel }}</div>\n          </div>\n          <month-table\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"monthRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { DArrowLeft, DArrowRight } from 'pit-element-icons'\nimport { PICKER_BASE_INJECTION_KEY } from '@pit-element-plus/components/time-picker'\nimport {\n  correctlyParseUserInput,\n  getDefaultValue,\n  isValidRange,\n} from '../utils'\nimport {\n  panelMonthRangeEmits,\n  panelMonthRangeProps,\n} from '../props/panel-month-range'\nimport { useMonthRangeHeader } from '../composables/use-month-range-header'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport MonthTable from './basic-month-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { Dayjs } from 'dayjs'\n\ndefineOptions({\n  name: 'DatePickerMonthRange',\n})\n\nconst props = defineProps(panelMonthRangeProps)\nconst emit = defineEmits(panelMonthRangeEmits)\nconst unit = 'year'\n\nconst { lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName } = pickerBase.props\nconst format = toRef(pickerBase.props, 'format')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\nconst leftDate = ref(dayjs().locale(lang.value))\nconst rightDate = ref(dayjs().locale(lang.value).add(1, unit))\n\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n  ppNs,\n  drpNs,\n\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  parseValue,\n} = useRangePicker(props, {\n  defaultValue,\n  leftDate,\n  rightDate,\n  unit,\n  sortDates,\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst {\n  leftPrevYear,\n  rightNextYear,\n  leftNextYear,\n  rightPrevYear,\n  leftLabel,\n  rightLabel,\n  leftYear,\n  rightYear,\n} = useMonthRangeHeader({\n  unlinkPanels: toRef(props, 'unlinkPanels'),\n  leftDate,\n  rightDate,\n})\n\nconst enableYearArrow = computed(() => {\n  return props.unlinkPanels && rightYear.value > leftYear.value + 1\n})\n\ntype RangePickValue = {\n  minDate: Dayjs\n  maxDate: Dayjs\n}\n\nconst handleRangePick = (val: RangePickValue, close = true) => {\n  // const defaultTime = props.defaultTime || []\n  // const minDate_ = modifyWithTimeString(val.minDate, defaultTime[0])\n  // const maxDate_ = modifyWithTimeString(val.maxDate, defaultTime[1])\n  // todo\n  const minDate_ = val.minDate\n  const maxDate_ = val.maxDate\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [minDate_.toDate(), maxDate_ && maxDate_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!close) return\n  handleRangeConfirm()\n}\n\nconst handleClear = () => {\n  let valueOnClear = null\n  if (pickerBase?.emptyValues) {\n    valueOnClear = pickerBase.emptyValues.valueOnClear.value\n  }\n  leftDate.value = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    unit: 'year',\n    unlinkPanels: props.unlinkPanels,\n  })[0]\n  rightDate.value = leftDate.value.add(1, 'year')\n  emit('pick', valueOnClear)\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return correctlyParseUserInput(\n    value,\n    format.value,\n    lang.value,\n    isDefaultFormat\n  )\n}\n\nfunction sortDates(minDate: Dayjs | undefined, maxDate: Dayjs | undefined) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const maxDateYear = maxDate.year()\n    rightDate.value =\n      minDateYear === maxDateYear ? maxDate.add(1, unit) : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(1, unit)\n  }\n}\n\nconst monthRangeDisabled = useFormDisabled()\n\nwatch(\n  () => props.visible,\n  (visible) => {\n    if (!visible && rangeState.value.selecting) {\n      parseValue(props.parsedValue)\n      onSelect(false)\n    }\n  }\n)\n\nemit('set-picker-option', ['isValidValue', isValidRange])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n","<template>\n  <div\n    :class=\"[\n      ppNs.b(),\n      drpNs.b(),\n      ppNs.is('border', border),\n      ppNs.is('disabled', monthRangeDisabled),\n      {\n        'has-sidebar': Boolean($slots.sidebar) || hasShortcuts,\n      },\n    ]\"\n  >\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :class=\"ppNs.e('shortcut')\"\n          :disabled=\"monthRangeDisabled\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-left\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"d-arrow-left\"\n              :disabled=\"monthRangeDisabled\"\n              @click=\"leftPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || monthRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || monthRangeDisabled),\n              ]\"\n              class=\"d-arrow-right\"\n              @click=\"leftNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ leftLabel }}</div>\n          </div>\n          <month-table\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"monthRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n        <div :class=\"[ppNs.e('content'), drpNs.e('content')]\" class=\"is-right\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || monthRangeDisabled\"\n              :class=\"[\n                ppNs.e('icon-btn'),\n                ppNs.is('disabled', !enableYearArrow || monthRangeDisabled),\n              ]\"\n              class=\"d-arrow-left\"\n              @click=\"rightPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :class=\"ppNs.e('icon-btn')\"\n              class=\"d-arrow-right\"\n              :disabled=\"monthRangeDisabled\"\n              @click=\"rightNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ rightLabel }}</div>\n          </div>\n          <month-table\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"monthRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { DArrowLeft, DArrowRight } from 'pit-element-icons'\nimport { PICKER_BASE_INJECTION_KEY } from '@pit-element-plus/components/time-picker'\nimport {\n  correctlyParseUserInput,\n  getDefaultValue,\n  isValidRange,\n} from '../utils'\nimport {\n  panelMonthRangeEmits,\n  panelMonthRangeProps,\n} from '../props/panel-month-range'\nimport { useMonthRangeHeader } from '../composables/use-month-range-header'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport MonthTable from './basic-month-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { Dayjs } from 'dayjs'\n\ndefineOptions({\n  name: 'DatePickerMonthRange',\n})\n\nconst props = defineProps(panelMonthRangeProps)\nconst emit = defineEmits(panelMonthRangeEmits)\nconst unit = 'year'\n\nconst { lang } = useLocale()\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst { shortcuts, disabledDate, cellClassName } = pickerBase.props\nconst format = toRef(pickerBase.props, 'format')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\nconst leftDate = ref(dayjs().locale(lang.value))\nconst rightDate = ref(dayjs().locale(lang.value).add(1, unit))\n\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n  ppNs,\n  drpNs,\n\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  parseValue,\n} = useRangePicker(props, {\n  defaultValue,\n  leftDate,\n  rightDate,\n  unit,\n  sortDates,\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst {\n  leftPrevYear,\n  rightNextYear,\n  leftNextYear,\n  rightPrevYear,\n  leftLabel,\n  rightLabel,\n  leftYear,\n  rightYear,\n} = useMonthRangeHeader({\n  unlinkPanels: toRef(props, 'unlinkPanels'),\n  leftDate,\n  rightDate,\n})\n\nconst enableYearArrow = computed(() => {\n  return props.unlinkPanels && rightYear.value > leftYear.value + 1\n})\n\ntype RangePickValue = {\n  minDate: Dayjs\n  maxDate: Dayjs\n}\n\nconst handleRangePick = (val: RangePickValue, close = true) => {\n  // const defaultTime = props.defaultTime || []\n  // const minDate_ = modifyWithTimeString(val.minDate, defaultTime[0])\n  // const maxDate_ = modifyWithTimeString(val.maxDate, defaultTime[1])\n  // todo\n  const minDate_ = val.minDate\n  const maxDate_ = val.maxDate\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [minDate_.toDate(), maxDate_ && maxDate_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!close) return\n  handleRangeConfirm()\n}\n\nconst handleClear = () => {\n  let valueOnClear = null\n  if (pickerBase?.emptyValues) {\n    valueOnClear = pickerBase.emptyValues.valueOnClear.value\n  }\n  leftDate.value = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    unit: 'year',\n    unlinkPanels: props.unlinkPanels,\n  })[0]\n  rightDate.value = leftDate.value.add(1, 'year')\n  emit('pick', valueOnClear)\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return correctlyParseUserInput(\n    value,\n    format.value,\n    lang.value,\n    isDefaultFormat\n  )\n}\n\nfunction sortDates(minDate: Dayjs | undefined, maxDate: Dayjs | undefined) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const maxDateYear = maxDate.year()\n    rightDate.value =\n      minDateYear === maxDateYear ? maxDate.add(1, unit) : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(1, unit)\n  }\n}\n\nconst monthRangeDisabled = useFormDisabled()\n\nwatch(\n  () => props.visible,\n  (visible) => {\n    if (!visible && rangeState.value.selecting) {\n      parseValue(props.parsedValue)\n      onSelect(false)\n    }\n  }\n)\n\nemit('set-picker-option', ['isValidValue', isValidRange])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\nimport { panelRangeSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const panelYearRangeProps = buildProps({\n  ...panelRangeSharedProps,\n} as const)\n\nexport const panelYearRangeEmits = [\n  'pick',\n  'set-picker-option',\n  'calendar-change',\n]\n\nexport type PanelYearRangeProps = ExtractPropTypes<typeof panelYearRangeProps>\nexport type PanelYearRangePropsPublic = ExtractPublicPropTypes<\n  typeof panelYearRangeProps\n>\n","import { computed } from 'vue'\n\nimport type { Ref, ToRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const useYearRangeHeader = ({\n  unlinkPanels,\n  leftDate,\n  rightDate,\n}: {\n  unlinkPanels: ToRef<boolean>\n  leftDate: Ref<Dayjs>\n  rightDate: Ref<Dayjs>\n}) => {\n  const leftPrevYear = () => {\n    leftDate.value = leftDate.value.subtract(10, 'year')\n    if (!unlinkPanels.value) {\n      rightDate.value = rightDate.value.subtract(10, 'year')\n    }\n  }\n\n  const rightNextYear = () => {\n    if (!unlinkPanels.value) {\n      leftDate.value = leftDate.value.add(10, 'year')\n    }\n    rightDate.value = rightDate.value.add(10, 'year')\n  }\n\n  const leftNextYear = () => {\n    leftDate.value = leftDate.value.add(10, 'year')\n  }\n\n  const rightPrevYear = () => {\n    rightDate.value = rightDate.value.subtract(10, 'year')\n  }\n\n  const leftLabel = computed(() => {\n    const leftStartDate = Math.floor(leftDate.value.year() / 10) * 10\n    return `${leftStartDate}-${leftStartDate + 9}`\n  })\n\n  const rightLabel = computed(() => {\n    const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10\n    return `${rightStartDate}-${rightStartDate + 9}`\n  })\n\n  const leftYear = computed(() => {\n    const leftEndDate = Math.floor(leftDate.value.year() / 10) * 10 + 9\n    return leftEndDate\n  })\n\n  const rightYear = computed(() => {\n    const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10\n    return rightStartDate\n  })\n\n  return {\n    leftPrevYear,\n    rightNextYear,\n    leftNextYear,\n    rightPrevYear,\n    leftLabel,\n    rightLabel,\n    leftYear,\n    rightYear,\n  }\n}\n","<template>\n  <div :class=\"panelKls\">\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :class=\"ppNs.e('shortcut')\"\n          :disabled=\"yearRangeDisabled\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div :class=\"leftPanelKls.content\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              type=\"button\"\n              :class=\"leftPanelKls.arrowLeftBtn\"\n              :disabled=\"yearRangeDisabled\"\n              @click=\"leftPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || yearRangeDisabled\"\n              :class=\"leftPanelKls.arrowRightBtn\"\n              @click=\"leftNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ leftLabel }}</div>\n          </div>\n          <year-table\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"yearRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n        <div :class=\"rightPanelKls.content\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || yearRangeDisabled\"\n              :class=\"rightPanelKls.arrowLeftBtn\"\n              @click=\"rightPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :class=\"rightPanelKls.arrowRightBtn\"\n              :disabled=\"yearRangeDisabled\"\n              @click=\"rightNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ rightLabel }}</div>\n          </div>\n          <year-table\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"yearRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, unref, useSlots, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { DArrowLeft, DArrowRight } from 'pit-element-icons'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { PICKER_BASE_INJECTION_KEY } from '@pit-element-plus/components/time-picker'\nimport {\n  panelYearRangeEmits,\n  panelYearRangeProps,\n} from '../props/panel-year-range'\nimport { useYearRangeHeader } from '../composables/use-year-range-header'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport {\n  correctlyParseUserInput,\n  getDefaultValue,\n  isValidRange,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { Dayjs } from 'dayjs'\n\ndefineOptions({\n  name: 'DatePickerYearRange',\n})\n\nconst props = defineProps(panelYearRangeProps)\nconst emit = defineEmits(panelYearRangeEmits)\nconst step = 10\nconst unit = 'year'\n\nconst { lang } = useLocale()\nconst leftDate = ref(dayjs().locale(lang.value))\nconst rightDate = ref(dayjs().locale(lang.value).add(step, unit))\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst { shortcuts, disabledDate, cellClassName } = pickerBase.props\nconst format = toRef(pickerBase.props, 'format')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n  ppNs,\n  drpNs,\n\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  parseValue,\n} = useRangePicker(props, {\n  defaultValue,\n  leftDate,\n  rightDate,\n  step,\n  unit,\n  sortDates,\n})\n\nconst {\n  leftPrevYear,\n  rightNextYear,\n  leftNextYear,\n  rightPrevYear,\n  leftLabel,\n  rightLabel,\n  leftYear,\n  rightYear,\n} = useYearRangeHeader({\n  unlinkPanels: toRef(props, 'unlinkPanels'),\n  leftDate,\n  rightDate,\n})\n\nconst yearRangeDisabled = useFormDisabled()\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst panelKls = computed(() => [\n  ppNs.b(),\n  drpNs.b(),\n  ppNs.is('border', props.border),\n  ppNs.is('disabled', yearRangeDisabled.value),\n  {\n    'has-sidebar': Boolean(useSlots().sidebar) || hasShortcuts.value,\n  },\n])\n\nconst leftPanelKls = computed(() => {\n  return {\n    content: [ppNs.e('content'), drpNs.e('content'), 'is-left'],\n    arrowLeftBtn: [ppNs.e('icon-btn'), 'd-arrow-left'],\n    arrowRightBtn: [\n      ppNs.e('icon-btn'),\n      ppNs.is('disabled', !enableYearArrow.value || yearRangeDisabled.value),\n      'd-arrow-right',\n    ],\n  }\n})\n\nconst rightPanelKls = computed(() => {\n  return {\n    content: [ppNs.e('content'), drpNs.e('content'), 'is-right'],\n    arrowLeftBtn: [\n      ppNs.e('icon-btn'),\n      ppNs.is('disabled', !enableYearArrow.value || yearRangeDisabled.value),\n      'd-arrow-left',\n    ],\n    arrowRightBtn: [ppNs.e('icon-btn'), 'd-arrow-right'],\n  }\n})\n\nconst enableYearArrow = computed(() => {\n  return props.unlinkPanels && rightYear.value > leftYear.value + 1\n})\n\ntype RangePickValue = {\n  minDate: Dayjs\n  maxDate: Dayjs\n}\nconst handleRangePick = (val: RangePickValue, close = true) => {\n  const minDate_ = val.minDate\n  const maxDate_ = val.maxDate\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [minDate_.toDate(), maxDate_ && maxDate_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!close) return\n  handleRangeConfirm()\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return correctlyParseUserInput(\n    value,\n    format.value,\n    lang.value,\n    isDefaultFormat\n  )\n}\n\nconst isValidValue = (date: [Dayjs, Dayjs]) => {\n  return (\n    isValidRange(date) &&\n    (disabledDate\n      ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate())\n      : true)\n  )\n}\n\nconst handleClear = () => {\n  let valueOnClear = null\n  if (pickerBase?.emptyValues) {\n    valueOnClear = pickerBase.emptyValues.valueOnClear.value\n  }\n  const defaultArr = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    step,\n    unit,\n    unlinkPanels: props.unlinkPanels,\n  })\n  leftDate.value = defaultArr[0]\n  rightDate.value = defaultArr[1]\n  emit('pick', valueOnClear)\n}\n\nfunction sortDates(minDate: Dayjs | undefined, maxDate: Dayjs | undefined) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const maxDateYear = maxDate.year()\n\n    rightDate.value =\n      minDateYear + step > maxDateYear ? maxDate.add(step, unit) : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(step, unit)\n  }\n}\n\nwatch(\n  () => props.visible,\n  (visible) => {\n    if (!visible && rangeState.value.selecting) {\n      parseValue(props.parsedValue)\n      onSelect(false)\n    }\n  }\n)\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n","<template>\n  <div :class=\"panelKls\">\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :class=\"ppNs.e('shortcut')\"\n          :disabled=\"yearRangeDisabled\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div :class=\"leftPanelKls.content\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              type=\"button\"\n              :class=\"leftPanelKls.arrowLeftBtn\"\n              :disabled=\"yearRangeDisabled\"\n              @click=\"leftPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || yearRangeDisabled\"\n              :class=\"leftPanelKls.arrowRightBtn\"\n              @click=\"leftNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ leftLabel }}</div>\n          </div>\n          <year-table\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"yearRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n        <div :class=\"rightPanelKls.content\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || yearRangeDisabled\"\n              :class=\"rightPanelKls.arrowLeftBtn\"\n              @click=\"rightPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :class=\"rightPanelKls.arrowRightBtn\"\n              :disabled=\"yearRangeDisabled\"\n              @click=\"rightNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ rightLabel }}</div>\n          </div>\n          <year-table\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"yearRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, unref, useSlots, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { DArrowLeft, DArrowRight } from 'pit-element-icons'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { PICKER_BASE_INJECTION_KEY } from '@pit-element-plus/components/time-picker'\nimport {\n  panelYearRangeEmits,\n  panelYearRangeProps,\n} from '../props/panel-year-range'\nimport { useYearRangeHeader } from '../composables/use-year-range-header'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport {\n  correctlyParseUserInput,\n  getDefaultValue,\n  isValidRange,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { Dayjs } from 'dayjs'\n\ndefineOptions({\n  name: 'DatePickerYearRange',\n})\n\nconst props = defineProps(panelYearRangeProps)\nconst emit = defineEmits(panelYearRangeEmits)\nconst step = 10\nconst unit = 'year'\n\nconst { lang } = useLocale()\nconst leftDate = ref(dayjs().locale(lang.value))\nconst rightDate = ref(dayjs().locale(lang.value).add(step, unit))\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst { shortcuts, disabledDate, cellClassName } = pickerBase.props\nconst format = toRef(pickerBase.props, 'format')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n  ppNs,\n  drpNs,\n\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  parseValue,\n} = useRangePicker(props, {\n  defaultValue,\n  leftDate,\n  rightDate,\n  step,\n  unit,\n  sortDates,\n})\n\nconst {\n  leftPrevYear,\n  rightNextYear,\n  leftNextYear,\n  rightPrevYear,\n  leftLabel,\n  rightLabel,\n  leftYear,\n  rightYear,\n} = useYearRangeHeader({\n  unlinkPanels: toRef(props, 'unlinkPanels'),\n  leftDate,\n  rightDate,\n})\n\nconst yearRangeDisabled = useFormDisabled()\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst panelKls = computed(() => [\n  ppNs.b(),\n  drpNs.b(),\n  ppNs.is('border', props.border),\n  ppNs.is('disabled', yearRangeDisabled.value),\n  {\n    'has-sidebar': Boolean(useSlots().sidebar) || hasShortcuts.value,\n  },\n])\n\nconst leftPanelKls = computed(() => {\n  return {\n    content: [ppNs.e('content'), drpNs.e('content'), 'is-left'],\n    arrowLeftBtn: [ppNs.e('icon-btn'), 'd-arrow-left'],\n    arrowRightBtn: [\n      ppNs.e('icon-btn'),\n      ppNs.is('disabled', !enableYearArrow.value || yearRangeDisabled.value),\n      'd-arrow-right',\n    ],\n  }\n})\n\nconst rightPanelKls = computed(() => {\n  return {\n    content: [ppNs.e('content'), drpNs.e('content'), 'is-right'],\n    arrowLeftBtn: [\n      ppNs.e('icon-btn'),\n      ppNs.is('disabled', !enableYearArrow.value || yearRangeDisabled.value),\n      'd-arrow-left',\n    ],\n    arrowRightBtn: [ppNs.e('icon-btn'), 'd-arrow-right'],\n  }\n})\n\nconst enableYearArrow = computed(() => {\n  return props.unlinkPanels && rightYear.value > leftYear.value + 1\n})\n\ntype RangePickValue = {\n  minDate: Dayjs\n  maxDate: Dayjs\n}\nconst handleRangePick = (val: RangePickValue, close = true) => {\n  const minDate_ = val.minDate\n  const maxDate_ = val.maxDate\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [minDate_.toDate(), maxDate_ && maxDate_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!close) return\n  handleRangeConfirm()\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return correctlyParseUserInput(\n    value,\n    format.value,\n    lang.value,\n    isDefaultFormat\n  )\n}\n\nconst isValidValue = (date: [Dayjs, Dayjs]) => {\n  return (\n    isValidRange(date) &&\n    (disabledDate\n      ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate())\n      : true)\n  )\n}\n\nconst handleClear = () => {\n  let valueOnClear = null\n  if (pickerBase?.emptyValues) {\n    valueOnClear = pickerBase.emptyValues.valueOnClear.value\n  }\n  const defaultArr = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    step,\n    unit,\n    unlinkPanels: props.unlinkPanels,\n  })\n  leftDate.value = defaultArr[0]\n  rightDate.value = defaultArr[1]\n  emit('pick', valueOnClear)\n}\n\nfunction sortDates(minDate: Dayjs | undefined, maxDate: Dayjs | undefined) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const maxDateYear = maxDate.year()\n\n    rightDate.value =\n      minDateYear + step > maxDateYear ? maxDate.add(step, unit) : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(step, unit)\n  }\n}\n\nwatch(\n  () => props.visible,\n  (visible) => {\n    if (!visible && rangeState.value.selecting) {\n      parseValue(props.parsedValue)\n      onSelect(false)\n    }\n  }\n)\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n","<template>\n  <div :class=\"panelKls\">\n    <div :class=\"ppNs.e('body-wrapper')\">\n      <slot name=\"sidebar\" :class=\"ppNs.e('sidebar')\" />\n      <div v-if=\"hasShortcuts\" :class=\"ppNs.e('sidebar')\">\n        <button\n          v-for=\"(shortcut, key) in shortcuts\"\n          :key=\"key\"\n          type=\"button\"\n          :class=\"ppNs.e('shortcut')\"\n          :disabled=\"yearRangeDisabled\"\n          @click=\"handleShortcutClick(shortcut)\"\n        >\n          {{ shortcut.text }}\n        </button>\n      </div>\n      <div :class=\"ppNs.e('body')\">\n        <div :class=\"leftPanelKls.content\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              type=\"button\"\n              :class=\"leftPanelKls.arrowLeftBtn\"\n              :disabled=\"yearRangeDisabled\"\n              @click=\"leftPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || yearRangeDisabled\"\n              :class=\"leftPanelKls.arrowRightBtn\"\n              @click=\"leftNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ leftLabel }}</div>\n          </div>\n          <year-table\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"yearRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n        <div :class=\"rightPanelKls.content\">\n          <div :class=\"drpNs.e('header')\">\n            <button\n              v-if=\"unlinkPanels\"\n              type=\"button\"\n              :disabled=\"!enableYearArrow || yearRangeDisabled\"\n              :class=\"rightPanelKls.arrowLeftBtn\"\n              @click=\"rightPrevYear\"\n            >\n              <slot name=\"prev-year\">\n                <el-icon><d-arrow-left /></el-icon>\n              </slot>\n            </button>\n            <button\n              type=\"button\"\n              :class=\"rightPanelKls.arrowRightBtn\"\n              :disabled=\"yearRangeDisabled\"\n              @click=\"rightNextYear\"\n            >\n              <slot name=\"next-year\">\n                <el-icon><d-arrow-right /></el-icon>\n              </slot>\n            </button>\n            <div>{{ rightLabel }}</div>\n          </div>\n          <year-table\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :disabled=\"yearRangeDisabled\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, unref, useSlots, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { DArrowLeft, DArrowRight } from 'pit-element-icons'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { PICKER_BASE_INJECTION_KEY } from '@pit-element-plus/components/time-picker'\nimport {\n  panelYearRangeEmits,\n  panelYearRangeProps,\n} from '../props/panel-year-range'\nimport { useYearRangeHeader } from '../composables/use-year-range-header'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport {\n  correctlyParseUserInput,\n  getDefaultValue,\n  isValidRange,\n} from '../utils'\nimport { ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from '../constants'\nimport YearTable from './basic-year-table.vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\n\nimport type { Dayjs } from 'dayjs'\n\ndefineOptions({\n  name: 'DatePickerYearRange',\n})\n\nconst props = defineProps(panelYearRangeProps)\nconst emit = defineEmits(panelYearRangeEmits)\nconst step = 10\nconst unit = 'year'\n\nconst { lang } = useLocale()\nconst leftDate = ref(dayjs().locale(lang.value))\nconst rightDate = ref(dayjs().locale(lang.value).add(step, unit))\nconst isDefaultFormat = inject(\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n  undefined\n) as any\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst { shortcuts, disabledDate, cellClassName } = pickerBase.props\nconst format = toRef(pickerBase.props, 'format')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\n\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n  ppNs,\n  drpNs,\n\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  parseValue,\n} = useRangePicker(props, {\n  defaultValue,\n  leftDate,\n  rightDate,\n  step,\n  unit,\n  sortDates,\n})\n\nconst {\n  leftPrevYear,\n  rightNextYear,\n  leftNextYear,\n  rightPrevYear,\n  leftLabel,\n  rightLabel,\n  leftYear,\n  rightYear,\n} = useYearRangeHeader({\n  unlinkPanels: toRef(props, 'unlinkPanels'),\n  leftDate,\n  rightDate,\n})\n\nconst yearRangeDisabled = useFormDisabled()\n\nconst hasShortcuts = computed(() => !!shortcuts.length)\n\nconst panelKls = computed(() => [\n  ppNs.b(),\n  drpNs.b(),\n  ppNs.is('border', props.border),\n  ppNs.is('disabled', yearRangeDisabled.value),\n  {\n    'has-sidebar': Boolean(useSlots().sidebar) || hasShortcuts.value,\n  },\n])\n\nconst leftPanelKls = computed(() => {\n  return {\n    content: [ppNs.e('content'), drpNs.e('content'), 'is-left'],\n    arrowLeftBtn: [ppNs.e('icon-btn'), 'd-arrow-left'],\n    arrowRightBtn: [\n      ppNs.e('icon-btn'),\n      ppNs.is('disabled', !enableYearArrow.value || yearRangeDisabled.value),\n      'd-arrow-right',\n    ],\n  }\n})\n\nconst rightPanelKls = computed(() => {\n  return {\n    content: [ppNs.e('content'), drpNs.e('content'), 'is-right'],\n    arrowLeftBtn: [\n      ppNs.e('icon-btn'),\n      ppNs.is('disabled', !enableYearArrow.value || yearRangeDisabled.value),\n      'd-arrow-left',\n    ],\n    arrowRightBtn: [ppNs.e('icon-btn'), 'd-arrow-right'],\n  }\n})\n\nconst enableYearArrow = computed(() => {\n  return props.unlinkPanels && rightYear.value > leftYear.value + 1\n})\n\ntype RangePickValue = {\n  minDate: Dayjs\n  maxDate: Dayjs\n}\nconst handleRangePick = (val: RangePickValue, close = true) => {\n  const minDate_ = val.minDate\n  const maxDate_ = val.maxDate\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [minDate_.toDate(), maxDate_ && maxDate_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!close) return\n  handleRangeConfirm()\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return correctlyParseUserInput(\n    value,\n    format.value,\n    lang.value,\n    isDefaultFormat\n  )\n}\n\nconst isValidValue = (date: [Dayjs, Dayjs]) => {\n  return (\n    isValidRange(date) &&\n    (disabledDate\n      ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate())\n      : true)\n  )\n}\n\nconst handleClear = () => {\n  let valueOnClear = null\n  if (pickerBase?.emptyValues) {\n    valueOnClear = pickerBase.emptyValues.valueOnClear.value\n  }\n  const defaultArr = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    step,\n    unit,\n    unlinkPanels: props.unlinkPanels,\n  })\n  leftDate.value = defaultArr[0]\n  rightDate.value = defaultArr[1]\n  emit('pick', valueOnClear)\n}\n\nfunction sortDates(minDate: Dayjs | undefined, maxDate: Dayjs | undefined) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const maxDateYear = maxDate.year()\n\n    rightDate.value =\n      minDateYear + step > maxDateYear ? maxDate.add(step, unit) : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(step, unit)\n  }\n}\n\nwatch(\n  () => props.visible,\n  (visible) => {\n    if (!visible && rangeState.value.selecting) {\n      parseValue(props.parsedValue)\n      onSelect(false)\n    }\n  }\n)\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n","import DatePickPanel from './date-picker-com/panel-date-pick.vue'\nimport DateRangePickPanel from './date-picker-com/panel-date-range.vue'\nimport MonthRangePickPanel from './date-picker-com/panel-month-range.vue'\nimport YearRangePickPanel from './date-picker-com/panel-year-range.vue'\n\nimport type { DatePickerType } from './types'\n\nexport const getPanel = function (type: DatePickerType) {\n  switch (type) {\n    case 'daterange':\n    case 'datetimerange': {\n      return DateRangePickPanel\n    }\n    case 'monthrange': {\n      return MonthRangePickPanel\n    }\n    case 'yearrange': {\n      return YearRangePickPanel\n    }\n    default: {\n      return DatePickPanel\n    }\n  }\n}\n","import { defineComponent, inject, provide, reactive, toRefs } from 'vue'\nimport { omit } from 'lodash-unified'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js'\nimport advancedFormat from 'dayjs/plugin/advancedFormat.js'\nimport localeData from 'dayjs/plugin/localeData.js'\nimport weekOfYear from 'dayjs/plugin/weekOfYear.js'\nimport weekYear from 'dayjs/plugin/weekYear.js'\nimport dayOfYear from 'dayjs/plugin/dayOfYear.js'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js'\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js'\nimport {\n  PICKER_BASE_INJECTION_KEY,\n  ROOT_COMMON_PICKER_INJECTION_KEY,\n} from '@pit-element-plus/components/time-picker'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isUndefined } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { datePickerPanelProps } from './props/date-picker-panel'\nimport { ROOT_PICKER_INJECTION_KEY } from './constants'\nimport { getPanel } from './panel-utils'\nimport { useCommonPicker } from '../../time-picker/src/composables/use-common-picker'\n\ndayjs.extend(localeData)\ndayjs.extend(advancedFormat)\ndayjs.extend(customParseFormat)\ndayjs.extend(weekOfYear)\ndayjs.extend(weekYear)\ndayjs.extend(dayOfYear)\ndayjs.extend(isSameOrAfter)\ndayjs.extend(isSameOrBefore)\n\nexport default defineComponent({\n  name: 'ElDatePickerPanel',\n  install: null,\n  inheritAttrs: false,\n  props: datePickerPanelProps,\n  emits: [\n    UPDATE_MODEL_EVENT,\n    'calendar-change',\n    'panel-change',\n    'visible-change',\n    'clear',\n  ],\n  setup(props, { slots, emit, attrs }) {\n    const ns = useNamespace('picker-panel')\n    const pickerInjection = inject(PICKER_BASE_INJECTION_KEY, undefined)\n    if (isUndefined(pickerInjection)) {\n      const _props = reactive({\n        ...toRefs(props),\n      })\n      provide(PICKER_BASE_INJECTION_KEY, {\n        props: _props,\n      })\n    }\n\n    provide(ROOT_PICKER_INJECTION_KEY, {\n      slots,\n      pickerNs: ns,\n    })\n    const {\n      parsedValue,\n      onCalendarChange,\n      onPanelChange,\n      onSetPickerOption,\n      onPick,\n    } = inject(\n      ROOT_COMMON_PICKER_INJECTION_KEY,\n      () => useCommonPicker(props, emit),\n      true\n    )\n\n    return () => {\n      const Component = getPanel(props.type)\n      return (\n        <Component\n          {...omit(attrs, 'onPick')}\n          {...props}\n          parsedValue={parsedValue.value}\n          onSet-picker-option={onSetPickerOption}\n          onCalendar-change={onCalendarChange}\n          onPanel-change={onPanelChange}\n          onClear={() => emit('clear')}\n          onPick={onPick}\n        >\n          {slots}\n        </Component>\n      )\n    }\n  },\n})\n","import { withInstall } from '@pit-element-plus/utils'\nimport DatePickerPanel from './src/date-picker-panel'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElDatePickerPanel: SFCWithInstall<typeof DatePickerPanel> =\n  withInstall(DatePickerPanel)\n\nexport default ElDatePickerPanel\nexport * from './src/constants'\nexport * from './src/props/date-picker-panel'\nexport * from './src/types'\nexport type { DatePickerPanelInstance } from './src/instance'\n","import { timePickerDefaultProps } from '@pit-element-plus/components/time-picker'\nimport { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { DatePickerType } from '@pit-element-plus/components/date-picker-panel/src/types'\n\nexport const datePickerProps = buildProps({\n  ...timePickerDefaultProps,\n  /**\n   * @description type of the picker\n   */\n  type: {\n    type: definePropType<DatePickerType>(String),\n    default: 'date',\n  },\n} as const)\n\nexport type DatePickerProps = ExtractPropTypes<typeof datePickerProps>\nexport type DatePickerPropsPublic = ExtractPublicPropTypes<\n  typeof datePickerProps\n>\n","import { computed, defineComponent, provide, reactive, ref, toRef } from 'vue'\nimport {\n  CommonPicker,\n  DEFAULT_FORMATS_DATE,\n  DEFAULT_FORMATS_DATEPICKER,\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n} from '@pit-element-plus/components/time-picker'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport {\n  ElDatePickerPanel,\n  ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,\n} from '@pit-element-plus/components/date-picker-panel'\nimport { datePickerProps } from './props'\n\nimport type {\n  DateModelType,\n  SingleOrRange,\n} from '@pit-element-plus/components/time-picker'\nimport type { DatePickerExpose } from './instance'\n\nexport default defineComponent({\n  name: 'ElDatePicker',\n  install: null,\n  props: datePickerProps,\n  emits: [UPDATE_MODEL_EVENT],\n  setup(props, { expose, emit, slots }) {\n    const isDefaultFormat = computed(() => {\n      return !props.format\n    })\n    provide(ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, isDefaultFormat)\n    provide(\n      PICKER_POPPER_OPTIONS_INJECTION_KEY,\n      reactive(toRef(props, 'popperOptions'))\n    )\n    const commonPicker = ref<InstanceType<typeof CommonPicker>>()\n    const refProps: DatePickerExpose = {\n      focus: () => {\n        commonPicker.value?.focus()\n      },\n      blur: () => {\n        commonPicker.value?.blur()\n      },\n      handleOpen: () => {\n        commonPicker.value?.handleOpen()\n      },\n      handleClose: () => {\n        commonPicker.value?.handleClose()\n      },\n    }\n\n    expose(refProps)\n\n    const onModelValueUpdated = (val: SingleOrRange<DateModelType> | null) => {\n      emit(UPDATE_MODEL_EVENT, val)\n    }\n\n    return () => {\n      // since props always have all defined keys on it, {format, ...props} will always overwrite format\n      // pick props.format or provide default value here before spreading\n      const format =\n        props.format ??\n        (DEFAULT_FORMATS_DATEPICKER[props.type] || DEFAULT_FORMATS_DATE)\n\n      return (\n        <CommonPicker\n          {...props}\n          format={format}\n          type={props.type}\n          ref={commonPicker}\n          onUpdate:modelValue={onModelValueUpdated}\n        >\n          {{\n            default: (scopedProps: /**FIXME: remove any type */ any) => (\n              <ElDatePickerPanel\n                disabled={props.disabled}\n                editable={props.editable}\n                border={false}\n                {...scopedProps}\n              >\n                {slots}\n              </ElDatePickerPanel>\n            ),\n            'range-separator': slots['range-separator'],\n          }}\n        </CommonPicker>\n      )\n    }\n  },\n})\n","import { withInstall } from '@pit-element-plus/utils'\nimport DatePicker from './src/date-picker'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElDatePicker: SFCWithInstall<typeof DatePicker> =\n  withInstall(DatePicker)\n\nexport default ElDatePicker\nexport * from './src/props'\nexport type { DatePickerInstance } from './src/instance'\n","import { buildProps } from '@pit-element-plus/utils'\nimport { useSizeProp } from '@pit-element-plus/hooks'\nimport { ComponentSize } from '@pit-element-plus/constants'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Description from './description.vue'\n\nexport interface DescriptionProps {\n  /**\n   * @description with or without border\n   * @default false\n   */\n  border?: boolean\n  /**\n   * @description numbers of `Descriptions Item` in one line\n   * @default 3\n   */\n  column?: number\n  /**\n   * @description direction of list\n   * @default 'horizontal'\n   */\n  direction?: 'horizontal' | 'vertical'\n  /**\n   * @description size of list\n   * @default ''\n   */\n  size?: ComponentSize\n  /**\n   * @description title text, display on the top left\n   * @default ''\n   */\n  title?: string\n  /**\n   * @description extra text, display on the top right\n   * @default ''\n   */\n  extra?: string\n  /**\n   * @description width of every label column\n   */\n  labelWidth?: string | number\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `DescriptionProps` instead.\n */\nexport const descriptionProps = buildProps({\n  /**\n   * @description with or without border\n   */\n  border: Boolean,\n  /**\n   * @description numbers of `Descriptions Item` in one line\n   */\n  column: {\n    type: Number,\n    default: 3,\n  },\n  /**\n   * @description direction of list\n   */\n  direction: {\n    type: String,\n    values: ['horizontal', 'vertical'],\n    default: 'horizontal',\n  },\n  /**\n   * @description size of list\n   */\n  size: useSizeProp,\n  /**\n   * @description title text, display on the top left\n   */\n  title: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description extra text, display on the top right\n   */\n  extra: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description width of every label column\n   */\n  labelWidth: {\n    type: [String, Number],\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `DescriptionProps` instead.\n */\nexport type DescriptionPropsPublic = ExtractPublicPropTypes<\n  typeof descriptionProps\n>\nexport type DescriptionInstance = InstanceType<typeof Description> & unknown\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { DescriptionItemVNode } from './description-item'\n\nexport interface DescriptionsRowProps {\n  row?: DescriptionItemVNode[]\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `DescriptionsRowProps` instead.\n */\nexport const descriptionsRowProps = buildProps({\n  row: {\n    type: definePropType<DescriptionItemVNode[]>(Array),\n    default: () => [],\n  },\n} as const)\n","import type { InjectionKey } from 'vue'\nimport type { IDescriptionsInject } from './descriptions.type'\n\nexport const descriptionsKey: InjectionKey<IDescriptionsInject> =\n  Symbol('elDescriptions')\n","import { defineComponent, h, inject, withDirectives } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { addUnit, getNormalizedProps } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { descriptionsKey } from './token'\n\nimport type { DirectiveArguments, PropType, VNode } from 'vue'\nimport type {\n  IDescriptionsInject,\n  IDescriptionsItemInject,\n} from './descriptions.type'\nimport type { DescriptionItemVNode } from './description-item'\n\nexport default defineComponent({\n  name: 'ElDescriptionsCell',\n  props: {\n    cell: {\n      type: Object as PropType<DescriptionItemVNode>,\n    },\n    tag: {\n      type: String,\n      default: 'td',\n    },\n    type: {\n      type: String,\n    },\n  },\n  setup() {\n    const descriptions = inject(descriptionsKey, {} as IDescriptionsInject)\n\n    return {\n      descriptions,\n    }\n  },\n  render() {\n    const item = getNormalizedProps(\n      this.cell as VNode\n    ) as IDescriptionsItemInject\n\n    const directives = (this.cell?.dirs || []).map((dire) => {\n      const { dir, arg, modifiers, value } = dire\n      return [dir, value, arg, modifiers]\n    }) as DirectiveArguments\n\n    const { border, direction } = this.descriptions\n    const isVertical = direction === 'vertical'\n    const renderLabel = () => this.cell?.children?.label?.() || item.label\n    const renderContent = () => this.cell?.children?.default?.()\n    const span = item.span\n    const rowspan = item.rowspan\n    const align = item.align ? `is-${item.align}` : ''\n    const labelAlign = item.labelAlign ? `is-${item.labelAlign}` : align\n    const className = item.className\n    const labelClassName = item.labelClassName\n    const width =\n      this.type === 'label'\n        ? (item.labelWidth ?? this.descriptions.labelWidth ?? item.width)\n        : item.width\n\n    const style = {\n      width: addUnit(width),\n      minWidth: addUnit(item.minWidth),\n    }\n    const ns = useNamespace('descriptions')\n\n    switch (this.type) {\n      case 'label':\n        return withDirectives(\n          h(\n            this.tag,\n            {\n              style,\n              class: [\n                ns.e('cell'),\n                ns.e('label'),\n                ns.is('bordered-label', border),\n                ns.is('vertical-label', isVertical),\n                labelAlign,\n                labelClassName,\n              ],\n              colSpan: isVertical ? span : 1,\n              rowspan: isVertical ? 1 : rowspan,\n            },\n            renderLabel()\n          ),\n          directives\n        )\n      case 'content':\n        return withDirectives(\n          h(\n            this.tag,\n            {\n              style,\n              class: [\n                ns.e('cell'),\n                ns.e('content'),\n                ns.is('bordered-content', border),\n                ns.is('vertical-content', isVertical),\n                align,\n                className,\n              ],\n              colSpan: isVertical ? span : span * 2 - 1,\n              rowspan: isVertical ? rowspan * 2 - 1 : rowspan,\n            },\n            renderContent()\n          ),\n          directives\n        )\n      default: {\n        const label = renderLabel()\n        const labelStyle: Record<string, any> = {}\n        const width = addUnit(item.labelWidth ?? this.descriptions.labelWidth)\n        if (width) {\n          labelStyle.width = width\n          labelStyle.display = 'inline-block'\n        }\n        return withDirectives(\n          h(\n            'td',\n            {\n              style,\n              class: [ns.e('cell'), align],\n              colSpan: span,\n              rowspan,\n            },\n            [\n              !isNil(label)\n                ? h(\n                    'span',\n                    {\n                      style: labelStyle,\n                      class: [ns.e('label'), labelClassName],\n                    },\n                    label\n                  )\n                : undefined,\n              h(\n                'span',\n                {\n                  class: [ns.e('content'), className],\n                },\n                renderContent()\n              ),\n            ]\n          ),\n          directives\n        )\n      }\n    }\n  },\n})\n","<template>\n  <template v-if=\"descriptions.direction === 'vertical'\">\n    <tr>\n      <template v-for=\"(cell, _index) in row\" :key=\"`tr1-${_index}`\">\n        <el-descriptions-cell :cell=\"cell\" tag=\"th\" type=\"label\" />\n      </template>\n    </tr>\n    <tr>\n      <template v-for=\"(cell, _index) in row\" :key=\"`tr2-${_index}`\">\n        <el-descriptions-cell :cell=\"cell\" tag=\"td\" type=\"content\" />\n      </template>\n    </tr>\n  </template>\n  <tr v-else>\n    <template v-for=\"(cell, _index) in row\" :key=\"`tr3-${_index}`\">\n      <template v-if=\"descriptions.border\">\n        <el-descriptions-cell :cell=\"cell\" tag=\"td\" type=\"label\" />\n        <el-descriptions-cell :cell=\"cell\" tag=\"td\" type=\"content\" />\n      </template>\n      <el-descriptions-cell v-else :cell=\"cell\" tag=\"td\" type=\"both\" />\n    </template>\n  </tr>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject } from 'vue'\nimport ElDescriptionsCell from './descriptions-cell'\nimport { descriptionsKey } from './token'\n\nimport type { DescriptionsRowProps } from './descriptions-row'\nimport type { IDescriptionsInject } from './descriptions.type'\n\ndefineOptions({\n  name: 'ElDescriptionsRow',\n})\n\nwithDefaults(defineProps<DescriptionsRowProps>(), {\n  row: () => [],\n})\n\nconst descriptions = inject(descriptionsKey, {} as IDescriptionsInject)\n</script>\n","<template>\n  <template v-if=\"descriptions.direction === 'vertical'\">\n    <tr>\n      <template v-for=\"(cell, _index) in row\" :key=\"`tr1-${_index}`\">\n        <el-descriptions-cell :cell=\"cell\" tag=\"th\" type=\"label\" />\n      </template>\n    </tr>\n    <tr>\n      <template v-for=\"(cell, _index) in row\" :key=\"`tr2-${_index}`\">\n        <el-descriptions-cell :cell=\"cell\" tag=\"td\" type=\"content\" />\n      </template>\n    </tr>\n  </template>\n  <tr v-else>\n    <template v-for=\"(cell, _index) in row\" :key=\"`tr3-${_index}`\">\n      <template v-if=\"descriptions.border\">\n        <el-descriptions-cell :cell=\"cell\" tag=\"td\" type=\"label\" />\n        <el-descriptions-cell :cell=\"cell\" tag=\"td\" type=\"content\" />\n      </template>\n      <el-descriptions-cell v-else :cell=\"cell\" tag=\"td\" type=\"both\" />\n    </template>\n  </tr>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject } from 'vue'\nimport ElDescriptionsCell from './descriptions-cell'\nimport { descriptionsKey } from './token'\n\nimport type { DescriptionsRowProps } from './descriptions-row'\nimport type { IDescriptionsInject } from './descriptions.type'\n\ndefineOptions({\n  name: 'ElDescriptionsRow',\n})\n\nwithDefaults(defineProps<DescriptionsRowProps>(), {\n  row: () => [],\n})\n\nconst descriptions = inject(descriptionsKey, {} as IDescriptionsInject)\n</script>\n","<template>\n  <template v-if=\"descriptions.direction === 'vertical'\">\n    <tr>\n      <template v-for=\"(cell, _index) in row\" :key=\"`tr1-${_index}`\">\n        <el-descriptions-cell :cell=\"cell\" tag=\"th\" type=\"label\" />\n      </template>\n    </tr>\n    <tr>\n      <template v-for=\"(cell, _index) in row\" :key=\"`tr2-${_index}`\">\n        <el-descriptions-cell :cell=\"cell\" tag=\"td\" type=\"content\" />\n      </template>\n    </tr>\n  </template>\n  <tr v-else>\n    <template v-for=\"(cell, _index) in row\" :key=\"`tr3-${_index}`\">\n      <template v-if=\"descriptions.border\">\n        <el-descriptions-cell :cell=\"cell\" tag=\"td\" type=\"label\" />\n        <el-descriptions-cell :cell=\"cell\" tag=\"td\" type=\"content\" />\n      </template>\n      <el-descriptions-cell v-else :cell=\"cell\" tag=\"td\" type=\"both\" />\n    </template>\n  </tr>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject } from 'vue'\nimport ElDescriptionsCell from './descriptions-cell'\nimport { descriptionsKey } from './token'\n\nimport type { DescriptionsRowProps } from './descriptions-row'\nimport type { IDescriptionsInject } from './descriptions.type'\n\ndefineOptions({\n  name: 'ElDescriptionsRow',\n})\n\nwithDefaults(defineProps<DescriptionsRowProps>(), {\n  row: () => [],\n})\n\nconst descriptions = inject(descriptionsKey, {} as IDescriptionsInject)\n</script>\n","export const COMPONENT_NAME = 'ElDescriptionsItem'\n","<template>\n  <div :class=\"descriptionKls\">\n    <div\n      v-if=\"title || extra || $slots.title || $slots.extra\"\n      :class=\"ns.e('header')\"\n    >\n      <div :class=\"ns.e('title')\">\n        <slot name=\"title\">{{ title }}</slot>\n      </div>\n      <div :class=\"ns.e('extra')\">\n        <slot name=\"extra\">{{ extra }}</slot>\n      </div>\n    </div>\n\n    <div :class=\"ns.e('body')\">\n      <table :class=\"[ns.e('table'), ns.is('bordered', border)]\">\n        <tbody>\n          <template v-for=\"(row, _index) in getRows()\" :key=\"_index\">\n            <el-descriptions-row :row=\"row\" />\n          </template>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, useSlots } from 'vue'\nimport { flattedChildren } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport ElDescriptionsRow from './descriptions-row.vue'\nimport { descriptionsKey } from './token'\nimport { COMPONENT_NAME } from './constants'\n\nimport type { DescriptionProps } from './description'\nimport type { IDescriptionsInject } from './descriptions.type'\nimport type { DescriptionItemVNode } from './description-item'\n\ndefineOptions({\n  name: 'ElDescriptions',\n})\n\nconst props = withDefaults(defineProps<DescriptionProps>(), {\n  column: 3,\n  direction: 'horizontal',\n  title: '',\n  extra: '',\n})\n\nconst ns = useNamespace('descriptions')\n\nconst descriptionsSize = useFormSize()\n\nconst slots = useSlots()\n\nprovide(descriptionsKey, props as IDescriptionsInject)\n\nconst descriptionKls = computed(() => [ns.b(), ns.m(descriptionsSize.value)])\n\nconst filledNode = (\n  node: DescriptionItemVNode,\n  span: number,\n  count: number,\n  isLast = false\n) => {\n  if (!node.props) {\n    node.props = {}\n  }\n  if (span > count) {\n    node.props.span = count\n  }\n  if (isLast) {\n    // set the last span\n    node.props.span = span\n  }\n  return node\n}\n\nconst getRows = () => {\n  if (!slots.default) return []\n\n  const children = flattedChildren(slots.default()).filter(\n    (node): node is DescriptionItemVNode =>\n      (node as any)?.type?.name === COMPONENT_NAME\n  )\n  const rows: DescriptionItemVNode[][] = []\n  let temp: DescriptionItemVNode[] = []\n  let count = props.column\n  let totalSpan = 0 // all spans number of item\n  const rowspanTemp: number[] = [] // the number of row spans\n\n  children.forEach((node, index) => {\n    const span = node.props?.span || 1\n    const rowspan = node.props?.rowspan || 1\n    const rowNo = rows.length\n    rowspanTemp[rowNo] ||= 0\n\n    if (rowspan > 1) {\n      for (let i = 1; i < rowspan; i++) {\n        rowspanTemp[rowNo + i] ||= 0\n        rowspanTemp[rowNo + i]++\n        totalSpan++\n      }\n    }\n    if (rowspanTemp[rowNo] > 0) {\n      count -= rowspanTemp[rowNo]\n      rowspanTemp[rowNo] = 0\n    }\n    if (index < children.length - 1) {\n      totalSpan += span > count ? count : span\n    }\n\n    if (index === children.length - 1) {\n      // calculate the last item span\n      const lastSpan = props.column - (totalSpan % props.column)\n      temp.push(filledNode(node, lastSpan, count, true))\n      rows.push(temp)\n      return\n    }\n\n    if (span < count) {\n      count -= span\n      temp.push(node)\n    } else {\n      temp.push(filledNode(node, span, count))\n      rows.push(temp)\n      count = props.column\n      temp = []\n    }\n  })\n\n  return rows\n}\n</script>\n","<template>\n  <div :class=\"descriptionKls\">\n    <div\n      v-if=\"title || extra || $slots.title || $slots.extra\"\n      :class=\"ns.e('header')\"\n    >\n      <div :class=\"ns.e('title')\">\n        <slot name=\"title\">{{ title }}</slot>\n      </div>\n      <div :class=\"ns.e('extra')\">\n        <slot name=\"extra\">{{ extra }}</slot>\n      </div>\n    </div>\n\n    <div :class=\"ns.e('body')\">\n      <table :class=\"[ns.e('table'), ns.is('bordered', border)]\">\n        <tbody>\n          <template v-for=\"(row, _index) in getRows()\" :key=\"_index\">\n            <el-descriptions-row :row=\"row\" />\n          </template>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, useSlots } from 'vue'\nimport { flattedChildren } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport ElDescriptionsRow from './descriptions-row.vue'\nimport { descriptionsKey } from './token'\nimport { COMPONENT_NAME } from './constants'\n\nimport type { DescriptionProps } from './description'\nimport type { IDescriptionsInject } from './descriptions.type'\nimport type { DescriptionItemVNode } from './description-item'\n\ndefineOptions({\n  name: 'ElDescriptions',\n})\n\nconst props = withDefaults(defineProps<DescriptionProps>(), {\n  column: 3,\n  direction: 'horizontal',\n  title: '',\n  extra: '',\n})\n\nconst ns = useNamespace('descriptions')\n\nconst descriptionsSize = useFormSize()\n\nconst slots = useSlots()\n\nprovide(descriptionsKey, props as IDescriptionsInject)\n\nconst descriptionKls = computed(() => [ns.b(), ns.m(descriptionsSize.value)])\n\nconst filledNode = (\n  node: DescriptionItemVNode,\n  span: number,\n  count: number,\n  isLast = false\n) => {\n  if (!node.props) {\n    node.props = {}\n  }\n  if (span > count) {\n    node.props.span = count\n  }\n  if (isLast) {\n    // set the last span\n    node.props.span = span\n  }\n  return node\n}\n\nconst getRows = () => {\n  if (!slots.default) return []\n\n  const children = flattedChildren(slots.default()).filter(\n    (node): node is DescriptionItemVNode =>\n      (node as any)?.type?.name === COMPONENT_NAME\n  )\n  const rows: DescriptionItemVNode[][] = []\n  let temp: DescriptionItemVNode[] = []\n  let count = props.column\n  let totalSpan = 0 // all spans number of item\n  const rowspanTemp: number[] = [] // the number of row spans\n\n  children.forEach((node, index) => {\n    const span = node.props?.span || 1\n    const rowspan = node.props?.rowspan || 1\n    const rowNo = rows.length\n    rowspanTemp[rowNo] ||= 0\n\n    if (rowspan > 1) {\n      for (let i = 1; i < rowspan; i++) {\n        rowspanTemp[rowNo + i] ||= 0\n        rowspanTemp[rowNo + i]++\n        totalSpan++\n      }\n    }\n    if (rowspanTemp[rowNo] > 0) {\n      count -= rowspanTemp[rowNo]\n      rowspanTemp[rowNo] = 0\n    }\n    if (index < children.length - 1) {\n      totalSpan += span > count ? count : span\n    }\n\n    if (index === children.length - 1) {\n      // calculate the last item span\n      const lastSpan = props.column - (totalSpan % props.column)\n      temp.push(filledNode(node, lastSpan, count, true))\n      rows.push(temp)\n      return\n    }\n\n    if (span < count) {\n      count -= span\n      temp.push(node)\n    } else {\n      temp.push(filledNode(node, span, count))\n      rows.push(temp)\n      count = props.column\n      temp = []\n    }\n  })\n\n  return rows\n}\n</script>\n","<template>\n  <div :class=\"descriptionKls\">\n    <div\n      v-if=\"title || extra || $slots.title || $slots.extra\"\n      :class=\"ns.e('header')\"\n    >\n      <div :class=\"ns.e('title')\">\n        <slot name=\"title\">{{ title }}</slot>\n      </div>\n      <div :class=\"ns.e('extra')\">\n        <slot name=\"extra\">{{ extra }}</slot>\n      </div>\n    </div>\n\n    <div :class=\"ns.e('body')\">\n      <table :class=\"[ns.e('table'), ns.is('bordered', border)]\">\n        <tbody>\n          <template v-for=\"(row, _index) in getRows()\" :key=\"_index\">\n            <el-descriptions-row :row=\"row\" />\n          </template>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, useSlots } from 'vue'\nimport { flattedChildren } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport ElDescriptionsRow from './descriptions-row.vue'\nimport { descriptionsKey } from './token'\nimport { COMPONENT_NAME } from './constants'\n\nimport type { DescriptionProps } from './description'\nimport type { IDescriptionsInject } from './descriptions.type'\nimport type { DescriptionItemVNode } from './description-item'\n\ndefineOptions({\n  name: 'ElDescriptions',\n})\n\nconst props = withDefaults(defineProps<DescriptionProps>(), {\n  column: 3,\n  direction: 'horizontal',\n  title: '',\n  extra: '',\n})\n\nconst ns = useNamespace('descriptions')\n\nconst descriptionsSize = useFormSize()\n\nconst slots = useSlots()\n\nprovide(descriptionsKey, props as IDescriptionsInject)\n\nconst descriptionKls = computed(() => [ns.b(), ns.m(descriptionsSize.value)])\n\nconst filledNode = (\n  node: DescriptionItemVNode,\n  span: number,\n  count: number,\n  isLast = false\n) => {\n  if (!node.props) {\n    node.props = {}\n  }\n  if (span > count) {\n    node.props.span = count\n  }\n  if (isLast) {\n    // set the last span\n    node.props.span = span\n  }\n  return node\n}\n\nconst getRows = () => {\n  if (!slots.default) return []\n\n  const children = flattedChildren(slots.default()).filter(\n    (node): node is DescriptionItemVNode =>\n      (node as any)?.type?.name === COMPONENT_NAME\n  )\n  const rows: DescriptionItemVNode[][] = []\n  let temp: DescriptionItemVNode[] = []\n  let count = props.column\n  let totalSpan = 0 // all spans number of item\n  const rowspanTemp: number[] = [] // the number of row spans\n\n  children.forEach((node, index) => {\n    const span = node.props?.span || 1\n    const rowspan = node.props?.rowspan || 1\n    const rowNo = rows.length\n    rowspanTemp[rowNo] ||= 0\n\n    if (rowspan > 1) {\n      for (let i = 1; i < rowspan; i++) {\n        rowspanTemp[rowNo + i] ||= 0\n        rowspanTemp[rowNo + i]++\n        totalSpan++\n      }\n    }\n    if (rowspanTemp[rowNo] > 0) {\n      count -= rowspanTemp[rowNo]\n      rowspanTemp[rowNo] = 0\n    }\n    if (index < children.length - 1) {\n      totalSpan += span > count ? count : span\n    }\n\n    if (index === children.length - 1) {\n      // calculate the last item span\n      const lastSpan = props.column - (totalSpan % props.column)\n      temp.push(filledNode(node, lastSpan, count, true))\n      rows.push(temp)\n      return\n    }\n\n    if (span < count) {\n      count -= span\n      temp.push(node)\n    } else {\n      temp.push(filledNode(node, span, count))\n      rows.push(temp)\n      count = props.column\n      temp = []\n    }\n  })\n\n  return rows\n}\n</script>\n","import { defineComponent } from 'vue'\nimport { columnAlignment } from '@pit-element-plus/constants'\nimport { buildProps } from '@pit-element-plus/utils'\nimport { COMPONENT_NAME } from './constants'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes, Slot, VNode } from 'vue'\n\nexport const descriptionItemProps = buildProps({\n  /**\n   * @description label text\n   */\n  label: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description colspan of column\n   */\n  span: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description the number of rows a cell should span\n   */\n  rowspan: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description column width, the width of the same column in different rows is set by the max value (If no `border`, width contains label and content)\n   */\n  width: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description column minimum width, columns with `width` has a fixed width, while columns with `min-width` has a width that is distributed in proportion (If no`border`, width contains label and content)\n   */\n  minWidth: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description column label width, if not set, it will be the same as the width of the column. Higher priority than the `label-width` of `Descriptions`\n   */\n  labelWidth: {\n    type: [String, Number],\n  },\n  /**\n   * @description column content alignment (If no `border`, effective for both label and content)\n   */\n  align: {\n    type: String,\n    values: columnAlignment,\n    default: 'left',\n  },\n  /**\n   * @description column label alignment, if omitted, the value of the above `align` attribute will be applied (If no `border`, please use `align` attribute)\n   */\n  labelAlign: {\n    type: String,\n    values: columnAlignment,\n  },\n  /**\n   * @description column content custom class name\n   */\n  className: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description column label custom class name\n   */\n  labelClassName: {\n    type: String,\n    default: '',\n  },\n})\n\nconst DescriptionItem = defineComponent({\n  name: COMPONENT_NAME,\n  props: descriptionItemProps,\n})\n\nexport default DescriptionItem\n\nexport type DescriptionItemProps = ExtractPropTypes<typeof descriptionItemProps>\nexport type DescriptionItemPropsPublic = ExtractPublicPropTypes<\n  typeof descriptionItemProps\n>\nexport type DescriptionItemVNode = VNode & {\n  children: { [name: string]: Slot } | null\n  props: Partial<DescriptionItemProps> | null\n}\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Descriptions from './src/description.vue'\nimport DescriptionsItem from './src/description-item'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElDescriptions: SFCWithInstall<typeof Descriptions> & {\n  DescriptionsItem: typeof DescriptionsItem\n} = withInstall(Descriptions, {\n  DescriptionsItem,\n})\n\nexport const ElDescriptionsItem: SFCWithInstall<typeof DescriptionsItem> =\n  withNoopInstall(DescriptionsItem)\n\nexport default ElDescriptions\n\nexport * from './src/description'\nexport * from './src/description-item'\n","import { buildProps, iconPropType } from '@pit-element-plus/utils'\n\nimport type { IconPropType } from '@pit-element-plus/utils'\n\n/**\n * @description dialog-content component props\n */\nexport interface DialogContentProps {\n  /**\n   * @description whether to align the header and footer in center\n   */\n  center?: boolean\n  /**\n   * @description whether to align the dialog both horizontally and vertically\n   */\n  alignCenter?: boolean\n  /**\n   * @description custom close icon, default is Close\n   */\n  closeIcon?: IconPropType\n  /**\n   * @description enable dragging feature for Dialog\n   */\n  draggable?: boolean\n  /**\n   * @description draggable Dialog can overflow the viewport\n   */\n  overflow?: boolean\n  /**\n   * @description whether the Dialog takes up full screen\n   */\n  fullscreen?: boolean\n  /**\n   * @description custom class names for header wrapper\n   */\n  headerClass?: string\n  /**\n   * @description custom class names for body wrapper\n   */\n  bodyClass?: string\n  /**\n   * @description custom class names for footer wrapper\n   */\n  footerClass?: string\n  /**\n   * @description whether to show a close button\n   */\n  showClose?: boolean\n  /**\n   * @description title of Dialog. Can also be passed with a named slot (see the following table)\n   */\n  title?: string\n  /**\n   * @description header's aria-level attribute\n   */\n  ariaLevel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `DialogContentProps` instead.\n */\nexport const dialogContentProps = buildProps({\n  /**\n   * @description whether to align the header and footer in center\n   */\n  center: Boolean,\n  /**\n   * @description whether to align the dialog both horizontally and vertically\n   */\n  alignCenter: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description custom close icon, default is Close\n   */\n  closeIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description enable dragging feature for Dialog\n   */\n  draggable: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description draggable Dialog can overflow the viewport\n   */\n  overflow: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether the Dialog takes up full screen\n   */\n  fullscreen: Boolean,\n  /**\n   * @description custom class names for header wrapper\n   */\n  headerClass: String,\n  /**\n   * @description custom class names for body wrapper\n   */\n  bodyClass: String,\n  /**\n   * @description custom class names for footer wrapper\n   */\n  footerClass: String,\n  /**\n   * @description whether to show a close button\n   */\n  showClose: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description title of Dialog. Can also be passed with a named slot (see the following table)\n   */\n  title: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description header's aria-level attribute\n   */\n  ariaLevel: {\n    type: String,\n    default: '2',\n  },\n} as const)\n\nexport const dialogContentEmits = {\n  close: () => true,\n}\n\nexport const dialogContentPropsDefaults = {\n  alignCenter: undefined,\n  draggable: undefined,\n  overflow: undefined,\n  showClose: true,\n  title: '',\n  ariaLevel: '2',\n} as const\n","import { buildProps, definePropType, isBoolean } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { teleportProps } from '@pit-element-plus/components/teleport'\nimport {\n  dialogContentProps,\n  dialogContentPropsDefaults,\n} from './dialog-content'\n\nimport type { ExtractPublicPropTypes, InjectionKey, TransitionProps } from 'vue'\nimport type { DialogContentProps } from './dialog-content'\nimport type Dialog from './dialog.vue'\n\ntype DoneFn = (cancel?: boolean) => void\n\nexport type DialogBeforeCloseFn = (done: DoneFn) => void\n\nexport type DialogTransition = string | TransitionProps\n\n/**\n * @description dialog component props\n */\nexport interface DialogProps extends DialogContentProps {\n  /**\n   * @description whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true`\n   */\n  appendToBody?: boolean\n  /**\n   * @description which element the Dialog appends to\n   */\n  appendTo?: string | HTMLElement\n  /**\n   * @description callback before Dialog closes, and it will prevent Dialog from closing, use done to close the dialog\n   */\n  beforeClose?: DialogBeforeCloseFn\n  /**\n   * @description destroy elements in Dialog when closed\n   */\n  destroyOnClose?: boolean\n  /**\n   * @description whether the Dialog can be closed by clicking the mask\n   */\n  closeOnClickModal?: boolean\n  /**\n   * @description whether the Dialog can be closed by pressing ESC\n   */\n  closeOnPressEscape?: boolean\n  /**\n   * @description whether scroll of body is disabled while Dialog is displayed\n   */\n  lockScroll?: boolean\n  /**\n   * @description whether a mask is displayed\n   */\n  modal?: boolean\n  /**\n   * @description whether the mask is penetrable\n   */\n  modalPenetrable?: boolean\n  /**\n   * @description the Time(milliseconds) before open\n   */\n  openDelay?: number\n  /**\n   * @description the Time(milliseconds) before close\n   */\n  closeDelay?: number\n  /**\n   * @description value for `margin-top` of Dialog CSS, default is 15vh\n   */\n  top?: string\n  /**\n   * @description visibility of Dialog\n   */\n  modelValue?: boolean\n  /**\n   * @description custom class names for mask\n   */\n  modalClass?: string\n  /**\n   * @description width of Dialog, default is 50%\n   */\n  width?: string | number\n  /**\n   * @description same as z-index in native CSS, z-order of dialog\n   */\n  zIndex?: number\n  /**\n   * @description trap focus within dialog\n   */\n  trapFocus?: boolean\n  /**\n   * @description header's aria-level attribute\n   */\n  headerAriaLevel?: string\n  /**\n   * @description custom transition configuration for dialog animation, it can be a string (transition name) or an object with Vue transition props\n   */\n  transition?: DialogTransition\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `DialogProps` instead.\n */\nexport const dialogProps = buildProps({\n  ...dialogContentProps,\n  /**\n   * @description whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true`\n   */\n  appendToBody: Boolean,\n  /**\n   * @description which element the Dialog appends to\n   */\n  appendTo: {\n    type: teleportProps.to.type,\n    default: 'body',\n  },\n  /**\n   * @description callback before Dialog closes, and it will prevent Dialog from closing, use done to close the dialog\n   */\n  beforeClose: {\n    type: definePropType<DialogBeforeCloseFn>(Function),\n  },\n  /**\n   * @description destroy elements in Dialog when closed\n   */\n  destroyOnClose: Boolean,\n  /**\n   * @description whether the Dialog can be closed by clicking the mask\n   */\n  closeOnClickModal: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether the Dialog can be closed by pressing ESC\n   */\n  closeOnPressEscape: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether scroll of body is disabled while Dialog is displayed\n   */\n  lockScroll: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether a mask is displayed\n   */\n  modal: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether the mask is penetrable\n   */\n  modalPenetrable: Boolean,\n  /**\n   * @description the Time(milliseconds) before open\n   */\n  openDelay: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description the Time(milliseconds) before close\n   */\n  closeDelay: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description value for `margin-top` of Dialog CSS, default is 15vh\n   */\n  top: {\n    type: String,\n  },\n  /**\n   * @description visibility of Dialog\n   */\n  modelValue: Boolean,\n  /**\n   * @description custom class names for mask\n   */\n  modalClass: String,\n  /**\n   * @description custom class names for header wrapper\n   */\n  headerClass: String,\n  /**\n   * @description custom class names for body wrapper\n   */\n  bodyClass: String,\n  /**\n   * @description custom class names for footer wrapper\n   */\n  footerClass: String,\n  /**\n   * @description width of Dialog, default is 50%\n   */\n  width: {\n    type: [String, Number],\n  },\n  /**\n   * @description same as z-index in native CSS, z-order of dialog\n   */\n  zIndex: {\n    type: Number,\n  },\n  trapFocus: Boolean,\n  /**\n   * @description header's aria-level attribute\n   */\n  headerAriaLevel: {\n    type: String,\n    default: '2',\n  },\n  /**\n   * @description custom transition configuration for dialog animation, it can be a string (transition name) or an object with Vue transition props\n   */\n  transition: {\n    type: definePropType<DialogTransition>([String, Object]),\n    default: undefined,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `DialogProps` instead.\n */\nexport type DialogPropsPublic = ExtractPublicPropTypes<typeof dialogProps>\n\nexport const dialogEmits = {\n  open: () => true,\n  opened: () => true,\n  close: () => true,\n  closed: () => true,\n  [UPDATE_MODEL_EVENT]: (value: boolean) => isBoolean(value),\n  openAutoFocus: () => true,\n  closeAutoFocus: () => true,\n}\nexport type DialogEmits = typeof dialogEmits\nexport type DialogInstance = InstanceType<typeof Dialog> & unknown\nexport interface DialogConfigContext {\n  alignCenter?: boolean\n  draggable?: boolean\n  overflow?: boolean\n  transition?: DialogTransition\n}\n\nexport const dialogContextKey: InjectionKey<DialogConfigContext> =\n  Symbol('dialogContextKey')\n\nexport const dialogPropsDefaults = {\n  ...dialogContentPropsDefaults,\n  appendTo: 'body',\n  closeOnClickModal: true,\n  closeOnPressEscape: true,\n  lockScroll: true,\n  modal: true,\n  openDelay: 0,\n  closeDelay: 0,\n  headerAriaLevel: '2',\n  transition: undefined,\n} as const\n","import { createVNode, defineComponent, h, renderSlot } from 'vue'\nimport { PatchFlags, buildProps, definePropType } from '@pit-element-plus/utils'\nimport { useNamespace, useSameTarget } from '@pit-element-plus/hooks'\n\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\n\nexport const overlayProps = buildProps({\n  mask: {\n    type: Boolean,\n    default: true,\n  },\n  customMaskEvent: Boolean,\n  overlayClass: {\n    type: definePropType<string | string[] | Record<string, boolean>>([\n      String,\n      Array,\n      Object,\n    ]),\n  },\n  zIndex: {\n    type: definePropType<CSSProperties['z-index']>([String, Number]),\n  },\n} as const)\nexport type OverlayProps = ExtractPropTypes<typeof overlayProps>\nexport type OverlayPropsPublic = ExtractPublicPropTypes<typeof overlayProps>\n\nexport const overlayEmits = {\n  click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\nexport type OverlayEmits = typeof overlayEmits\n\nconst BLOCK = 'overlay'\n\nexport default defineComponent({\n  name: 'ElOverlay',\n\n  props: overlayProps,\n  emits: overlayEmits,\n\n  setup(props, { slots, emit }) {\n    // No reactivity on this prop because when its rendering with a global\n    // component, this will be a constant flag.\n    const ns = useNamespace(BLOCK)\n\n    const onMaskClick = (e: MouseEvent) => {\n      emit('click', e)\n    }\n\n    const { onClick, onMousedown, onMouseup } = useSameTarget(\n      props.customMaskEvent ? undefined : onMaskClick\n    )\n\n    // init here\n    return () => {\n      // when the vnode meets the same structure but with different change trigger\n      // it will not automatically update, thus we simply use h function to manage updating\n      return props.mask\n        ? createVNode(\n            'div',\n            {\n              class: [ns.b(), props.overlayClass],\n              style: {\n                zIndex: props.zIndex,\n              },\n              onClick,\n              onMousedown,\n              onMouseup,\n            },\n            [renderSlot(slots, 'default')],\n            PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS,\n            ['onClick', 'onMouseup', 'onMousedown']\n          )\n        : h(\n            'div',\n            {\n              class: props.overlayClass,\n              style: {\n                zIndex: props.zIndex,\n                position: 'fixed',\n                top: '0px',\n                right: '0px',\n                bottom: '0px',\n                left: '0px',\n              } as CSSProperties,\n            },\n            [renderSlot(slots, 'default')]\n          )\n    }\n  },\n})\n","import Overlay from './src/overlay'\n\nexport const ElOverlay = Overlay\nexport default ElOverlay\n\nexport * from './src/overlay'\n","import type { CSSProperties, ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\n\nexport type DialogContext = {\n  dialogRef: Ref<HTMLElement | undefined>\n  headerRef: Ref<HTMLElement | undefined>\n  bodyId: Ref<string>\n  ns: UseNamespaceReturn\n  rendered: Ref<boolean>\n  style: ComputedRef<CSSProperties>\n}\n\nexport const dialogInjectionKey: InjectionKey<DialogContext> =\n  Symbol('dialogInjectionKey')\n\nexport const DEFAULT_DIALOG_TRANSITION = 'dialog-fade'\n","<template>\n  <div :ref=\"composedDialogRef\" :class=\"dialogKls\" :style=\"style\" tabindex=\"-1\">\n    <header\n      ref=\"headerRef\"\n      :class=\"[ns.e('header'), headerClass, { 'show-close': showClose }]\"\n    >\n      <slot name=\"header\">\n        <span role=\"heading\" :aria-level=\"ariaLevel\" :class=\"ns.e('title')\">\n          {{ title }}\n        </span>\n      </slot>\n      <button\n        v-if=\"showClose\"\n        :aria-label=\"t('el.dialog.close')\"\n        :class=\"ns.e('headerbtn')\"\n        type=\"button\"\n        @click=\"$emit('close')\"\n      >\n        <el-icon :class=\"ns.e('close')\">\n          <component :is=\"closeIcon || Close\" />\n        </el-icon>\n      </button>\n    </header>\n    <div :id=\"bodyId\" :class=\"[ns.e('body'), bodyClass]\">\n      <slot />\n    </div>\n    <footer v-if=\"$slots.footer\" :class=\"[ns.e('footer'), footerClass]\">\n      <slot name=\"footer\" />\n    </footer>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { FOCUS_TRAP_INJECTION_KEY } from '@pit-element-plus/components/focus-trap'\nimport { useDraggable, useLocale } from '@pit-element-plus/hooks'\nimport { CloseComponents, composeRefs } from '@pit-element-plus/utils'\nimport { dialogInjectionKey } from './constants'\nimport {\n  dialogContentEmits,\n  dialogContentPropsDefaults,\n} from './dialog-content'\n\nimport type { DialogContentProps } from './dialog-content'\n\nconst { t } = useLocale()\nconst { Close } = CloseComponents\n\ndefineOptions({ name: 'ElDialogContent' })\nconst props = withDefaults(\n  defineProps<DialogContentProps>(),\n  dialogContentPropsDefaults\n)\ndefineEmits(dialogContentEmits)\n\nconst { dialogRef, headerRef, bodyId, ns, style } = inject(dialogInjectionKey)!\nconst { focusTrapRef } = inject(FOCUS_TRAP_INJECTION_KEY)!\n\nconst composedDialogRef = composeRefs(focusTrapRef, dialogRef)\n\nconst draggable = computed(() => !!props.draggable)\nconst overflow = computed(() => !!props.overflow)\nconst { resetPosition, updatePosition, isDragging } = useDraggable(\n  dialogRef,\n  headerRef,\n  draggable,\n  overflow\n)\n\nconst dialogKls = computed(() => [\n  ns.b(),\n  ns.is('fullscreen', props.fullscreen),\n  ns.is('draggable', draggable.value),\n  ns.is('dragging', isDragging.value),\n  ns.is('align-center', !!props.alignCenter),\n  { [ns.m('center')]: props.center },\n])\n\ndefineExpose({\n  resetPosition,\n  updatePosition,\n})\n</script>\n","<template>\n  <div :ref=\"composedDialogRef\" :class=\"dialogKls\" :style=\"style\" tabindex=\"-1\">\n    <header\n      ref=\"headerRef\"\n      :class=\"[ns.e('header'), headerClass, { 'show-close': showClose }]\"\n    >\n      <slot name=\"header\">\n        <span role=\"heading\" :aria-level=\"ariaLevel\" :class=\"ns.e('title')\">\n          {{ title }}\n        </span>\n      </slot>\n      <button\n        v-if=\"showClose\"\n        :aria-label=\"t('el.dialog.close')\"\n        :class=\"ns.e('headerbtn')\"\n        type=\"button\"\n        @click=\"$emit('close')\"\n      >\n        <el-icon :class=\"ns.e('close')\">\n          <component :is=\"closeIcon || Close\" />\n        </el-icon>\n      </button>\n    </header>\n    <div :id=\"bodyId\" :class=\"[ns.e('body'), bodyClass]\">\n      <slot />\n    </div>\n    <footer v-if=\"$slots.footer\" :class=\"[ns.e('footer'), footerClass]\">\n      <slot name=\"footer\" />\n    </footer>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { FOCUS_TRAP_INJECTION_KEY } from '@pit-element-plus/components/focus-trap'\nimport { useDraggable, useLocale } from '@pit-element-plus/hooks'\nimport { CloseComponents, composeRefs } from '@pit-element-plus/utils'\nimport { dialogInjectionKey } from './constants'\nimport {\n  dialogContentEmits,\n  dialogContentPropsDefaults,\n} from './dialog-content'\n\nimport type { DialogContentProps } from './dialog-content'\n\nconst { t } = useLocale()\nconst { Close } = CloseComponents\n\ndefineOptions({ name: 'ElDialogContent' })\nconst props = withDefaults(\n  defineProps<DialogContentProps>(),\n  dialogContentPropsDefaults\n)\ndefineEmits(dialogContentEmits)\n\nconst { dialogRef, headerRef, bodyId, ns, style } = inject(dialogInjectionKey)!\nconst { focusTrapRef } = inject(FOCUS_TRAP_INJECTION_KEY)!\n\nconst composedDialogRef = composeRefs(focusTrapRef, dialogRef)\n\nconst draggable = computed(() => !!props.draggable)\nconst overflow = computed(() => !!props.overflow)\nconst { resetPosition, updatePosition, isDragging } = useDraggable(\n  dialogRef,\n  headerRef,\n  draggable,\n  overflow\n)\n\nconst dialogKls = computed(() => [\n  ns.b(),\n  ns.is('fullscreen', props.fullscreen),\n  ns.is('draggable', draggable.value),\n  ns.is('dragging', isDragging.value),\n  ns.is('align-center', !!props.alignCenter),\n  { [ns.m('center')]: props.center },\n])\n\ndefineExpose({\n  resetPosition,\n  updatePosition,\n})\n</script>\n","<template>\n  <div :ref=\"composedDialogRef\" :class=\"dialogKls\" :style=\"style\" tabindex=\"-1\">\n    <header\n      ref=\"headerRef\"\n      :class=\"[ns.e('header'), headerClass, { 'show-close': showClose }]\"\n    >\n      <slot name=\"header\">\n        <span role=\"heading\" :aria-level=\"ariaLevel\" :class=\"ns.e('title')\">\n          {{ title }}\n        </span>\n      </slot>\n      <button\n        v-if=\"showClose\"\n        :aria-label=\"t('el.dialog.close')\"\n        :class=\"ns.e('headerbtn')\"\n        type=\"button\"\n        @click=\"$emit('close')\"\n      >\n        <el-icon :class=\"ns.e('close')\">\n          <component :is=\"closeIcon || Close\" />\n        </el-icon>\n      </button>\n    </header>\n    <div :id=\"bodyId\" :class=\"[ns.e('body'), bodyClass]\">\n      <slot />\n    </div>\n    <footer v-if=\"$slots.footer\" :class=\"[ns.e('footer'), footerClass]\">\n      <slot name=\"footer\" />\n    </footer>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { FOCUS_TRAP_INJECTION_KEY } from '@pit-element-plus/components/focus-trap'\nimport { useDraggable, useLocale } from '@pit-element-plus/hooks'\nimport { CloseComponents, composeRefs } from '@pit-element-plus/utils'\nimport { dialogInjectionKey } from './constants'\nimport {\n  dialogContentEmits,\n  dialogContentPropsDefaults,\n} from './dialog-content'\n\nimport type { DialogContentProps } from './dialog-content'\n\nconst { t } = useLocale()\nconst { Close } = CloseComponents\n\ndefineOptions({ name: 'ElDialogContent' })\nconst props = withDefaults(\n  defineProps<DialogContentProps>(),\n  dialogContentPropsDefaults\n)\ndefineEmits(dialogContentEmits)\n\nconst { dialogRef, headerRef, bodyId, ns, style } = inject(dialogInjectionKey)!\nconst { focusTrapRef } = inject(FOCUS_TRAP_INJECTION_KEY)!\n\nconst composedDialogRef = composeRefs(focusTrapRef, dialogRef)\n\nconst draggable = computed(() => !!props.draggable)\nconst overflow = computed(() => !!props.overflow)\nconst { resetPosition, updatePosition, isDragging } = useDraggable(\n  dialogRef,\n  headerRef,\n  draggable,\n  overflow\n)\n\nconst dialogKls = computed(() => [\n  ns.b(),\n  ns.is('fullscreen', props.fullscreen),\n  ns.is('draggable', draggable.value),\n  ns.is('dragging', isDragging.value),\n  ns.is('align-center', !!props.alignCenter),\n  { [ns.m('center')]: props.center },\n])\n\ndefineExpose({\n  resetPosition,\n  updatePosition,\n})\n</script>\n","import {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport {\n  defaultNamespace,\n  useId,\n  useLockscreen,\n  useZIndex,\n} from '@pit-element-plus/hooks'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport {\n  addUnit,\n  debugWarn,\n  isArray,\n  isClient,\n  isFunction,\n  isObject,\n} from '@pit-element-plus/utils'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { DEFAULT_DIALOG_TRANSITION } from './constants'\n\nimport type { CSSProperties, Ref, SetupContext, TransitionProps } from 'vue'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { DialogEmits, DialogProps } from './dialog'\n\nconst COMPONENT_NAME = 'ElDialog'\n\nexport const useDialog = (\n  props: DialogProps,\n  targetRef: Ref<HTMLElement | undefined>\n) => {\n  const instance = getCurrentInstance()!\n  const emit = instance.emit as SetupContext<DialogEmits>['emit']\n  const { nextZIndex } = useZIndex()\n\n  let lastPosition = ''\n  const titleId = useId()\n  const bodyId = useId()\n  const visible = ref(false)\n  const closed = ref(false)\n  const rendered = ref(false) // when destroyOnClose is true, we initialize it as false vise versa\n  const zIndex = ref(props.zIndex ?? nextZIndex())\n  const closing = ref(false)\n\n  let openTimer: (() => void) | undefined = undefined\n  let closeTimer: (() => void) | undefined = undefined\n\n  const config = useGlobalConfig()\n\n  const namespace = computed(() => config.value?.namespace ?? defaultNamespace)\n  const globalConfig = computed(() => config.value?.dialog)\n\n  const style = computed<CSSProperties>(() => {\n    const style: CSSProperties = {}\n    const varPrefix = `--${namespace.value}-dialog` as const\n    if (!props.fullscreen) {\n      if (props.top) {\n        style[`${varPrefix}-margin-top`] = props.top\n      }\n      const width = addUnit(props.width)\n      if (width) {\n        style[`${varPrefix}-width`] = width\n      }\n    }\n    return style\n  })\n\n  const _draggable = computed(\n    () =>\n      (props.draggable ?? globalConfig.value?.draggable ?? false) &&\n      !props.fullscreen\n  )\n\n  const _alignCenter = computed(\n    () => props.alignCenter ?? globalConfig.value?.alignCenter ?? false\n  )\n\n  const _overflow = computed(\n    () => props.overflow ?? globalConfig.value?.overflow ?? false\n  )\n\n  const overlayDialogStyle = computed<CSSProperties>(() => {\n    if (_alignCenter.value) {\n      return { display: 'flex' }\n    }\n    return {}\n  })\n\n  const transitionConfig = computed(() => {\n    const transition =\n      props.transition ??\n      globalConfig.value?.transition ??\n      DEFAULT_DIALOG_TRANSITION\n    const baseConfig = {\n      name: transition,\n      onAfterEnter: afterEnter,\n      onBeforeLeave: beforeLeave,\n      onAfterLeave: afterLeave,\n    }\n    if (isObject(transition)) {\n      const config = { ...transition } as TransitionProps\n      const _mergeHook = (\n        userHook: Arrayable<(el: Element) => void> | undefined,\n        defaultHook: () => void\n      ) => {\n        return (el: Element) => {\n          if (isArray(userHook)) {\n            userHook.forEach((fn) => {\n              if (isFunction(fn)) fn(el)\n            })\n          } else if (isFunction(userHook)) {\n            userHook(el)\n          }\n          defaultHook()\n        }\n      }\n      config.onAfterEnter = _mergeHook(config.onAfterEnter, afterEnter)\n      config.onBeforeLeave = _mergeHook(config.onBeforeLeave, beforeLeave)\n      config.onAfterLeave = _mergeHook(config.onAfterLeave, afterLeave)\n      if (!config.name) {\n        config.name = DEFAULT_DIALOG_TRANSITION\n        debugWarn(\n          COMPONENT_NAME,\n          `transition.name is missing when using object syntax, fallback to '${DEFAULT_DIALOG_TRANSITION}'`\n        )\n      }\n      return config\n    }\n\n    return baseConfig\n  })\n\n  function afterEnter() {\n    emit('opened')\n  }\n\n  function afterLeave() {\n    emit('closed')\n    emit(UPDATE_MODEL_EVENT, false)\n    if (props.destroyOnClose) {\n      rendered.value = false\n    }\n    closing.value = false\n  }\n\n  function beforeLeave() {\n    closing.value = true\n    emit('close')\n  }\n\n  function open() {\n    closeTimer?.()\n    openTimer?.()\n\n    if (props.openDelay && props.openDelay > 0) {\n      ;({ stop: openTimer } = useTimeoutFn(() => doOpen(), props.openDelay))\n    } else {\n      doOpen()\n    }\n  }\n\n  function close() {\n    openTimer?.()\n    closeTimer?.()\n\n    if (props.closeDelay && props.closeDelay > 0) {\n      ;({ stop: closeTimer } = useTimeoutFn(() => doClose(), props.closeDelay))\n    } else {\n      doClose()\n    }\n  }\n\n  function handleClose() {\n    function hide(shouldCancel?: boolean) {\n      if (shouldCancel) return\n      closed.value = true\n      visible.value = false\n    }\n\n    if (props.beforeClose) {\n      props.beforeClose(hide)\n    } else {\n      close()\n    }\n  }\n\n  function onModalClick() {\n    if (props.closeOnClickModal) {\n      handleClose()\n    }\n  }\n\n  function doOpen() {\n    if (!isClient) return\n    visible.value = true\n  }\n\n  function doClose() {\n    visible.value = false\n  }\n\n  function onOpenAutoFocus() {\n    emit('openAutoFocus')\n  }\n\n  function onCloseAutoFocus() {\n    emit('closeAutoFocus')\n  }\n\n  function onFocusoutPrevented(event: CustomEvent) {\n    if (event.detail?.focusReason === 'pointer') {\n      event.preventDefault()\n    }\n  }\n\n  if (props.lockScroll) {\n    useLockscreen(visible)\n  }\n\n  function onCloseRequested() {\n    if (props.closeOnPressEscape) {\n      handleClose()\n    }\n  }\n\n  watch(\n    () => props.zIndex,\n    () => {\n      zIndex.value = props.zIndex ?? nextZIndex()\n    }\n  )\n\n  watch(\n    () => props.modelValue,\n    (val) => {\n      if (val) {\n        closed.value = false\n        closing.value = false\n        open()\n        rendered.value = true // enables lazy rendering\n        zIndex.value = props.zIndex ?? nextZIndex()\n        // this.$el.addEventListener('scroll', this.updatePopper)\n        nextTick(() => {\n          emit('open')\n          if (targetRef.value) {\n            targetRef.value.parentElement!.scrollTop = 0\n            targetRef.value.parentElement!.scrollLeft = 0\n            targetRef.value.scrollTop = 0\n          }\n        })\n      } else {\n        // this.$el.removeEventListener('scroll', this.updatePopper\n        if (visible.value) {\n          close()\n        }\n      }\n    }\n  )\n\n  watch(\n    () => props.fullscreen,\n    (val) => {\n      if (!targetRef.value) return\n      if (val) {\n        lastPosition = targetRef.value.style.transform\n        targetRef.value.style.transform = ''\n      } else {\n        targetRef.value.style.transform = lastPosition\n      }\n    }\n  )\n\n  onMounted(() => {\n    if (props.modelValue) {\n      visible.value = true\n      rendered.value = true // enables lazy rendering\n      open()\n    }\n  })\n\n  return {\n    afterEnter,\n    afterLeave,\n    beforeLeave,\n    handleClose,\n    onModalClick,\n    close,\n    doClose,\n    onOpenAutoFocus,\n    onCloseAutoFocus,\n    onCloseRequested,\n    onFocusoutPrevented,\n    titleId,\n    bodyId,\n    closed,\n    style,\n    overlayDialogStyle,\n    rendered,\n    visible,\n    zIndex,\n    transitionConfig,\n    _draggable,\n    _alignCenter,\n    _overflow,\n    closing,\n  }\n}\n","<template>\n  <el-teleport\n    :to=\"appendTo\"\n    :disabled=\"appendTo !== 'body' ? false : !appendToBody\"\n  >\n    <transition v-bind=\"transitionConfig\">\n      <el-overlay\n        v-show=\"visible\"\n        custom-mask-event\n        :mask=\"modal\"\n        :overlay-class=\"[\n          modalClass ?? '',\n          `${ns.namespace.value}-modal-dialog`,\n          ns.is('penetrable', penetrable),\n        ]\"\n        :z-index=\"zIndex\"\n      >\n        <div\n          role=\"dialog\"\n          aria-modal=\"true\"\n          :aria-label=\"title || undefined\"\n          :aria-labelledby=\"!title ? titleId : undefined\"\n          :aria-describedby=\"bodyId\"\n          :class=\"[\n            `${ns.namespace.value}-overlay-dialog`,\n            ns.is('closing', closing),\n          ]\"\n          :style=\"overlayDialogStyle\"\n          @click=\"overlayEvent.onClick\"\n          @mousedown=\"overlayEvent.onMousedown\"\n          @mouseup=\"overlayEvent.onMouseup\"\n        >\n          <el-focus-trap\n            loop\n            :trapped=\"visible\"\n            focus-start-el=\"container\"\n            @focus-after-trapped=\"onOpenAutoFocus\"\n            @focus-after-released=\"onCloseAutoFocus\"\n            @focusout-prevented=\"onFocusoutPrevented\"\n            @release-requested=\"onCloseRequested\"\n          >\n            <el-dialog-content\n              v-if=\"rendered\"\n              ref=\"dialogContentRef\"\n              v-bind=\"$attrs\"\n              :center=\"center\"\n              :align-center=\"_alignCenter\"\n              :close-icon=\"closeIcon\"\n              :draggable=\"_draggable\"\n              :overflow=\"_overflow\"\n              :fullscreen=\"fullscreen\"\n              :header-class=\"headerClass\"\n              :body-class=\"bodyClass\"\n              :footer-class=\"footerClass\"\n              :show-close=\"showClose\"\n              :title=\"title\"\n              :aria-level=\"headerAriaLevel\"\n              @close=\"handleClose\"\n            >\n              <template #header>\n                <slot\n                  v-if=\"!$slots.title\"\n                  name=\"header\"\n                  :close=\"handleClose\"\n                  :title-id=\"titleId\"\n                  :title-class=\"ns.e('title')\"\n                />\n                <slot v-else name=\"title\" />\n              </template>\n              <slot />\n              <template v-if=\"$slots.footer\" #footer>\n                <slot name=\"footer\" />\n              </template>\n            </el-dialog-content>\n          </el-focus-trap>\n        </div>\n      </el-overlay>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref, useSlots } from 'vue'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport {\n  useDeprecated,\n  useNamespace,\n  useSameTarget,\n} from '@pit-element-plus/hooks'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport ElDialogContent from './dialog-content.vue'\nimport { dialogInjectionKey } from './constants'\nimport { dialogEmits, dialogPropsDefaults } from './dialog'\nimport { useDialog } from './use-dialog'\n\nimport type { DialogProps } from './dialog'\n\ndefineOptions({\n  name: 'ElDialog',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DialogProps>(), dialogPropsDefaults)\ndefineEmits(dialogEmits)\nconst slots = useSlots()\n\nuseDeprecated(\n  {\n    scope: 'el-dialog',\n    from: 'the title slot',\n    replacement: 'the header slot',\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/dialog.html#slots',\n  },\n  computed(() => !!slots.title)\n)\n\nconst ns = useNamespace('dialog')\nconst dialogRef = ref<HTMLElement>()\nconst headerRef = ref<HTMLElement>()\nconst dialogContentRef = ref()\n\nconst {\n  visible,\n  titleId,\n  bodyId,\n  style,\n  overlayDialogStyle,\n  rendered,\n  transitionConfig,\n  zIndex,\n  _draggable,\n  _alignCenter,\n  _overflow,\n  handleClose,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onCloseRequested,\n  onFocusoutPrevented,\n  closing,\n} = useDialog(props, dialogRef)\n\nprovide(dialogInjectionKey, {\n  dialogRef,\n  headerRef,\n  bodyId,\n  ns,\n  rendered,\n  style,\n})\n\nconst overlayEvent = useSameTarget(onModalClick)\n\nconst penetrable = computed(\n  () => props.modalPenetrable && !props.modal && !props.fullscreen\n)\n\nconst resetPosition = () => {\n  dialogContentRef.value?.resetPosition()\n}\n\ndefineExpose({\n  /** @description whether the dialog is visible */\n  visible,\n  dialogContentRef,\n  resetPosition,\n  handleClose,\n})\n</script>\n","<template>\n  <el-teleport\n    :to=\"appendTo\"\n    :disabled=\"appendTo !== 'body' ? false : !appendToBody\"\n  >\n    <transition v-bind=\"transitionConfig\">\n      <el-overlay\n        v-show=\"visible\"\n        custom-mask-event\n        :mask=\"modal\"\n        :overlay-class=\"[\n          modalClass ?? '',\n          `${ns.namespace.value}-modal-dialog`,\n          ns.is('penetrable', penetrable),\n        ]\"\n        :z-index=\"zIndex\"\n      >\n        <div\n          role=\"dialog\"\n          aria-modal=\"true\"\n          :aria-label=\"title || undefined\"\n          :aria-labelledby=\"!title ? titleId : undefined\"\n          :aria-describedby=\"bodyId\"\n          :class=\"[\n            `${ns.namespace.value}-overlay-dialog`,\n            ns.is('closing', closing),\n          ]\"\n          :style=\"overlayDialogStyle\"\n          @click=\"overlayEvent.onClick\"\n          @mousedown=\"overlayEvent.onMousedown\"\n          @mouseup=\"overlayEvent.onMouseup\"\n        >\n          <el-focus-trap\n            loop\n            :trapped=\"visible\"\n            focus-start-el=\"container\"\n            @focus-after-trapped=\"onOpenAutoFocus\"\n            @focus-after-released=\"onCloseAutoFocus\"\n            @focusout-prevented=\"onFocusoutPrevented\"\n            @release-requested=\"onCloseRequested\"\n          >\n            <el-dialog-content\n              v-if=\"rendered\"\n              ref=\"dialogContentRef\"\n              v-bind=\"$attrs\"\n              :center=\"center\"\n              :align-center=\"_alignCenter\"\n              :close-icon=\"closeIcon\"\n              :draggable=\"_draggable\"\n              :overflow=\"_overflow\"\n              :fullscreen=\"fullscreen\"\n              :header-class=\"headerClass\"\n              :body-class=\"bodyClass\"\n              :footer-class=\"footerClass\"\n              :show-close=\"showClose\"\n              :title=\"title\"\n              :aria-level=\"headerAriaLevel\"\n              @close=\"handleClose\"\n            >\n              <template #header>\n                <slot\n                  v-if=\"!$slots.title\"\n                  name=\"header\"\n                  :close=\"handleClose\"\n                  :title-id=\"titleId\"\n                  :title-class=\"ns.e('title')\"\n                />\n                <slot v-else name=\"title\" />\n              </template>\n              <slot />\n              <template v-if=\"$slots.footer\" #footer>\n                <slot name=\"footer\" />\n              </template>\n            </el-dialog-content>\n          </el-focus-trap>\n        </div>\n      </el-overlay>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref, useSlots } from 'vue'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport {\n  useDeprecated,\n  useNamespace,\n  useSameTarget,\n} from '@pit-element-plus/hooks'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport ElDialogContent from './dialog-content.vue'\nimport { dialogInjectionKey } from './constants'\nimport { dialogEmits, dialogPropsDefaults } from './dialog'\nimport { useDialog } from './use-dialog'\n\nimport type { DialogProps } from './dialog'\n\ndefineOptions({\n  name: 'ElDialog',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DialogProps>(), dialogPropsDefaults)\ndefineEmits(dialogEmits)\nconst slots = useSlots()\n\nuseDeprecated(\n  {\n    scope: 'el-dialog',\n    from: 'the title slot',\n    replacement: 'the header slot',\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/dialog.html#slots',\n  },\n  computed(() => !!slots.title)\n)\n\nconst ns = useNamespace('dialog')\nconst dialogRef = ref<HTMLElement>()\nconst headerRef = ref<HTMLElement>()\nconst dialogContentRef = ref()\n\nconst {\n  visible,\n  titleId,\n  bodyId,\n  style,\n  overlayDialogStyle,\n  rendered,\n  transitionConfig,\n  zIndex,\n  _draggable,\n  _alignCenter,\n  _overflow,\n  handleClose,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onCloseRequested,\n  onFocusoutPrevented,\n  closing,\n} = useDialog(props, dialogRef)\n\nprovide(dialogInjectionKey, {\n  dialogRef,\n  headerRef,\n  bodyId,\n  ns,\n  rendered,\n  style,\n})\n\nconst overlayEvent = useSameTarget(onModalClick)\n\nconst penetrable = computed(\n  () => props.modalPenetrable && !props.modal && !props.fullscreen\n)\n\nconst resetPosition = () => {\n  dialogContentRef.value?.resetPosition()\n}\n\ndefineExpose({\n  /** @description whether the dialog is visible */\n  visible,\n  dialogContentRef,\n  resetPosition,\n  handleClose,\n})\n</script>\n","<template>\n  <el-teleport\n    :to=\"appendTo\"\n    :disabled=\"appendTo !== 'body' ? false : !appendToBody\"\n  >\n    <transition v-bind=\"transitionConfig\">\n      <el-overlay\n        v-show=\"visible\"\n        custom-mask-event\n        :mask=\"modal\"\n        :overlay-class=\"[\n          modalClass ?? '',\n          `${ns.namespace.value}-modal-dialog`,\n          ns.is('penetrable', penetrable),\n        ]\"\n        :z-index=\"zIndex\"\n      >\n        <div\n          role=\"dialog\"\n          aria-modal=\"true\"\n          :aria-label=\"title || undefined\"\n          :aria-labelledby=\"!title ? titleId : undefined\"\n          :aria-describedby=\"bodyId\"\n          :class=\"[\n            `${ns.namespace.value}-overlay-dialog`,\n            ns.is('closing', closing),\n          ]\"\n          :style=\"overlayDialogStyle\"\n          @click=\"overlayEvent.onClick\"\n          @mousedown=\"overlayEvent.onMousedown\"\n          @mouseup=\"overlayEvent.onMouseup\"\n        >\n          <el-focus-trap\n            loop\n            :trapped=\"visible\"\n            focus-start-el=\"container\"\n            @focus-after-trapped=\"onOpenAutoFocus\"\n            @focus-after-released=\"onCloseAutoFocus\"\n            @focusout-prevented=\"onFocusoutPrevented\"\n            @release-requested=\"onCloseRequested\"\n          >\n            <el-dialog-content\n              v-if=\"rendered\"\n              ref=\"dialogContentRef\"\n              v-bind=\"$attrs\"\n              :center=\"center\"\n              :align-center=\"_alignCenter\"\n              :close-icon=\"closeIcon\"\n              :draggable=\"_draggable\"\n              :overflow=\"_overflow\"\n              :fullscreen=\"fullscreen\"\n              :header-class=\"headerClass\"\n              :body-class=\"bodyClass\"\n              :footer-class=\"footerClass\"\n              :show-close=\"showClose\"\n              :title=\"title\"\n              :aria-level=\"headerAriaLevel\"\n              @close=\"handleClose\"\n            >\n              <template #header>\n                <slot\n                  v-if=\"!$slots.title\"\n                  name=\"header\"\n                  :close=\"handleClose\"\n                  :title-id=\"titleId\"\n                  :title-class=\"ns.e('title')\"\n                />\n                <slot v-else name=\"title\" />\n              </template>\n              <slot />\n              <template v-if=\"$slots.footer\" #footer>\n                <slot name=\"footer\" />\n              </template>\n            </el-dialog-content>\n          </el-focus-trap>\n        </div>\n      </el-overlay>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref, useSlots } from 'vue'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport {\n  useDeprecated,\n  useNamespace,\n  useSameTarget,\n} from '@pit-element-plus/hooks'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport ElDialogContent from './dialog-content.vue'\nimport { dialogInjectionKey } from './constants'\nimport { dialogEmits, dialogPropsDefaults } from './dialog'\nimport { useDialog } from './use-dialog'\n\nimport type { DialogProps } from './dialog'\n\ndefineOptions({\n  name: 'ElDialog',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DialogProps>(), dialogPropsDefaults)\ndefineEmits(dialogEmits)\nconst slots = useSlots()\n\nuseDeprecated(\n  {\n    scope: 'el-dialog',\n    from: 'the title slot',\n    replacement: 'the header slot',\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/dialog.html#slots',\n  },\n  computed(() => !!slots.title)\n)\n\nconst ns = useNamespace('dialog')\nconst dialogRef = ref<HTMLElement>()\nconst headerRef = ref<HTMLElement>()\nconst dialogContentRef = ref()\n\nconst {\n  visible,\n  titleId,\n  bodyId,\n  style,\n  overlayDialogStyle,\n  rendered,\n  transitionConfig,\n  zIndex,\n  _draggable,\n  _alignCenter,\n  _overflow,\n  handleClose,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onCloseRequested,\n  onFocusoutPrevented,\n  closing,\n} = useDialog(props, dialogRef)\n\nprovide(dialogInjectionKey, {\n  dialogRef,\n  headerRef,\n  bodyId,\n  ns,\n  rendered,\n  style,\n})\n\nconst overlayEvent = useSameTarget(onModalClick)\n\nconst penetrable = computed(\n  () => props.modalPenetrable && !props.modal && !props.fullscreen\n)\n\nconst resetPosition = () => {\n  dialogContentRef.value?.resetPosition()\n}\n\ndefineExpose({\n  /** @description whether the dialog is visible */\n  visible,\n  dialogContentRef,\n  resetPosition,\n  handleClose,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Dialog from './src/dialog.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElDialog: SFCWithInstall<typeof Dialog> = withInstall(Dialog)\nexport default ElDialog\n\nexport * from './src/use-dialog'\nexport * from './src/dialog'\nexport * from './src/constants'\n","import { buildProps, iconPropType } from '@pit-element-plus/utils'\nimport { Back } from 'pit-element-icons'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type PageHeader from './page-header.vue'\n\nexport interface PageHeaderProps {\n  /**\n   * @description icon component of page header\n   */\n  icon?: IconPropType\n  /**\n   * @description main title of page header\n   */\n  title?: string\n  /**\n   * @description content of page header\n   */\n  content?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `PageHeaderProps` instead.\n */\nexport const pageHeaderProps = buildProps({\n  /**\n   * @description icon component of page header\n   */\n  icon: {\n    type: iconPropType,\n    default: () => Back,\n  },\n  /**\n   * @description main title of page header\n   */\n  title: String,\n  /**\n   * @description content of page header\n   */\n  content: {\n    type: String,\n    default: '',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `PageHeaderProps` instead.\n */\nexport type PageHeaderPropsPublic = ExtractPublicPropTypes<\n  typeof pageHeaderProps\n>\n\nexport const pageHeaderEmits = {\n  back: () => true,\n}\nexport type PageHeaderEmits = typeof pageHeaderEmits\n\nexport type PageHeaderInstance = InstanceType<typeof PageHeader> & unknown\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Divider from './divider.vue'\n\nexport type BorderStyle = CSSStyleDeclaration['borderStyle']\n\nexport interface DividerProps {\n  /**\n   * @description Set divider's direction\n   */\n  direction?: 'horizontal' | 'vertical'\n  /**\n   * @description Set the style of divider\n   */\n  contentPosition?: 'left' | 'center' | 'right'\n  /**\n   * @description the position of the customized content on the divider line\n   */\n  borderStyle?: BorderStyle\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `DividerProps` instead.\n */\nexport const dividerProps = buildProps({\n  /**\n   * @description Set divider's direction\n   */\n  direction: {\n    type: String,\n    values: ['horizontal', 'vertical'],\n    default: 'horizontal',\n  },\n  /**\n   * @description Set the style of divider\n   */\n  contentPosition: {\n    type: String,\n    values: ['left', 'center', 'right'],\n    default: 'center',\n  },\n  /**\n   * @description the position of the customized content on the divider line\n   */\n  borderStyle: {\n    type: definePropType<BorderStyle>(String),\n    default: 'solid',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `DividerProps` instead.\n */\nexport type DividerPropsPublic = ExtractPublicPropTypes<typeof dividerProps>\n\nexport type DividerInstance = InstanceType<typeof Divider> & unknown\n","<template>\n  <div\n    :class=\"[ns.b(), ns.m(direction)]\"\n    :style=\"dividerStyle\"\n    role=\"separator\"\n  >\n    <div\n      v-if=\"$slots.default && direction !== 'vertical'\"\n      :class=\"[ns.e('text'), ns.is(contentPosition)]\"\n    >\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { DividerProps } from './divider'\n\ndefineOptions({\n  name: 'ElDivider',\n})\nconst props = withDefaults(defineProps<DividerProps>(), {\n  direction: 'horizontal',\n  contentPosition: 'center',\n  borderStyle: 'solid',\n})\nconst ns = useNamespace('divider')\nconst dividerStyle = computed(() => {\n  return ns.cssVar({\n    'border-style': props.borderStyle,\n  }) as CSSProperties\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b(), ns.m(direction)]\"\n    :style=\"dividerStyle\"\n    role=\"separator\"\n  >\n    <div\n      v-if=\"$slots.default && direction !== 'vertical'\"\n      :class=\"[ns.e('text'), ns.is(contentPosition)]\"\n    >\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { DividerProps } from './divider'\n\ndefineOptions({\n  name: 'ElDivider',\n})\nconst props = withDefaults(defineProps<DividerProps>(), {\n  direction: 'horizontal',\n  contentPosition: 'center',\n  borderStyle: 'solid',\n})\nconst ns = useNamespace('divider')\nconst dividerStyle = computed(() => {\n  return ns.cssVar({\n    'border-style': props.borderStyle,\n  }) as CSSProperties\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b(), ns.m(direction)]\"\n    :style=\"dividerStyle\"\n    role=\"separator\"\n  >\n    <div\n      v-if=\"$slots.default && direction !== 'vertical'\"\n      :class=\"[ns.e('text'), ns.is(contentPosition)]\"\n    >\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties } from 'vue'\nimport type { DividerProps } from './divider'\n\ndefineOptions({\n  name: 'ElDivider',\n})\nconst props = withDefaults(defineProps<DividerProps>(), {\n  direction: 'horizontal',\n  contentPosition: 'center',\n  borderStyle: 'solid',\n})\nconst ns = useNamespace('divider')\nconst dividerStyle = computed(() => {\n  return ns.cssVar({\n    'border-style': props.borderStyle,\n  }) as CSSProperties\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Divider from './src/divider.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElDivider: SFCWithInstall<typeof Divider> = withInstall(Divider)\nexport default ElDivider\n\nexport * from './src/divider'\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.is('contentful', !!$slots.default),\n      {\n        [ns.m('has-breadcrumb')]: !!$slots.breadcrumb,\n        [ns.m('has-extra')]: !!$slots.extra,\n      },\n    ]\"\n  >\n    <div v-if=\"$slots.breadcrumb\" :class=\"ns.e('breadcrumb')\">\n      <slot name=\"breadcrumb\" />\n    </div>\n    <div :class=\"ns.e('header')\">\n      <div :class=\"ns.e('left')\">\n        <div\n          :class=\"ns.e('back')\"\n          role=\"button\"\n          tabindex=\"0\"\n          @click=\"handleClick\"\n        >\n          <div\n            v-if=\"icon || $slots.icon\"\n            :aria-label=\"title || t('el.pageHeader.title')\"\n            :class=\"ns.e('icon')\"\n          >\n            <slot name=\"icon\">\n              <el-icon v-if=\"icon\">\n                <component :is=\"icon\" />\n              </el-icon>\n            </slot>\n          </div>\n          <div :class=\"ns.e('title')\">\n            <slot name=\"title\">{{ title || t('el.pageHeader.title') }}</slot>\n          </div>\n        </div>\n        <el-divider direction=\"vertical\" />\n        <div :class=\"ns.e('content')\">\n          <slot name=\"content\">{{ content }}</slot>\n        </div>\n      </div>\n\n      <div v-if=\"$slots.extra\" :class=\"ns.e('extra')\">\n        <slot name=\"extra\" />\n      </div>\n    </div>\n\n    <div v-if=\"$slots.default\" :class=\"ns.e('main')\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ElDivider } from '@pit-element-plus/components/divider'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { Back } from 'pit-element-icons'\nimport { pageHeaderEmits } from './page-header'\n\nimport type { PageHeaderProps } from './page-header'\n\ndefineOptions({\n  name: 'ElPageHeader',\n})\n\nwithDefaults(defineProps<PageHeaderProps>(), {\n  icon: () => Back,\n  content: '',\n})\nconst emit = defineEmits(pageHeaderEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('page-header')\n\nfunction handleClick() {\n  emit('back')\n}\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.is('contentful', !!$slots.default),\n      {\n        [ns.m('has-breadcrumb')]: !!$slots.breadcrumb,\n        [ns.m('has-extra')]: !!$slots.extra,\n      },\n    ]\"\n  >\n    <div v-if=\"$slots.breadcrumb\" :class=\"ns.e('breadcrumb')\">\n      <slot name=\"breadcrumb\" />\n    </div>\n    <div :class=\"ns.e('header')\">\n      <div :class=\"ns.e('left')\">\n        <div\n          :class=\"ns.e('back')\"\n          role=\"button\"\n          tabindex=\"0\"\n          @click=\"handleClick\"\n        >\n          <div\n            v-if=\"icon || $slots.icon\"\n            :aria-label=\"title || t('el.pageHeader.title')\"\n            :class=\"ns.e('icon')\"\n          >\n            <slot name=\"icon\">\n              <el-icon v-if=\"icon\">\n                <component :is=\"icon\" />\n              </el-icon>\n            </slot>\n          </div>\n          <div :class=\"ns.e('title')\">\n            <slot name=\"title\">{{ title || t('el.pageHeader.title') }}</slot>\n          </div>\n        </div>\n        <el-divider direction=\"vertical\" />\n        <div :class=\"ns.e('content')\">\n          <slot name=\"content\">{{ content }}</slot>\n        </div>\n      </div>\n\n      <div v-if=\"$slots.extra\" :class=\"ns.e('extra')\">\n        <slot name=\"extra\" />\n      </div>\n    </div>\n\n    <div v-if=\"$slots.default\" :class=\"ns.e('main')\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ElDivider } from '@pit-element-plus/components/divider'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { Back } from 'pit-element-icons'\nimport { pageHeaderEmits } from './page-header'\n\nimport type { PageHeaderProps } from './page-header'\n\ndefineOptions({\n  name: 'ElPageHeader',\n})\n\nwithDefaults(defineProps<PageHeaderProps>(), {\n  icon: () => Back,\n  content: '',\n})\nconst emit = defineEmits(pageHeaderEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('page-header')\n\nfunction handleClick() {\n  emit('back')\n}\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.is('contentful', !!$slots.default),\n      {\n        [ns.m('has-breadcrumb')]: !!$slots.breadcrumb,\n        [ns.m('has-extra')]: !!$slots.extra,\n      },\n    ]\"\n  >\n    <div v-if=\"$slots.breadcrumb\" :class=\"ns.e('breadcrumb')\">\n      <slot name=\"breadcrumb\" />\n    </div>\n    <div :class=\"ns.e('header')\">\n      <div :class=\"ns.e('left')\">\n        <div\n          :class=\"ns.e('back')\"\n          role=\"button\"\n          tabindex=\"0\"\n          @click=\"handleClick\"\n        >\n          <div\n            v-if=\"icon || $slots.icon\"\n            :aria-label=\"title || t('el.pageHeader.title')\"\n            :class=\"ns.e('icon')\"\n          >\n            <slot name=\"icon\">\n              <el-icon v-if=\"icon\">\n                <component :is=\"icon\" />\n              </el-icon>\n            </slot>\n          </div>\n          <div :class=\"ns.e('title')\">\n            <slot name=\"title\">{{ title || t('el.pageHeader.title') }}</slot>\n          </div>\n        </div>\n        <el-divider direction=\"vertical\" />\n        <div :class=\"ns.e('content')\">\n          <slot name=\"content\">{{ content }}</slot>\n        </div>\n      </div>\n\n      <div v-if=\"$slots.extra\" :class=\"ns.e('extra')\">\n        <slot name=\"extra\" />\n      </div>\n    </div>\n\n    <div v-if=\"$slots.default\" :class=\"ns.e('main')\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ElDivider } from '@pit-element-plus/components/divider'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { Back } from 'pit-element-icons'\nimport { pageHeaderEmits } from './page-header'\n\nimport type { PageHeaderProps } from './page-header'\n\ndefineOptions({\n  name: 'ElPageHeader',\n})\n\nwithDefaults(defineProps<PageHeaderProps>(), {\n  icon: () => Back,\n  content: '',\n})\nconst emit = defineEmits(pageHeaderEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('page-header')\n\nfunction handleClick() {\n  emit('back')\n}\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport PageHeader from './src/page-header.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElPageHeader: SFCWithInstall<typeof PageHeader> =\n  withInstall(PageHeader)\nexport default ElPageHeader\n\nexport * from './src/page-header'\n","import type { CSSProperties, ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\n\nexport type DialogHeaderContext = {\n  dialogRef: Ref<HTMLElement | undefined>\n  headerRef: Ref<HTMLElement | undefined>\n  bodyId: Ref<string>\n  ns: UseNamespaceReturn\n  rendered: Ref<boolean>\n  style: ComputedRef<CSSProperties>\n}\n\nexport const dialogHeaderInjectionKey: InjectionKey<DialogHeaderContext> =\n  Symbol('dialogHeaderInjectionKey')\n","import { buildProps, iconPropType } from '@pit-element-plus/utils'\n\nexport const dialogContentProps = buildProps({\n  center: {\n    type: Boolean,\n    default: false,\n  },\n  alignCenter: {\n    type: Boolean,\n    default: false,\n  },\n  closeIcon: {\n    type: iconPropType,\n  },\n  customClass: {\n    type: String,\n    default: '',\n  },\n  draggable: {\n    type: Boolean,\n    default: false,\n  },\n  fullscreen: {\n    type: Boolean,\n    default: true,\n  },\n  showClose: {\n    type: Boolean,\n    default: true,\n  },\n  title: {\n    type: String,\n    default: '',\n  },\n} as const)\n\nexport const dialogContentEmits = {\n  close: () => true,\n}\n","import { buildProps, definePropType, isBoolean } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { dialogContentProps } from './dialog-header-content'\n\nimport type { ExtractPropTypes } from 'vue'\n\ntype DoneFn = (cancel?: boolean) => void\nexport type DialogHeaderBeforeCloseFn = (done: DoneFn) => void\n\nexport const dialogHeaderProps = buildProps({\n  ...dialogContentProps,\n  appendToBody: {\n    type: Boolean,\n    default: false,\n  },\n  beforeClose: {\n    type: definePropType<DialogHeaderBeforeCloseFn>(Function),\n  },\n  destroyOnClose: {\n    type: Boolean,\n    default: false,\n  },\n  closeOnClickModal: {\n    type: Boolean,\n    default: true,\n  },\n  closeOnPressEscape: {\n    type: Boolean,\n    default: false,\n  },\n  lockScroll: {\n    type: Boolean,\n    default: true,\n  },\n  modal: {\n    type: Boolean,\n    default: true,\n  },\n  openDelay: {\n    type: Number,\n    default: 0,\n  },\n  closeDelay: {\n    type: Number,\n    default: 0,\n  },\n  top: {\n    type: String,\n  },\n  modelValue: {\n    type: Boolean,\n    default: false,\n  },\n  modalClass: String,\n  width: {\n    type: [String, Number],\n    default: '100%',\n  },\n  zIndex: {\n    type: Number,\n  },\n  trapFocus: {\n    type: Boolean,\n    default: false,\n  },\n  noCancelBtn: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\nexport type DialogHeaderProps = ExtractPropTypes<typeof dialogHeaderProps>\n\nexport const dialogHeaderEmits = {\n  open: () => true,\n  opened: () => true,\n  close: () => true,\n  closed: () => true,\n  [UPDATE_MODEL_EVENT]: (value: boolean) => isBoolean(value),\n  openAutoFocus: () => true,\n  closeAutoFocus: () => true,\n}\nexport type DialogHeaderEmits = typeof dialogHeaderEmits\n","import {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\n\nimport {\n  defaultNamespace,\n  useId,\n  useLockscreen,\n  useZIndex,\n} from '@pit-element-plus/hooks'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { addUnit, isClient } from '@pit-element-plus/utils'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\n\nimport type { CSSProperties, Ref, SetupContext } from 'vue'\nimport type { DialogHeaderEmits, DialogHeaderProps } from './dialog-header'\n\nexport const useDialogHeader = (\n  props: DialogHeaderProps,\n  targetRef: Ref<HTMLElement | undefined>\n) => {\n  const instance = getCurrentInstance()!\n  const emit = instance.emit as SetupContext<DialogHeaderEmits>['emit']\n  const { nextZIndex } = useZIndex()\n\n  let lastPosition = ''\n  const titleId = useId()\n  const bodyId = useId()\n  const visible = ref(false)\n  const closed = ref(false)\n  const rendered = ref(false) // when desctroyOnClose is true, we initialize it as false vise versa\n  const zIndex = ref(props.zIndex || nextZIndex())\n\n  let openTimer: (() => void) | undefined = undefined\n  let closeTimer: (() => void) | undefined = undefined\n\n  const namespace = useGlobalConfig('namespace', defaultNamespace)\n\n  const style = computed<CSSProperties>(() => {\n    const style: CSSProperties = {}\n    const varPrefix = `--${namespace.value}-dialog` as const\n    if (!props.fullscreen) {\n      if (props.top) {\n        style[`${varPrefix}-margin-top`] = props.top\n      }\n      if (props.width) {\n        style[`${varPrefix}-width`] = addUnit(props.width)\n      }\n    }\n    return style\n  })\n\n  const overlayDialogStyle = computed<CSSProperties>(() => {\n    if (props.alignCenter) {\n      return { display: 'flex' }\n    }\n    return {}\n  })\n\n  function afterEnter() {\n    emit('opened')\n  }\n\n  function afterLeave() {\n    emit('closed')\n    emit(UPDATE_MODEL_EVENT, false)\n    if (props.destroyOnClose) {\n      rendered.value = false\n    }\n  }\n\n  function beforeLeave() {\n    emit('close')\n  }\n\n  function open() {\n    closeTimer?.()\n    openTimer?.()\n\n    if (props.openDelay && props.openDelay > 0) {\n      ;({ stop: openTimer } = useTimeoutFn(() => doOpen(), props.openDelay))\n    } else {\n      doOpen()\n    }\n  }\n\n  function close() {\n    openTimer?.()\n    closeTimer?.()\n\n    if (props.closeDelay && props.closeDelay > 0) {\n      ;({ stop: closeTimer } = useTimeoutFn(() => doClose(), props.closeDelay))\n    } else {\n      doClose()\n    }\n  }\n\n  function handleClose() {\n    function hide(shouldCancel?: boolean) {\n      if (shouldCancel) return\n      closed.value = true\n      visible.value = false\n    }\n\n    if (props.beforeClose) {\n      props.beforeClose(hide)\n    } else {\n      close()\n    }\n  }\n\n  function onModalClick() {\n    if (props.closeOnClickModal) {\n      handleClose()\n    }\n  }\n\n  function doOpen() {\n    if (!isClient) return\n    visible.value = true\n  }\n\n  function doClose() {\n    visible.value = false\n  }\n\n  function onOpenAutoFocus() {\n    emit('openAutoFocus')\n  }\n\n  function onCloseAutoFocus() {\n    emit('closeAutoFocus')\n  }\n\n  function onFocusoutPrevented(event: CustomEvent) {\n    if (event.detail?.focusReason === 'pointer') {\n      event.preventDefault()\n    }\n  }\n\n  if (props.lockScroll) {\n    useLockscreen(visible)\n  }\n\n  function onCloseRequested() {\n    if (props.closeOnPressEscape) {\n      handleClose()\n    }\n  }\n\n  watch(\n    () => props.modelValue,\n    (val) => {\n      if (val) {\n        closed.value = false\n        open()\n        rendered.value = true // enables lazy rendering\n        zIndex.value = props.zIndex ? zIndex.value++ : nextZIndex()\n        // this.$el.addEventListener('scroll', this.updatePopper)\n        nextTick(() => {\n          emit('open')\n          if (targetRef.value) {\n            targetRef.value.scrollTop = 0\n          }\n        })\n      } else {\n        // this.$el.removeEventListener('scroll', this.updatePopper\n        if (visible.value) {\n          close()\n        }\n      }\n    }\n  )\n\n  watch(\n    () => props.fullscreen,\n    (val) => {\n      if (!targetRef.value) return\n      if (val) {\n        lastPosition = targetRef.value.style.transform\n        targetRef.value.style.transform = ''\n      } else {\n        targetRef.value.style.transform = lastPosition\n      }\n    }\n  )\n\n  onMounted(() => {\n    if (props.modelValue) {\n      visible.value = true\n      rendered.value = true // enables lazy rendering\n      open()\n    }\n  })\n\n  return {\n    afterEnter,\n    afterLeave,\n    beforeLeave,\n    handleClose,\n    onModalClick,\n    close,\n    doClose,\n    onOpenAutoFocus,\n    onCloseAutoFocus,\n    onCloseRequested,\n    onFocusoutPrevented,\n    titleId,\n    bodyId,\n    closed,\n    style,\n    overlayDialogStyle,\n    rendered,\n    visible,\n    zIndex,\n  }\n}\n","<template>\n  <teleport to=\"body\" :disabled=\"!appendToBody\">\n    <transition\n      name=\"dialog-fade\"\n      @after-enter=\"afterEnter\"\n      @after-leave=\"afterLeave\"\n      @before-leave=\"beforeLeave\"\n    >\n      <el-overlay\n        v-show=\"visible\"\n        custom-mask-event\n        :mask=\"modal\"\n        :overlay-class=\"modalClass\"\n        :z-index=\"zIndex\"\n      >\n        <div\n          role=\"dialog\"\n          aria-modal=\"true\"\n          :aria-label=\"title || undefined\"\n          :aria-labelledby=\"!title ? titleId : undefined\"\n          :aria-describedby=\"bodyId\"\n          :class=\"[`${ns.namespace.value}-overlay-dialog-header`, modalClass]\"\n          :style=\"overlayDialogStyle\"\n          @click=\"overlayEvent.onClick\"\n          @mousedown=\"overlayEvent.onMousedown\"\n          @mouseup=\"overlayEvent.onMouseup\"\n        >\n          <el-focus-trap\n            loop\n            :trapped=\"visible\"\n            focus-start-el=\"container\"\n            @focus-after-trapped=\"onOpenAutoFocus\"\n            @focus-after-released=\"onCloseAutoFocus\"\n            @focusout-prevented=\"onFocusoutPrevented\"\n            @release-requested=\"onCloseRequested\"\n          >\n            <div :class=\"`${ns.namespace.value}-dialog-header-preview`\">\n              <el-page-header @back=\"handleClose\">\n                <template #content>\n                  <span class=\"text-large font-600 mr-3\"> {{ title }} </span>\n                </template>\n              </el-page-header>\n              <div :class=\"`${ns.namespace.value}-dialog-header-option`\">\n                <slot name=\"footer\" />\n                <el-button\n                  v-if=\"props.noCancelBtn\"\n                  :is-disabled=\"true\"\n                  @click=\"handleClose\"\n                  >取 消</el-button\n                >\n                <slot name=\"footer-right\" />\n              </div>\n            </div>\n            <div :class=\"`${ns.namespace.value}-dialog-header-preview-main`\">\n              <slot />\n            </div>\n          </el-focus-trap>\n        </div>\n      </el-overlay>\n    </transition>\n  </teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref, useSlots } from 'vue'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElPageHeader from '@pit-element-plus/components/page-header'\nimport {\n  useDeprecated,\n  useNamespace,\n  useSameTarget,\n} from '@pit-element-plus/hooks'\nimport { dialogHeaderInjectionKey } from './constants'\nimport { dialogHeaderEmits, dialogHeaderProps } from './dialog-header'\nimport { useDialogHeader } from './use-dialog-header'\n\ndefineOptions({\n  name: 'ElDialogHeader',\n  inheritAttrs: false,\n})\n\nconst props = defineProps(dialogHeaderProps)\ndefineEmits(dialogHeaderEmits)\nconst slots = useSlots()\n\nuseDeprecated(\n  {\n    scope: 'el-dialog',\n    from: 'the title slot',\n    replacement: 'the header slot',\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/dialog.html#slots',\n  },\n  computed(() => !!slots.title)\n)\n\nuseDeprecated(\n  {\n    scope: 'el-dialog',\n    from: 'custom-class',\n    replacement: 'class',\n    version: '2.3.0',\n    ref: 'https://element-plus.org/en-US/component/dialog.html#attributes',\n    type: 'Attribute',\n  },\n  computed(() => !!props.customClass)\n)\n\nconst ns = useNamespace('dialog')\nconst dialogRef = ref<HTMLElement>()\nconst headerRef = ref<HTMLElement>()\nconst dialogContentRef = ref()\n\nconst {\n  visible,\n  titleId,\n  bodyId,\n  style,\n  overlayDialogStyle,\n  rendered,\n  zIndex,\n  afterEnter,\n  afterLeave,\n  beforeLeave,\n  handleClose,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onCloseRequested,\n  onFocusoutPrevented,\n} = useDialogHeader(props, dialogRef)\n\nprovide(dialogHeaderInjectionKey, {\n  dialogRef,\n  headerRef,\n  bodyId,\n  ns,\n  rendered,\n  style,\n})\n\nconst overlayEvent = useSameTarget(onModalClick)\n\ndefineExpose({\n  /** @description whether the dialog is visible */\n  visible,\n  dialogContentRef,\n})\n</script>\n","<template>\n  <teleport to=\"body\" :disabled=\"!appendToBody\">\n    <transition\n      name=\"dialog-fade\"\n      @after-enter=\"afterEnter\"\n      @after-leave=\"afterLeave\"\n      @before-leave=\"beforeLeave\"\n    >\n      <el-overlay\n        v-show=\"visible\"\n        custom-mask-event\n        :mask=\"modal\"\n        :overlay-class=\"modalClass\"\n        :z-index=\"zIndex\"\n      >\n        <div\n          role=\"dialog\"\n          aria-modal=\"true\"\n          :aria-label=\"title || undefined\"\n          :aria-labelledby=\"!title ? titleId : undefined\"\n          :aria-describedby=\"bodyId\"\n          :class=\"[`${ns.namespace.value}-overlay-dialog-header`, modalClass]\"\n          :style=\"overlayDialogStyle\"\n          @click=\"overlayEvent.onClick\"\n          @mousedown=\"overlayEvent.onMousedown\"\n          @mouseup=\"overlayEvent.onMouseup\"\n        >\n          <el-focus-trap\n            loop\n            :trapped=\"visible\"\n            focus-start-el=\"container\"\n            @focus-after-trapped=\"onOpenAutoFocus\"\n            @focus-after-released=\"onCloseAutoFocus\"\n            @focusout-prevented=\"onFocusoutPrevented\"\n            @release-requested=\"onCloseRequested\"\n          >\n            <div :class=\"`${ns.namespace.value}-dialog-header-preview`\">\n              <el-page-header @back=\"handleClose\">\n                <template #content>\n                  <span class=\"text-large font-600 mr-3\"> {{ title }} </span>\n                </template>\n              </el-page-header>\n              <div :class=\"`${ns.namespace.value}-dialog-header-option`\">\n                <slot name=\"footer\" />\n                <el-button\n                  v-if=\"props.noCancelBtn\"\n                  :is-disabled=\"true\"\n                  @click=\"handleClose\"\n                  >取 消</el-button\n                >\n                <slot name=\"footer-right\" />\n              </div>\n            </div>\n            <div :class=\"`${ns.namespace.value}-dialog-header-preview-main`\">\n              <slot />\n            </div>\n          </el-focus-trap>\n        </div>\n      </el-overlay>\n    </transition>\n  </teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref, useSlots } from 'vue'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElPageHeader from '@pit-element-plus/components/page-header'\nimport {\n  useDeprecated,\n  useNamespace,\n  useSameTarget,\n} from '@pit-element-plus/hooks'\nimport { dialogHeaderInjectionKey } from './constants'\nimport { dialogHeaderEmits, dialogHeaderProps } from './dialog-header'\nimport { useDialogHeader } from './use-dialog-header'\n\ndefineOptions({\n  name: 'ElDialogHeader',\n  inheritAttrs: false,\n})\n\nconst props = defineProps(dialogHeaderProps)\ndefineEmits(dialogHeaderEmits)\nconst slots = useSlots()\n\nuseDeprecated(\n  {\n    scope: 'el-dialog',\n    from: 'the title slot',\n    replacement: 'the header slot',\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/dialog.html#slots',\n  },\n  computed(() => !!slots.title)\n)\n\nuseDeprecated(\n  {\n    scope: 'el-dialog',\n    from: 'custom-class',\n    replacement: 'class',\n    version: '2.3.0',\n    ref: 'https://element-plus.org/en-US/component/dialog.html#attributes',\n    type: 'Attribute',\n  },\n  computed(() => !!props.customClass)\n)\n\nconst ns = useNamespace('dialog')\nconst dialogRef = ref<HTMLElement>()\nconst headerRef = ref<HTMLElement>()\nconst dialogContentRef = ref()\n\nconst {\n  visible,\n  titleId,\n  bodyId,\n  style,\n  overlayDialogStyle,\n  rendered,\n  zIndex,\n  afterEnter,\n  afterLeave,\n  beforeLeave,\n  handleClose,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onCloseRequested,\n  onFocusoutPrevented,\n} = useDialogHeader(props, dialogRef)\n\nprovide(dialogHeaderInjectionKey, {\n  dialogRef,\n  headerRef,\n  bodyId,\n  ns,\n  rendered,\n  style,\n})\n\nconst overlayEvent = useSameTarget(onModalClick)\n\ndefineExpose({\n  /** @description whether the dialog is visible */\n  visible,\n  dialogContentRef,\n})\n</script>\n","<template>\n  <teleport to=\"body\" :disabled=\"!appendToBody\">\n    <transition\n      name=\"dialog-fade\"\n      @after-enter=\"afterEnter\"\n      @after-leave=\"afterLeave\"\n      @before-leave=\"beforeLeave\"\n    >\n      <el-overlay\n        v-show=\"visible\"\n        custom-mask-event\n        :mask=\"modal\"\n        :overlay-class=\"modalClass\"\n        :z-index=\"zIndex\"\n      >\n        <div\n          role=\"dialog\"\n          aria-modal=\"true\"\n          :aria-label=\"title || undefined\"\n          :aria-labelledby=\"!title ? titleId : undefined\"\n          :aria-describedby=\"bodyId\"\n          :class=\"[`${ns.namespace.value}-overlay-dialog-header`, modalClass]\"\n          :style=\"overlayDialogStyle\"\n          @click=\"overlayEvent.onClick\"\n          @mousedown=\"overlayEvent.onMousedown\"\n          @mouseup=\"overlayEvent.onMouseup\"\n        >\n          <el-focus-trap\n            loop\n            :trapped=\"visible\"\n            focus-start-el=\"container\"\n            @focus-after-trapped=\"onOpenAutoFocus\"\n            @focus-after-released=\"onCloseAutoFocus\"\n            @focusout-prevented=\"onFocusoutPrevented\"\n            @release-requested=\"onCloseRequested\"\n          >\n            <div :class=\"`${ns.namespace.value}-dialog-header-preview`\">\n              <el-page-header @back=\"handleClose\">\n                <template #content>\n                  <span class=\"text-large font-600 mr-3\"> {{ title }} </span>\n                </template>\n              </el-page-header>\n              <div :class=\"`${ns.namespace.value}-dialog-header-option`\">\n                <slot name=\"footer\" />\n                <el-button\n                  v-if=\"props.noCancelBtn\"\n                  :is-disabled=\"true\"\n                  @click=\"handleClose\"\n                  >取 消</el-button\n                >\n                <slot name=\"footer-right\" />\n              </div>\n            </div>\n            <div :class=\"`${ns.namespace.value}-dialog-header-preview-main`\">\n              <slot />\n            </div>\n          </el-focus-trap>\n        </div>\n      </el-overlay>\n    </transition>\n  </teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref, useSlots } from 'vue'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElPageHeader from '@pit-element-plus/components/page-header'\nimport {\n  useDeprecated,\n  useNamespace,\n  useSameTarget,\n} from '@pit-element-plus/hooks'\nimport { dialogHeaderInjectionKey } from './constants'\nimport { dialogHeaderEmits, dialogHeaderProps } from './dialog-header'\nimport { useDialogHeader } from './use-dialog-header'\n\ndefineOptions({\n  name: 'ElDialogHeader',\n  inheritAttrs: false,\n})\n\nconst props = defineProps(dialogHeaderProps)\ndefineEmits(dialogHeaderEmits)\nconst slots = useSlots()\n\nuseDeprecated(\n  {\n    scope: 'el-dialog',\n    from: 'the title slot',\n    replacement: 'the header slot',\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/dialog.html#slots',\n  },\n  computed(() => !!slots.title)\n)\n\nuseDeprecated(\n  {\n    scope: 'el-dialog',\n    from: 'custom-class',\n    replacement: 'class',\n    version: '2.3.0',\n    ref: 'https://element-plus.org/en-US/component/dialog.html#attributes',\n    type: 'Attribute',\n  },\n  computed(() => !!props.customClass)\n)\n\nconst ns = useNamespace('dialog')\nconst dialogRef = ref<HTMLElement>()\nconst headerRef = ref<HTMLElement>()\nconst dialogContentRef = ref()\n\nconst {\n  visible,\n  titleId,\n  bodyId,\n  style,\n  overlayDialogStyle,\n  rendered,\n  zIndex,\n  afterEnter,\n  afterLeave,\n  beforeLeave,\n  handleClose,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onCloseRequested,\n  onFocusoutPrevented,\n} = useDialogHeader(props, dialogRef)\n\nprovide(dialogHeaderInjectionKey, {\n  dialogRef,\n  headerRef,\n  bodyId,\n  ns,\n  rendered,\n  style,\n})\n\nconst overlayEvent = useSameTarget(onModalClick)\n\ndefineExpose({\n  /** @description whether the dialog is visible */\n  visible,\n  dialogContentRef,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport DialogHeader from './src/dialog-header.vue'\n\nexport const ElDialogHeader = withInstall(DialogHeader)\nexport default ElDialogHeader\n\nexport * from './src/use-dialog-header'\nexport * from './src/dialog-header'\nexport * from './src/constants'\n","import { buildProps } from '@pit-element-plus/utils'\nimport { dialogEmits, dialogProps } from '@pit-element-plus/components/dialog'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Drawer from './drawer.vue'\nimport type { DialogProps } from '@pit-element-plus/components/dialog'\n\nexport interface DrawerProps extends DialogProps {\n  /**\n   * @description Set the direction in which the Drawer opens\n   */\n  direction?: 'ltr' | 'rtl' | 'ttb' | 'btt'\n  /**\n   * @description Whether to enable the resizable function for the drawer\n   */\n  resizable?: boolean\n  /**\n   * @description The size of the Drawer form, when using the number type, is measured in pixels. When using the string type, please pass in 'x%'; otherwise, it will be interpreted as the number type\n   */\n  size?: string | number\n  /**\n   * @description You can remove the title from the drawer, so that your drawer will have more space on the screen. If you want to be visited, you must set the title attribute.\n   */\n  withHeader?: boolean\n  /**\n   * @description The fade-in and fade-out animation switch of the mask layer\n   */\n  modalFade?: boolean\n  /**\n   * @description Help assistive technologies such as screen readers identify content hierarchies\n   */\n  headerAriaLevel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `DrawerProps` instead.\n */\nexport const drawerProps = buildProps({\n  ...dialogProps,\n  direction: {\n    type: String,\n    default: 'rtl',\n    values: ['ltr', 'rtl', 'ttb', 'btt'],\n  },\n  resizable: Boolean,\n  size: {\n    type: [String, Number],\n    default: '30%',\n  },\n  withHeader: {\n    type: Boolean,\n    default: true,\n  },\n  modalFade: {\n    type: Boolean,\n    default: true,\n  },\n  headerAriaLevel: {\n    type: String,\n    default: '2',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `DrawerProps` instead.\n */\nexport type DrawerPropsPublic = ExtractPublicPropTypes<typeof drawerProps>\n\nexport const drawerEmits = {\n  ...dialogEmits,\n  'resize-start': (evt: MouseEvent, size: number) =>\n    evt instanceof MouseEvent && typeof size === 'number',\n  resize: (evt: MouseEvent, size: number) =>\n    evt instanceof MouseEvent && typeof size === 'number',\n  'resize-end': (evt: MouseEvent, size: number) =>\n    evt instanceof MouseEvent && typeof size === 'number',\n}\n\nexport type DrawerEmits = typeof drawerEmits\n\nexport type DrawerInstance = InstanceType<typeof Drawer> & unknown\n","import { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { clamp, useEventListener, useWindowSize } from '@vueuse/core'\n\nimport type { Ref, SetupContext } from 'vue'\nimport type { DrawerEmits, DrawerProps } from '../drawer'\n\nexport function useResizable(\n  props: DrawerProps & Required<Pick<DrawerProps, 'direction'>>,\n  target: Ref<HTMLElement | undefined>,\n  emit: SetupContext<DrawerEmits>['emit']\n) {\n  const { width, height } = useWindowSize()\n\n  const isHorizontal = computed(() => ['ltr', 'rtl'].includes(props.direction))\n  const sign = computed(() =>\n    ['ltr', 'ttb'].includes(props.direction) ? 1 : -1\n  )\n  const windowSize = computed(() =>\n    isHorizontal.value ? width.value : height.value\n  )\n  const getSize = computed(() => {\n    return clamp(\n      startSize.value + sign.value * offset.value,\n      4,\n      windowSize.value\n    )\n  })\n\n  const startSize = ref(0)\n  const offset = ref(0)\n  const isResizing = ref(false)\n  const hasStartedDragging = ref(false)\n  let startPos: number[] = []\n  let cleanups: (() => void)[] = []\n\n  const getActualSize = () => {\n    const drawerEl = target.value?.closest('[aria-modal=\"true\"]') as HTMLElement\n    if (drawerEl) {\n      return isHorizontal.value ? drawerEl.offsetWidth : drawerEl.offsetHeight\n    }\n    return 100\n  }\n\n  watch(\n    () => [props.size, props.resizable] as const,\n    () => {\n      hasStartedDragging.value = false\n      startSize.value = 0\n      offset.value = 0\n      onMouseUp()\n    }\n  )\n\n  const onMousedown = (e: MouseEvent) => {\n    if (!props.resizable) return\n\n    if (!hasStartedDragging.value) {\n      startSize.value = getActualSize()\n      hasStartedDragging.value = true\n    }\n\n    startPos = [e.pageX, e.pageY]\n    isResizing.value = true\n    emit('resize-start', e, startSize.value)\n    cleanups.push(\n      useEventListener(window, 'mouseup', onMouseUp),\n      useEventListener(window, 'mousemove', onMouseMove)\n    )\n  }\n\n  const onMouseMove = (e: MouseEvent) => {\n    const { pageX, pageY } = e\n    const offsetX = pageX - startPos[0]\n    const offsetY = pageY - startPos[1]\n    offset.value = isHorizontal.value ? offsetX : offsetY\n    emit('resize', e, getSize.value)\n  }\n\n  const onMouseUp = (e?: MouseEvent) => {\n    // premature interruption\n    // avoid triggering meaningless execution due to watch size/resizable constraints.\n    if (!isResizing.value) return\n\n    startPos = []\n    startSize.value = getSize.value\n    offset.value = 0\n    isResizing.value = false\n    cleanups.forEach((cleanup) => cleanup?.())\n    cleanups = []\n    if (e) {\n      emit('resize-end', e, startSize.value)\n    }\n  }\n\n  const cleanup = useEventListener(target, 'mousedown', onMousedown)\n\n  onBeforeUnmount(() => {\n    cleanup()\n    onMouseUp()\n  })\n\n  return {\n    size: computed(() => {\n      return hasStartedDragging.value\n        ? `${getSize.value}px`\n        : addUnit(props.size)\n    }),\n    isResizing,\n    isHorizontal,\n  }\n}\n","<template>\n  <el-teleport\n    :to=\"appendTo\"\n    :disabled=\"appendTo !== 'body' ? false : !appendToBody\"\n  >\n    <transition\n      :name=\"ns.b('fade')\"\n      @after-enter=\"afterEnter\"\n      @after-leave=\"afterLeave\"\n      @before-leave=\"beforeLeave\"\n    >\n      <el-overlay\n        v-show=\"visible\"\n        :mask=\"modal\"\n        :overlay-class=\"[\n          ns.is('drawer'),\n          modalClass ?? '',\n          `${ns.namespace.value}-modal-drawer`,\n          ns.is('penetrable', penetrable),\n        ]\"\n        :z-index=\"zIndex\"\n        @click=\"onModalClick\"\n      >\n        <el-focus-trap\n          loop\n          :trapped=\"visible\"\n          :focus-trap-el=\"drawerRef\"\n          :focus-start-el=\"focusStartRef\"\n          @focus-after-trapped=\"onOpenAutoFocus\"\n          @focus-after-released=\"onCloseAutoFocus\"\n          @focusout-prevented=\"onFocusoutPrevented\"\n          @release-requested=\"onCloseRequested\"\n        >\n          <div\n            ref=\"drawerRef\"\n            aria-modal=\"true\"\n            :aria-label=\"title || undefined\"\n            :aria-labelledby=\"!title ? titleId : undefined\"\n            :aria-describedby=\"bodyId\"\n            v-bind=\"$attrs\"\n            :class=\"[\n              ns.b(),\n              direction,\n              visible && 'open',\n              ns.is('dragging', isResizing),\n            ]\"\n            :style=\"{ [isHorizontal ? 'width' : 'height']: size }\"\n            role=\"dialog\"\n            @click.stop\n          >\n            <span ref=\"focusStartRef\" :class=\"ns.e('sr-focus')\" tabindex=\"-1\" />\n            <header v-if=\"withHeader\" :class=\"[ns.e('header'), headerClass]\">\n              <template v-if=\"!$slots.title\">\n                <slot\n                  name=\"header\"\n                  :close=\"handleClose\"\n                  :title-id=\"titleId\"\n                  :title-class=\"ns.e('title')\"\n                >\n                  <span\n                    :id=\"titleId\"\n                    role=\"heading\"\n                    :aria-level=\"headerAriaLevel\"\n                    :class=\"ns.e('title')\"\n                  >\n                    {{ title }}\n                  </span>\n                </slot>\n              </template>\n              <template v-else>\n                <slot name=\"title\">\n                  <!-- DEPRECATED SLOT -->\n                </slot>\n              </template>\n              <button\n                v-if=\"showClose\"\n                :aria-label=\"t('el.drawer.close')\"\n                :class=\"ns.e('close-btn')\"\n                type=\"button\"\n                @click=\"handleClose\"\n              >\n                <el-icon :class=\"ns.e('close')\">\n                  <close />\n                </el-icon>\n              </button>\n            </header>\n            <template v-if=\"rendered\">\n              <div :id=\"bodyId\" :class=\"[ns.e('body'), bodyClass]\">\n                <slot />\n              </div>\n            </template>\n            <div v-if=\"$slots.footer\" :class=\"[ns.e('footer'), footerClass]\">\n              <slot name=\"footer\" />\n            </div>\n            <div\n              v-if=\"resizable\"\n              ref=\"draggerRef\"\n              :style=\"{ zIndex }\"\n              :class=\"ns.e('dragger')\"\n            />\n          </div>\n        </el-focus-trap>\n      </el-overlay>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, useSlots } from 'vue'\nimport { Close } from 'pit-element-icons'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport {\n  dialogPropsDefaults,\n  useDialog,\n} from '@pit-element-plus/components/dialog'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useDeprecated, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { drawerEmits } from './drawer'\nimport { useResizable } from './composables/useResizable'\n\nimport type { DrawerProps } from './drawer'\n\ndefineOptions({\n  name: 'ElDrawer',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DrawerProps>(), {\n  ...dialogPropsDefaults,\n  direction: 'rtl',\n  size: '30%',\n  withHeader: true,\n  modalFade: true,\n  headerAriaLevel: '2',\n})\nconst emit = defineEmits(drawerEmits)\nconst slots = useSlots()\n\nuseDeprecated(\n  {\n    scope: 'el-drawer',\n    from: 'the title slot',\n    replacement: 'the header slot',\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/drawer.html#slots',\n  },\n  computed(() => !!slots.title)\n)\n\nconst drawerRef = ref<HTMLElement>()\nconst focusStartRef = ref<HTMLElement>()\nconst draggerRef = ref<HTMLElement>()\nconst ns = useNamespace('drawer')\nconst { t } = useLocale()\n\nconst {\n  afterEnter,\n  afterLeave,\n  beforeLeave,\n  visible,\n  rendered,\n  titleId,\n  bodyId,\n  zIndex,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onFocusoutPrevented,\n  onCloseRequested,\n  handleClose,\n} = useDialog(props, drawerRef)\n\nconst { isHorizontal, size, isResizing } = useResizable(props, draggerRef, emit)\n\nconst penetrable = computed(() => props.modalPenetrable && !props.modal)\n\ndefineExpose({\n  handleClose,\n  /** @deprecated Will be removed after 2.14.0. */\n  afterEnter,\n  /** @deprecated Will be removed after 2.14.0. */\n  afterLeave,\n})\n</script>\n","<template>\n  <el-teleport\n    :to=\"appendTo\"\n    :disabled=\"appendTo !== 'body' ? false : !appendToBody\"\n  >\n    <transition\n      :name=\"ns.b('fade')\"\n      @after-enter=\"afterEnter\"\n      @after-leave=\"afterLeave\"\n      @before-leave=\"beforeLeave\"\n    >\n      <el-overlay\n        v-show=\"visible\"\n        :mask=\"modal\"\n        :overlay-class=\"[\n          ns.is('drawer'),\n          modalClass ?? '',\n          `${ns.namespace.value}-modal-drawer`,\n          ns.is('penetrable', penetrable),\n        ]\"\n        :z-index=\"zIndex\"\n        @click=\"onModalClick\"\n      >\n        <el-focus-trap\n          loop\n          :trapped=\"visible\"\n          :focus-trap-el=\"drawerRef\"\n          :focus-start-el=\"focusStartRef\"\n          @focus-after-trapped=\"onOpenAutoFocus\"\n          @focus-after-released=\"onCloseAutoFocus\"\n          @focusout-prevented=\"onFocusoutPrevented\"\n          @release-requested=\"onCloseRequested\"\n        >\n          <div\n            ref=\"drawerRef\"\n            aria-modal=\"true\"\n            :aria-label=\"title || undefined\"\n            :aria-labelledby=\"!title ? titleId : undefined\"\n            :aria-describedby=\"bodyId\"\n            v-bind=\"$attrs\"\n            :class=\"[\n              ns.b(),\n              direction,\n              visible && 'open',\n              ns.is('dragging', isResizing),\n            ]\"\n            :style=\"{ [isHorizontal ? 'width' : 'height']: size }\"\n            role=\"dialog\"\n            @click.stop\n          >\n            <span ref=\"focusStartRef\" :class=\"ns.e('sr-focus')\" tabindex=\"-1\" />\n            <header v-if=\"withHeader\" :class=\"[ns.e('header'), headerClass]\">\n              <template v-if=\"!$slots.title\">\n                <slot\n                  name=\"header\"\n                  :close=\"handleClose\"\n                  :title-id=\"titleId\"\n                  :title-class=\"ns.e('title')\"\n                >\n                  <span\n                    :id=\"titleId\"\n                    role=\"heading\"\n                    :aria-level=\"headerAriaLevel\"\n                    :class=\"ns.e('title')\"\n                  >\n                    {{ title }}\n                  </span>\n                </slot>\n              </template>\n              <template v-else>\n                <slot name=\"title\">\n                  <!-- DEPRECATED SLOT -->\n                </slot>\n              </template>\n              <button\n                v-if=\"showClose\"\n                :aria-label=\"t('el.drawer.close')\"\n                :class=\"ns.e('close-btn')\"\n                type=\"button\"\n                @click=\"handleClose\"\n              >\n                <el-icon :class=\"ns.e('close')\">\n                  <close />\n                </el-icon>\n              </button>\n            </header>\n            <template v-if=\"rendered\">\n              <div :id=\"bodyId\" :class=\"[ns.e('body'), bodyClass]\">\n                <slot />\n              </div>\n            </template>\n            <div v-if=\"$slots.footer\" :class=\"[ns.e('footer'), footerClass]\">\n              <slot name=\"footer\" />\n            </div>\n            <div\n              v-if=\"resizable\"\n              ref=\"draggerRef\"\n              :style=\"{ zIndex }\"\n              :class=\"ns.e('dragger')\"\n            />\n          </div>\n        </el-focus-trap>\n      </el-overlay>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, useSlots } from 'vue'\nimport { Close } from 'pit-element-icons'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport {\n  dialogPropsDefaults,\n  useDialog,\n} from '@pit-element-plus/components/dialog'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useDeprecated, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { drawerEmits } from './drawer'\nimport { useResizable } from './composables/useResizable'\n\nimport type { DrawerProps } from './drawer'\n\ndefineOptions({\n  name: 'ElDrawer',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DrawerProps>(), {\n  ...dialogPropsDefaults,\n  direction: 'rtl',\n  size: '30%',\n  withHeader: true,\n  modalFade: true,\n  headerAriaLevel: '2',\n})\nconst emit = defineEmits(drawerEmits)\nconst slots = useSlots()\n\nuseDeprecated(\n  {\n    scope: 'el-drawer',\n    from: 'the title slot',\n    replacement: 'the header slot',\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/drawer.html#slots',\n  },\n  computed(() => !!slots.title)\n)\n\nconst drawerRef = ref<HTMLElement>()\nconst focusStartRef = ref<HTMLElement>()\nconst draggerRef = ref<HTMLElement>()\nconst ns = useNamespace('drawer')\nconst { t } = useLocale()\n\nconst {\n  afterEnter,\n  afterLeave,\n  beforeLeave,\n  visible,\n  rendered,\n  titleId,\n  bodyId,\n  zIndex,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onFocusoutPrevented,\n  onCloseRequested,\n  handleClose,\n} = useDialog(props, drawerRef)\n\nconst { isHorizontal, size, isResizing } = useResizable(props, draggerRef, emit)\n\nconst penetrable = computed(() => props.modalPenetrable && !props.modal)\n\ndefineExpose({\n  handleClose,\n  /** @deprecated Will be removed after 2.14.0. */\n  afterEnter,\n  /** @deprecated Will be removed after 2.14.0. */\n  afterLeave,\n})\n</script>\n","<template>\n  <el-teleport\n    :to=\"appendTo\"\n    :disabled=\"appendTo !== 'body' ? false : !appendToBody\"\n  >\n    <transition\n      :name=\"ns.b('fade')\"\n      @after-enter=\"afterEnter\"\n      @after-leave=\"afterLeave\"\n      @before-leave=\"beforeLeave\"\n    >\n      <el-overlay\n        v-show=\"visible\"\n        :mask=\"modal\"\n        :overlay-class=\"[\n          ns.is('drawer'),\n          modalClass ?? '',\n          `${ns.namespace.value}-modal-drawer`,\n          ns.is('penetrable', penetrable),\n        ]\"\n        :z-index=\"zIndex\"\n        @click=\"onModalClick\"\n      >\n        <el-focus-trap\n          loop\n          :trapped=\"visible\"\n          :focus-trap-el=\"drawerRef\"\n          :focus-start-el=\"focusStartRef\"\n          @focus-after-trapped=\"onOpenAutoFocus\"\n          @focus-after-released=\"onCloseAutoFocus\"\n          @focusout-prevented=\"onFocusoutPrevented\"\n          @release-requested=\"onCloseRequested\"\n        >\n          <div\n            ref=\"drawerRef\"\n            aria-modal=\"true\"\n            :aria-label=\"title || undefined\"\n            :aria-labelledby=\"!title ? titleId : undefined\"\n            :aria-describedby=\"bodyId\"\n            v-bind=\"$attrs\"\n            :class=\"[\n              ns.b(),\n              direction,\n              visible && 'open',\n              ns.is('dragging', isResizing),\n            ]\"\n            :style=\"{ [isHorizontal ? 'width' : 'height']: size }\"\n            role=\"dialog\"\n            @click.stop\n          >\n            <span ref=\"focusStartRef\" :class=\"ns.e('sr-focus')\" tabindex=\"-1\" />\n            <header v-if=\"withHeader\" :class=\"[ns.e('header'), headerClass]\">\n              <template v-if=\"!$slots.title\">\n                <slot\n                  name=\"header\"\n                  :close=\"handleClose\"\n                  :title-id=\"titleId\"\n                  :title-class=\"ns.e('title')\"\n                >\n                  <span\n                    :id=\"titleId\"\n                    role=\"heading\"\n                    :aria-level=\"headerAriaLevel\"\n                    :class=\"ns.e('title')\"\n                  >\n                    {{ title }}\n                  </span>\n                </slot>\n              </template>\n              <template v-else>\n                <slot name=\"title\">\n                  <!-- DEPRECATED SLOT -->\n                </slot>\n              </template>\n              <button\n                v-if=\"showClose\"\n                :aria-label=\"t('el.drawer.close')\"\n                :class=\"ns.e('close-btn')\"\n                type=\"button\"\n                @click=\"handleClose\"\n              >\n                <el-icon :class=\"ns.e('close')\">\n                  <close />\n                </el-icon>\n              </button>\n            </header>\n            <template v-if=\"rendered\">\n              <div :id=\"bodyId\" :class=\"[ns.e('body'), bodyClass]\">\n                <slot />\n              </div>\n            </template>\n            <div v-if=\"$slots.footer\" :class=\"[ns.e('footer'), footerClass]\">\n              <slot name=\"footer\" />\n            </div>\n            <div\n              v-if=\"resizable\"\n              ref=\"draggerRef\"\n              :style=\"{ zIndex }\"\n              :class=\"ns.e('dragger')\"\n            />\n          </div>\n        </el-focus-trap>\n      </el-overlay>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, useSlots } from 'vue'\nimport { Close } from 'pit-element-icons'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport {\n  dialogPropsDefaults,\n  useDialog,\n} from '@pit-element-plus/components/dialog'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useDeprecated, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { drawerEmits } from './drawer'\nimport { useResizable } from './composables/useResizable'\n\nimport type { DrawerProps } from './drawer'\n\ndefineOptions({\n  name: 'ElDrawer',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DrawerProps>(), {\n  ...dialogPropsDefaults,\n  direction: 'rtl',\n  size: '30%',\n  withHeader: true,\n  modalFade: true,\n  headerAriaLevel: '2',\n})\nconst emit = defineEmits(drawerEmits)\nconst slots = useSlots()\n\nuseDeprecated(\n  {\n    scope: 'el-drawer',\n    from: 'the title slot',\n    replacement: 'the header slot',\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/drawer.html#slots',\n  },\n  computed(() => !!slots.title)\n)\n\nconst drawerRef = ref<HTMLElement>()\nconst focusStartRef = ref<HTMLElement>()\nconst draggerRef = ref<HTMLElement>()\nconst ns = useNamespace('drawer')\nconst { t } = useLocale()\n\nconst {\n  afterEnter,\n  afterLeave,\n  beforeLeave,\n  visible,\n  rendered,\n  titleId,\n  bodyId,\n  zIndex,\n  onModalClick,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n  onFocusoutPrevented,\n  onCloseRequested,\n  handleClose,\n} = useDialog(props, drawerRef)\n\nconst { isHorizontal, size, isResizing } = useResizable(props, draggerRef, emit)\n\nconst penetrable = computed(() => props.modalPenetrable && !props.modal)\n\ndefineExpose({\n  handleClose,\n  /** @deprecated Will be removed after 2.14.0. */\n  afterEnter,\n  /** @deprecated Will be removed after 2.14.0. */\n  afterLeave,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Drawer from './src/drawer.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElDrawer: SFCWithInstall<typeof Drawer> = withInstall(Drawer)\nexport default ElDrawer\n\nexport * from './src/drawer'\n","<template>\n  <slot />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n  inheritAttrs: false,\n})\n</script>\n","<template>\n  <slot />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n  inheritAttrs: false,\n})\n</script>\n","<template>\n  <slot />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n  name: 'ElCollectionItem',\n  inheritAttrs: false,\n})\n</script>\n","<template>\n  <slot />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n  name: 'ElCollectionItem',\n  inheritAttrs: false,\n})\n</script>\n","import { inject, onBeforeUnmount, onMounted, provide, ref, unref } from 'vue'\nimport Collection from './collection.vue'\nimport CollectionItem from './collection-item.vue'\n\nimport type { InjectionKey, SetupContext } from 'vue'\nimport type {\n  ElCollectionInjectionContext,\n  ElCollectionItemInjectionContext,\n} from './tokens'\n\nexport const COLLECTION_ITEM_SIGN = `data-el-collection-item`\n\n// Make sure the first letter of name is capitalized\nexport const createCollectionWithScope = (name: string) => {\n  const COLLECTION_NAME = `El${name}Collection`\n  const COLLECTION_ITEM_NAME = `${COLLECTION_NAME}Item`\n  const COLLECTION_INJECTION_KEY: InjectionKey<ElCollectionInjectionContext> =\n    Symbol(COLLECTION_NAME)\n  const COLLECTION_ITEM_INJECTION_KEY: InjectionKey<ElCollectionItemInjectionContext> =\n    Symbol(COLLECTION_ITEM_NAME)\n\n  const ElCollection = Object.assign({}, Collection, {\n    name: COLLECTION_NAME,\n    setup() {\n      const collectionRef = ref<HTMLElement>()\n      const itemMap: ElCollectionInjectionContext['itemMap'] = new Map()\n      const getItems = (() => {\n        const collectionEl = unref(collectionRef)\n\n        if (!collectionEl) return []\n        const orderedNodes = Array.from(\n          collectionEl.querySelectorAll(`[${COLLECTION_ITEM_SIGN}]`)\n        )\n\n        const items = [...itemMap.values()]\n\n        return items.sort(\n          (a, b) => orderedNodes.indexOf(a.ref!) - orderedNodes.indexOf(b.ref!)\n        )\n      }) as ElCollectionInjectionContext['getItems']\n\n      provide(COLLECTION_INJECTION_KEY, {\n        itemMap,\n        getItems,\n        collectionRef,\n      })\n    },\n  })\n\n  const ElCollectionItem = Object.assign({}, CollectionItem, {\n    name: COLLECTION_ITEM_NAME,\n    setup(_: unknown, { attrs }: SetupContext) {\n      const collectionItemRef = ref<HTMLElement>()\n      const collectionInjection = inject(COLLECTION_INJECTION_KEY, undefined)!\n\n      provide(COLLECTION_ITEM_INJECTION_KEY, {\n        collectionItemRef,\n      })\n\n      onMounted(() => {\n        const collectionItemEl = unref(collectionItemRef)\n        if (collectionItemEl) {\n          collectionInjection.itemMap.set(collectionItemEl, {\n            ref: collectionItemEl,\n            ...attrs,\n          })\n        }\n      })\n\n      onBeforeUnmount(() => {\n        const collectionItemEl = unref(collectionItemRef)!\n        collectionInjection.itemMap.delete(collectionItemEl)\n      })\n    },\n  })\n\n  return {\n    COLLECTION_INJECTION_KEY,\n    COLLECTION_ITEM_INJECTION_KEY,\n    ElCollection,\n    ElCollectionItem,\n  }\n}\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { createCollectionWithScope } from '@pit-element-plus/components/collection'\n\nimport type {\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n  HTMLAttributes,\n  StyleValue,\n} from 'vue'\n\nexport const rovingFocusGroupProps = buildProps({\n  style: { type: definePropType<StyleValue>([String, Array, Object]) },\n  currentTabId: {\n    type: definePropType<string | null>(String),\n  },\n  defaultCurrentTabId: String,\n  loop: Boolean,\n  dir: {\n    type: String, // left for direction support\n    values: ['ltr', 'rtl'],\n    default: 'ltr',\n  },\n  orientation: {\n    // left for orientation support\n    type: definePropType<HTMLAttributes['aria-orientation']>(String),\n  },\n\n  onBlur: Function,\n  onFocus: Function,\n  onMousedown: Function,\n})\n\nexport type ElRovingFocusGroupProps = ExtractPropTypes<\n  typeof rovingFocusGroupProps\n>\n\nexport type ElRovingFocusGroupPropsPublic = ExtractPublicPropTypes<\n  typeof rovingFocusGroupProps\n>\n\nconst {\n  ElCollection,\n  ElCollectionItem,\n  COLLECTION_INJECTION_KEY,\n  COLLECTION_ITEM_INJECTION_KEY,\n} = createCollectionWithScope('RovingFocusGroup')\n\nexport {\n  ElCollection,\n  ElCollectionItem,\n  COLLECTION_INJECTION_KEY as ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n  COLLECTION_ITEM_INJECTION_KEY as ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY,\n}\n","import type { InjectionKey, Ref, StyleValue } from 'vue'\nimport type { ElRovingFocusGroupProps } from './roving-focus-group'\n\ntype EventHandler<T = Event> = (e: T) => void\n\nexport type RovingGroupInjectionContext = {\n  currentTabbedId: Ref<string | null>\n  dir: Ref<ElRovingFocusGroupProps['dir']>\n  loop: Ref<ElRovingFocusGroupProps['loop']>\n  orientation: Ref<ElRovingFocusGroupProps['orientation']>\n  tabIndex: Ref<number>\n  rovingFocusGroupRef: Ref<HTMLElement | undefined>\n  rovingFocusGroupRootStyle: Ref<StyleValue>\n  onBlur: EventHandler\n  onFocus: EventHandler<FocusEvent>\n  onMousedown: EventHandler\n  onItemFocus: (id: string) => void\n  onItemShiftTab: () => void\n  onKeydown: EventHandler<KeyboardEvent>\n}\n\nexport type RovingFocusGroupItemInjectionContext = {\n  rovingFocusGroupItemRef: Ref<HTMLElement | undefined>\n  tabIndex: Ref<number>\n  handleMousedown: EventHandler\n  handleFocus: EventHandler\n  handleKeydown: EventHandler\n}\n\nexport const ROVING_FOCUS_GROUP_INJECTION_KEY: InjectionKey<RovingGroupInjectionContext> =\n  Symbol('elRovingFocusGroup')\n\nexport const ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY: InjectionKey<RovingFocusGroupItemInjectionContext> =\n  Symbol('elRovingFocusGroupItem')\n","import { EVENT_CODE } from '@pit-element-plus/constants'\nimport { getEventCode } from '@pit-element-plus/utils'\n\nimport type { HTMLAttributes } from 'vue'\n\ntype Orientation = HTMLAttributes['aria-orientation']\ntype Direction = 'ltr' | 'rtl'\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next'\n\nconst MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n  ArrowLeft: 'prev',\n  ArrowUp: 'prev',\n  ArrowRight: 'next',\n  ArrowDown: 'next',\n  PageUp: 'first',\n  Home: 'first',\n  PageDown: 'last',\n  End: 'last',\n}\n\nconst getDirectionAwareKey = (key: string, dir?: Direction) => {\n  if (dir !== 'rtl') return key\n\n  switch (key) {\n    case EVENT_CODE.right:\n      return EVENT_CODE.left\n    case EVENT_CODE.left:\n      return EVENT_CODE.right\n    default:\n      return key\n  }\n}\n\nexport const getFocusIntent = (\n  event: KeyboardEvent,\n  orientation?: Orientation,\n  dir?: Direction\n) => {\n  const code = getEventCode(event)\n  const key = getDirectionAwareKey(code, dir)\n  if (\n    orientation === 'vertical' &&\n    [EVENT_CODE.left, EVENT_CODE.right].includes(key)\n  )\n    return undefined\n  if (\n    orientation === 'horizontal' &&\n    [EVENT_CODE.up, EVENT_CODE.down].includes(key)\n  )\n    return undefined\n  return MAP_KEY_TO_FOCUS_INTENT[key]\n}\n\nexport const reorderArray = <T>(array: T[], atIdx: number) => {\n  return array.map((_, idx) => array[(idx + atIdx) % array.length])\n}\n\nexport const focusFirst = (elements: HTMLElement[]) => {\n  const { activeElement: prevActive } = document\n\n  for (const element of elements) {\n    if (element === prevActive) return\n    element.focus()\n    if (prevActive !== document.activeElement) return\n  }\n}\n","<template>\n  <slot />\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  provide,\n  readonly,\n  ref,\n  toRef,\n  unref,\n  watch,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { composeEventHandlers } from '@pit-element-plus/utils'\nimport {\n  ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n  rovingFocusGroupProps,\n} from './roving-focus-group'\nimport { ROVING_FOCUS_GROUP_INJECTION_KEY } from './tokens'\nimport { focusFirst, getFocusIntent, reorderArray } from './utils'\n\nimport type { StyleValue } from 'vue'\n\nconst CURRENT_TAB_ID_CHANGE_EVT = 'currentTabIdChange'\nconst ENTRY_FOCUS_EVT = 'rovingFocusGroup.entryFocus'\nconst EVT_OPTS: EventInit = { bubbles: false, cancelable: true }\n\nexport default defineComponent({\n  name: 'ElRovingFocusGroupImpl',\n  inheritAttrs: false,\n  props: rovingFocusGroupProps,\n  emits: [CURRENT_TAB_ID_CHANGE_EVT, 'entryFocus'],\n  setup(props, { emit }) {\n    const currentTabbedId = ref<string | null>(\n      (props.currentTabId || props.defaultCurrentTabId) ?? null\n    )\n    const isBackingOut = ref(false)\n    const isClickFocus = ref(false)\n    const rovingFocusGroupRef = ref<HTMLElement>()\n    const { getItems } = inject(\n      ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n      undefined\n    )!\n    const rovingFocusGroupRootStyle = computed(() => {\n      // casting to any for fix compiler error since HTMLElement.StyleValue does not\n      // support CSSProperties\n      return [\n        {\n          outline: 'none',\n        },\n        props.style as StyleValue,\n      ] as any\n    })\n\n    const onItemFocus = (tabbedId: string) => {\n      emit(CURRENT_TAB_ID_CHANGE_EVT, tabbedId)\n    }\n\n    const onItemShiftTab = () => {\n      isBackingOut.value = true\n    }\n\n    const onMousedown = composeEventHandlers(\n      (e: Event) => {\n        props.onMousedown?.(e)\n      },\n      () => {\n        isClickFocus.value = true\n      }\n    )\n\n    const onFocus = composeEventHandlers(\n      (e: FocusEvent) => {\n        props.onFocus?.(e)\n      },\n      (e) => {\n        const isKeyboardFocus = !unref(isClickFocus)\n        const { target, currentTarget } = e\n        if (\n          target === currentTarget &&\n          isKeyboardFocus &&\n          !unref(isBackingOut)\n        ) {\n          const entryFocusEvt = new Event(ENTRY_FOCUS_EVT, EVT_OPTS)\n          currentTarget?.dispatchEvent(entryFocusEvt)\n\n          if (!entryFocusEvt.defaultPrevented) {\n            const items = getItems<{\n              id: string\n              focusable: boolean\n              active: boolean\n            }>().filter((item) => item.focusable)\n            const activeItem = items.find((item) => item.active)\n            const currentItem = items.find(\n              (item) => item.id === unref(currentTabbedId)\n            )\n            const candidates = [activeItem!, currentItem!, ...items].filter(\n              Boolean\n            )\n            const candidateNodes = candidates.map((item) => item.ref!)\n            focusFirst(candidateNodes)\n          }\n        }\n\n        isClickFocus.value = false\n      }\n    )\n\n    const onBlur = composeEventHandlers(\n      (e: Event) => {\n        props.onBlur?.(e)\n      },\n      () => {\n        isBackingOut.value = false\n      }\n    )\n\n    const handleEntryFocus = (...args: any[]) => {\n      emit('entryFocus', ...args)\n    }\n\n    const onKeydown = (e: KeyboardEvent) => {\n      const focusIntent = getFocusIntent(e as KeyboardEvent)\n\n      if (focusIntent) {\n        e.preventDefault()\n        const items = getItems<{\n          id: string\n          focusable: boolean\n          active: boolean\n        }>().filter((item) => item.focusable)\n\n        let elements = items.map((item) => item.ref!)\n\n        switch (focusIntent) {\n          case 'last': {\n            elements.reverse()\n            break\n          }\n          case 'prev':\n          case 'next': {\n            if (focusIntent === 'prev') {\n              elements.reverse()\n            }\n            const currentIdx = elements.indexOf(e.currentTarget as HTMLElement)\n            elements = props.loop\n              ? reorderArray(elements, currentIdx + 1)\n              : elements.slice(currentIdx + 1)\n            break\n          }\n          default: {\n            break\n          }\n        }\n\n        nextTick(() => {\n          focusFirst(elements)\n        })\n      }\n    }\n\n    provide(ROVING_FOCUS_GROUP_INJECTION_KEY, {\n      currentTabbedId: readonly(currentTabbedId),\n      loop: toRef(props, 'loop'),\n      tabIndex: computed(() => {\n        return unref(isBackingOut) ? -1 : 0\n      }),\n      rovingFocusGroupRef,\n      rovingFocusGroupRootStyle,\n      orientation: toRef(props, 'orientation'),\n      dir: toRef(props, 'dir'),\n      onItemFocus,\n      onItemShiftTab,\n      onBlur,\n      onFocus,\n      onMousedown,\n      onKeydown,\n    })\n\n    watch(\n      () => props.currentTabId,\n      (val) => {\n        currentTabbedId.value = val ?? null\n      }\n    )\n\n    useEventListener(rovingFocusGroupRef, ENTRY_FOCUS_EVT, handleEntryFocus)\n  },\n})\n</script>\n","<template>\n  <slot />\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  provide,\n  readonly,\n  ref,\n  toRef,\n  unref,\n  watch,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { composeEventHandlers } from '@pit-element-plus/utils'\nimport {\n  ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n  rovingFocusGroupProps,\n} from './roving-focus-group'\nimport { ROVING_FOCUS_GROUP_INJECTION_KEY } from './tokens'\nimport { focusFirst, getFocusIntent, reorderArray } from './utils'\n\nimport type { StyleValue } from 'vue'\n\nconst CURRENT_TAB_ID_CHANGE_EVT = 'currentTabIdChange'\nconst ENTRY_FOCUS_EVT = 'rovingFocusGroup.entryFocus'\nconst EVT_OPTS: EventInit = { bubbles: false, cancelable: true }\n\nexport default defineComponent({\n  name: 'ElRovingFocusGroupImpl',\n  inheritAttrs: false,\n  props: rovingFocusGroupProps,\n  emits: [CURRENT_TAB_ID_CHANGE_EVT, 'entryFocus'],\n  setup(props, { emit }) {\n    const currentTabbedId = ref<string | null>(\n      (props.currentTabId || props.defaultCurrentTabId) ?? null\n    )\n    const isBackingOut = ref(false)\n    const isClickFocus = ref(false)\n    const rovingFocusGroupRef = ref<HTMLElement>()\n    const { getItems } = inject(\n      ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n      undefined\n    )!\n    const rovingFocusGroupRootStyle = computed(() => {\n      // casting to any for fix compiler error since HTMLElement.StyleValue does not\n      // support CSSProperties\n      return [\n        {\n          outline: 'none',\n        },\n        props.style as StyleValue,\n      ] as any\n    })\n\n    const onItemFocus = (tabbedId: string) => {\n      emit(CURRENT_TAB_ID_CHANGE_EVT, tabbedId)\n    }\n\n    const onItemShiftTab = () => {\n      isBackingOut.value = true\n    }\n\n    const onMousedown = composeEventHandlers(\n      (e: Event) => {\n        props.onMousedown?.(e)\n      },\n      () => {\n        isClickFocus.value = true\n      }\n    )\n\n    const onFocus = composeEventHandlers(\n      (e: FocusEvent) => {\n        props.onFocus?.(e)\n      },\n      (e) => {\n        const isKeyboardFocus = !unref(isClickFocus)\n        const { target, currentTarget } = e\n        if (\n          target === currentTarget &&\n          isKeyboardFocus &&\n          !unref(isBackingOut)\n        ) {\n          const entryFocusEvt = new Event(ENTRY_FOCUS_EVT, EVT_OPTS)\n          currentTarget?.dispatchEvent(entryFocusEvt)\n\n          if (!entryFocusEvt.defaultPrevented) {\n            const items = getItems<{\n              id: string\n              focusable: boolean\n              active: boolean\n            }>().filter((item) => item.focusable)\n            const activeItem = items.find((item) => item.active)\n            const currentItem = items.find(\n              (item) => item.id === unref(currentTabbedId)\n            )\n            const candidates = [activeItem!, currentItem!, ...items].filter(\n              Boolean\n            )\n            const candidateNodes = candidates.map((item) => item.ref!)\n            focusFirst(candidateNodes)\n          }\n        }\n\n        isClickFocus.value = false\n      }\n    )\n\n    const onBlur = composeEventHandlers(\n      (e: Event) => {\n        props.onBlur?.(e)\n      },\n      () => {\n        isBackingOut.value = false\n      }\n    )\n\n    const handleEntryFocus = (...args: any[]) => {\n      emit('entryFocus', ...args)\n    }\n\n    const onKeydown = (e: KeyboardEvent) => {\n      const focusIntent = getFocusIntent(e as KeyboardEvent)\n\n      if (focusIntent) {\n        e.preventDefault()\n        const items = getItems<{\n          id: string\n          focusable: boolean\n          active: boolean\n        }>().filter((item) => item.focusable)\n\n        let elements = items.map((item) => item.ref!)\n\n        switch (focusIntent) {\n          case 'last': {\n            elements.reverse()\n            break\n          }\n          case 'prev':\n          case 'next': {\n            if (focusIntent === 'prev') {\n              elements.reverse()\n            }\n            const currentIdx = elements.indexOf(e.currentTarget as HTMLElement)\n            elements = props.loop\n              ? reorderArray(elements, currentIdx + 1)\n              : elements.slice(currentIdx + 1)\n            break\n          }\n          default: {\n            break\n          }\n        }\n\n        nextTick(() => {\n          focusFirst(elements)\n        })\n      }\n    }\n\n    provide(ROVING_FOCUS_GROUP_INJECTION_KEY, {\n      currentTabbedId: readonly(currentTabbedId),\n      loop: toRef(props, 'loop'),\n      tabIndex: computed(() => {\n        return unref(isBackingOut) ? -1 : 0\n      }),\n      rovingFocusGroupRef,\n      rovingFocusGroupRootStyle,\n      orientation: toRef(props, 'orientation'),\n      dir: toRef(props, 'dir'),\n      onItemFocus,\n      onItemShiftTab,\n      onBlur,\n      onFocus,\n      onMousedown,\n      onKeydown,\n    })\n\n    watch(\n      () => props.currentTabId,\n      (val) => {\n        currentTabbedId.value = val ?? null\n      }\n    )\n\n    useEventListener(rovingFocusGroupRef, ENTRY_FOCUS_EVT, handleEntryFocus)\n  },\n})\n</script>\n","<template>\n  <el-focus-group-collection>\n    <el-roving-focus-group-impl v-bind=\"$attrs\">\n      <slot />\n    </el-roving-focus-group-impl>\n  </el-focus-group-collection>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport ElRovingFocusGroupImpl from './roving-focus-group-impl.vue'\nimport { ElCollection as ElFocusGroupCollection } from './roving-focus-group'\n\nexport default defineComponent({\n  name: 'ElRovingFocusGroup',\n  components: {\n    ElFocusGroupCollection,\n    ElRovingFocusGroupImpl,\n  },\n})\n</script>\n","<template>\n  <el-focus-group-collection>\n    <el-roving-focus-group-impl v-bind=\"$attrs\">\n      <slot />\n    </el-roving-focus-group-impl>\n  </el-focus-group-collection>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport ElRovingFocusGroupImpl from './roving-focus-group-impl.vue'\nimport { ElCollection as ElFocusGroupCollection } from './roving-focus-group'\n\nexport default defineComponent({\n  name: 'ElRovingFocusGroup',\n  components: {\n    ElFocusGroupCollection,\n    ElRovingFocusGroupImpl,\n  },\n})\n</script>\n","<template>\n  <el-roving-focus-collection-item\n    :id=\"id\"\n    :focusable=\"focusable\"\n    :active=\"active\"\n  >\n    <slot />\n  </el-roving-focus-collection-item>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, provide, ref, unref } from 'vue'\nimport { useId } from '@pit-element-plus/hooks'\nimport { composeEventHandlers, getEventCode } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { ElCollectionItem as ElRovingFocusCollectionItem } from './roving-focus-group'\nimport {\n  ROVING_FOCUS_GROUP_INJECTION_KEY,\n  ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY,\n} from './tokens'\n\nexport default defineComponent({\n  components: {\n    ElRovingFocusCollectionItem,\n  },\n  props: {\n    focusable: {\n      type: Boolean,\n      default: true,\n    },\n    active: Boolean,\n  },\n  emits: ['mousedown', 'focus', 'keydown'],\n  setup(props, { emit }) {\n    const { currentTabbedId, onItemFocus, onItemShiftTab, onKeydown } = inject(\n      ROVING_FOCUS_GROUP_INJECTION_KEY,\n      undefined\n    )!\n\n    const id = useId()\n    const rovingFocusGroupItemRef = ref<HTMLElement>()\n\n    const handleMousedown = composeEventHandlers(\n      (e: Event) => {\n        emit('mousedown', e)\n      },\n      (e) => {\n        if (!props.focusable) {\n          e.preventDefault()\n        } else {\n          onItemFocus(unref(id))\n        }\n      }\n    )\n\n    const handleFocus = composeEventHandlers(\n      (e: Event) => {\n        emit('focus', e)\n      },\n      () => {\n        onItemFocus(unref(id))\n      }\n    )\n\n    const handleKeydown = composeEventHandlers(\n      (e: Event) => {\n        emit('keydown', e)\n      },\n      (e) => {\n        const { shiftKey, target, currentTarget } = e as KeyboardEvent\n        const code = getEventCode(e as KeyboardEvent)\n\n        if (code === EVENT_CODE.tab && shiftKey) {\n          onItemShiftTab()\n          return\n        }\n        if (target !== currentTarget) return\n        onKeydown(e as KeyboardEvent)\n      }\n    )\n\n    const isCurrentTab = computed(() => currentTabbedId.value === unref(id))\n\n    provide(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, {\n      rovingFocusGroupItemRef,\n      tabIndex: computed(() => (unref(isCurrentTab) ? 0 : -1)),\n      handleMousedown,\n      handleFocus,\n      handleKeydown,\n    })\n\n    return {\n      id,\n      handleKeydown,\n      handleFocus,\n      handleMousedown,\n    }\n  },\n})\n</script>\n","<template>\n  <el-roving-focus-collection-item\n    :id=\"id\"\n    :focusable=\"focusable\"\n    :active=\"active\"\n  >\n    <slot />\n  </el-roving-focus-collection-item>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, provide, ref, unref } from 'vue'\nimport { useId } from '@pit-element-plus/hooks'\nimport { composeEventHandlers, getEventCode } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { ElCollectionItem as ElRovingFocusCollectionItem } from './roving-focus-group'\nimport {\n  ROVING_FOCUS_GROUP_INJECTION_KEY,\n  ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY,\n} from './tokens'\n\nexport default defineComponent({\n  components: {\n    ElRovingFocusCollectionItem,\n  },\n  props: {\n    focusable: {\n      type: Boolean,\n      default: true,\n    },\n    active: Boolean,\n  },\n  emits: ['mousedown', 'focus', 'keydown'],\n  setup(props, { emit }) {\n    const { currentTabbedId, onItemFocus, onItemShiftTab, onKeydown } = inject(\n      ROVING_FOCUS_GROUP_INJECTION_KEY,\n      undefined\n    )!\n\n    const id = useId()\n    const rovingFocusGroupItemRef = ref<HTMLElement>()\n\n    const handleMousedown = composeEventHandlers(\n      (e: Event) => {\n        emit('mousedown', e)\n      },\n      (e) => {\n        if (!props.focusable) {\n          e.preventDefault()\n        } else {\n          onItemFocus(unref(id))\n        }\n      }\n    )\n\n    const handleFocus = composeEventHandlers(\n      (e: Event) => {\n        emit('focus', e)\n      },\n      () => {\n        onItemFocus(unref(id))\n      }\n    )\n\n    const handleKeydown = composeEventHandlers(\n      (e: Event) => {\n        emit('keydown', e)\n      },\n      (e) => {\n        const { shiftKey, target, currentTarget } = e as KeyboardEvent\n        const code = getEventCode(e as KeyboardEvent)\n\n        if (code === EVENT_CODE.tab && shiftKey) {\n          onItemShiftTab()\n          return\n        }\n        if (target !== currentTarget) return\n        onKeydown(e as KeyboardEvent)\n      }\n    )\n\n    const isCurrentTab = computed(() => currentTabbedId.value === unref(id))\n\n    provide(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, {\n      rovingFocusGroupItemRef,\n      tabIndex: computed(() => (unref(isCurrentTab) ? 0 : -1)),\n      handleMousedown,\n      handleFocus,\n      handleKeydown,\n    })\n\n    return {\n      id,\n      handleKeydown,\n      handleFocus,\n      handleMousedown,\n    }\n  },\n})\n</script>\n","// This component is ported from https://github.com/radix-ui/primitives/tree/main/packages/react/roving-focus\n// with some modification for Vue\nimport ElRovingFocusGroup from './src/roving-focus-group.vue'\nimport ElRovingFocusItem from './src/roving-focus-item.vue'\n\nexport { ElRovingFocusGroup, ElRovingFocusItem }\n\nexport * from './src/tokens'\nexport * from './src/utils'\n\nexport {\n  ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n  ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY,\n} from './src/roving-focus-group'\n\nexport default ElRovingFocusGroup\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport {\n  useTooltipContentProps,\n  useTooltipTriggerProps,\n} from '@pit-element-plus/components/tooltip'\nimport { roleTypes } from '@pit-element-plus/components/popper'\n\nimport type { TooltipTriggerType } from '@pit-element-plus/components/tooltip'\nimport type { Placement } from '@pit-element-plus/components/popper'\nimport type { Options } from '@popperjs/core'\nimport type {\n  ButtonProps,\n  ButtonType,\n} from '@pit-element-plus/components/button'\nimport type { ComponentInternalInstance, ComputedRef } from 'vue'\nimport type { Arrayable, Nullable } from '@pit-element-plus/utils'\n\nexport interface IElDropdownInstance {\n  instance?: ComponentInternalInstance\n  dropdownSize?: ComputedRef<string>\n  handleClick?: () => void\n  commandHandler?: (...arg: any[]) => void\n  show?: () => void\n  hide?: () => void\n  trigger?: ComputedRef<string>\n  hideOnClick?: ComputedRef<boolean>\n  triggerElm?: ComputedRef<Nullable<HTMLButtonElement>>\n}\n\nexport const dropdownProps = buildProps({\n  /**\n   * @description how to trigger\n   */\n  trigger: {\n    ...useTooltipTriggerProps.trigger,\n    type: definePropType<Arrayable<Exclude<TooltipTriggerType, 'focus'>>>([\n      String,\n      Array,\n    ]),\n  },\n  triggerKeys: {\n    type: definePropType<string[]>(Array),\n    default: () => [\n      EVENT_CODE.enter,\n      EVENT_CODE.numpadEnter,\n      EVENT_CODE.space,\n      EVENT_CODE.down,\n    ],\n  },\n  /**\n   * @description Indicates whether virtual triggering is enabled\n   */\n  virtualTriggering: useTooltipTriggerProps.virtualTriggering,\n  /**\n   * @description Indicates the reference element to which the dropdown is attached\n   */\n  virtualRef: useTooltipTriggerProps.virtualRef,\n  /**\n   * @description Tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    ...useTooltipContentProps.effect,\n    default: 'light',\n  },\n  /**\n   * @description menu button type, refer to `Button` Component, only works when `split-button` is true\n   */\n  type: {\n    type: definePropType<ButtonType>(String),\n  },\n  /**\n   * @description placement of pop menu\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    default: 'bottom',\n  },\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions: {\n    type: definePropType<Partial<Options>>(Object),\n    default: () => ({}),\n  },\n  id: String,\n  /**\n   * @description menu size, also works on the split button\n   */\n  size: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description whether a button group is displayed\n   */\n  splitButton: Boolean,\n  /**\n   * @description whether to hide menu after clicking menu-item\n   */\n  hideOnClick: {\n    type: Boolean,\n    default: true,\n  },\n  loop: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether the tooltip content has an arrow\n   */\n  showArrow: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description delay time before show a dropdown (only works when trigger is `hover`)\n   */\n  showTimeout: {\n    type: Number,\n    default: 150,\n  },\n  /**\n   * @description delay time before hide a dropdown (only works when trigger is `hover`)\n   */\n  hideTimeout: {\n    type: Number,\n    default: 150,\n  },\n  /**\n   * @description [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of Dropdown\n   */\n  tabindex: {\n    type: definePropType<number | string>([Number, String]),\n    default: 0,\n  },\n  /**\n   * @description the max height of menu\n   */\n  maxHeight: {\n    type: definePropType<number | string>([Number, String]),\n    default: '',\n  },\n  /**\n   * @description custom class name for Dropdown's dropdown\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  /**\n   * @description custom style for Dropdown's dropdown\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description whether to disable\n   */\n  disabled: Boolean,\n  /**\n   * @description the ARIA role attribute for the dropdown menu. Depending on the use case, you may want to change this to 'navigation'\n   */\n  role: {\n    type: String,\n    values: roleTypes,\n    default: 'menu',\n  },\n  buttonProps: {\n    type: definePropType<Partial<ButtonProps>>(Object),\n  },\n  /**\n   * @description whether the dropdown popup is teleported to the body\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description which element the dropdown CONTENT appends to\n   */\n  appendTo: useTooltipContentProps.appendTo,\n  /**\n   * @description when dropdown inactive and `persistent` is `false` , dropdown menu will be destroyed\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\nexport const dropdownItemProps = buildProps({\n  /**\n   * @description a command to be dispatched to Dropdown's `command` callback\n   */\n  command: {\n    type: [Object, String, Number],\n    default: () => ({}),\n  },\n  /**\n   * @description whether the item is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description whether a divider is displayed\n   */\n  divided: Boolean,\n  textValue: String,\n  /**\n   * @description custom icon\n   */\n  icon: {\n    type: iconPropType,\n  },\n} as const)\n\nexport const dropdownMenuProps = buildProps({\n  onKeydown: { type: definePropType<(e: KeyboardEvent) => void>(Function) },\n})\n\nexport const FIRST_KEYS = [\n  EVENT_CODE.down,\n  EVENT_CODE.pageDown,\n  EVENT_CODE.home,\n]\n\nexport const LAST_KEYS = [EVENT_CODE.up, EVENT_CODE.pageUp, EVENT_CODE.end]\n\nexport const FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS]\n","import type { PopperProps } from '@pit-element-plus/components/popper'\nimport type { ComputedRef, InjectionKey, Ref } from 'vue'\n\nexport type ElDropdownInjectionContext = {\n  contentRef: Ref<HTMLElement | undefined>\n  role: ComputedRef<PopperProps['role']>\n  triggerId: ComputedRef<string>\n  isUsingKeyboard: Ref<boolean>\n  onItemLeave: (e: PointerEvent) => void\n  onItemEnter: (e: PointerEvent) => void\n  handleClose: () => void\n}\n\nexport const DROPDOWN_INJECTION_KEY: InjectionKey<ElDropdownInjectionContext> =\n  Symbol('elDropdown')\n\nexport const DROPDOWN_INSTANCE_INJECTION_KEY = 'elDropdown'\n","<template>\n  <div :class=\"[ns.b(), ns.is('disabled', disabled)]\">\n    <el-tooltip\n      ref=\"popperRef\"\n      :role=\"role\"\n      :effect=\"effect\"\n      :fallback-placements=\"['bottom', 'top']\"\n      :popper-options=\"popperOptions\"\n      :gpu-acceleration=\"false\"\n      :placement=\"placement\"\n      :popper-class=\"[ns.e('popper'), popperClass!]\"\n      :popper-style=\"popperStyle\"\n      :trigger=\"trigger\"\n      :trigger-keys=\"triggerKeys\"\n      :trigger-target-el=\"contentRef\"\n      :show-arrow=\"showArrow\"\n      :show-after=\"trigger === 'hover' ? showTimeout : 0\"\n      :hide-after=\"trigger === 'hover' ? hideTimeout : 0\"\n      :virtual-ref=\"virtualRef ?? triggeringElementRef\"\n      :virtual-triggering=\"virtualTriggering || splitButton\"\n      :disabled=\"disabled\"\n      :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n      :teleported=\"teleported\"\n      :append-to=\"appendTo\"\n      pure\n      focus-on-target\n      :persistent=\"persistent\"\n      @before-show=\"handleBeforeShowTooltip\"\n      @show=\"handleShowTooltip\"\n      @before-hide=\"handleBeforeHideTooltip\"\n    >\n      <template #content>\n        <el-scrollbar\n          ref=\"scrollbar\"\n          :wrap-style=\"wrapStyle\"\n          tag=\"div\"\n          :view-class=\"ns.e('list')\"\n        >\n          <el-roving-focus-group\n            :loop=\"loop\"\n            :current-tab-id=\"currentTabId\"\n            orientation=\"horizontal\"\n            @current-tab-id-change=\"handleCurrentTabIdChange\"\n          >\n            <slot name=\"dropdown\" />\n          </el-roving-focus-group>\n        </el-scrollbar>\n      </template>\n      <template v-if=\"!splitButton\" #default>\n        <el-only-child\n          :id=\"triggerId\"\n          ref=\"triggeringElementRef\"\n          role=\"button\"\n          :tabindex=\"tabindex\"\n        >\n          <slot name=\"default\" />\n        </el-only-child>\n      </template>\n    </el-tooltip>\n    <template v-if=\"splitButton\">\n      <el-button-group>\n        <el-button\n          ref=\"referenceElementRef\"\n          v-bind=\"buttonProps\"\n          :size=\"dropdownSize\"\n          :type=\"type\"\n          :disabled=\"disabled\"\n          :tabindex=\"tabindex\"\n          @click=\"handlerMainButtonClick\"\n        >\n          <slot name=\"default\" />\n        </el-button>\n        <el-button\n          :id=\"triggerId\"\n          ref=\"triggeringElementRef\"\n          v-bind=\"buttonProps\"\n          role=\"button\"\n          :size=\"dropdownSize\"\n          :type=\"type\"\n          :class=\"ns.e('caret-button')\"\n          :disabled=\"disabled\"\n          :tabindex=\"tabindex\"\n          :aria-label=\"t('el.dropdown.toggleDropdown')\"\n        >\n          <el-icon :class=\"ns.e('icon')\"><arrow-down /></el-icon>\n        </el-button>\n      </el-button-group>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  provide,\n  ref,\n  toRef,\n  unref,\n} from 'vue'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElRovingFocusGroup from '@pit-element-plus/components/roving-focus-group'\nimport { ElOnlyChild } from '@pit-element-plus/components/slot'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport { addUnit, ensureArray } from '@pit-element-plus/utils'\nimport { ArrowDown } from 'pit-element-icons'\nimport { useId, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { dropdownProps } from './dropdown'\nimport {\n  DROPDOWN_INJECTION_KEY,\n  DROPDOWN_INSTANCE_INJECTION_KEY,\n} from './tokens'\n\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { CSSProperties } from 'vue'\n\nconst { ButtonGroup: ElButtonGroup } = ElButton\n\nexport default defineComponent({\n  name: 'ElDropdown',\n  components: {\n    ElButton,\n    ElButtonGroup,\n    ElScrollbar,\n    ElTooltip,\n    ElRovingFocusGroup,\n    ElOnlyChild,\n    ElIcon,\n    ArrowDown,\n  },\n  props: dropdownProps,\n  emits: ['visible-change', 'click', 'command'],\n  setup(props, { emit }) {\n    const _instance = getCurrentInstance()\n    const ns = useNamespace('dropdown')\n    const { t } = useLocale()\n\n    const triggeringElementRef = ref()\n    const referenceElementRef = ref()\n    const popperRef = ref<TooltipInstance>()\n    const contentRef = ref<HTMLElement>()\n    const scrollbar = ref(null)\n    const currentTabId = ref<string | null>(null)\n    const isUsingKeyboard = ref(false)\n\n    const wrapStyle = computed<CSSProperties>(() => ({\n      maxHeight: addUnit(props.maxHeight),\n    }))\n    const dropdownTriggerKls = computed(() => [ns.m(dropdownSize.value)])\n    const trigger = computed(() => ensureArray(props.trigger))\n\n    const defaultTriggerId = useId().value\n    const triggerId = computed<string>(() => props.id || defaultTriggerId)\n\n    function handleClick() {\n      popperRef.value?.onClose(undefined, 0)\n    }\n\n    function handleClose() {\n      popperRef.value?.onClose()\n    }\n\n    function handleOpen() {\n      popperRef.value?.onOpen()\n    }\n\n    const dropdownSize = useFormSize()\n\n    function commandHandler(...args: any[]) {\n      emit('command', ...args)\n    }\n\n    function onItemEnter() {\n      // NOOP for now\n    }\n\n    function onItemLeave() {\n      const contentEl = unref(contentRef)\n\n      trigger.value.includes('hover') &&\n        contentEl?.focus({\n          preventScroll: true,\n        })\n      currentTabId.value = null\n    }\n\n    function handleCurrentTabIdChange(id: string) {\n      currentTabId.value = id\n    }\n\n    function handleBeforeShowTooltip() {\n      emit('visible-change', true)\n    }\n\n    function handleShowTooltip(event?: Event) {\n      isUsingKeyboard.value = event?.type === 'keydown'\n      contentRef.value?.focus()\n    }\n\n    function handleBeforeHideTooltip() {\n      emit('visible-change', false)\n    }\n\n    provide(DROPDOWN_INJECTION_KEY, {\n      contentRef,\n      role: computed(() => props.role),\n      triggerId,\n      isUsingKeyboard,\n      onItemEnter,\n      onItemLeave,\n      handleClose,\n    })\n\n    provide(DROPDOWN_INSTANCE_INJECTION_KEY, {\n      instance: _instance,\n      dropdownSize,\n      handleClick,\n      commandHandler,\n      trigger: toRef(props, 'trigger'),\n      hideOnClick: toRef(props, 'hideOnClick'),\n    })\n\n    const handlerMainButtonClick = (event: MouseEvent) => {\n      emit('click', event)\n    }\n\n    return {\n      t,\n      ns,\n      scrollbar,\n      wrapStyle,\n      dropdownTriggerKls,\n      dropdownSize,\n      triggerId,\n      currentTabId,\n      handleCurrentTabIdChange,\n      handlerMainButtonClick,\n      handleClose,\n      handleOpen,\n      handleBeforeShowTooltip,\n      handleShowTooltip,\n      handleBeforeHideTooltip,\n      popperRef,\n      contentRef,\n      triggeringElementRef,\n      referenceElementRef,\n    }\n  },\n})\n</script>\n","<template>\n  <div :class=\"[ns.b(), ns.is('disabled', disabled)]\">\n    <el-tooltip\n      ref=\"popperRef\"\n      :role=\"role\"\n      :effect=\"effect\"\n      :fallback-placements=\"['bottom', 'top']\"\n      :popper-options=\"popperOptions\"\n      :gpu-acceleration=\"false\"\n      :placement=\"placement\"\n      :popper-class=\"[ns.e('popper'), popperClass!]\"\n      :popper-style=\"popperStyle\"\n      :trigger=\"trigger\"\n      :trigger-keys=\"triggerKeys\"\n      :trigger-target-el=\"contentRef\"\n      :show-arrow=\"showArrow\"\n      :show-after=\"trigger === 'hover' ? showTimeout : 0\"\n      :hide-after=\"trigger === 'hover' ? hideTimeout : 0\"\n      :virtual-ref=\"virtualRef ?? triggeringElementRef\"\n      :virtual-triggering=\"virtualTriggering || splitButton\"\n      :disabled=\"disabled\"\n      :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n      :teleported=\"teleported\"\n      :append-to=\"appendTo\"\n      pure\n      focus-on-target\n      :persistent=\"persistent\"\n      @before-show=\"handleBeforeShowTooltip\"\n      @show=\"handleShowTooltip\"\n      @before-hide=\"handleBeforeHideTooltip\"\n    >\n      <template #content>\n        <el-scrollbar\n          ref=\"scrollbar\"\n          :wrap-style=\"wrapStyle\"\n          tag=\"div\"\n          :view-class=\"ns.e('list')\"\n        >\n          <el-roving-focus-group\n            :loop=\"loop\"\n            :current-tab-id=\"currentTabId\"\n            orientation=\"horizontal\"\n            @current-tab-id-change=\"handleCurrentTabIdChange\"\n          >\n            <slot name=\"dropdown\" />\n          </el-roving-focus-group>\n        </el-scrollbar>\n      </template>\n      <template v-if=\"!splitButton\" #default>\n        <el-only-child\n          :id=\"triggerId\"\n          ref=\"triggeringElementRef\"\n          role=\"button\"\n          :tabindex=\"tabindex\"\n        >\n          <slot name=\"default\" />\n        </el-only-child>\n      </template>\n    </el-tooltip>\n    <template v-if=\"splitButton\">\n      <el-button-group>\n        <el-button\n          ref=\"referenceElementRef\"\n          v-bind=\"buttonProps\"\n          :size=\"dropdownSize\"\n          :type=\"type\"\n          :disabled=\"disabled\"\n          :tabindex=\"tabindex\"\n          @click=\"handlerMainButtonClick\"\n        >\n          <slot name=\"default\" />\n        </el-button>\n        <el-button\n          :id=\"triggerId\"\n          ref=\"triggeringElementRef\"\n          v-bind=\"buttonProps\"\n          role=\"button\"\n          :size=\"dropdownSize\"\n          :type=\"type\"\n          :class=\"ns.e('caret-button')\"\n          :disabled=\"disabled\"\n          :tabindex=\"tabindex\"\n          :aria-label=\"t('el.dropdown.toggleDropdown')\"\n        >\n          <el-icon :class=\"ns.e('icon')\"><arrow-down /></el-icon>\n        </el-button>\n      </el-button-group>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  provide,\n  ref,\n  toRef,\n  unref,\n} from 'vue'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElRovingFocusGroup from '@pit-element-plus/components/roving-focus-group'\nimport { ElOnlyChild } from '@pit-element-plus/components/slot'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport { addUnit, ensureArray } from '@pit-element-plus/utils'\nimport { ArrowDown } from 'pit-element-icons'\nimport { useId, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { dropdownProps } from './dropdown'\nimport {\n  DROPDOWN_INJECTION_KEY,\n  DROPDOWN_INSTANCE_INJECTION_KEY,\n} from './tokens'\n\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { CSSProperties } from 'vue'\n\nconst { ButtonGroup: ElButtonGroup } = ElButton\n\nexport default defineComponent({\n  name: 'ElDropdown',\n  components: {\n    ElButton,\n    ElButtonGroup,\n    ElScrollbar,\n    ElTooltip,\n    ElRovingFocusGroup,\n    ElOnlyChild,\n    ElIcon,\n    ArrowDown,\n  },\n  props: dropdownProps,\n  emits: ['visible-change', 'click', 'command'],\n  setup(props, { emit }) {\n    const _instance = getCurrentInstance()\n    const ns = useNamespace('dropdown')\n    const { t } = useLocale()\n\n    const triggeringElementRef = ref()\n    const referenceElementRef = ref()\n    const popperRef = ref<TooltipInstance>()\n    const contentRef = ref<HTMLElement>()\n    const scrollbar = ref(null)\n    const currentTabId = ref<string | null>(null)\n    const isUsingKeyboard = ref(false)\n\n    const wrapStyle = computed<CSSProperties>(() => ({\n      maxHeight: addUnit(props.maxHeight),\n    }))\n    const dropdownTriggerKls = computed(() => [ns.m(dropdownSize.value)])\n    const trigger = computed(() => ensureArray(props.trigger))\n\n    const defaultTriggerId = useId().value\n    const triggerId = computed<string>(() => props.id || defaultTriggerId)\n\n    function handleClick() {\n      popperRef.value?.onClose(undefined, 0)\n    }\n\n    function handleClose() {\n      popperRef.value?.onClose()\n    }\n\n    function handleOpen() {\n      popperRef.value?.onOpen()\n    }\n\n    const dropdownSize = useFormSize()\n\n    function commandHandler(...args: any[]) {\n      emit('command', ...args)\n    }\n\n    function onItemEnter() {\n      // NOOP for now\n    }\n\n    function onItemLeave() {\n      const contentEl = unref(contentRef)\n\n      trigger.value.includes('hover') &&\n        contentEl?.focus({\n          preventScroll: true,\n        })\n      currentTabId.value = null\n    }\n\n    function handleCurrentTabIdChange(id: string) {\n      currentTabId.value = id\n    }\n\n    function handleBeforeShowTooltip() {\n      emit('visible-change', true)\n    }\n\n    function handleShowTooltip(event?: Event) {\n      isUsingKeyboard.value = event?.type === 'keydown'\n      contentRef.value?.focus()\n    }\n\n    function handleBeforeHideTooltip() {\n      emit('visible-change', false)\n    }\n\n    provide(DROPDOWN_INJECTION_KEY, {\n      contentRef,\n      role: computed(() => props.role),\n      triggerId,\n      isUsingKeyboard,\n      onItemEnter,\n      onItemLeave,\n      handleClose,\n    })\n\n    provide(DROPDOWN_INSTANCE_INJECTION_KEY, {\n      instance: _instance,\n      dropdownSize,\n      handleClick,\n      commandHandler,\n      trigger: toRef(props, 'trigger'),\n      hideOnClick: toRef(props, 'hideOnClick'),\n    })\n\n    const handlerMainButtonClick = (event: MouseEvent) => {\n      emit('click', event)\n    }\n\n    return {\n      t,\n      ns,\n      scrollbar,\n      wrapStyle,\n      dropdownTriggerKls,\n      dropdownSize,\n      triggerId,\n      currentTabId,\n      handleCurrentTabIdChange,\n      handlerMainButtonClick,\n      handleClose,\n      handleOpen,\n      handleBeforeShowTooltip,\n      handleShowTooltip,\n      handleBeforeHideTooltip,\n      popperRef,\n      contentRef,\n      triggeringElementRef,\n      referenceElementRef,\n    }\n  },\n})\n</script>\n","<template>\n  <li\n    v-if=\"divided\"\n    role=\"separator\"\n    :class=\"ns.bem('menu', 'item', 'divided')\"\n  />\n  <li\n    :ref=\"itemRef\"\n    v-bind=\"{ ...dataset, ...$attrs }\"\n    :aria-disabled=\"disabled\"\n    :class=\"[ns.be('menu', 'item'), ns.is('disabled', disabled)]\"\n    :tabindex=\"tabIndex\"\n    :role=\"role\"\n    @click=\"(e) => $emit('clickimpl', e)\"\n    @focus=\"handleFocus\"\n    @keydown.self=\"handleKeydown\"\n    @mousedown=\"handleMousedown\"\n    @pointermove=\"(e) => $emit('pointermove', e)\"\n    @pointerleave=\"(e) => $emit('pointerleave', e)\"\n  >\n    <el-icon v-if=\"icon || $slots.icon\">\n      <slot name=\"icon\">\n        <component :is=\"icon\" />\n      </slot>\n    </el-icon>\n    <slot />\n  </li>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject } from 'vue'\nimport {\n  ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY,\n  ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY,\n} from '@pit-element-plus/components/roving-focus-group'\nimport { COLLECTION_ITEM_SIGN } from '@pit-element-plus/components/collection'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  composeEventHandlers,\n  composeRefs,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { dropdownItemProps } from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n  name: 'DropdownItemImpl',\n  components: {\n    ElIcon,\n  },\n  props: dropdownItemProps,\n  emits: ['pointermove', 'pointerleave', 'click', 'clickimpl'],\n  setup(_, { emit }) {\n    const ns = useNamespace('dropdown')\n\n    const { role: menuRole } = inject(DROPDOWN_INJECTION_KEY, undefined)!\n\n    const { collectionItemRef: rovingFocusCollectionItemRef } = inject(\n      ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY,\n      undefined\n    )!\n\n    const {\n      rovingFocusGroupItemRef,\n      tabIndex,\n      handleFocus,\n      handleKeydown: handleItemKeydown,\n      handleMousedown,\n    } = inject(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, undefined)!\n\n    const itemRef = composeRefs(\n      rovingFocusCollectionItemRef,\n      rovingFocusGroupItemRef\n    )\n\n    const role = computed<string>(() => {\n      if (menuRole.value === 'menu') {\n        return 'menuitem'\n      } else if (menuRole.value === 'navigation') {\n        return 'link'\n      }\n      return 'button'\n    })\n\n    const handleKeydown = composeEventHandlers((e: KeyboardEvent) => {\n      const code = getEventCode(e)\n\n      if (\n        [EVENT_CODE.enter, EVENT_CODE.numpadEnter, EVENT_CODE.space].includes(\n          code\n        )\n      ) {\n        e.preventDefault()\n        e.stopImmediatePropagation()\n        emit('clickimpl', e)\n        return true\n      }\n    }, handleItemKeydown)\n\n    return {\n      ns,\n      itemRef,\n      dataset: {\n        [COLLECTION_ITEM_SIGN]: '',\n      },\n      role,\n      tabIndex,\n      handleFocus,\n      handleKeydown,\n      handleMousedown,\n    }\n  },\n})\n</script>\n","<template>\n  <li\n    v-if=\"divided\"\n    role=\"separator\"\n    :class=\"ns.bem('menu', 'item', 'divided')\"\n  />\n  <li\n    :ref=\"itemRef\"\n    v-bind=\"{ ...dataset, ...$attrs }\"\n    :aria-disabled=\"disabled\"\n    :class=\"[ns.be('menu', 'item'), ns.is('disabled', disabled)]\"\n    :tabindex=\"tabIndex\"\n    :role=\"role\"\n    @click=\"(e) => $emit('clickimpl', e)\"\n    @focus=\"handleFocus\"\n    @keydown.self=\"handleKeydown\"\n    @mousedown=\"handleMousedown\"\n    @pointermove=\"(e) => $emit('pointermove', e)\"\n    @pointerleave=\"(e) => $emit('pointerleave', e)\"\n  >\n    <el-icon v-if=\"icon || $slots.icon\">\n      <slot name=\"icon\">\n        <component :is=\"icon\" />\n      </slot>\n    </el-icon>\n    <slot />\n  </li>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject } from 'vue'\nimport {\n  ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY,\n  ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY,\n} from '@pit-element-plus/components/roving-focus-group'\nimport { COLLECTION_ITEM_SIGN } from '@pit-element-plus/components/collection'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  composeEventHandlers,\n  composeRefs,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { dropdownItemProps } from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n  name: 'DropdownItemImpl',\n  components: {\n    ElIcon,\n  },\n  props: dropdownItemProps,\n  emits: ['pointermove', 'pointerleave', 'click', 'clickimpl'],\n  setup(_, { emit }) {\n    const ns = useNamespace('dropdown')\n\n    const { role: menuRole } = inject(DROPDOWN_INJECTION_KEY, undefined)!\n\n    const { collectionItemRef: rovingFocusCollectionItemRef } = inject(\n      ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY,\n      undefined\n    )!\n\n    const {\n      rovingFocusGroupItemRef,\n      tabIndex,\n      handleFocus,\n      handleKeydown: handleItemKeydown,\n      handleMousedown,\n    } = inject(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, undefined)!\n\n    const itemRef = composeRefs(\n      rovingFocusCollectionItemRef,\n      rovingFocusGroupItemRef\n    )\n\n    const role = computed<string>(() => {\n      if (menuRole.value === 'menu') {\n        return 'menuitem'\n      } else if (menuRole.value === 'navigation') {\n        return 'link'\n      }\n      return 'button'\n    })\n\n    const handleKeydown = composeEventHandlers((e: KeyboardEvent) => {\n      const code = getEventCode(e)\n\n      if (\n        [EVENT_CODE.enter, EVENT_CODE.numpadEnter, EVENT_CODE.space].includes(\n          code\n        )\n      ) {\n        e.preventDefault()\n        e.stopImmediatePropagation()\n        emit('clickimpl', e)\n        return true\n      }\n    }, handleItemKeydown)\n\n    return {\n      ns,\n      itemRef,\n      dataset: {\n        [COLLECTION_ITEM_SIGN]: '',\n      },\n      role,\n      tabIndex,\n      handleFocus,\n      handleKeydown,\n      handleMousedown,\n    }\n  },\n})\n</script>\n","import { computed, inject } from 'vue'\nimport { DROPDOWN_INSTANCE_INJECTION_KEY } from './tokens'\n\nimport type { IElDropdownInstance } from './dropdown'\n\nexport const useDropdown = () => {\n  const elDropdown = inject<IElDropdownInstance>(\n    DROPDOWN_INSTANCE_INJECTION_KEY,\n    {}\n  )\n  const _elDropdownSize = computed(() => elDropdown?.dropdownSize)\n\n  return {\n    elDropdown,\n    _elDropdownSize,\n  }\n}\n","<template>\n  <el-roving-focus-item :focusable=\"!disabled\">\n    <el-dropdown-item-impl\n      v-bind=\"propsAndAttrs\"\n      @pointerleave=\"handlePointerLeave\"\n      @pointermove=\"handlePointerMove\"\n      @clickimpl=\"handleClick\"\n    >\n      <template v-if=\"$slots.icon\" #icon>\n        <slot name=\"icon\" />\n      </template>\n\n      <slot />\n    </el-dropdown-item-impl>\n  </el-roving-focus-item>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, getCurrentInstance, inject } from 'vue'\nimport { ElRovingFocusItem } from '@pit-element-plus/components/roving-focus-group'\nimport { composeEventHandlers, whenMouse } from '@pit-element-plus/utils'\nimport ElDropdownItemImpl from './dropdown-item-impl.vue'\nimport { useDropdown } from './useDropdown'\nimport { dropdownItemProps } from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n  name: 'ElDropdownItem',\n  components: {\n    ElRovingFocusItem,\n    ElDropdownItemImpl,\n  },\n  inheritAttrs: false,\n  props: dropdownItemProps,\n  emits: ['pointermove', 'pointerleave', 'click'],\n  setup(props, { emit, attrs }) {\n    const { elDropdown } = useDropdown()\n    const _instance = getCurrentInstance()\n    const { onItemEnter, onItemLeave } = inject(\n      DROPDOWN_INJECTION_KEY,\n      undefined\n    )!\n\n    const handlePointerMove = composeEventHandlers(\n      (e: PointerEvent) => {\n        emit('pointermove', e)\n        return e.defaultPrevented\n      },\n      whenMouse((e) => {\n        if (props.disabled) {\n          onItemLeave(e)\n          return\n        }\n\n        const target = e.currentTarget as HTMLElement\n        /**\n         * This handles the following scenario:\n         *   when the item contains a form element such as input element\n         *   when the mouse is moving over the element itself which is contained by\n         *   the item, the default focusing logic should be prevented so that\n         *   it won't cause weird action.\n         */\n        if (\n          target === document.activeElement ||\n          target.contains(document.activeElement)\n        ) {\n          return\n        }\n\n        onItemEnter(e)\n        if (!e.defaultPrevented) {\n          target?.focus({\n            preventScroll: true,\n          })\n        }\n      })\n    )\n\n    const handlePointerLeave = composeEventHandlers((e: PointerEvent) => {\n      emit('pointerleave', e)\n      return e.defaultPrevented\n    }, whenMouse(onItemLeave))\n\n    const handleClick = composeEventHandlers(\n      (e: PointerEvent) => {\n        if (props.disabled) {\n          return\n        }\n        emit('click', e)\n        return e.type !== 'keydown' && e.defaultPrevented\n      },\n      (e) => {\n        if (props.disabled) {\n          e.stopImmediatePropagation()\n          return\n        }\n        if (elDropdown?.hideOnClick?.value) {\n          elDropdown.handleClick?.()\n        }\n        elDropdown.commandHandler?.(props.command, _instance, e)\n      }\n    )\n\n    // direct usage of v-bind={ ...$props, ...$attrs } causes type errors\n    const propsAndAttrs = computed(() => ({ ...props, ...attrs }))\n\n    return {\n      handleClick,\n      handlePointerMove,\n      handlePointerLeave,\n      propsAndAttrs,\n    }\n  },\n})\n</script>\n","<template>\n  <el-roving-focus-item :focusable=\"!disabled\">\n    <el-dropdown-item-impl\n      v-bind=\"propsAndAttrs\"\n      @pointerleave=\"handlePointerLeave\"\n      @pointermove=\"handlePointerMove\"\n      @clickimpl=\"handleClick\"\n    >\n      <template v-if=\"$slots.icon\" #icon>\n        <slot name=\"icon\" />\n      </template>\n\n      <slot />\n    </el-dropdown-item-impl>\n  </el-roving-focus-item>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, getCurrentInstance, inject } from 'vue'\nimport { ElRovingFocusItem } from '@pit-element-plus/components/roving-focus-group'\nimport { composeEventHandlers, whenMouse } from '@pit-element-plus/utils'\nimport ElDropdownItemImpl from './dropdown-item-impl.vue'\nimport { useDropdown } from './useDropdown'\nimport { dropdownItemProps } from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n  name: 'ElDropdownItem',\n  components: {\n    ElRovingFocusItem,\n    ElDropdownItemImpl,\n  },\n  inheritAttrs: false,\n  props: dropdownItemProps,\n  emits: ['pointermove', 'pointerleave', 'click'],\n  setup(props, { emit, attrs }) {\n    const { elDropdown } = useDropdown()\n    const _instance = getCurrentInstance()\n    const { onItemEnter, onItemLeave } = inject(\n      DROPDOWN_INJECTION_KEY,\n      undefined\n    )!\n\n    const handlePointerMove = composeEventHandlers(\n      (e: PointerEvent) => {\n        emit('pointermove', e)\n        return e.defaultPrevented\n      },\n      whenMouse((e) => {\n        if (props.disabled) {\n          onItemLeave(e)\n          return\n        }\n\n        const target = e.currentTarget as HTMLElement\n        /**\n         * This handles the following scenario:\n         *   when the item contains a form element such as input element\n         *   when the mouse is moving over the element itself which is contained by\n         *   the item, the default focusing logic should be prevented so that\n         *   it won't cause weird action.\n         */\n        if (\n          target === document.activeElement ||\n          target.contains(document.activeElement)\n        ) {\n          return\n        }\n\n        onItemEnter(e)\n        if (!e.defaultPrevented) {\n          target?.focus({\n            preventScroll: true,\n          })\n        }\n      })\n    )\n\n    const handlePointerLeave = composeEventHandlers((e: PointerEvent) => {\n      emit('pointerleave', e)\n      return e.defaultPrevented\n    }, whenMouse(onItemLeave))\n\n    const handleClick = composeEventHandlers(\n      (e: PointerEvent) => {\n        if (props.disabled) {\n          return\n        }\n        emit('click', e)\n        return e.type !== 'keydown' && e.defaultPrevented\n      },\n      (e) => {\n        if (props.disabled) {\n          e.stopImmediatePropagation()\n          return\n        }\n        if (elDropdown?.hideOnClick?.value) {\n          elDropdown.handleClick?.()\n        }\n        elDropdown.commandHandler?.(props.command, _instance, e)\n      }\n    )\n\n    // direct usage of v-bind={ ...$props, ...$attrs } causes type errors\n    const propsAndAttrs = computed(() => ({ ...props, ...attrs }))\n\n    return {\n      handleClick,\n      handlePointerMove,\n      handlePointerLeave,\n      propsAndAttrs,\n    }\n  },\n})\n</script>\n","<template>\n  <ul\n    :ref=\"dropdownListWrapperRef\"\n    :class=\"dropdownKls\"\n    :style=\"rovingFocusGroupRootStyle\"\n    :tabindex=\"-1\"\n    :role=\"role\"\n    :aria-labelledby=\"triggerId\"\n    @focusin=\"handleFocus\"\n    @focusout=\"onBlur\"\n    @keydown.self=\"handleKeydown\"\n    @mousedown.self=\"onMousedown\"\n  >\n    <slot />\n  </ul>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject } from 'vue'\nimport {\n  composeEventHandlers,\n  composeRefs,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport {\n  ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n  ROVING_FOCUS_GROUP_INJECTION_KEY,\n} from '@pit-element-plus/components/roving-focus-group'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\nimport { dropdownMenuProps } from './dropdown'\nimport { useDropdown } from './useDropdown'\n\nexport default defineComponent({\n  name: 'ElDropdownMenu',\n  props: dropdownMenuProps,\n  setup(props) {\n    const ns = useNamespace('dropdown')\n    const { _elDropdownSize } = useDropdown()\n    const size = _elDropdownSize.value\n\n    const { contentRef, role, triggerId, isUsingKeyboard, handleClose } =\n      inject(DROPDOWN_INJECTION_KEY, undefined)!\n\n    const {\n      rovingFocusGroupRef,\n      rovingFocusGroupRootStyle,\n      onBlur,\n      onFocus,\n      onKeydown,\n      onMousedown,\n    } = inject(ROVING_FOCUS_GROUP_INJECTION_KEY, undefined)!\n\n    const { collectionRef: rovingFocusGroupCollectionRef } = inject(\n      ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n      undefined\n    )!\n\n    const dropdownKls = computed(() => {\n      return [ns.b('menu'), ns.bm('menu', size?.value)]\n    })\n\n    const dropdownListWrapperRef = composeRefs(\n      contentRef,\n      rovingFocusGroupRef,\n      rovingFocusGroupCollectionRef\n    )\n\n    const handleKeydown = composeEventHandlers(\n      (e: KeyboardEvent) => {\n        props.onKeydown?.(e)\n      },\n      (e) => {\n        const { currentTarget, target } = e\n        const code = getEventCode(e)\n\n        const isKeydownContained = (currentTarget as Node).contains(\n          target as Node\n        )\n\n        if (isKeydownContained) {\n          // TODO: implement typeahead search\n        }\n\n        if (EVENT_CODE.tab === code) {\n          return handleClose()\n        }\n\n        onKeydown(e)\n      }\n    )\n\n    function handleFocus(e: FocusEvent) {\n      isUsingKeyboard.value && onFocus(e)\n    }\n\n    return {\n      size,\n      rovingFocusGroupRootStyle,\n      dropdownKls,\n      role,\n      triggerId,\n      dropdownListWrapperRef,\n      handleKeydown,\n      onBlur,\n      handleFocus,\n      onMousedown,\n    }\n  },\n})\n</script>\n","<template>\n  <ul\n    :ref=\"dropdownListWrapperRef\"\n    :class=\"dropdownKls\"\n    :style=\"rovingFocusGroupRootStyle\"\n    :tabindex=\"-1\"\n    :role=\"role\"\n    :aria-labelledby=\"triggerId\"\n    @focusin=\"handleFocus\"\n    @focusout=\"onBlur\"\n    @keydown.self=\"handleKeydown\"\n    @mousedown.self=\"onMousedown\"\n  >\n    <slot />\n  </ul>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject } from 'vue'\nimport {\n  composeEventHandlers,\n  composeRefs,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport {\n  ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n  ROVING_FOCUS_GROUP_INJECTION_KEY,\n} from '@pit-element-plus/components/roving-focus-group'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\nimport { dropdownMenuProps } from './dropdown'\nimport { useDropdown } from './useDropdown'\n\nexport default defineComponent({\n  name: 'ElDropdownMenu',\n  props: dropdownMenuProps,\n  setup(props) {\n    const ns = useNamespace('dropdown')\n    const { _elDropdownSize } = useDropdown()\n    const size = _elDropdownSize.value\n\n    const { contentRef, role, triggerId, isUsingKeyboard, handleClose } =\n      inject(DROPDOWN_INJECTION_KEY, undefined)!\n\n    const {\n      rovingFocusGroupRef,\n      rovingFocusGroupRootStyle,\n      onBlur,\n      onFocus,\n      onKeydown,\n      onMousedown,\n    } = inject(ROVING_FOCUS_GROUP_INJECTION_KEY, undefined)!\n\n    const { collectionRef: rovingFocusGroupCollectionRef } = inject(\n      ROVING_FOCUS_COLLECTION_INJECTION_KEY,\n      undefined\n    )!\n\n    const dropdownKls = computed(() => {\n      return [ns.b('menu'), ns.bm('menu', size?.value)]\n    })\n\n    const dropdownListWrapperRef = composeRefs(\n      contentRef,\n      rovingFocusGroupRef,\n      rovingFocusGroupCollectionRef\n    )\n\n    const handleKeydown = composeEventHandlers(\n      (e: KeyboardEvent) => {\n        props.onKeydown?.(e)\n      },\n      (e) => {\n        const { currentTarget, target } = e\n        const code = getEventCode(e)\n\n        const isKeydownContained = (currentTarget as Node).contains(\n          target as Node\n        )\n\n        if (isKeydownContained) {\n          // TODO: implement typeahead search\n        }\n\n        if (EVENT_CODE.tab === code) {\n          return handleClose()\n        }\n\n        onKeydown(e)\n      }\n    )\n\n    function handleFocus(e: FocusEvent) {\n      isUsingKeyboard.value && onFocus(e)\n    }\n\n    return {\n      size,\n      rovingFocusGroupRootStyle,\n      dropdownKls,\n      role,\n      triggerId,\n      dropdownListWrapperRef,\n      handleKeydown,\n      onBlur,\n      handleFocus,\n      onMousedown,\n    }\n  },\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Dropdown from './src/dropdown.vue'\nimport DropdownItem from './src/dropdown-item.vue'\nimport DropdownMenu from './src/dropdown-menu.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElDropdown: SFCWithInstall<typeof Dropdown> & {\n  DropdownItem: typeof DropdownItem\n  DropdownMenu: typeof DropdownMenu\n} = withInstall(Dropdown, {\n  DropdownItem,\n  DropdownMenu,\n})\nexport default ElDropdown\nexport const ElDropdownItem: SFCWithInstall<typeof DropdownItem> =\n  withNoopInstall(DropdownItem)\nexport const ElDropdownMenu: SFCWithInstall<typeof DropdownMenu> =\n  withNoopInstall(DropdownMenu)\nexport * from './src/dropdown'\nexport * from './src/instance'\nexport * from './src/tokens'\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport interface EmptyProps {\n  /**\n   * @description image URL of empty\n   */\n  image?: string\n  /**\n   * @description image size (width) of empty\n   */\n  imageSize?: number\n  /**\n   * @description description of empty\n   */\n  description?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `EmptyProps` instead.\n */\nexport const emptyProps = buildProps({\n  /**\n   * @description image URL of empty\n   */\n  image: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description image size (width) of empty\n   */\n  imageSize: Number,\n  /**\n   * @description description of empty\n   */\n  description: {\n    type: String,\n    default: '',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `EmptyProps` instead.\n */\nexport type EmptyPropsPublic = ExtractPublicPropTypes<typeof emptyProps>\n","<template>\n  <svg\n    viewBox=\"0 0 79 86\"\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n  >\n    <defs>\n      <linearGradient\n        :id=\"`linearGradient-1-${id}`\"\n        x1=\"38.8503086%\"\n        y1=\"0%\"\n        x2=\"61.1496914%\"\n        y2=\"100%\"\n      >\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-1')})`\"\n          offset=\"0%\"\n        />\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-4')})`\"\n          offset=\"100%\"\n        />\n      </linearGradient>\n      <linearGradient\n        :id=\"`linearGradient-2-${id}`\"\n        x1=\"0%\"\n        y1=\"9.5%\"\n        x2=\"100%\"\n        y2=\"90.5%\"\n      >\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-1')})`\"\n          offset=\"0%\"\n        />\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-6')})`\"\n          offset=\"100%\"\n        />\n      </linearGradient>\n      <rect :id=\"`path-3-${id}`\" x=\"0\" y=\"0\" width=\"17\" height=\"36\" />\n    </defs>\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n      <g transform=\"translate(-1268.000000, -535.000000)\">\n        <g transform=\"translate(1268.000000, 535.000000)\">\n          <path\n            d=\"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z\"\n            :fill=\"`var(${ns.cssVarBlockName('fill-color-3')})`\"\n          />\n          <polygon\n            :fill=\"`var(${ns.cssVarBlockName('fill-color-7')})`\"\n            transform=\"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) \"\n            points=\"13 58 53 58 42 45 2 45\"\n          />\n          <g\n            transform=\"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)\"\n          >\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-7')})`\"\n              transform=\"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) \"\n              points=\"2.84078316e-14 3 18 3 23 7 5 7\"\n            />\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-5')})`\"\n              points=\"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43\"\n            />\n            <rect\n              :fill=\"`url(#linearGradient-1-${id})`\"\n              transform=\"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) \"\n              x=\"38\"\n              y=\"7\"\n              width=\"17\"\n              height=\"36\"\n            />\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-2')})`\"\n              transform=\"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) \"\n              points=\"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12\"\n            />\n          </g>\n          <rect\n            :fill=\"`url(#linearGradient-2-${id})`\"\n            x=\"13\"\n            y=\"45\"\n            width=\"40\"\n            height=\"36\"\n          />\n          <g transform=\"translate(53.000000, 45.000000)\">\n            <use\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-8')})`\"\n              transform=\"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) \"\n              :xlink:href=\"`#path-3-${id}`\"\n            />\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-9')})`\"\n              :mask=\"`url(#mask-4-${id})`\"\n              transform=\"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) \"\n              points=\"7 0 24 0 20 18 7 16.5\"\n            />\n          </g>\n          <polygon\n            :fill=\"`var(${ns.cssVarBlockName('fill-color-2')})`\"\n            transform=\"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) \"\n            points=\"62 45 79 45 70 58 53 58\"\n          />\n        </g>\n      </g>\n    </g>\n  </svg>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\n\ndefineOptions({\n  name: 'ImgEmpty',\n})\n\nconst ns = useNamespace('empty')\nconst id = useId()\n</script>\n","<template>\n  <svg\n    viewBox=\"0 0 79 86\"\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n  >\n    <defs>\n      <linearGradient\n        :id=\"`linearGradient-1-${id}`\"\n        x1=\"38.8503086%\"\n        y1=\"0%\"\n        x2=\"61.1496914%\"\n        y2=\"100%\"\n      >\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-1')})`\"\n          offset=\"0%\"\n        />\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-4')})`\"\n          offset=\"100%\"\n        />\n      </linearGradient>\n      <linearGradient\n        :id=\"`linearGradient-2-${id}`\"\n        x1=\"0%\"\n        y1=\"9.5%\"\n        x2=\"100%\"\n        y2=\"90.5%\"\n      >\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-1')})`\"\n          offset=\"0%\"\n        />\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-6')})`\"\n          offset=\"100%\"\n        />\n      </linearGradient>\n      <rect :id=\"`path-3-${id}`\" x=\"0\" y=\"0\" width=\"17\" height=\"36\" />\n    </defs>\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n      <g transform=\"translate(-1268.000000, -535.000000)\">\n        <g transform=\"translate(1268.000000, 535.000000)\">\n          <path\n            d=\"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z\"\n            :fill=\"`var(${ns.cssVarBlockName('fill-color-3')})`\"\n          />\n          <polygon\n            :fill=\"`var(${ns.cssVarBlockName('fill-color-7')})`\"\n            transform=\"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) \"\n            points=\"13 58 53 58 42 45 2 45\"\n          />\n          <g\n            transform=\"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)\"\n          >\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-7')})`\"\n              transform=\"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) \"\n              points=\"2.84078316e-14 3 18 3 23 7 5 7\"\n            />\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-5')})`\"\n              points=\"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43\"\n            />\n            <rect\n              :fill=\"`url(#linearGradient-1-${id})`\"\n              transform=\"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) \"\n              x=\"38\"\n              y=\"7\"\n              width=\"17\"\n              height=\"36\"\n            />\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-2')})`\"\n              transform=\"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) \"\n              points=\"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12\"\n            />\n          </g>\n          <rect\n            :fill=\"`url(#linearGradient-2-${id})`\"\n            x=\"13\"\n            y=\"45\"\n            width=\"40\"\n            height=\"36\"\n          />\n          <g transform=\"translate(53.000000, 45.000000)\">\n            <use\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-8')})`\"\n              transform=\"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) \"\n              :xlink:href=\"`#path-3-${id}`\"\n            />\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-9')})`\"\n              :mask=\"`url(#mask-4-${id})`\"\n              transform=\"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) \"\n              points=\"7 0 24 0 20 18 7 16.5\"\n            />\n          </g>\n          <polygon\n            :fill=\"`var(${ns.cssVarBlockName('fill-color-2')})`\"\n            transform=\"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) \"\n            points=\"62 45 79 45 70 58 53 58\"\n          />\n        </g>\n      </g>\n    </g>\n  </svg>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\n\ndefineOptions({\n  name: 'ImgEmpty',\n})\n\nconst ns = useNamespace('empty')\nconst id = useId()\n</script>\n","<template>\n  <svg\n    viewBox=\"0 0 79 86\"\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n  >\n    <defs>\n      <linearGradient\n        :id=\"`linearGradient-1-${id}`\"\n        x1=\"38.8503086%\"\n        y1=\"0%\"\n        x2=\"61.1496914%\"\n        y2=\"100%\"\n      >\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-1')})`\"\n          offset=\"0%\"\n        />\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-4')})`\"\n          offset=\"100%\"\n        />\n      </linearGradient>\n      <linearGradient\n        :id=\"`linearGradient-2-${id}`\"\n        x1=\"0%\"\n        y1=\"9.5%\"\n        x2=\"100%\"\n        y2=\"90.5%\"\n      >\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-1')})`\"\n          offset=\"0%\"\n        />\n        <stop\n          :stop-color=\"`var(${ns.cssVarBlockName('fill-color-6')})`\"\n          offset=\"100%\"\n        />\n      </linearGradient>\n      <rect :id=\"`path-3-${id}`\" x=\"0\" y=\"0\" width=\"17\" height=\"36\" />\n    </defs>\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n      <g transform=\"translate(-1268.000000, -535.000000)\">\n        <g transform=\"translate(1268.000000, 535.000000)\">\n          <path\n            d=\"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z\"\n            :fill=\"`var(${ns.cssVarBlockName('fill-color-3')})`\"\n          />\n          <polygon\n            :fill=\"`var(${ns.cssVarBlockName('fill-color-7')})`\"\n            transform=\"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) \"\n            points=\"13 58 53 58 42 45 2 45\"\n          />\n          <g\n            transform=\"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)\"\n          >\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-7')})`\"\n              transform=\"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) \"\n              points=\"2.84078316e-14 3 18 3 23 7 5 7\"\n            />\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-5')})`\"\n              points=\"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43\"\n            />\n            <rect\n              :fill=\"`url(#linearGradient-1-${id})`\"\n              transform=\"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) \"\n              x=\"38\"\n              y=\"7\"\n              width=\"17\"\n              height=\"36\"\n            />\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-2')})`\"\n              transform=\"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) \"\n              points=\"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12\"\n            />\n          </g>\n          <rect\n            :fill=\"`url(#linearGradient-2-${id})`\"\n            x=\"13\"\n            y=\"45\"\n            width=\"40\"\n            height=\"36\"\n          />\n          <g transform=\"translate(53.000000, 45.000000)\">\n            <use\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-8')})`\"\n              transform=\"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) \"\n              :xlink:href=\"`#path-3-${id}`\"\n            />\n            <polygon\n              :fill=\"`var(${ns.cssVarBlockName('fill-color-9')})`\"\n              :mask=\"`url(#mask-4-${id})`\"\n              transform=\"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) \"\n              points=\"7 0 24 0 20 18 7 16.5\"\n            />\n          </g>\n          <polygon\n            :fill=\"`var(${ns.cssVarBlockName('fill-color-2')})`\"\n            transform=\"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) \"\n            points=\"62 45 79 45 70 58 53 58\"\n          />\n        </g>\n      </g>\n    </g>\n  </svg>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\n\ndefineOptions({\n  name: 'ImgEmpty',\n})\n\nconst ns = useNamespace('empty')\nconst id = useId()\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div :class=\"ns.e('image')\" :style=\"imageStyle\">\n      <img v-if=\"image\" :src=\"image\" ondragstart=\"return false\" />\n      <slot v-else name=\"image\">\n        <img-empty />\n      </slot>\n    </div>\n    <div :class=\"ns.e('description')\">\n      <slot v-if=\"$slots.description\" name=\"description\" />\n      <p v-else>{{ emptyDescription }}</p>\n    </div>\n    <div v-if=\"$slots.default\" :class=\"ns.e('bottom')\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit } from '@pit-element-plus/utils'\nimport ImgEmpty from './img-empty.vue'\n\nimport type { CSSProperties } from 'vue'\nimport type { EmptyProps } from './empty'\n\ndefineOptions({\n  name: 'ElEmpty',\n})\n\nconst props = withDefaults(defineProps<EmptyProps>(), {\n  image: '',\n  description: '',\n})\n\nconst { t } = useLocale()\nconst ns = useNamespace('empty')\nconst emptyDescription = computed(\n  () => props.description || t('el.table.emptyText')\n)\nconst imageStyle = computed<CSSProperties>(() => ({\n  width: addUnit(props.imageSize),\n}))\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div :class=\"ns.e('image')\" :style=\"imageStyle\">\n      <img v-if=\"image\" :src=\"image\" ondragstart=\"return false\" />\n      <slot v-else name=\"image\">\n        <img-empty />\n      </slot>\n    </div>\n    <div :class=\"ns.e('description')\">\n      <slot v-if=\"$slots.description\" name=\"description\" />\n      <p v-else>{{ emptyDescription }}</p>\n    </div>\n    <div v-if=\"$slots.default\" :class=\"ns.e('bottom')\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit } from '@pit-element-plus/utils'\nimport ImgEmpty from './img-empty.vue'\n\nimport type { CSSProperties } from 'vue'\nimport type { EmptyProps } from './empty'\n\ndefineOptions({\n  name: 'ElEmpty',\n})\n\nconst props = withDefaults(defineProps<EmptyProps>(), {\n  image: '',\n  description: '',\n})\n\nconst { t } = useLocale()\nconst ns = useNamespace('empty')\nconst emptyDescription = computed(\n  () => props.description || t('el.table.emptyText')\n)\nconst imageStyle = computed<CSSProperties>(() => ({\n  width: addUnit(props.imageSize),\n}))\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div :class=\"ns.e('image')\" :style=\"imageStyle\">\n      <img v-if=\"image\" :src=\"image\" ondragstart=\"return false\" />\n      <slot v-else name=\"image\">\n        <img-empty />\n      </slot>\n    </div>\n    <div :class=\"ns.e('description')\">\n      <slot v-if=\"$slots.description\" name=\"description\" />\n      <p v-else>{{ emptyDescription }}</p>\n    </div>\n    <div v-if=\"$slots.default\" :class=\"ns.e('bottom')\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit } from '@pit-element-plus/utils'\nimport ImgEmpty from './img-empty.vue'\n\nimport type { CSSProperties } from 'vue'\nimport type { EmptyProps } from './empty'\n\ndefineOptions({\n  name: 'ElEmpty',\n})\n\nconst props = withDefaults(defineProps<EmptyProps>(), {\n  image: '',\n  description: '',\n})\n\nconst { t } = useLocale()\nconst ns = useNamespace('empty')\nconst emptyDescription = computed(\n  () => props.description || t('el.table.emptyText')\n)\nconst imageStyle = computed<CSSProperties>(() => ({\n  width: addUnit(props.imageSize),\n}))\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Empty from './src/empty.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElEmpty: SFCWithInstall<typeof Empty> = withInstall(Empty)\nexport default ElEmpty\n\nexport * from './src/empty'\nexport type { EmptyInstance } from './src/instance'\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport type { FormRules } from '@pit-element-plus/components/form/src/types'\nimport type { ExtractPropTypes } from 'vue'\nimport type FormBase from './form-base.vue'\n\nexport const dialogTypes = ['dialog', 'dialog-header'] as const\n\nexport const InterfaceMethodTypes = ['GET', 'POST', 'PUT', 'DELETE'] as const\n\nexport const OperatingTypePropsTypes = ['add', 'edit', 'info'] as const\n\nexport interface SwithcConfigType {\n  isShow?: any\n  disabled?: boolean\n  on?: (row: any) => void\n  beforeChange?: (row: any) => void\n}\n\nexport interface TagConfigType {\n  isShow?: any\n  on?: (row: any) => void\n}\n\nexport interface FormBaseColumnsItem {\n  prop: string\n  label: string\n  align?: string\n  width?: string | number\n  minWidth?: string | number\n  sortable?: string | boolean\n  render?: (row: any) => void\n  showOverflow?: boolean\n  fixed?: string\n  hidden?: boolean\n  children?: FormBaseColumnsItem[]\n  isLink?: boolean\n  isDetails?: boolean\n  resizable?: boolean\n  swithcConfig?: SwithcConfigType\n  tagConfig?: TagConfigType\n  dateFormatter?: any\n  treeNode?: boolean\n  renderTooltip?: any\n  expand?: (row: any) => void\n}\n\nexport type FormBaseColumns = FormBaseColumnsItem[]\n\nexport type FormBaseDialogBeforeCloseFn = () => void\nexport type FormBaseSearchBeforeCallbackFn = () => boolean\nexport type FormBaseSearchBeforeCallbackPreventFn = (_this: any) => Promise<any>\nexport type FormBaseAddBeforeCallbackFn = () => boolean\nexport type FormBaseAddBeforeAsyncCallbackFn = () => Promise<any>\nexport type FormBaseInfoBeforeCallbackFn = () => boolean\nexport type FormBaseAddParamControllerCallbackFn = () => Promise<any>\nexport type FormBaseAddParamPromiseControllerCallbackFn = (\n  _this: any\n) => Promise<any>\nexport type FormBaseAddParamControllerPreventCallbackFn = () => void\nexport type FormBaseInfoControllerCallbackFn = (row: any) => void\nexport type FormBaseAddControllerCallbackFn = (data: any) => void\nexport type FormBaseDelBeforeCallbackFn = (id: any) => Promise<boolean>\nexport type FormBaseDelControllerCallbackFn = () => void\nexport type FormBaseClearCallbackFn = () => void\nexport type FormBaseClearPreventCallbackFn = () => void\n\nexport type FormBaseDraftParamControllerCallback = () => Promise<any>\nexport type FormBaseDraftParamPromiseControllerCallback = (\n  _this?: any\n) => Promise<boolean>\nexport type FormBaseDraftParamControllerPreventCallback = (_this?: any) => void\nexport type FormBaseDraftControllerCallback = (row: any) => void\nexport type FormBaseDraftControllerErrorCallback = () => void\nexport type FormBaseProcessParamControllerCallback = () => Promise<any>\nexport type FormBaseProcessParamPromiseControllerCallback = (\n  _this?: any\n) => Promise<boolean>\nexport type FormBaseProcessParamControllerPreventCallback = () => void\nexport type FormBaseProcessControllerCallback = (row: any) => void\nexport type FormBaseProcessControllerErrorCallback = () => void\nexport type FormBaseProcessRunFlowParamsControllerCallback = (\n  dataParams?: any,\n  _this?: any\n) => any\n\nexport const formBaseProps = buildProps({\n  /**\n   * @description 业务表主键\n   */\n  primaryKey: {\n    type: String,\n    default: 'id',\n  },\n  /**\n   * @description 是否为树标识\n   */\n  rowKey: {\n    type: String,\n  },\n  /**\n   * @description 单选还是多选，默认多选\n   */\n  rowSingle: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 表单显示类型，默认为弹窗\n   */\n  dialogType: {\n    type: String,\n    values: dialogTypes,\n    default: 'dialog',\n  },\n  /**\n   * @description 查询接口\n   */\n  queryInterface: String,\n  /**\n   * @description 单个查询接口\n   */\n  queryOneInterface: String,\n  /**\n   * @description 保存接口\n   */\n  saveInterface: String,\n  /**\n   * @description 修改接口\n   */\n  updateInterface: String,\n  /**\n   * @description 删除接口\n   */\n  deleteInterface: String,\n  /**\n   * @description 查询接口类型\n   */\n  queryInterfaceMethod: {\n    type: String,\n    values: InterfaceMethodTypes,\n    default: 'GET',\n  },\n  /**\n   * @description 单个查询接口类型\n   */\n  queryOneInterfaceMethod: {\n    type: String,\n    values: InterfaceMethodTypes,\n    default: 'GET',\n  },\n  /**\n   * @description 保存接口类型\n   */\n  saveInterfaceMethod: {\n    type: String,\n    values: InterfaceMethodTypes,\n    default: 'POST',\n  },\n  /**\n   * @description 修改接口类型\n   */\n  updateInterfaceMethod: {\n    type: String,\n    values: InterfaceMethodTypes,\n    default: 'PUT',\n  },\n  /**\n   * @description 删除接口类型\n   */\n  deleteInterfaceMethod: {\n    type: String,\n    values: InterfaceMethodTypes,\n    default: 'DELETE',\n  },\n  /**\n   * @description 搜索实体\n   */\n  formInline: {\n    type: Object as () => Record<string, any> | any,\n  },\n  /**\n   * @description 表头数据\n   */\n  columns: {\n    type: definePropType<FormBaseColumns>(Array),\n  },\n  /**\n   * @description 新增、修改实体\n   */\n  addForm: {\n    type: Object as () => Record<string, any>,\n  },\n  /**\n   * @description 新增、修改实体\n   */\n  rules: {\n    type: definePropType<FormRules>(Object),\n  },\n  /**\n   * @description 表单域标签的宽度\n   */\n  labelWidth: {\n    type: String,\n    default: '100px',\n  },\n  /**\n   * @description 是否默认查询\n   */\n  isDefaultQuery: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 用于判断是新建还是修改 新建add 修改edit\n   */\n  operatingTypeProps: {\n    type: String,\n    values: OperatingTypePropsTypes,\n    default: 'add',\n  },\n  /**\n   * @description 是否开启弹窗拖动\n   */\n  isDrag: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否批量删除\n   */\n  isBatchDelete: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 是否需要新增按钮\n   */\n  noAddBtn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否需要编辑按钮\n   */\n  noEditBtn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否需要删除按钮\n   */\n  noDelBtn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否需要查询按钮\n   */\n  noSearch: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否需要清空按钮\n   */\n  noClear: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否需要批量删除按钮\n   */\n  noBatchBtn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否隐藏弹窗确认按钮\n   */\n  noConfirmBtn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否隐藏弹窗取消按钮\n   */\n  noCancelBtn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否隐藏搜索区域\n   */\n  noSearchForm: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否隐藏搜索区域左边表单部分\n   */\n  noSearchFormLeft: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否隐藏搜索按钮\n   */\n  noFormInlineBtn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否功能按钮区域\n   */\n  noOperation: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否隐藏折叠按钮\n   */\n  noExpandsBtn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否隐藏刷新按钮\n   */\n  noRefreshBtn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否隐藏序号\n   */\n  noTableIndex: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 是否隐藏分页\n   */\n  noPagination: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 自定义新增按钮的文本\n   */\n  addBtnText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 自定义修改按钮的文本\n   */\n  editBtnText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 自定义删除按钮的文本\n   */\n  delBtnText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 自定义批量删除按钮的文本\n   */\n  batchBtnText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 自定义插查询按钮的文本\n   */\n  searchBtnText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 自定义清空按钮的文本\n   */\n  clearBtnText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 自定义确定按钮的文本\n   */\n  confirmBtnText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 弹窗的默认宽度\n   */\n  dialogWidth: {\n    type: String,\n    default: '30%',\n  },\n  /**\n   * @description 弹窗关闭事件\n   */\n  dialogBeforeClose: {\n    type: definePropType<FormBaseDialogBeforeCloseFn>(Function),\n  },\n  /**\n   * @description 点击查询按钮前回调\n   */\n  searchBeforeCallback: {\n    type: definePropType<FormBaseSearchBeforeCallbackFn>(Function),\n  },\n  /**\n   * @description 新建请求前回调并阻止后续的事件\n   */\n  searchBeforeCallbackPrevent: {\n    type: definePropType<FormBaseSearchBeforeCallbackPreventFn>(Function),\n  },\n  /**\n   * @description 点击新建按钮前回调\n   */\n  addBeforeCallback: {\n    type: definePropType<FormBaseAddBeforeCallbackFn>(Function),\n  },\n  /**\n   * @description 点击新建按钮前回调\n   */\n  addBeforeAsyncCallback: {\n    type: definePropType<FormBaseAddBeforeAsyncCallbackFn>(Function),\n  },\n  /**\n   * @description 点击详情按钮前回调\n   */\n  infoBeforeCallback: {\n    type: definePropType<FormBaseInfoBeforeCallbackFn>(Function),\n  },\n  /**\n   * @description 新建请求前回调\n   */\n  addParamControllerCallback: {\n    type: definePropType<FormBaseAddParamControllerCallbackFn>(Function),\n  },\n  /**\n   * @description 新建请求前回调并，需return promise 并返回成功结果\n   */\n  addParamPromiseControllerCallback: {\n    type: definePropType<FormBaseAddParamPromiseControllerCallbackFn>(Function),\n  },\n  /**\n   * @description 新建请求前回调并阻止后续的事件\n   */\n  addParamControllerPreventCallback: {\n    type: definePropType<FormBaseAddParamControllerPreventCallbackFn>(Function),\n  },\n  /**\n   * @description 详情请求回调成功\n   */\n  infoControllerCallback: {\n    type: definePropType<FormBaseInfoControllerCallbackFn>(Function),\n  },\n  /**\n   * @description 新建/编辑 成功后的回调\n   */\n  addControllerCallback: {\n    type: definePropType<FormBaseAddControllerCallbackFn>(Function),\n  },\n  /**\n   * @description 删除 成功后的回调\n   */\n  delControllerCallback: {\n    type: definePropType<FormBaseDelControllerCallbackFn>(Function),\n  },\n  /**\n   * @description 删除前的回调\n   */\n  delBeforeCallback: {\n    type: definePropType<FormBaseDelBeforeCallbackFn>(Function),\n  },\n  /**\n   * @description 取消的回调\n   */\n  clearCallback: {\n    type: definePropType<FormBaseClearCallbackFn>(Function),\n  },\n  /**\n   * @description 自定义取消的回调\n   */\n  clearPreventCallback: {\n    type: definePropType<FormBaseClearPreventCallbackFn>(Function),\n  },\n  /**\n   * @description 您没有选中任何数据项,请选中后再操作！\n   */\n  textEmptyOption: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 请选择一条数据！\n   */\n  textEmptyOptionOne: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 新建成功！\n   */\n  textAddSuccess: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 修改成功！\n   */\n  textEditSuccess: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 删除成功！\n   */\n  textDelSuccess: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 是否删除已选中数据？\n   */\n  textDelStr: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description 显示时间, 毫秒。设为 0 则不会自动关闭\n   */\n  duration: {\n    type: Number,\n    default: 3000,\n  },\n  /**\n   * @description 重置后是否需要直接刷新\n   */\n  isClearQuery: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 是否懒加载子节点数据\n   */\n  tableLazy: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 是否懒加载子节点数据\n   */\n  isVirtuallyTable: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 自动将列表转为树结构（支持虚拟滚动）\n   */\n  tableTransform: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 懒加载匹配的key\n   */\n  lazyKey: {\n    type: String,\n    default: 'id',\n  },\n  /**\n   * @description 自定义弹窗标题\n   */\n  customizeDialogTitle: {\n    type: Object,\n  },\n  /**\n   * @description 弹窗面板打开或关闭状态\n   */\n  isDialogVisible: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 是否展开树形表格\n   */\n  defaultExpandAll: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description 多选 Checkbox 宽度\n   */\n  selectionWidth: {\n    type: Number,\n    default: 60,\n  },\n  /**\n   * @description 多选 Checkbox 水平对齐\n   */\n  selectionAlign: {\n    type: String,\n    default: 'center',\n  },\n  /**\n   * @description 多选 Checkbox 固定\n   */\n  selectionFixed: {\n    type: [String, Boolean],\n    default: false,\n  },\n  /**\n   * @description 单选 Checkbox 宽度\n   */\n  indexWidth: {\n    type: Number,\n    default: 60,\n  },\n  /**\n   * @description 单选 Checkbox 水平对齐\n   */\n  indexAlign: {\n    type: String,\n    default: 'center',\n  },\n  /**\n   * @description 单选 Checkbox 固定\n   */\n  indexFixed: {\n    type: [String, Boolean],\n    default: false,\n  },\n  /**\n   * @description form-base 弹窗高度\n   */\n  dialogTop: {\n    type: String,\n  },\n  isPreviewMode: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 是否双击查看详情\n   */\n  isDoubleClickDetails: {\n    type: Boolean,\n    default: true,\n  },\n  // 流程相关\n  draftInterface: String,\n  processInterface: String,\n  draftInterfaceMethod: {\n    type: String,\n    default: 'POST',\n  },\n  processInterfaceMethod: {\n    type: String,\n    default: 'POST',\n  },\n  // 是否开启流程\n  hasFlow: {\n    type: Boolean,\n    default: false,\n  },\n  // 流程对应的编码\n  flowCode: {\n    type: String,\n    default: '',\n  },\n  // 是否隐藏暂存按钮\n  noStorageBtn: {\n    type: Boolean,\n    default: false,\n  },\n  // 是否隐藏保存草稿按钮\n  noDraftBtn: {\n    type: Boolean,\n    default: true,\n  },\n  // 是否隐藏发起流程按钮\n  noInitiateProcessBtn: {\n    type: Boolean,\n    default: true,\n  },\n  // 自定义暂存按钮的文本\n  storageBtnText: {\n    type: String,\n    default: '暂存',\n  },\n  // 自定义保存草稿按钮的文本\n  draftBtnText: {\n    type: String,\n    default: '保存草稿',\n  },\n  // 自定义发起流程按钮的文本\n  initiateProcessBtnText: {\n    type: String,\n    default: '发起流程',\n  },\n  // 保存草稿请求前回调\n  draftParamControllerCallback: {\n    type: definePropType<FormBaseDraftParamControllerCallback>(Function),\n  },\n  // 保存草稿请求前回调，需return promise 并返回成功结果\n  draftParamPromiseControllerCallback: {\n    type: definePropType<FormBaseDraftParamPromiseControllerCallback>(Function),\n  },\n  // 保存草稿请求前回调，没有需要处理返回值，不会往下执行\n  draftParamControllerPreventCallback: {\n    type: definePropType<FormBaseDraftParamControllerPreventCallback>(Function),\n  },\n  // 保存草稿请求成功回调\n  draftControllerCallback: {\n    type: definePropType<FormBaseDraftControllerCallback>(Function),\n  },\n  // 保存草稿请求失败回调\n  draftControllerErrorCallback: {\n    type: definePropType<FormBaseDraftControllerErrorCallback>(Function),\n  },\n  // 发起流程请求前回调\n  processParamControllerCallback: {\n    type: definePropType<FormBaseProcessParamControllerCallback>(Function),\n  },\n  // 发起流程请求前回调，需return promise 并返回成功结果\n  processParamPromiseControllerCallback: {\n    type: definePropType<FormBaseProcessParamPromiseControllerCallback>(\n      Function\n    ),\n  },\n  // 发起流程请求前回调，没有需要处理返回值，不会往下执行\n  processParamControllerPreventCallback: {\n    type: definePropType<FormBaseProcessParamControllerPreventCallback>(\n      Function\n    ),\n  },\n  // 发起流程请求成功回调\n  processControllerCallback: {\n    type: definePropType<FormBaseProcessControllerCallback>(Function),\n  },\n  // 发起流程请求失败回调\n  processControllerErrorCallback: {\n    type: definePropType<FormBaseProcessControllerErrorCallback>(Function),\n  },\n  // 流程发起前需要处理的参数\n  processRunFlowParamsControllerCallback: {\n    type: definePropType<FormBaseProcessRunFlowParamsControllerCallback>(\n      Function\n    ),\n  },\n  // 流程保存成功提示\n  textDraftSuccess: {\n    type: String,\n    default: '',\n  },\n  // 流程发起成功提示\n  textProcessSuccess: {\n    type: String,\n    default: '',\n  },\n  // 暂存按钮回调事件\n  storageCallback: {\n    type: Function,\n    default: null,\n  },\n  // 弹窗取消按钮回调事件\n  processCancelCallback: Function,\n  // 暂存按钮请求前回调，没有需要处理返回值，不会往下执行\n  storageControllerPreventCallback: {\n    type: Function,\n    default: null,\n  },\n  spanMethod: {\n    type: Function,\n  },\n  flowStatusWidth: {\n    type: Number,\n  },\n  // 流程状态版本（自定义处理）\n  flowVersion: {\n    type: String,\n  },\n  // 流程状态宽度\n  tableFlowStatusWidth: {\n    type: Number,\n    default: 130,\n  },\n  // 是否开启设置按钮\n  isSetUpRender: {\n    type: Boolean,\n    default: false,\n  },\n  rowClassName: {\n    type: Function,\n  },\n  cellClassName: {\n    type: Function,\n  },\n  validateOnRuleChange: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\nexport type FormBaseProps = ExtractPropTypes<typeof formBaseProps>\nexport type FormBaseInstance = InstanceType<typeof FormBase>\n\nexport const formBaseEmits = {\n  'result-table-back': (data: Array<any>, res?: any) => data && res,\n  'table-current-change': (row: any) => row,\n  'table-row-dblclick': (row: any) => row,\n  'table-selection-change': (row: any) => row,\n  'update:operatingTypeProps': (val: string) => val,\n  'update:isDialogVisible': (val: boolean) => val,\n}\n\nexport type FormBaseEmits = typeof formBaseEmits\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport type { FormBaseColumns } from './form-base'\n\nexport type TableLoadFn = (row: any) => Promise<any>\n\nexport const formBaseTableProps = buildProps({\n  primaryKey: {\n    type: String,\n    default: 'id',\n  },\n  rowKey: String,\n  rowSingle: {\n    type: Boolean,\n    default: true,\n  },\n  tableData: Array,\n  columns: {\n    type: definePropType<FormBaseColumns>(Array),\n  },\n  selectionWidth: {\n    type: Number,\n    default: 60,\n  },\n  selectionAlign: {\n    type: String,\n    default: 'center',\n  },\n  selectionFixed: {\n    type: [String, Boolean],\n    default: false,\n  },\n  /**\n   * @description 是否展开树形表格\n   */\n  defaultExpandAll: {\n    type: Boolean,\n    default: true,\n  },\n  indexWidth: {\n    type: Number,\n    default: 60,\n  },\n  indexAlign: {\n    type: String,\n    default: 'center',\n  },\n  indexFixed: {\n    type: [String, Boolean],\n    default: false,\n  },\n  pagination: Object as any,\n  noPagination: {\n    type: Boolean,\n    default: true,\n  },\n  tableLazy: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 是否懒加载子节点数据\n   */\n  isVirtuallyTable: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 自动将列表转为树结构（支持虚拟滚动）\n   */\n  tableTransform: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description 是否隐藏序号\n   */\n  noTableIndex: {\n    type: Boolean,\n    default: true,\n  },\n  tableLoad: {\n    type: definePropType<TableLoadFn>(Function),\n  },\n  spanMethod: {\n    type: Function,\n  },\n  rowClassName: {\n    type: Function,\n  },\n  cellClassName: {\n    type: Function,\n  },\n} as const)\n\nexport const formBaseTableEmits = {\n  'size-change': (val: number) => val,\n  'current-change': (val: number) => val,\n  'table-current-change': (row: any) => row,\n  'table-row-dblclick': (row: any) => row,\n  'table-selection-change': (row: any) => row,\n  'table-selection-all': (val: any) => val,\n  'click-info': (columns: any, row: any) => columns && row,\n  'table-sort-change': (val: any) => val,\n}\n","<script lang=\"tsx\" name=\"form-base-table-render\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n  props: {\n    row: {\n      type: Object,\n      default: () => ({}),\n    },\n    scope: {\n      type: Object,\n      default: () => ({}),\n    },\n  },\n  render() {\n    return this.row.render(this.scope.row)\n  },\n})\n</script>\n","<script lang=\"tsx\" name=\"form-base-table-render\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n  props: {\n    row: {\n      type: Object,\n      default: () => ({}),\n    },\n    scope: {\n      type: Object,\n      default: () => ({}),\n    },\n  },\n  render() {\n    return this.row.render(this.scope.row)\n  },\n})\n</script>\n","<script lang=\"tsx\" name=\"form-base-table-expand-render\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n  props: {\n    row: {\n      type: Object,\n      default: () => ({}),\n    },\n    scope: {\n      type: Object,\n      default: () => ({}),\n    },\n    isVirtuallyTable: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  render() {\n    if (this.isVirtuallyTable && this.row.showOverflow) {\n      return (\n        <el-tooltip\n          content={\n            this.scope.row[this.row.prop]\n              ? this.scope.row[this.row.prop].toString()\n              : ''\n          }\n          placement=\"top\"\n        >\n          <span>{this.row.expand(this.scope.row)}</span>\n        </el-tooltip>\n      )\n    } else {\n      return this.row.expand(this.scope.row)\n    }\n  },\n})\n</script>\n","<script lang=\"tsx\" name=\"form-base-table-expand-render\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n  props: {\n    row: {\n      type: Object,\n      default: () => ({}),\n    },\n    scope: {\n      type: Object,\n      default: () => ({}),\n    },\n    isVirtuallyTable: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  render() {\n    if (this.isVirtuallyTable && this.row.showOverflow) {\n      return (\n        <el-tooltip\n          content={\n            this.scope.row[this.row.prop]\n              ? this.scope.row[this.row.prop].toString()\n              : ''\n          }\n          placement=\"top\"\n        >\n          <span>{this.row.expand(this.scope.row)}</span>\n        </el-tooltip>\n      )\n    } else {\n      return this.row.expand(this.scope.row)\n    }\n  },\n})\n</script>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport formBaseTableRender from './form-base-table-render.vue'\nimport formBaseTableExpandRender from './form-base-table-expand-render.vue'\nimport { get } from 'lodash-unified'\n\nimport type { FormBaseColumnsItem } from './form-base'\n\ndefineOptions({\n  name: 'ElFormBaseTableColumn',\n})\n\nconst props = defineProps({\n  column: Object as any,\n  columnsData: {\n    type: Array<any>,\n    default: () => [],\n  },\n})\n\nconst emit = defineEmits({\n  'click-info': (columns: any, row: any) => columns && row,\n})\n\nconst handleHidden = computed(() => {\n  if (typeof props.column.hidden === 'boolean') {\n    return props.column.hidden\n  }\n  return true\n})\n\nconst handleClick = (columns: FormBaseColumnsItem, row: any) => {\n  emit('click-info', columns, row)\n}\n\nconst getLink = computed(() => {\n  if (props.column.isLink || props.column.isDetails) {\n    return 'form-base__link__text'\n  }\n  return ''\n})\n\nconst isFn = (val: any, row: any, flag = true) => {\n  if (typeof val === 'boolean') {\n    return val\n  }\n  if (typeof val === 'string') {\n    return val\n  }\n  if (typeof val === 'function') {\n    return val(row)\n  }\n  return flag\n}\n\nconst toFormat = (props: any, row: any) => {\n  if (row[props.column.prop]) {\n    const formatter = isFn(props.column.dateFormatter, row, false)\n    const date = formatDate(row[props.column.prop], formatter)\n    if (date) {\n      return date\n    }\n    return row[props.column.prop]\n  }\n  return row[props.column.prop]\n}\n\nfunction formatDate(date: any, fmt = 'yyyy-mm-dd hh:MM:ss') {\n  if (!date) {\n    return false\n  }\n  // 如果为null,则格式化当前时间\n  date = new Date(date)\n\n  if (date.toString() === 'Invalid Date') {\n    return false\n  }\n  let ret\n  const opt: any = {\n    'y+': date.getFullYear().toString(),\n    'm+': (date.getMonth() + 1).toString(),\n    'd+': date.getDate().toString(),\n    'h+': date.getHours().toString(),\n    'M+': date.getMinutes().toString(),\n    's+': date.getSeconds().toString(),\n    // 有其他格式化字符需求可以继续添加，必须转化成字符串\n  }\n  for (const k in opt) {\n    ret = new RegExp(`(${k})`).exec(fmt)\n    if (ret) {\n      fmt = fmt.replace(\n        ret[1],\n        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')\n      )\n    }\n  }\n  return fmt\n}\n\nconst getTagText = (props: any, row: any) => {\n  const status = props.column.tagConfig.status\n  if (status?.length > 0) {\n    const datum = status.find(\n      (item: any) => item.source === row[props.column.prop]\n    )\n    return datum?.text\n  }\n}\n\nconst getTagType = (props: any, row: any) => {\n  const status = props.column.tagConfig.status\n  if (status?.length > 0) {\n    const datum = status.find(\n      (item: any) => item.source === row[props.column.prop]\n    )\n    return datum?.type\n  }\n}\n\nconst getRowText = (row: any, props: any) => {\n  const text = get(row, props)\n  return text\n}\n</script>\n\n<template>\n  <el-table-column\n    v-if=\"handleHidden\"\n    :key=\"props.column.prop\"\n    :prop=\"props.column.prop\"\n    :label=\"props.column.label\"\n    :width=\"props.column.width\"\n    :min-width=\"props.column.minWidth\"\n    :align=\"props.column.align\"\n    :sortable=\"props.column.sortable ? 'custom' : false\"\n    :sort-orders=\"props.column.sortable ? ['descending', 'ascending'] : []\"\n    :fixed=\"props.column.fixed ? props.column.fixed : false\"\n    :resizable=\"props.column.resizable\"\n    :show-overflow-tooltip=\"\n      props.column.showOverflow ? props.column.showOverflow : false\n    \"\n    :type=\"props.column.expand ? 'expand' : 'default'\"\n  >\n    <template #default=\"scope\">\n      <template\n        v-if=\"props.column.children && props.column.children.length > 0\"\n      >\n        <el-form-base-table-column\n          v-for=\"(item, index) in props.column.children\"\n          :key=\"index\"\n          :column=\"item\"\n          :columns-data=\"props.columnsData\"\n        />\n      </template>\n      <template v-else-if=\"!props.column.render\">\n        <template v-if=\"props.column.swithcConfig\">\n          <el-switch\n            v-if=\"isFn(props.column.swithcConfig.isShow, scope.row)\"\n            v-model=\"scope.row[props.column.prop]\"\n            :disabled=\"isFn(props.column.swithcConfig.disabled, scope.row)\"\n            :before-change=\"\n              props.column.swithcConfig.beforeChange?.bind(null, scope.row)\n            \"\n            @change=\"props.column.swithcConfig.on(scope.row)\"\n          />\n        </template>\n        <template v-else-if=\"props.column.tagConfig\">\n          <el-tag\n            v-if=\"isFn(props.column.tagConfig.isShow, scope.row)\"\n            :type=\"getTagType(props, scope.row)\"\n            @click=\"props.column.tagConfig.on(scope.row)\"\n            >{{ getTagText(props, scope.row) }}</el-tag\n          >\n          <!-- {{ getTagText(props, scope.row) }} -->\n        </template>\n        <template v-else-if=\"props.column.dateFormatter\">\n          {{ toFormat(props, scope.row) }}\n        </template>\n        <template v-else>\n          <template v-if=\"props.column.renderTooltip\">\n            <el-tooltip\n              :content=\"\n                props.column.renderTooltip(scope.row, columnsData).toString()\n              \"\n              placement=\"top\"\n              :open-delay=\"500\"\n              effect=\"dark\"\n            >\n              <span class=\"el-form-base-tooltip\">{{\n                getRowText(scope.row, props.column.prop)\n              }}</span>\n            </el-tooltip>\n          </template>\n          <template v-else>\n            <span\n              :class=\"[getLink]\"\n              @click=\"handleClick(props.column, scope.row)\"\n              >{{ scope.row[props.column.prop] }}</span\n            >\n          </template>\n        </template>\n      </template>\n      <form-base-table-render\n        v-if=\"!props.column.children && props.column.render\"\n        :row=\"props.column\"\n        :scope=\"scope\"\n      />\n      <form-base-table-expand-render\n        v-if=\"!props.column.children && props.column.expand\"\n        :row=\"props.column\"\n        :scope=\"scope\"\n      />\n    </template>\n  </el-table-column>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport formBaseTableRender from './form-base-table-render.vue'\nimport formBaseTableExpandRender from './form-base-table-expand-render.vue'\nimport { get } from 'lodash-unified'\n\nimport type { FormBaseColumnsItem } from './form-base'\n\ndefineOptions({\n  name: 'ElFormBaseTableColumn',\n})\n\nconst props = defineProps({\n  column: Object as any,\n  columnsData: {\n    type: Array<any>,\n    default: () => [],\n  },\n})\n\nconst emit = defineEmits({\n  'click-info': (columns: any, row: any) => columns && row,\n})\n\nconst handleHidden = computed(() => {\n  if (typeof props.column.hidden === 'boolean') {\n    return props.column.hidden\n  }\n  return true\n})\n\nconst handleClick = (columns: FormBaseColumnsItem, row: any) => {\n  emit('click-info', columns, row)\n}\n\nconst getLink = computed(() => {\n  if (props.column.isLink || props.column.isDetails) {\n    return 'form-base__link__text'\n  }\n  return ''\n})\n\nconst isFn = (val: any, row: any, flag = true) => {\n  if (typeof val === 'boolean') {\n    return val\n  }\n  if (typeof val === 'string') {\n    return val\n  }\n  if (typeof val === 'function') {\n    return val(row)\n  }\n  return flag\n}\n\nconst toFormat = (props: any, row: any) => {\n  if (row[props.column.prop]) {\n    const formatter = isFn(props.column.dateFormatter, row, false)\n    const date = formatDate(row[props.column.prop], formatter)\n    if (date) {\n      return date\n    }\n    return row[props.column.prop]\n  }\n  return row[props.column.prop]\n}\n\nfunction formatDate(date: any, fmt = 'yyyy-mm-dd hh:MM:ss') {\n  if (!date) {\n    return false\n  }\n  // 如果为null,则格式化当前时间\n  date = new Date(date)\n\n  if (date.toString() === 'Invalid Date') {\n    return false\n  }\n  let ret\n  const opt: any = {\n    'y+': date.getFullYear().toString(),\n    'm+': (date.getMonth() + 1).toString(),\n    'd+': date.getDate().toString(),\n    'h+': date.getHours().toString(),\n    'M+': date.getMinutes().toString(),\n    's+': date.getSeconds().toString(),\n    // 有其他格式化字符需求可以继续添加，必须转化成字符串\n  }\n  for (const k in opt) {\n    ret = new RegExp(`(${k})`).exec(fmt)\n    if (ret) {\n      fmt = fmt.replace(\n        ret[1],\n        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')\n      )\n    }\n  }\n  return fmt\n}\n\nconst getTagText = (props: any, row: any) => {\n  const status = props.column.tagConfig.status\n  if (status?.length > 0) {\n    const datum = status.find(\n      (item: any) => item.source === row[props.column.prop]\n    )\n    return datum?.text\n  }\n}\n\nconst getTagType = (props: any, row: any) => {\n  const status = props.column.tagConfig.status\n  if (status?.length > 0) {\n    const datum = status.find(\n      (item: any) => item.source === row[props.column.prop]\n    )\n    return datum?.type\n  }\n}\n\nconst getRowText = (row: any, props: any) => {\n  const text = get(row, props)\n  return text\n}\n</script>\n\n<template>\n  <el-table-column\n    v-if=\"handleHidden\"\n    :key=\"props.column.prop\"\n    :prop=\"props.column.prop\"\n    :label=\"props.column.label\"\n    :width=\"props.column.width\"\n    :min-width=\"props.column.minWidth\"\n    :align=\"props.column.align\"\n    :sortable=\"props.column.sortable ? 'custom' : false\"\n    :sort-orders=\"props.column.sortable ? ['descending', 'ascending'] : []\"\n    :fixed=\"props.column.fixed ? props.column.fixed : false\"\n    :resizable=\"props.column.resizable\"\n    :show-overflow-tooltip=\"\n      props.column.showOverflow ? props.column.showOverflow : false\n    \"\n    :type=\"props.column.expand ? 'expand' : 'default'\"\n  >\n    <template #default=\"scope\">\n      <template\n        v-if=\"props.column.children && props.column.children.length > 0\"\n      >\n        <el-form-base-table-column\n          v-for=\"(item, index) in props.column.children\"\n          :key=\"index\"\n          :column=\"item\"\n          :columns-data=\"props.columnsData\"\n        />\n      </template>\n      <template v-else-if=\"!props.column.render\">\n        <template v-if=\"props.column.swithcConfig\">\n          <el-switch\n            v-if=\"isFn(props.column.swithcConfig.isShow, scope.row)\"\n            v-model=\"scope.row[props.column.prop]\"\n            :disabled=\"isFn(props.column.swithcConfig.disabled, scope.row)\"\n            :before-change=\"\n              props.column.swithcConfig.beforeChange?.bind(null, scope.row)\n            \"\n            @change=\"props.column.swithcConfig.on(scope.row)\"\n          />\n        </template>\n        <template v-else-if=\"props.column.tagConfig\">\n          <el-tag\n            v-if=\"isFn(props.column.tagConfig.isShow, scope.row)\"\n            :type=\"getTagType(props, scope.row)\"\n            @click=\"props.column.tagConfig.on(scope.row)\"\n            >{{ getTagText(props, scope.row) }}</el-tag\n          >\n          <!-- {{ getTagText(props, scope.row) }} -->\n        </template>\n        <template v-else-if=\"props.column.dateFormatter\">\n          {{ toFormat(props, scope.row) }}\n        </template>\n        <template v-else>\n          <template v-if=\"props.column.renderTooltip\">\n            <el-tooltip\n              :content=\"\n                props.column.renderTooltip(scope.row, columnsData).toString()\n              \"\n              placement=\"top\"\n              :open-delay=\"500\"\n              effect=\"dark\"\n            >\n              <span class=\"el-form-base-tooltip\">{{\n                getRowText(scope.row, props.column.prop)\n              }}</span>\n            </el-tooltip>\n          </template>\n          <template v-else>\n            <span\n              :class=\"[getLink]\"\n              @click=\"handleClick(props.column, scope.row)\"\n              >{{ scope.row[props.column.prop] }}</span\n            >\n          </template>\n        </template>\n      </template>\n      <form-base-table-render\n        v-if=\"!props.column.children && props.column.render\"\n        :row=\"props.column\"\n        :scope=\"scope\"\n      />\n      <form-base-table-expand-render\n        v-if=\"!props.column.children && props.column.expand\"\n        :row=\"props.column\"\n        :scope=\"scope\"\n      />\n    </template>\n  </el-table-column>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport formBaseTableRender from './form-base-table-render.vue'\nimport formBaseTableExpandRender from './form-base-table-expand-render.vue'\nimport { get } from 'lodash-unified'\n\nimport type { FormBaseColumnsItem } from './form-base'\n\ndefineOptions({\n  name: 'ElFormBaseTableColumn',\n})\n\nconst props = defineProps({\n  column: Object as any,\n  columnsData: {\n    type: Array<any>,\n    default: () => [],\n  },\n})\n\nconst emit = defineEmits({\n  'click-info': (columns: any, row: any) => columns && row,\n})\n\nconst handleHidden = computed(() => {\n  if (typeof props.column.hidden === 'boolean') {\n    return props.column.hidden\n  }\n  return true\n})\n\nconst handleClick = (columns: FormBaseColumnsItem, row: any) => {\n  emit('click-info', columns, row)\n}\n\nconst getLink = computed(() => {\n  if (props.column.isLink || props.column.isDetails) {\n    return 'form-base__link__text'\n  }\n  return ''\n})\n\nconst isFn = (val: any, row: any, flag = true) => {\n  if (typeof val === 'boolean') {\n    return val\n  }\n  if (typeof val === 'string') {\n    return val\n  }\n  if (typeof val === 'function') {\n    return val(row)\n  }\n  return flag\n}\n\nconst toFormat = (props: any, row: any) => {\n  if (row[props.column.prop]) {\n    const formatter = isFn(props.column.dateFormatter, row, false)\n    const date = formatDate(row[props.column.prop], formatter)\n    if (date) {\n      return date\n    }\n    return row[props.column.prop]\n  }\n  return row[props.column.prop]\n}\n\nfunction formatDate(date: any, fmt = 'yyyy-mm-dd hh:MM:ss') {\n  if (!date) {\n    return false\n  }\n  // 如果为null,则格式化当前时间\n  date = new Date(date)\n\n  if (date.toString() === 'Invalid Date') {\n    return false\n  }\n  let ret\n  const opt: any = {\n    'y+': date.getFullYear().toString(),\n    'm+': (date.getMonth() + 1).toString(),\n    'd+': date.getDate().toString(),\n    'h+': date.getHours().toString(),\n    'M+': date.getMinutes().toString(),\n    's+': date.getSeconds().toString(),\n    // 有其他格式化字符需求可以继续添加，必须转化成字符串\n  }\n  for (const k in opt) {\n    ret = new RegExp(`(${k})`).exec(fmt)\n    if (ret) {\n      fmt = fmt.replace(\n        ret[1],\n        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')\n      )\n    }\n  }\n  return fmt\n}\n\nconst getTagText = (props: any, row: any) => {\n  const status = props.column.tagConfig.status\n  if (status?.length > 0) {\n    const datum = status.find(\n      (item: any) => item.source === row[props.column.prop]\n    )\n    return datum?.text\n  }\n}\n\nconst getTagType = (props: any, row: any) => {\n  const status = props.column.tagConfig.status\n  if (status?.length > 0) {\n    const datum = status.find(\n      (item: any) => item.source === row[props.column.prop]\n    )\n    return datum?.type\n  }\n}\n\nconst getRowText = (row: any, props: any) => {\n  const text = get(row, props)\n  return text\n}\n</script>\n\n<template>\n  <el-table-column\n    v-if=\"handleHidden\"\n    :key=\"props.column.prop\"\n    :prop=\"props.column.prop\"\n    :label=\"props.column.label\"\n    :width=\"props.column.width\"\n    :min-width=\"props.column.minWidth\"\n    :align=\"props.column.align\"\n    :sortable=\"props.column.sortable ? 'custom' : false\"\n    :sort-orders=\"props.column.sortable ? ['descending', 'ascending'] : []\"\n    :fixed=\"props.column.fixed ? props.column.fixed : false\"\n    :resizable=\"props.column.resizable\"\n    :show-overflow-tooltip=\"\n      props.column.showOverflow ? props.column.showOverflow : false\n    \"\n    :type=\"props.column.expand ? 'expand' : 'default'\"\n  >\n    <template #default=\"scope\">\n      <template\n        v-if=\"props.column.children && props.column.children.length > 0\"\n      >\n        <el-form-base-table-column\n          v-for=\"(item, index) in props.column.children\"\n          :key=\"index\"\n          :column=\"item\"\n          :columns-data=\"props.columnsData\"\n        />\n      </template>\n      <template v-else-if=\"!props.column.render\">\n        <template v-if=\"props.column.swithcConfig\">\n          <el-switch\n            v-if=\"isFn(props.column.swithcConfig.isShow, scope.row)\"\n            v-model=\"scope.row[props.column.prop]\"\n            :disabled=\"isFn(props.column.swithcConfig.disabled, scope.row)\"\n            :before-change=\"\n              props.column.swithcConfig.beforeChange?.bind(null, scope.row)\n            \"\n            @change=\"props.column.swithcConfig.on(scope.row)\"\n          />\n        </template>\n        <template v-else-if=\"props.column.tagConfig\">\n          <el-tag\n            v-if=\"isFn(props.column.tagConfig.isShow, scope.row)\"\n            :type=\"getTagType(props, scope.row)\"\n            @click=\"props.column.tagConfig.on(scope.row)\"\n            >{{ getTagText(props, scope.row) }}</el-tag\n          >\n          <!-- {{ getTagText(props, scope.row) }} -->\n        </template>\n        <template v-else-if=\"props.column.dateFormatter\">\n          {{ toFormat(props, scope.row) }}\n        </template>\n        <template v-else>\n          <template v-if=\"props.column.renderTooltip\">\n            <el-tooltip\n              :content=\"\n                props.column.renderTooltip(scope.row, columnsData).toString()\n              \"\n              placement=\"top\"\n              :open-delay=\"500\"\n              effect=\"dark\"\n            >\n              <span class=\"el-form-base-tooltip\">{{\n                getRowText(scope.row, props.column.prop)\n              }}</span>\n            </el-tooltip>\n          </template>\n          <template v-else>\n            <span\n              :class=\"[getLink]\"\n              @click=\"handleClick(props.column, scope.row)\"\n              >{{ scope.row[props.column.prop] }}</span\n            >\n          </template>\n        </template>\n      </template>\n      <form-base-table-render\n        v-if=\"!props.column.children && props.column.render\"\n        :row=\"props.column\"\n        :scope=\"scope\"\n      />\n      <form-base-table-expand-render\n        v-if=\"!props.column.children && props.column.expand\"\n        :row=\"props.column\"\n        :scope=\"scope\"\n      />\n    </template>\n  </el-table-column>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { get } from 'lodash-unified'\nimport formBaseTableRender from './form-base-table-render.vue'\nimport type { FormBaseColumnsItem } from './form-base'\n\ndefineOptions({\n  name: 'ElFormBaseTableColumnVirtually',\n})\n\nconst props = defineProps({\n  column: Object as any,\n  columnsData: {\n    type: Array<any>,\n    default: () => [],\n  },\n})\n\nconst emit = defineEmits({\n  'click-info': (columns: any, row: any) => columns && row,\n})\n\nconst handleHidden = computed(() => {\n  if (typeof props.column.hidden === 'boolean') {\n    return props.column.hidden\n  }\n  return true\n})\n\nconst handleClick = (columns: FormBaseColumnsItem, row: any) => {\n  emit('click-info', columns, row)\n}\n\nconst getLink = computed(() => {\n  if (props.column.isLink || props.column.isDetails) {\n    return 'form-base__link__text'\n  }\n  return ''\n})\n\nconst isFn = (val: any, row: any, flag = true) => {\n  if (typeof val === 'boolean') {\n    return val\n  }\n  if (typeof val === 'string') {\n    return val\n  }\n  if (typeof val === 'function') {\n    return val(row)\n  }\n  return flag\n}\n\nconst toFormat = (props: any, row: any) => {\n  if (row[props.column.prop]) {\n    const formatter = isFn(props.column.dateFormatter, row, false)\n    const date = formatDate(row[props.column.prop], formatter)\n    if (date) {\n      return date\n    }\n    return row[props.column.prop]\n  }\n  return row[props.column.prop]\n}\n\nfunction formatDate(date: any, fmt = 'yyyy-mm-dd hh:MM:ss') {\n  if (!date) {\n    return false\n  }\n  // 如果为null,则格式化当前时间\n  date = new Date(date)\n\n  if (date.toString() === 'Invalid Date') {\n    return false\n  }\n  let ret\n  const opt: any = {\n    'y+': date.getFullYear().toString(),\n    'm+': (date.getMonth() + 1).toString(),\n    'd+': date.getDate().toString(),\n    'h+': date.getHours().toString(),\n    'M+': date.getMinutes().toString(),\n    's+': date.getSeconds().toString(),\n    // 有其他格式化字符需求可以继续添加，必须转化成字符串\n  }\n  for (const k in opt) {\n    ret = new RegExp(`(${k})`).exec(fmt)\n    if (ret) {\n      fmt = fmt.replace(\n        ret[1],\n        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')\n      )\n    }\n  }\n  return fmt\n}\n\nconst getRowText = (row: any, props: any) => {\n  const text = get(row, props)\n  return text\n}\n</script>\n\n<template>\n  <VxeColumn\n    v-if=\"handleHidden && !props.column.children\"\n    :key=\"props.column.prop\"\n    :field=\"props.column.prop\"\n    :title=\"props.column.label\"\n    :width=\"props.column.width\"\n    :min-width=\"props.column.minWidth\"\n    :align=\"props.column.align\"\n    :sortable=\"props.column.sortable\"\n    :fixed=\"props.column.fixed ? props.column.fixed : false\"\n    :resizable=\"props.column.resizable\"\n    :tree-node=\"props.column.treeNode ? props.column.treeNode : false\"\n  >\n    <template v-if=\"!props.column.children\" #default=\"scope\">\n      <template v-if=\"!props.column.render\">\n        <template v-if=\"props.column.dateFormatter\">\n          {{ toFormat(props, scope.row) }}\n        </template>\n\n        <template v-else>\n          <template v-if=\"props.column.renderTooltip\">\n            <el-tooltip\n              :content=\"\n                props.column.renderTooltip(scope.row, columnsData).toString()\n              \"\n              placement=\"top\"\n              :open-delay=\"500\"\n              effect=\"dark\"\n            >\n              <span class=\"el-form-base-tooltip\">{{\n                getRowText(scope.row, props.column.prop)\n              }}</span>\n            </el-tooltip>\n          </template>\n          <template v-else>\n            <span\n              :class=\"[getLink]\"\n              @click=\"handleClick(props.column, scope.row)\"\n              >{{ scope.row[props.column.prop] }}</span\n            >\n          </template>\n        </template>\n      </template>\n      <form-base-table-render\n        v-if=\"props.column.render\"\n        :row=\"props.column\"\n        :scope=\"scope\"\n      />\n    </template>\n    <template v-if=\"props.column.children && props.column.children.length > 0\">\n      <el-form-base-table-column-virtually\n        v-for=\"item in props.column.children\"\n        :key=\"item.prop\"\n        :column=\"item\"\n        :columnsData=\"props.columnsData\"\n      />\n    </template>\n  </VxeColumn>\n  <VxeColgroup\n    v-else\n    :title=\"props.column.label\"\n    :width=\"props.column.width\"\n    :min-width=\"props.column.minWidth\"\n    :align=\"props.column.align\"\n    :sortable=\"props.column.sortable\"\n    :fixed=\"props.column.fixed ? props.column.fixed : false\"\n    :resizable=\"props.column.resizable\"\n  >\n    <template v-for=\"item in props.column.children\" :key=\"item.prop\">\n      <el-form-base-table-column-virtually\n        :column=\"item\"\n        :columnsData=\"props.columnsData\"\n      />\n    </template>\n  </VxeColgroup>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { get } from 'lodash-unified'\nimport formBaseTableRender from './form-base-table-render.vue'\nimport type { FormBaseColumnsItem } from './form-base'\n\ndefineOptions({\n  name: 'ElFormBaseTableColumnVirtually',\n})\n\nconst props = defineProps({\n  column: Object as any,\n  columnsData: {\n    type: Array<any>,\n    default: () => [],\n  },\n})\n\nconst emit = defineEmits({\n  'click-info': (columns: any, row: any) => columns && row,\n})\n\nconst handleHidden = computed(() => {\n  if (typeof props.column.hidden === 'boolean') {\n    return props.column.hidden\n  }\n  return true\n})\n\nconst handleClick = (columns: FormBaseColumnsItem, row: any) => {\n  emit('click-info', columns, row)\n}\n\nconst getLink = computed(() => {\n  if (props.column.isLink || props.column.isDetails) {\n    return 'form-base__link__text'\n  }\n  return ''\n})\n\nconst isFn = (val: any, row: any, flag = true) => {\n  if (typeof val === 'boolean') {\n    return val\n  }\n  if (typeof val === 'string') {\n    return val\n  }\n  if (typeof val === 'function') {\n    return val(row)\n  }\n  return flag\n}\n\nconst toFormat = (props: any, row: any) => {\n  if (row[props.column.prop]) {\n    const formatter = isFn(props.column.dateFormatter, row, false)\n    const date = formatDate(row[props.column.prop], formatter)\n    if (date) {\n      return date\n    }\n    return row[props.column.prop]\n  }\n  return row[props.column.prop]\n}\n\nfunction formatDate(date: any, fmt = 'yyyy-mm-dd hh:MM:ss') {\n  if (!date) {\n    return false\n  }\n  // 如果为null,则格式化当前时间\n  date = new Date(date)\n\n  if (date.toString() === 'Invalid Date') {\n    return false\n  }\n  let ret\n  const opt: any = {\n    'y+': date.getFullYear().toString(),\n    'm+': (date.getMonth() + 1).toString(),\n    'd+': date.getDate().toString(),\n    'h+': date.getHours().toString(),\n    'M+': date.getMinutes().toString(),\n    's+': date.getSeconds().toString(),\n    // 有其他格式化字符需求可以继续添加，必须转化成字符串\n  }\n  for (const k in opt) {\n    ret = new RegExp(`(${k})`).exec(fmt)\n    if (ret) {\n      fmt = fmt.replace(\n        ret[1],\n        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')\n      )\n    }\n  }\n  return fmt\n}\n\nconst getRowText = (row: any, props: any) => {\n  const text = get(row, props)\n  return text\n}\n</script>\n\n<template>\n  <VxeColumn\n    v-if=\"handleHidden && !props.column.children\"\n    :key=\"props.column.prop\"\n    :field=\"props.column.prop\"\n    :title=\"props.column.label\"\n    :width=\"props.column.width\"\n    :min-width=\"props.column.minWidth\"\n    :align=\"props.column.align\"\n    :sortable=\"props.column.sortable\"\n    :fixed=\"props.column.fixed ? props.column.fixed : false\"\n    :resizable=\"props.column.resizable\"\n    :tree-node=\"props.column.treeNode ? props.column.treeNode : false\"\n  >\n    <template v-if=\"!props.column.children\" #default=\"scope\">\n      <template v-if=\"!props.column.render\">\n        <template v-if=\"props.column.dateFormatter\">\n          {{ toFormat(props, scope.row) }}\n        </template>\n\n        <template v-else>\n          <template v-if=\"props.column.renderTooltip\">\n            <el-tooltip\n              :content=\"\n                props.column.renderTooltip(scope.row, columnsData).toString()\n              \"\n              placement=\"top\"\n              :open-delay=\"500\"\n              effect=\"dark\"\n            >\n              <span class=\"el-form-base-tooltip\">{{\n                getRowText(scope.row, props.column.prop)\n              }}</span>\n            </el-tooltip>\n          </template>\n          <template v-else>\n            <span\n              :class=\"[getLink]\"\n              @click=\"handleClick(props.column, scope.row)\"\n              >{{ scope.row[props.column.prop] }}</span\n            >\n          </template>\n        </template>\n      </template>\n      <form-base-table-render\n        v-if=\"props.column.render\"\n        :row=\"props.column\"\n        :scope=\"scope\"\n      />\n    </template>\n    <template v-if=\"props.column.children && props.column.children.length > 0\">\n      <el-form-base-table-column-virtually\n        v-for=\"item in props.column.children\"\n        :key=\"item.prop\"\n        :column=\"item\"\n        :columnsData=\"props.columnsData\"\n      />\n    </template>\n  </VxeColumn>\n  <VxeColgroup\n    v-else\n    :title=\"props.column.label\"\n    :width=\"props.column.width\"\n    :min-width=\"props.column.minWidth\"\n    :align=\"props.column.align\"\n    :sortable=\"props.column.sortable\"\n    :fixed=\"props.column.fixed ? props.column.fixed : false\"\n    :resizable=\"props.column.resizable\"\n  >\n    <template v-for=\"item in props.column.children\" :key=\"item.prop\">\n      <el-form-base-table-column-virtually\n        :column=\"item\"\n        :columnsData=\"props.columnsData\"\n      />\n    </template>\n  </VxeColgroup>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { get } from 'lodash-unified'\nimport formBaseTableRender from './form-base-table-render.vue'\nimport type { FormBaseColumnsItem } from './form-base'\n\ndefineOptions({\n  name: 'ElFormBaseTableColumnVirtually',\n})\n\nconst props = defineProps({\n  column: Object as any,\n  columnsData: {\n    type: Array<any>,\n    default: () => [],\n  },\n})\n\nconst emit = defineEmits({\n  'click-info': (columns: any, row: any) => columns && row,\n})\n\nconst handleHidden = computed(() => {\n  if (typeof props.column.hidden === 'boolean') {\n    return props.column.hidden\n  }\n  return true\n})\n\nconst handleClick = (columns: FormBaseColumnsItem, row: any) => {\n  emit('click-info', columns, row)\n}\n\nconst getLink = computed(() => {\n  if (props.column.isLink || props.column.isDetails) {\n    return 'form-base__link__text'\n  }\n  return ''\n})\n\nconst isFn = (val: any, row: any, flag = true) => {\n  if (typeof val === 'boolean') {\n    return val\n  }\n  if (typeof val === 'string') {\n    return val\n  }\n  if (typeof val === 'function') {\n    return val(row)\n  }\n  return flag\n}\n\nconst toFormat = (props: any, row: any) => {\n  if (row[props.column.prop]) {\n    const formatter = isFn(props.column.dateFormatter, row, false)\n    const date = formatDate(row[props.column.prop], formatter)\n    if (date) {\n      return date\n    }\n    return row[props.column.prop]\n  }\n  return row[props.column.prop]\n}\n\nfunction formatDate(date: any, fmt = 'yyyy-mm-dd hh:MM:ss') {\n  if (!date) {\n    return false\n  }\n  // 如果为null,则格式化当前时间\n  date = new Date(date)\n\n  if (date.toString() === 'Invalid Date') {\n    return false\n  }\n  let ret\n  const opt: any = {\n    'y+': date.getFullYear().toString(),\n    'm+': (date.getMonth() + 1).toString(),\n    'd+': date.getDate().toString(),\n    'h+': date.getHours().toString(),\n    'M+': date.getMinutes().toString(),\n    's+': date.getSeconds().toString(),\n    // 有其他格式化字符需求可以继续添加，必须转化成字符串\n  }\n  for (const k in opt) {\n    ret = new RegExp(`(${k})`).exec(fmt)\n    if (ret) {\n      fmt = fmt.replace(\n        ret[1],\n        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')\n      )\n    }\n  }\n  return fmt\n}\n\nconst getRowText = (row: any, props: any) => {\n  const text = get(row, props)\n  return text\n}\n</script>\n\n<template>\n  <VxeColumn\n    v-if=\"handleHidden && !props.column.children\"\n    :key=\"props.column.prop\"\n    :field=\"props.column.prop\"\n    :title=\"props.column.label\"\n    :width=\"props.column.width\"\n    :min-width=\"props.column.minWidth\"\n    :align=\"props.column.align\"\n    :sortable=\"props.column.sortable\"\n    :fixed=\"props.column.fixed ? props.column.fixed : false\"\n    :resizable=\"props.column.resizable\"\n    :tree-node=\"props.column.treeNode ? props.column.treeNode : false\"\n  >\n    <template v-if=\"!props.column.children\" #default=\"scope\">\n      <template v-if=\"!props.column.render\">\n        <template v-if=\"props.column.dateFormatter\">\n          {{ toFormat(props, scope.row) }}\n        </template>\n\n        <template v-else>\n          <template v-if=\"props.column.renderTooltip\">\n            <el-tooltip\n              :content=\"\n                props.column.renderTooltip(scope.row, columnsData).toString()\n              \"\n              placement=\"top\"\n              :open-delay=\"500\"\n              effect=\"dark\"\n            >\n              <span class=\"el-form-base-tooltip\">{{\n                getRowText(scope.row, props.column.prop)\n              }}</span>\n            </el-tooltip>\n          </template>\n          <template v-else>\n            <span\n              :class=\"[getLink]\"\n              @click=\"handleClick(props.column, scope.row)\"\n              >{{ scope.row[props.column.prop] }}</span\n            >\n          </template>\n        </template>\n      </template>\n      <form-base-table-render\n        v-if=\"props.column.render\"\n        :row=\"props.column\"\n        :scope=\"scope\"\n      />\n    </template>\n    <template v-if=\"props.column.children && props.column.children.length > 0\">\n      <el-form-base-table-column-virtually\n        v-for=\"item in props.column.children\"\n        :key=\"item.prop\"\n        :column=\"item\"\n        :columnsData=\"props.columnsData\"\n      />\n    </template>\n  </VxeColumn>\n  <VxeColgroup\n    v-else\n    :title=\"props.column.label\"\n    :width=\"props.column.width\"\n    :min-width=\"props.column.minWidth\"\n    :align=\"props.column.align\"\n    :sortable=\"props.column.sortable\"\n    :fixed=\"props.column.fixed ? props.column.fixed : false\"\n    :resizable=\"props.column.resizable\"\n  >\n    <template v-for=\"item in props.column.children\" :key=\"item.prop\">\n      <el-form-base-table-column-virtually\n        :column=\"item\"\n        :columnsData=\"props.columnsData\"\n      />\n    </template>\n  </VxeColgroup>\n</template>\n","<script setup lang=\"ts\" name=\"form-base-table\">\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { formBaseTableEmits, formBaseTableProps } from './form-base-table'\nimport formBaseTableColumn from './form-base-table-column.vue'\nimport formBaseTableColumnVirtually from './form-base-table-column-virtually.vue'\nimport type { FormBaseColumns, FormBaseColumnsItem } from './form-base'\n\nconst props = defineProps(formBaseTableProps)\nconst emit = defineEmits(formBaseTableEmits)\nconst current = ref(null)\nconst dataTable = ref()\n\nconst defaultSort = ref({})\nconst orderArray: any = ref([])\nconst refreshTable = ref(true)\n\nconst tableHeadBackground = useGlobalConfig('tableHeadBackground')\nconst tableBackground = computed(() => {\n  if (tableHeadBackground.value) {\n    return { background: tableHeadBackground.value }\n  }\n  return {}\n})\n\ntype StateType = {\n  columns: FormBaseColumns\n}\n\nconst state = reactive<StateType>({\n  columns: [],\n})\n\nwatch(\n  () => props.columns,\n  (val) => {\n    Object.assign(state.columns, val)\n  },\n  {\n    deep: true,\n    immediate: true,\n  }\n)\n\nconst getColumnsExpand = computed(() => {\n  return state.columns.filter((item) => item.expand)\n})\n\nconst getColumns = computed(() => {\n  return state.columns.filter((item) => !item.expand)\n})\n\nconst handleHeaderCellClass = ({ column }: any) => {\n  orderArray.value!.forEach((element: any) => {\n    if (column.property === element.prop) {\n      column.order = element.order\n    }\n  })\n}\n\nconst handleSortChange = ({ prop, order }: any) => {\n  if (order) {\n    //参与排序\n    // let flagIsHave = false;\n    orderArray.value = orderArray.value!.filter(\n      (item: any) => item.prop !== prop\n    )\n    // orderArray.value!.forEach((element: any) => {\n    //   if (element.prop === prop) {\n    //     element.order = order;\n    //     flagIsHave = true;\n    //   }\n    // });\n    orderArray.value!.push({\n      prop,\n      order,\n    })\n  } else {\n    //不参与排序\n    orderArray.value! = orderArray.value!.filter((element: any) => {\n      return element.prop !== prop\n    })\n  }\n  emit('table-sort-change', orderArray.value)\n}\n\nconst handleCurrentChangePage = (val: number) => {\n  emit('current-change', val)\n}\n\nconst handleSizeChange = (val: number) => {\n  emit('size-change', val)\n}\n\nconst handleCurrentChange = (row: any) => {\n  // todo 再次点击选中的取消\n  if (!current.value) {\n    current.value = row\n  } else {\n    current.value = null\n  }\n  if (props.isVirtuallyTable) {\n    emit('table-current-change', row.row)\n  } else {\n    emit('table-current-change', row)\n  }\n}\n\nconst handleRowDblclick = (row: any) => {\n  if (props.isVirtuallyTable) {\n    emit('table-row-dblclick', row.row)\n  } else {\n    emit('table-row-dblclick', row)\n  }\n}\n\nconst handleSelectionChange = (row: any) => {\n  emit('table-selection-change', row)\n}\n\nconst handleClickInfo = (columns: FormBaseColumnsItem, row: any) => {\n  emit('click-info', columns, row)\n}\n\nconst tableLoadFn = (\n  row: any,\n  treeNode: unknown,\n  resolve: (date: any[]) => void\n) => {\n  if (props.tableLoad) {\n    props.tableLoad(row).then((res: any) => {\n      resolve(res)\n    })\n  }\n}\n\nconst doLayout = () => {\n  dataTable.value!.doLayout()\n}\n\nconst clearSelection = () => {\n  dataTable.value!.clearSelection()\n}\n\nconst setCurrentRow = (row: any) => {\n  dataTable.value!.setCurrentRow(row)\n}\n\nconst toggleRowSelection = (row: any, selected: boolean) => {\n  dataTable.value!.toggleRowSelection(row, selected)\n}\n\nconst setRefreshTable = (val: boolean) => {\n  refreshTable.value = val\n}\n\nconst dataTableRef = () => {\n  return dataTable.value\n}\n\ndefineExpose({\n  setRefreshTable,\n  doLayout,\n  clearSelection,\n  setCurrentRow,\n  toggleRowSelection,\n  dataTableRef,\n})\n</script>\n\n<template>\n  <div class=\"el-form-base-main\">\n    <div v-if=\"refreshTable\" class=\"el-form-base-table\">\n      <slot name=\"tableWarp\">\n        <!-- 多选表格 -->\n        <el-table\n          v-if=\"props.rowSingle && !props.tableLazy && !props.isVirtuallyTable\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          :border=\"true\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :default-expand-all=\"props.defaultExpandAll\"\n          :header-cell-style=\"tableBackground\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren2' }\"\n          style=\"width: 100%\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          height=\"100%\"\n          @sort-change=\"handleSortChange\"\n          @selection-change=\"handleSelectionChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <form-base-table-column\n            v-for=\"(item, index) in getColumnsExpand\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumnsExpand\"\n            @click-info=\"handleClickInfo\"\n          />\n          <el-table-column\n            type=\"selection\"\n            :align=\"props.selectionAlign\"\n            :width=\"props.selectionWidth\"\n            :fixed=\"props.selectionFixed\"\n          />\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"(item, index) in getColumns\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 单选表格 -->\n        <el-table\n          v-if=\"!props.rowSingle && !props.isVirtuallyTable && !props.tableLazy\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          :border=\"true\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :default-expand-all=\"props.defaultExpandAll\"\n          highlight-current-row\n          :header-cell-style=\"tableBackground\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren2' }\"\n          style=\"width: 100%\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          height=\"100%\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @sort-change=\"handleSortChange\"\n          @current-change=\"handleCurrentChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <form-base-table-column\n            v-for=\"(item, index) in getColumnsExpand\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumnsExpand\"\n            @click-info=\"handleClickInfo\"\n          />\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"(item, index) in getColumns\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 单选懒加载表格 -->\n        <el-table\n          v-if=\"!props.rowSingle && props.tableLazy\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          height=\"100%\"\n          :border=\"true\"\n          style=\"width: 100%\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :header-cell-style=\"tableBackground\"\n          highlight-current-row\n          :lazy=\"props.tableLazy\"\n          :load=\"tableLoadFn\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @sort-change=\"handleSortChange\"\n          @current-change=\"handleCurrentChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"item in state.columns\"\n            :key=\"item.prop\"\n            :column=\"item as any\"\n            :columnsData=\"state.columns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 多选懒加载表格 -->\n        <el-table\n          v-if=\"props.rowSingle && props.tableLazy\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          height=\"100%\"\n          :border=\"true\"\n          style=\"width: 100%\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :header-cell-style=\"tableBackground\"\n          highlight-current-row\n          :lazy=\"props.tableLazy\"\n          :load=\"tableLoadFn\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @sort-change=\"handleSortChange\"\n          @selection-change=\"handleSelectionChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <el-table-column\n            type=\"selection\"\n            :align=\"props.selectionAlign\"\n            :width=\"props.selectionWidth\"\n            :fixed=\"props.selectionFixed\"\n          />\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"item in state.columns\"\n            :key=\"item.prop\"\n            :column=\"item as any\"\n            :columnsData=\"state.columns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 单选虚拟化表格 -->\n        <VxeTable\n          v-if=\"!props.rowSingle && !props.tableLazy && props.isVirtuallyTable\"\n          ref=\"dataTable\"\n          show-overflow\n          border\n          height=\"100%\"\n          :row-id=\"rowKey\"\n          :row-config=\"{\n            isHover: true,\n            isCurrent: true,\n            keyField: rowKey,\n          }\"\n          :column-config=\"{ resizable: true }\"\n          :tree-config=\"{\n            transform: true,\n            rowField: rowKey,\n            parentField: 'parentId',\n            expandAll: props.defaultExpandAll,\n          }\"\n          :scroll-y=\"{ gt: 20 }\"\n          :data=\"props.tableData\"\n          @cell-dblclick=\"handleRowDblclick\"\n          @cell-click=\"handleCurrentChange\"\n        >\n          <VxeColumn\n            v-if=\"props.noTableIndex\"\n            type=\"seq\"\n            title=\"序号\"\n            align=\"center\"\n            :width=\"props.indexWidth\"\n          />\n          <form-base-table-column-virtually\n            v-for=\"item in state.columns\"\n            :key=\"item.prop\"\n            :column=\"item as any\"\n            :columnsData=\"state.columns\"\n            @click-info=\"handleClickInfo\"\n          />\n        </VxeTable>\n        <!-- 多选虚拟化表格 -->\n        <div\n          v-if=\"props.rowSingle && !props.tableLazy && props.isVirtuallyTable\"\n        >\n          单选虚拟化表格\n        </div>\n      </slot>\n    </div>\n    <div v-if=\"props.noPagination\" class=\"el-form-base-pagination\">\n      <div class=\"el-form-base-pagination-right\">\n        <el-pagination\n          background\n          :current-page=\"props.pagination.pageNumber\"\n          :page-sizes=\"[10, 20, 30, 50, 100]\"\n          :page-size=\"props.pagination.pageSize\"\n          layout=\"total, sizes, prev, pager, next\"\n          :total=\"props.pagination.total\"\n          @size-change=\"handleSizeChange\"\n          @current-change=\"handleCurrentChangePage\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n","<script setup lang=\"ts\" name=\"form-base-table\">\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { formBaseTableEmits, formBaseTableProps } from './form-base-table'\nimport formBaseTableColumn from './form-base-table-column.vue'\nimport formBaseTableColumnVirtually from './form-base-table-column-virtually.vue'\nimport type { FormBaseColumns, FormBaseColumnsItem } from './form-base'\n\nconst props = defineProps(formBaseTableProps)\nconst emit = defineEmits(formBaseTableEmits)\nconst current = ref(null)\nconst dataTable = ref()\n\nconst defaultSort = ref({})\nconst orderArray: any = ref([])\nconst refreshTable = ref(true)\n\nconst tableHeadBackground = useGlobalConfig('tableHeadBackground')\nconst tableBackground = computed(() => {\n  if (tableHeadBackground.value) {\n    return { background: tableHeadBackground.value }\n  }\n  return {}\n})\n\ntype StateType = {\n  columns: FormBaseColumns\n}\n\nconst state = reactive<StateType>({\n  columns: [],\n})\n\nwatch(\n  () => props.columns,\n  (val) => {\n    Object.assign(state.columns, val)\n  },\n  {\n    deep: true,\n    immediate: true,\n  }\n)\n\nconst getColumnsExpand = computed(() => {\n  return state.columns.filter((item) => item.expand)\n})\n\nconst getColumns = computed(() => {\n  return state.columns.filter((item) => !item.expand)\n})\n\nconst handleHeaderCellClass = ({ column }: any) => {\n  orderArray.value!.forEach((element: any) => {\n    if (column.property === element.prop) {\n      column.order = element.order\n    }\n  })\n}\n\nconst handleSortChange = ({ prop, order }: any) => {\n  if (order) {\n    //参与排序\n    // let flagIsHave = false;\n    orderArray.value = orderArray.value!.filter(\n      (item: any) => item.prop !== prop\n    )\n    // orderArray.value!.forEach((element: any) => {\n    //   if (element.prop === prop) {\n    //     element.order = order;\n    //     flagIsHave = true;\n    //   }\n    // });\n    orderArray.value!.push({\n      prop,\n      order,\n    })\n  } else {\n    //不参与排序\n    orderArray.value! = orderArray.value!.filter((element: any) => {\n      return element.prop !== prop\n    })\n  }\n  emit('table-sort-change', orderArray.value)\n}\n\nconst handleCurrentChangePage = (val: number) => {\n  emit('current-change', val)\n}\n\nconst handleSizeChange = (val: number) => {\n  emit('size-change', val)\n}\n\nconst handleCurrentChange = (row: any) => {\n  // todo 再次点击选中的取消\n  if (!current.value) {\n    current.value = row\n  } else {\n    current.value = null\n  }\n  if (props.isVirtuallyTable) {\n    emit('table-current-change', row.row)\n  } else {\n    emit('table-current-change', row)\n  }\n}\n\nconst handleRowDblclick = (row: any) => {\n  if (props.isVirtuallyTable) {\n    emit('table-row-dblclick', row.row)\n  } else {\n    emit('table-row-dblclick', row)\n  }\n}\n\nconst handleSelectionChange = (row: any) => {\n  emit('table-selection-change', row)\n}\n\nconst handleClickInfo = (columns: FormBaseColumnsItem, row: any) => {\n  emit('click-info', columns, row)\n}\n\nconst tableLoadFn = (\n  row: any,\n  treeNode: unknown,\n  resolve: (date: any[]) => void\n) => {\n  if (props.tableLoad) {\n    props.tableLoad(row).then((res: any) => {\n      resolve(res)\n    })\n  }\n}\n\nconst doLayout = () => {\n  dataTable.value!.doLayout()\n}\n\nconst clearSelection = () => {\n  dataTable.value!.clearSelection()\n}\n\nconst setCurrentRow = (row: any) => {\n  dataTable.value!.setCurrentRow(row)\n}\n\nconst toggleRowSelection = (row: any, selected: boolean) => {\n  dataTable.value!.toggleRowSelection(row, selected)\n}\n\nconst setRefreshTable = (val: boolean) => {\n  refreshTable.value = val\n}\n\nconst dataTableRef = () => {\n  return dataTable.value\n}\n\ndefineExpose({\n  setRefreshTable,\n  doLayout,\n  clearSelection,\n  setCurrentRow,\n  toggleRowSelection,\n  dataTableRef,\n})\n</script>\n\n<template>\n  <div class=\"el-form-base-main\">\n    <div v-if=\"refreshTable\" class=\"el-form-base-table\">\n      <slot name=\"tableWarp\">\n        <!-- 多选表格 -->\n        <el-table\n          v-if=\"props.rowSingle && !props.tableLazy && !props.isVirtuallyTable\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          :border=\"true\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :default-expand-all=\"props.defaultExpandAll\"\n          :header-cell-style=\"tableBackground\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren2' }\"\n          style=\"width: 100%\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          height=\"100%\"\n          @sort-change=\"handleSortChange\"\n          @selection-change=\"handleSelectionChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <form-base-table-column\n            v-for=\"(item, index) in getColumnsExpand\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumnsExpand\"\n            @click-info=\"handleClickInfo\"\n          />\n          <el-table-column\n            type=\"selection\"\n            :align=\"props.selectionAlign\"\n            :width=\"props.selectionWidth\"\n            :fixed=\"props.selectionFixed\"\n          />\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"(item, index) in getColumns\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 单选表格 -->\n        <el-table\n          v-if=\"!props.rowSingle && !props.isVirtuallyTable && !props.tableLazy\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          :border=\"true\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :default-expand-all=\"props.defaultExpandAll\"\n          highlight-current-row\n          :header-cell-style=\"tableBackground\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren2' }\"\n          style=\"width: 100%\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          height=\"100%\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @sort-change=\"handleSortChange\"\n          @current-change=\"handleCurrentChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <form-base-table-column\n            v-for=\"(item, index) in getColumnsExpand\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumnsExpand\"\n            @click-info=\"handleClickInfo\"\n          />\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"(item, index) in getColumns\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 单选懒加载表格 -->\n        <el-table\n          v-if=\"!props.rowSingle && props.tableLazy\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          height=\"100%\"\n          :border=\"true\"\n          style=\"width: 100%\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :header-cell-style=\"tableBackground\"\n          highlight-current-row\n          :lazy=\"props.tableLazy\"\n          :load=\"tableLoadFn\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @sort-change=\"handleSortChange\"\n          @current-change=\"handleCurrentChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"item in state.columns\"\n            :key=\"item.prop\"\n            :column=\"item as any\"\n            :columnsData=\"state.columns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 多选懒加载表格 -->\n        <el-table\n          v-if=\"props.rowSingle && props.tableLazy\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          height=\"100%\"\n          :border=\"true\"\n          style=\"width: 100%\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :header-cell-style=\"tableBackground\"\n          highlight-current-row\n          :lazy=\"props.tableLazy\"\n          :load=\"tableLoadFn\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @sort-change=\"handleSortChange\"\n          @selection-change=\"handleSelectionChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <el-table-column\n            type=\"selection\"\n            :align=\"props.selectionAlign\"\n            :width=\"props.selectionWidth\"\n            :fixed=\"props.selectionFixed\"\n          />\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"item in state.columns\"\n            :key=\"item.prop\"\n            :column=\"item as any\"\n            :columnsData=\"state.columns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 单选虚拟化表格 -->\n        <VxeTable\n          v-if=\"!props.rowSingle && !props.tableLazy && props.isVirtuallyTable\"\n          ref=\"dataTable\"\n          show-overflow\n          border\n          height=\"100%\"\n          :row-id=\"rowKey\"\n          :row-config=\"{\n            isHover: true,\n            isCurrent: true,\n            keyField: rowKey,\n          }\"\n          :column-config=\"{ resizable: true }\"\n          :tree-config=\"{\n            transform: true,\n            rowField: rowKey,\n            parentField: 'parentId',\n            expandAll: props.defaultExpandAll,\n          }\"\n          :scroll-y=\"{ gt: 20 }\"\n          :data=\"props.tableData\"\n          @cell-dblclick=\"handleRowDblclick\"\n          @cell-click=\"handleCurrentChange\"\n        >\n          <VxeColumn\n            v-if=\"props.noTableIndex\"\n            type=\"seq\"\n            title=\"序号\"\n            align=\"center\"\n            :width=\"props.indexWidth\"\n          />\n          <form-base-table-column-virtually\n            v-for=\"item in state.columns\"\n            :key=\"item.prop\"\n            :column=\"item as any\"\n            :columnsData=\"state.columns\"\n            @click-info=\"handleClickInfo\"\n          />\n        </VxeTable>\n        <!-- 多选虚拟化表格 -->\n        <div\n          v-if=\"props.rowSingle && !props.tableLazy && props.isVirtuallyTable\"\n        >\n          单选虚拟化表格\n        </div>\n      </slot>\n    </div>\n    <div v-if=\"props.noPagination\" class=\"el-form-base-pagination\">\n      <div class=\"el-form-base-pagination-right\">\n        <el-pagination\n          background\n          :current-page=\"props.pagination.pageNumber\"\n          :page-sizes=\"[10, 20, 30, 50, 100]\"\n          :page-size=\"props.pagination.pageSize\"\n          layout=\"total, sizes, prev, pager, next\"\n          :total=\"props.pagination.total\"\n          @size-change=\"handleSizeChange\"\n          @current-change=\"handleCurrentChangePage\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n","<script setup lang=\"ts\" name=\"form-base-table\">\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { formBaseTableEmits, formBaseTableProps } from './form-base-table'\nimport formBaseTableColumn from './form-base-table-column.vue'\nimport formBaseTableColumnVirtually from './form-base-table-column-virtually.vue'\nimport type { FormBaseColumns, FormBaseColumnsItem } from './form-base'\n\nconst props = defineProps(formBaseTableProps)\nconst emit = defineEmits(formBaseTableEmits)\nconst current = ref(null)\nconst dataTable = ref()\n\nconst defaultSort = ref({})\nconst orderArray: any = ref([])\nconst refreshTable = ref(true)\n\nconst tableHeadBackground = useGlobalConfig('tableHeadBackground')\nconst tableBackground = computed(() => {\n  if (tableHeadBackground.value) {\n    return { background: tableHeadBackground.value }\n  }\n  return {}\n})\n\ntype StateType = {\n  columns: FormBaseColumns\n}\n\nconst state = reactive<StateType>({\n  columns: [],\n})\n\nwatch(\n  () => props.columns,\n  (val) => {\n    Object.assign(state.columns, val)\n  },\n  {\n    deep: true,\n    immediate: true,\n  }\n)\n\nconst getColumnsExpand = computed(() => {\n  return state.columns.filter((item) => item.expand)\n})\n\nconst getColumns = computed(() => {\n  return state.columns.filter((item) => !item.expand)\n})\n\nconst handleHeaderCellClass = ({ column }: any) => {\n  orderArray.value!.forEach((element: any) => {\n    if (column.property === element.prop) {\n      column.order = element.order\n    }\n  })\n}\n\nconst handleSortChange = ({ prop, order }: any) => {\n  if (order) {\n    //参与排序\n    // let flagIsHave = false;\n    orderArray.value = orderArray.value!.filter(\n      (item: any) => item.prop !== prop\n    )\n    // orderArray.value!.forEach((element: any) => {\n    //   if (element.prop === prop) {\n    //     element.order = order;\n    //     flagIsHave = true;\n    //   }\n    // });\n    orderArray.value!.push({\n      prop,\n      order,\n    })\n  } else {\n    //不参与排序\n    orderArray.value! = orderArray.value!.filter((element: any) => {\n      return element.prop !== prop\n    })\n  }\n  emit('table-sort-change', orderArray.value)\n}\n\nconst handleCurrentChangePage = (val: number) => {\n  emit('current-change', val)\n}\n\nconst handleSizeChange = (val: number) => {\n  emit('size-change', val)\n}\n\nconst handleCurrentChange = (row: any) => {\n  // todo 再次点击选中的取消\n  if (!current.value) {\n    current.value = row\n  } else {\n    current.value = null\n  }\n  if (props.isVirtuallyTable) {\n    emit('table-current-change', row.row)\n  } else {\n    emit('table-current-change', row)\n  }\n}\n\nconst handleRowDblclick = (row: any) => {\n  if (props.isVirtuallyTable) {\n    emit('table-row-dblclick', row.row)\n  } else {\n    emit('table-row-dblclick', row)\n  }\n}\n\nconst handleSelectionChange = (row: any) => {\n  emit('table-selection-change', row)\n}\n\nconst handleClickInfo = (columns: FormBaseColumnsItem, row: any) => {\n  emit('click-info', columns, row)\n}\n\nconst tableLoadFn = (\n  row: any,\n  treeNode: unknown,\n  resolve: (date: any[]) => void\n) => {\n  if (props.tableLoad) {\n    props.tableLoad(row).then((res: any) => {\n      resolve(res)\n    })\n  }\n}\n\nconst doLayout = () => {\n  dataTable.value!.doLayout()\n}\n\nconst clearSelection = () => {\n  dataTable.value!.clearSelection()\n}\n\nconst setCurrentRow = (row: any) => {\n  dataTable.value!.setCurrentRow(row)\n}\n\nconst toggleRowSelection = (row: any, selected: boolean) => {\n  dataTable.value!.toggleRowSelection(row, selected)\n}\n\nconst setRefreshTable = (val: boolean) => {\n  refreshTable.value = val\n}\n\nconst dataTableRef = () => {\n  return dataTable.value\n}\n\ndefineExpose({\n  setRefreshTable,\n  doLayout,\n  clearSelection,\n  setCurrentRow,\n  toggleRowSelection,\n  dataTableRef,\n})\n</script>\n\n<template>\n  <div class=\"el-form-base-main\">\n    <div v-if=\"refreshTable\" class=\"el-form-base-table\">\n      <slot name=\"tableWarp\">\n        <!-- 多选表格 -->\n        <el-table\n          v-if=\"props.rowSingle && !props.tableLazy && !props.isVirtuallyTable\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          :border=\"true\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :default-expand-all=\"props.defaultExpandAll\"\n          :header-cell-style=\"tableBackground\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren2' }\"\n          style=\"width: 100%\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          height=\"100%\"\n          @sort-change=\"handleSortChange\"\n          @selection-change=\"handleSelectionChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <form-base-table-column\n            v-for=\"(item, index) in getColumnsExpand\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumnsExpand\"\n            @click-info=\"handleClickInfo\"\n          />\n          <el-table-column\n            type=\"selection\"\n            :align=\"props.selectionAlign\"\n            :width=\"props.selectionWidth\"\n            :fixed=\"props.selectionFixed\"\n          />\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"(item, index) in getColumns\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 单选表格 -->\n        <el-table\n          v-if=\"!props.rowSingle && !props.isVirtuallyTable && !props.tableLazy\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          :border=\"true\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :default-expand-all=\"props.defaultExpandAll\"\n          highlight-current-row\n          :header-cell-style=\"tableBackground\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren2' }\"\n          style=\"width: 100%\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          height=\"100%\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @sort-change=\"handleSortChange\"\n          @current-change=\"handleCurrentChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <form-base-table-column\n            v-for=\"(item, index) in getColumnsExpand\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumnsExpand\"\n            @click-info=\"handleClickInfo\"\n          />\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"(item, index) in getColumns\"\n            :key=\"index\"\n            :column=\"item as any\"\n            :columnsData=\"getColumns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 单选懒加载表格 -->\n        <el-table\n          v-if=\"!props.rowSingle && props.tableLazy\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          height=\"100%\"\n          :border=\"true\"\n          style=\"width: 100%\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :header-cell-style=\"tableBackground\"\n          highlight-current-row\n          :lazy=\"props.tableLazy\"\n          :load=\"tableLoadFn\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @sort-change=\"handleSortChange\"\n          @current-change=\"handleCurrentChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"item in state.columns\"\n            :key=\"item.prop\"\n            :column=\"item as any\"\n            :columnsData=\"state.columns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 多选懒加载表格 -->\n        <el-table\n          v-if=\"props.rowSingle && props.tableLazy\"\n          ref=\"dataTable\"\n          :data=\"props.tableData\"\n          height=\"100%\"\n          :border=\"true\"\n          style=\"width: 100%\"\n          :row-key=\"props.rowKey\"\n          :span-method=\"props.spanMethod\"\n          :header-cell-style=\"tableBackground\"\n          highlight-current-row\n          :lazy=\"props.tableLazy\"\n          :load=\"tableLoadFn\"\n          :default-sort=\"defaultSort\"\n          :header-cell-class-name=\"handleHeaderCellClass\"\n          :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @sort-change=\"handleSortChange\"\n          @selection-change=\"handleSelectionChange\"\n          @row-dblclick=\"handleRowDblclick\"\n        >\n          <el-table-column\n            type=\"selection\"\n            :align=\"props.selectionAlign\"\n            :width=\"props.selectionWidth\"\n            :fixed=\"props.selectionFixed\"\n          />\n          <el-table-column\n            v-if=\"props.noTableIndex\"\n            type=\"index\"\n            :align=\"props.indexAlign\"\n            :width=\"props.indexWidth\"\n            label=\"序号\"\n            :fixed=\"props.indexFixed\"\n          />\n          <form-base-table-column\n            v-for=\"item in state.columns\"\n            :key=\"item.prop\"\n            :column=\"item as any\"\n            :columnsData=\"state.columns\"\n            @click-info=\"handleClickInfo\"\n          />\n          <template #empty>\n            <el-empty description=\"暂无数据\" :image-size=\"120\" />\n          </template>\n        </el-table>\n        <!-- 单选虚拟化表格 -->\n        <VxeTable\n          v-if=\"!props.rowSingle && !props.tableLazy && props.isVirtuallyTable\"\n          ref=\"dataTable\"\n          show-overflow\n          border\n          height=\"100%\"\n          :row-id=\"rowKey\"\n          :row-config=\"{\n            isHover: true,\n            isCurrent: true,\n            keyField: rowKey,\n          }\"\n          :column-config=\"{ resizable: true }\"\n          :tree-config=\"{\n            transform: true,\n            rowField: rowKey,\n            parentField: 'parentId',\n            expandAll: props.defaultExpandAll,\n          }\"\n          :scroll-y=\"{ gt: 20 }\"\n          :data=\"props.tableData\"\n          @cell-dblclick=\"handleRowDblclick\"\n          @cell-click=\"handleCurrentChange\"\n        >\n          <VxeColumn\n            v-if=\"props.noTableIndex\"\n            type=\"seq\"\n            title=\"序号\"\n            align=\"center\"\n            :width=\"props.indexWidth\"\n          />\n          <form-base-table-column-virtually\n            v-for=\"item in state.columns\"\n            :key=\"item.prop\"\n            :column=\"item as any\"\n            :columnsData=\"state.columns\"\n            @click-info=\"handleClickInfo\"\n          />\n        </VxeTable>\n        <!-- 多选虚拟化表格 -->\n        <div\n          v-if=\"props.rowSingle && !props.tableLazy && props.isVirtuallyTable\"\n        >\n          单选虚拟化表格\n        </div>\n      </slot>\n    </div>\n    <div v-if=\"props.noPagination\" class=\"el-form-base-pagination\">\n      <div class=\"el-form-base-pagination-right\">\n        <el-pagination\n          background\n          :current-page=\"props.pagination.pageNumber\"\n          :page-sizes=\"[10, 20, 30, 50, 100]\"\n          :page-size=\"props.pagination.pageSize\"\n          layout=\"total, sizes, prev, pager, next\"\n          :total=\"props.pagination.total\"\n          @size-change=\"handleSizeChange\"\n          @current-change=\"handleCurrentChangePage\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n","import { computed } from 'vue'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport type { FormBaseProps } from './form-base'\n\nexport default function useFormBase(props: FormBaseProps) {\n  const pageSize = useGlobalConfig('pageSize')\n  const pageNum = useGlobalConfig('pageNum')\n  const isHiddenAddBtn = useGlobalConfig('isHiddenAddBtn')\n  const isHiddenEditBtn = useGlobalConfig('isHiddenEditBtn')\n  const isHiddenDelBtn = useGlobalConfig('isHiddenDelBtn')\n  const isHiddenBatchBtn = useGlobalConfig('isHiddenBatchBtn')\n  const buttonArea = useGlobalConfig('buttonArea')\n\n  // 是否隐藏新建按钮\n  const hiddenAddBtn = computed(\n    () => props.noAddBtn && isHiddenAddBtn.value === 'show'\n  )\n\n  // 是否隐藏编辑按钮\n  const hiddenEditBtn = computed(\n    () => props.noEditBtn && isHiddenEditBtn.value === 'show'\n  )\n\n  // 是否隐藏删除按钮\n  const hiddenDelBtn = computed(\n    () => props.noDelBtn && isHiddenDelBtn.value === 'show'\n  )\n\n  // 是否隐藏批量删除按钮\n  const hiddenBatchBtn = computed(\n    () => props.noBatchBtn && isHiddenBatchBtn.value === 'show'\n  )\n\n  // 是否隐藏表格上面的操作按钮\n  const isButtonAreaType = computed(() => buttonArea.value === 'default')\n\n  const searchTypeStr = useGlobalConfig('searchType')\n  const clearTypeStr = useGlobalConfig('clearType')\n  const addTypeStr = useGlobalConfig('addType')\n  const updateTypeStr = useGlobalConfig('updateType')\n  const deleteTypeStr = useGlobalConfig('deleteType')\n  const batchDelTypeStr = useGlobalConfig('batchDelType')\n  const expandTypeStr = useGlobalConfig('expandType')\n  const saveTypeStr = useGlobalConfig('saveType')\n  const cancelTypeStr = useGlobalConfig('cancelType')\n  const paginationTotal = useGlobalConfig('paginationTotal')\n  const draftBtnTypeStr = useGlobalConfig('draftBtnType')\n  const initiateProcessBtnTypeStr = useGlobalConfig('initiateProcessBtnType')\n  const columnsStr = useGlobalConfig('columns')\n\n  const globalDoubleClickDetails = useGlobalConfig('globalDoubleClickDetails')\n  const flowStatusData = useGlobalConfig('flowStatusData')\n  const defaultFlowStatus = useGlobalConfig('defaultFlowStatus')\n  const flowStatusWidth = useGlobalConfig('flowStatusWidth')\n\n  const customSetUpRender = useGlobalConfig('customSetUpRender')\n  const customSetUpCallback = useGlobalConfig('customSetUpCallback')\n\n  const paginationPageSizeStr = useGlobalConfig('paginationPageSize')\n  const paginationPageNumStr = useGlobalConfig('paginationPageNum')\n\n  return {\n    pageSize,\n    pageNum,\n    hiddenAddBtn,\n    hiddenEditBtn,\n    hiddenDelBtn,\n    hiddenBatchBtn,\n    isButtonAreaType,\n    searchTypeStr,\n    clearTypeStr,\n    addTypeStr,\n    updateTypeStr,\n    deleteTypeStr,\n    batchDelTypeStr,\n    expandTypeStr,\n    saveTypeStr,\n    cancelTypeStr,\n    paginationTotal,\n    draftBtnTypeStr,\n    initiateProcessBtnTypeStr,\n    columnsStr,\n    globalDoubleClickDetails,\n    flowStatusData,\n    defaultFlowStatus,\n    flowStatusWidth,\n    customSetUpRender,\n    customSetUpCallback,\n    paginationPageSizeStr,\n    paginationPageNumStr,\n  }\n}\n","import { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport type { FormBaseProps } from './form-base'\n\nexport default function useFormBaseLocale(props: FormBaseProps) {\n  const { t } = useLocale()\n\n  // 新建按钮文字\n  const localeAddBtnText = computed(\n    () => props.addBtnText || t('el.formBase.addBtnText')\n  )\n\n  // 编辑按钮文字\n  const localeEditBtnText = computed(\n    () => props.editBtnText || t('el.formBase.editBtnText')\n  )\n\n  // 删除按钮文字\n  const localeDelBtnText = computed(\n    () => props.delBtnText || t('el.formBase.delBtnText')\n  )\n\n  // 批量删除按钮文字\n  const localeBatchBtnText = computed(\n    () => props.batchBtnText || t('el.formBase.batchBtnText')\n  )\n\n  // 展开按钮文字\n  const localeExpandBtnText = computed(() => t('el.formBase.expandBtnText'))\n\n  // 折叠按钮文字\n  const localeFoldBtnText = computed(() => t('el.formBase.foldBtnText'))\n\n  // 查询按钮文字\n  const localeSearchBtnText = computed(\n    () => props.searchBtnText || t('el.formBase.searchBtnText')\n  )\n\n  // 清空按钮文字\n  const localeClearBtnText = computed(\n    () => props.clearBtnText || t('el.formBase.clearBtnText')\n  )\n\n  // 保存按钮\n  const localeConfirmBtnText = computed(\n    () => props.confirmBtnText || t('el.formBase.confirm')\n  )\n\n  // 新建成功！\n  const localeTextAddSuccess = computed(\n    () => props.textAddSuccess || t('el.formBase.textAddSuccess')\n  )\n\n  // 修改成功！\n  const localeTextEditSuccess = computed(\n    () => props.textEditSuccess || t('el.formBase.textEditSuccess')\n  )\n\n  // 删除成功！\n  const localeTextDelSuccess = computed(\n    () => props.textDelSuccess || t('el.formBase.textDelSuccess')\n  )\n\n  // 是否删除已选中数据？\n  const localeTextDelStr = computed(\n    () => props.textDelStr || t('el.formBase.textDelStr')\n  )\n\n  // 您没有选中任何数据项,请选中后再操作！\n  const localeTextEmptyOption = computed(\n    () => props.textEmptyOption || t('el.formBase.textEmptyOption')\n  )\n\n  // 请选择一条数据！\n  const localeTextEmptyOptionOne = computed(\n    () => props.textEmptyOptionOne || t('el.formBase.textEmptyOptionOne')\n  )\n\n  // 暂存\n  const localeStorageBtnText = computed(\n    () => props.storageBtnText || t('el.formBase.storageBtnText')\n  )\n\n  // 保存草稿\n  const localeDraftBtnText = computed(\n    () => props.draftBtnText || t('el.formBase.draftBtnText')\n  )\n\n  // 发起流程\n  const localeInitiateProcessBtnText = computed(\n    () =>\n      props.initiateProcessBtnText || t('el.formBase.initiateProcessBtnText')\n  )\n\n  // 流程保存成功\n  const localeTextDraftSuccess = computed(\n    () => props.textDraftSuccess || t('el.formBase.textDraftSuccess')\n  )\n\n  // 流程保存成功\n  const localeTextProcessSuccess = computed(\n    () => props.textProcessSuccess || t('el.formBase.textProcessSuccess')\n  )\n\n  return {\n    localeAddBtnText,\n    localeEditBtnText,\n    localeDelBtnText,\n    localeBatchBtnText,\n    localeExpandBtnText,\n    localeFoldBtnText,\n    localeSearchBtnText,\n    localeClearBtnText,\n    localeConfirmBtnText,\n    localeTextAddSuccess,\n    localeTextEditSuccess,\n    localeTextDelSuccess,\n    localeTextDelStr,\n    localeTextEmptyOption,\n    localeTextEmptyOptionOne,\n    localeStorageBtnText,\n    localeDraftBtnText,\n    localeInitiateProcessBtnText,\n    localeTextDraftSuccess,\n    localeTextProcessSuccess,\n  }\n}\n","export const formBaseContextKey = Symbol('formBaseContextKey')\n","<template>\n  <div :class=\"[ns.b()]\">\n    <div\n      v-if=\"props.noSearchForm\"\n      class=\"el-form-base-head el-form-base-search\"\n    >\n      <div class=\"el-form-base-inline-box\">\n        <el-form\n          v-if=\"props.noSearchFormLeft\"\n          ref=\"formInlineRef\"\n          :inline=\"true\"\n          :model=\"props.formInline\"\n          label-suffix=\"\"\n          :is-search=\"true\"\n          @submit.prevent\n        >\n          <template v-if=\"searchConditionArr.length === 0\">\n            <slot name=\"searchForm\" :form-inline=\"props.formInline\" />\n          </template>\n          <template v-if=\"searchConditionArr.length > 0\">\n            <el-form-item\n              v-for=\"(item, index) in searchConditionArr\"\n              :key=\"index\"\n              :label=\"item.label\"\n              :prop=\"item.prop\"\n            >\n              <component\n                :is=\"item.searchType\"\n                v-model=\"props.formInline[item.prop]\"\n                :code=\"item.searchValue\"\n              />\n            </el-form-item>\n          </template>\n          <el-form-item v-if=\"props.hasFlow\" label=\"流程状态\">\n            <el-select\n              v-model=\"approvalStatus\"\n              :style=\"getFlowWidth\"\n              :clearable=\"true\"\n              @change=\"handleChangeFlowStatus\"\n            >\n              <el-option\n                v-for=\"item in getFlowStatus\"\n                :key=\"item.value\"\n                :value=\"item.value\"\n                :label=\"item.label\"\n              />\n            </el-select>\n          </el-form-item>\n          <el-form-item v-if=\"props.noFormInlineBtn\">\n            <slot name=\"searchLeft\" />\n            <el-button\n              v-if=\"props.noSearch\"\n              :type=\"searchTypeStr\"\n              :icon=\"Search\"\n              native-type=\"submit\"\n              @click=\"search\"\n              >{{ localeSearchBtnText }}</el-button\n            >\n            <el-button\n              v-if=\"props.noClear\"\n              :type=\"clearTypeStr\"\n              :icon=\"Delete\"\n              @click=\"clear\"\n              >{{ localeClearBtnText }}</el-button\n            >\n            <slot name=\"searchRight\" />\n          </el-form-item>\n        </el-form>\n      </div>\n      <div\n        v-if=\"props.noOperation && !isButtonAreaType\"\n        class=\"el-form-base-inline-operation\"\n      >\n        <el-button\n          v-if=\"hiddenAddBtn\"\n          :icon=\"Plus\"\n          :type=\"addTypeStr\"\n          @click=\"add\"\n          >{{ localeAddBtnText }}</el-button\n        >\n        <el-button\n          v-if=\"hiddenEditBtn\"\n          :icon=\"EditPen\"\n          :type=\"updateTypeStr\"\n          @click=\"update\"\n          >{{ localeEditBtnText }}</el-button\n        >\n        <el-button\n          v-if=\"hiddenDelBtn\"\n          :icon=\"Delete\"\n          :type=\"deleteTypeStr\"\n          @click=\"del\"\n          >{{ localeDelBtnText }}</el-button\n        >\n        <slot name=\"toolbar\" />\n        <el-button\n          v-if=\"hiddenBatchBtn\"\n          :icon=\"Delete\"\n          :type=\"batchDelTypeStr\"\n          @click=\"batchDel\"\n          >{{ localeBatchBtnText }}</el-button\n        >\n        <template v-if=\"props.noExpandsBtn\">\n          <el-button\n            v-show=\"props.rowKey && !tableDefaultExpandAll\"\n            class=\"el-form-base-expand-btn\"\n            :type=\"expandTypeStr\"\n            :icon=\"DArrowRight\"\n            @click=\"handleToggleExpand\"\n          >\n            {{ localeExpandBtnText }}\n          </el-button>\n          <el-button\n            v-show=\"props.rowKey && tableDefaultExpandAll\"\n            :type=\"expandTypeStr\"\n            class=\"el-form-base-fold-btn\"\n            :icon=\"DArrowRight\"\n            @click=\"handleToggleExpand\"\n          >\n            {{ localeFoldBtnText }}\n          </el-button>\n        </template>\n      </div>\n    </div>\n    <slot name=\"tabList\" />\n    <div class=\"el-form-base-body\">\n      <div\n        v-if=\"props.noOperation && isButtonAreaType\"\n        class=\"el-form-base-operation\"\n      >\n        <div class=\"el-form-base-operation-left\">\n          <el-button v-if=\"hiddenAddBtn\" :type=\"addTypeStr\" :icon=\"Plus\">{{\n            localeAddBtnText\n          }}</el-button>\n          <el-button\n            v-if=\"hiddenEditBtn\"\n            :type=\"updateTypeStr\"\n            :icon=\"EditPen\"\n            >{{ localeEditBtnText }}</el-button\n          >\n          <el-button v-if=\"hiddenDelBtn\" :type=\"deleteTypeStr\" :icon=\"Delete\">{{\n            localeDelBtnText\n          }}</el-button>\n          <slot name=\"toolbar\" />\n          <el-button\n            v-if=\"hiddenBatchBtn\"\n            :type=\"batchDelTypeStr\"\n            :icon=\"Delete\"\n            >{{ localeBatchBtnText }}</el-button\n          >\n        </div>\n        <div v-if=\"props.noRefreshBtn\" class=\"el-form-base-operation-right\" />\n      </div>\n      <slot name=\"table\">\n        <form-base-table\n          ref=\"peTable\"\n          v-if=\"isShowDataTable\"\n          v-loading=\"tableLoading\"\n          element-loading-text=\"正在加载中...\"\n          :row-key=\"props.rowKey\"\n          :primary-key=\"props.primaryKey\"\n          :row-single=\"props.rowSingle\"\n          :columns=\"getColumns\"\n          :table-data=\"tableData\"\n          :pagination=\"pagination\"\n          :no-batch-btn=\"props.noBatchBtn\"\n          :no-pagination=\"props.noPagination\"\n          :no-table-index=\"props.noTableIndex\"\n          :table-lazy=\"props.tableLazy\"\n          :is-virtually-table=\"props.isVirtuallyTable\"\n          :table-transform=\"props.tableTransform\"\n          :selection-width=\"props.selectionWidth\"\n          :selection-align=\"props.selectionAlign\"\n          :selection-fixed=\"props.selectionFixed\"\n          :index-width=\"props.indexWidth\"\n          :index-align=\"props.indexAlign\"\n          :index-fixed=\"props.indexFixed\"\n          :span-method=\"props.spanMethod\"\n          :default-expand-all=\"tableDefaultExpandAll\"\n          :table-load=\"handleTableLoad\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @size-change=\"handleSizeChange\"\n          @current-change=\"handleCurrentChange\"\n          @table-current-change=\"handleTableCurrentChange\"\n          @table-selection-change=\"handleTableSelectionChange\"\n          @table-row-dblclick=\"handleRowDblclick\"\n          @click-info=\"handleClickInfo\"\n          @table-sort-change=\"handleTableSortChange\"\n        >\n          <template #tableWarp>\n            <slot name=\"tableWarp\" />\n          </template>\n        </form-base-table>\n      </slot>\n    </div>\n\n    <template v-if=\"props.dialogType === 'dialog'\">\n      <el-dialog\n        v-model=\"dialogVisible\"\n        :title=\"dialogTitle\"\n        :close-on-click-modal=\"false\"\n        :width=\"props.dialogWidth\"\n        :before-close=\"beforeClose\"\n        modal-class=\"form-base-dialog\"\n        draggable\n      >\n        <slot name=\"addWarp\">\n          <el-form\n            ref=\"addFormRef\"\n            :model=\"cloneAddForm\"\n            :rules=\"props.rules\"\n            :label-width=\"props.labelWidth\"\n            status-icon\n            :disabled=\"addFormDisabled\"\n            :validateOnRuleChange=\"props.validateOnRuleChange\"\n          >\n            <slot name=\"add\" :add-form=\"cloneAddForm\" />\n          </el-form>\n        </slot>\n        <template #footer>\n          <span class=\"dialog-footer\">\n            <slot name=\"dialog-footer-left\" />\n            <el-button\n              v-if=\"props.noCancelBtn\"\n              :type=\"cancelTypeStr\"\n              @click=\"beforeClose()\"\n              >{{ t('el.formBase.cancel') }}</el-button\n            >\n            <slot name=\"dialog-footer-center\" />\n            <template v-if=\"!hasFlow\">\n              <el-button\n                v-if=\"!addFormDisabled && props.noConfirmBtn\"\n                :type=\"saveTypeStr\"\n                :loading=\"formBtnLoading\"\n                @click=\"save(addFormRef)\"\n              >\n                {{ localeConfirmBtnText }}\n              </el-button>\n            </template>\n            <template v-else>\n              <el-button\n                v-if=\"props.noStorageBtn\"\n                type=\"colour-10\"\n                :loading=\"storageBtnLoading\"\n                @click=\"storage\"\n                >{{ localeStorageBtnText }}</el-button\n              >\n              <el-button\n                v-if=\"!draftBtnDisabled && props.noDraftBtn\"\n                :type=\"draftBtnTypeStr\"\n                :loading=\"draftBtnLoading\"\n                @click=\"draft(addFormRef)\"\n                >{{ localeDraftBtnText }}</el-button\n              >\n              <el-button\n                v-if=\"!initiateProcessBtnDisabled && props.noInitiateProcessBtn\"\n                :type=\"initiateProcessBtnTypeStr\"\n                :loading=\"initiateProcessBtnLoading\"\n                @click=\"startProcess(addFormRef)\"\n                >{{ localeInitiateProcessBtnText }}</el-button\n              >\n              <pit-view-process\n                v-if=\"props.operatingTypeProps != 'info' && props.hasFlow\"\n                :flow-code=\"props.flowCode\"\n                :bid-id=\"cloneAddForm.bidId\"\n              />\n            </template>\n            <slot name=\"dialog-footer-right\" />\n          </span>\n        </template>\n      </el-dialog>\n    </template>\n    <template v-else>\n      <el-dialog-header\n        v-model=\"dialogHeaderVisible\"\n        :title=\"dialogTitle\"\n        :width=\"props.dialogWidth\"\n        :before-close=\"beforeClose\"\n        :close-on-click-modal=\"false\"\n        :no-cancel-btn=\"props.noCancelBtn\"\n        modal-class=\"form-base-dialog-header\"\n      >\n        <slot name=\"addWarp\">\n          <el-form\n            ref=\"addFormRef\"\n            :model=\"cloneAddForm\"\n            :rules=\"props.rules\"\n            :label-width=\"props.labelWidth\"\n            status-icon\n            :disabled=\"addFormDisabled\"\n            :validateOnRuleChange=\"props.validateOnRuleChange\"\n          >\n            <slot name=\"add\" :add-form=\"cloneAddForm\" />\n          </el-form>\n        </slot>\n        <template #footer-right>\n          <slot name=\"dialog-footer-left\" />\n          <slot name=\"dialog-footer-center\" />\n          <template v-if=\"!hasFlow\">\n            <el-button\n              v-if=\"!addFormDisabled && props.noConfirmBtn\"\n              :type=\"saveTypeStr\"\n              :loading=\"formBtnLoading\"\n              @click=\"save(addFormRef)\"\n            >\n              {{ localeConfirmBtnText }}\n            </el-button>\n          </template>\n          <template v-else>\n            <el-button\n              v-if=\"props.noStorageBtn\"\n              type=\"colour-10\"\n              :loading=\"storageBtnLoading\"\n              @click=\"storage\"\n              >{{ localeStorageBtnText }}</el-button\n            >\n            <el-button\n              v-if=\"!draftBtnDisabled && props.noDraftBtn\"\n              :type=\"draftBtnTypeStr\"\n              :loading=\"draftBtnLoading\"\n              @click=\"draft(addFormRef)\"\n              >{{ localeDraftBtnText }}</el-button\n            >\n            <el-button\n              v-if=\"!initiateProcessBtnDisabled && props.noInitiateProcessBtn\"\n              :type=\"initiateProcessBtnTypeStr\"\n              :loading=\"initiateProcessBtnLoading\"\n              @click=\"startProcess(addFormRef)\"\n              >{{ localeInitiateProcessBtnText }}</el-button\n            >\n            <pit-view-process\n              v-if=\"props.operatingTypeProps != 'info' && props.hasFlow\"\n              :flow-code=\"props.flowCode\"\n              :bid-id=\"cloneAddForm.bidId\"\n            />\n          </template>\n          <slot name=\"dialog-footer-right\" />\n        </template>\n      </el-dialog-header>\n    </template>\n\n    <component\n      :is=\"customSetUpRender\"\n      v-if=\"props.isSetUpRender\"\n      @click=\"setupClick\"\n    />\n  </div>\n</template>\n\n<script setup lang=\"tsx\">\nimport {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport { DArrowRight, Delete, EditPen, Plus, Search } from 'pit-element-icons'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n  useGlobalProperties,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport { getObjectValue, renderTemplate } from '@pit-element-plus/utils'\nimport { ElMessage, ElMessageBox } from '@pit-element-plus/components'\nimport { formBaseEmits, formBaseProps } from './form-base'\nimport formBaseTable from './form-base-table.vue'\nimport useFormBase from './use-form-base'\nimport useFormBaseLocale from './use-form-base-locale'\nimport { formBaseContextKey } from './constants'\nimport type { FormBaseColumnsItem } from './form-base'\nimport type { FormInstance } from '@pit-element-plus/components/form'\nimport type { FormBaseContext } from './types'\n\ndefineOptions({\n  name: 'ElFormBase',\n})\n\nconst ns = useNamespace('form-base')\nconst { t } = useLocale()\nconst global = useGlobalProperties()\nconst props = defineProps(formBaseProps)\nconst emit = defineEmits(formBaseEmits)\n\nconst {\n  pageSize,\n  pageNum,\n  hiddenAddBtn,\n  hiddenEditBtn,\n  hiddenDelBtn,\n  hiddenBatchBtn,\n  isButtonAreaType,\n  searchTypeStr,\n  clearTypeStr,\n  addTypeStr,\n  updateTypeStr,\n  deleteTypeStr,\n  batchDelTypeStr,\n  expandTypeStr,\n  saveTypeStr,\n  cancelTypeStr,\n  paginationTotal,\n  draftBtnTypeStr,\n  initiateProcessBtnTypeStr,\n  columnsStr,\n  flowStatusData,\n  defaultFlowStatus,\n  flowStatusWidth,\n  customSetUpRender,\n  customSetUpCallback,\n  paginationPageSizeStr,\n  paginationPageNumStr,\n} = useFormBase(props)\n\nconst {\n  localeAddBtnText,\n  localeEditBtnText,\n  localeDelBtnText,\n  localeBatchBtnText,\n  localeExpandBtnText,\n  localeFoldBtnText,\n  localeSearchBtnText,\n  localeClearBtnText,\n  localeConfirmBtnText,\n  localeTextAddSuccess,\n  localeTextEditSuccess,\n  localeTextDelSuccess,\n  localeTextDelStr,\n  localeTextEmptyOption,\n  localeTextEmptyOptionOne,\n  localeStorageBtnText,\n  localeDraftBtnText,\n  localeInitiateProcessBtnText,\n  localeTextDraftSuccess,\n  localeTextProcessSuccess,\n} = useFormBaseLocale(props)\n\nconst tableData: any = ref([])\nconst tableLoading = ref(false)\nconst isShowDataTable = ref(true)\nconst pagination = ref({\n  pageSize: pageSize.value,\n  pageNum: pageNum.value,\n  total: 0,\n})\n\nconst formInlineRef = ref<FormInstance>()\nconst addFormRef = ref<FormInstance>()\nconst dialogVisible = ref(false)\nconst dialogHeaderVisible = ref(false)\nconst formBtnLoading = ref(false)\nconst operatingType = ref('add')\nconst dialogTitle = ref(t('el.formBase.addBtnText'))\nconst cloneAddForm = reactive(JSON.parse(JSON.stringify(props.addForm || {})))\nconst addFormDisabled = ref(false)\n\nconst tableDefaultExpandAll = ref(props.defaultExpandAll)\n\nconst draftBtnLoading = ref(false)\nconst initiateProcessBtnLoading = ref(false)\nconst draftBtnDisabled = ref(false)\nconst initiateProcessBtnDisabled = ref(false)\nconst storageBtnLoading = ref(false)\n\nconst approvalStatus = ref(defaultFlowStatus.value)\n\nconst peTable = ref()\nconst currentRow = ref(null)\nconst multipleSelection = ref([])\n\nconst orderArray: any = ref([])\n\nconst searchConditionArr: Record<string, any> = ref([])\n\nwatch(\n  () => props.addForm,\n  (val) => {\n    Object.assign(cloneAddForm, cloneDeep(val))\n  },\n  { deep: true, immediate: true }\n)\n\nwatch(\n  () => dialogVisible.value,\n  (val: boolean) => {\n    emit('update:isDialogVisible', val)\n  }\n)\n\nwatch(\n  () => dialogHeaderVisible.value,\n  (val: boolean) => {\n    emit('update:isDialogVisible', val)\n  }\n)\n\nlet vm: any\n\nonMounted(() => {\n  vm = getCurrentInstance()\n  if (props.isDefaultQuery) {\n    query()\n  }\n})\n\nconst getColumns = computed(() => {\n  const route = global.$route?.meta?.menuListData\n  const sortEncoding = global.$route?.meta?.sortEncoding\n  const columns: any = cloneDeep(props.columns)\n  let routerColumns: any = []\n  let searchCondition: any = []\n  if (props.isSetUpRender && route && route.length > 0) {\n    route.forEach((item: any) => {\n      const findColumn = columns.find((k: any) => k.prop === item.prop)\n      const obj = {\n        ...findColumn,\n        prop: item.prop,\n        label: item.label,\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'isDetails')) {\n        obj.isDetails = item.isDetails\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'width')) {\n        obj.width = item.width\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'align')) {\n        obj.align = item.align\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'showOverflow')) {\n        obj.showOverflow = item.showOverflow\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'hidden')) {\n        obj.hidden = item.hidden\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'resizable')) {\n        obj.resizable = item.resizable\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'sortable')) {\n        obj.sortable = item.sortable\n      }\n      routerColumns.push(obj)\n      // 处理搜索条件\n      if (item.isSearch) {\n        let searchItem = {\n          prop: item.prop,\n          label: item.label,\n          searchType: item.searchType,\n          searchValue: item.searchValue,\n        }\n        searchCondition.push(searchItem)\n      }\n    })\n    searchConditionArr.value = searchCondition\n  } else {\n    // 配置了排序编码则去匹配规则\n    if (sortEncoding) {\n      const allSort = global.$pinia?.state?.value?.base?.allSort || {}\n      const sortArr = allSort[sortEncoding] || []\n      sortArr.forEach((item: any) => {\n        const obj = columns.find((i: any) => i.prop === item.value)\n        if (obj) {\n          obj.sortable = item.defaultOption\n        }\n      })\n    }\n    routerColumns = columns\n  }\n  if (props.hasFlow) {\n    const flowStatus = routerColumns.filter(\n      (item: any) => item.label === '流程状态'\n    )\n    if (flowStatus.length === 0) {\n      const index: number = routerColumns.length - 1\n      routerColumns.splice(index, 0, {\n        prop: 'approvalStatus',\n        label: '流程状态',\n        align: global.$TABLE_SIZE.FLOW_STATUS_ALIGN,\n        width: props.tableFlowStatusWidth,\n        render: (_params: any) => (\n          <pit-flow-table-status\n            status={_params.approvalStatus}\n            row={_params}\n            rowKey={props.flowVersion}\n          />\n        ),\n        showOverflow: true,\n      })\n    }\n  }\n  if (columnsStr.value && columnsStr.value.length > 0) {\n    routerColumns = routerColumns.map((item: any) => {\n      // @ts-ignore\n      const newItem: any = columnsStr.value.find((k) => k.label === item.label)\n      if (newItem) {\n        item.width = newItem.width\n        item.align = newItem.align\n        item.showOverflow = newItem.showOverflow\n        item.dateFormatter = newItem.dateFormatter\n        item.renderTooltip = newItem.renderTooltip\n        item.hidden = newItem.hidden\n      }\n      return item\n    })\n  }\n  return routerColumns\n})\n\nconst getFlowWidth = computed(() => {\n  if (props.flowStatusWidth) {\n    return { width: `${props.flowStatusWidth}px` }\n  }\n  if (flowStatusWidth.value) {\n    return { width: `${flowStatusWidth.value}px` }\n  }\n  return {}\n})\n\nconst getFlowStatus = computed((): any => {\n  return flowStatusData.value\n})\n\nconst clear = () => {\n  if (props.clearCallback) {\n    props.clearCallback()\n    clearFn()\n  } else if (props.clearPreventCallback) {\n    props.clearPreventCallback()\n  } else {\n    clearFn()\n  }\n}\n\nconst clearFn = () => {\n  approvalStatus.value = defaultFlowStatus.value\n  formInlineRef.value?.resetFields()\n  multipleSelection.value = []\n  nextTick(() => {\n    query()\n  })\n}\n\nconst query: FormBaseContext['query'] = () => {\n  const fn = (params?: any) => {\n    tableLoading.value = true\n    peTable?.value?.setRefreshTable(false)\n    if (props.queryInterface) {\n      const url = renderTemplate(props.queryInterface, props.formInline)\n      if (props.hasFlow) {\n        props!.formInline!.approvalStatus = approvalStatus.value\n      }\n      let orderBy = ''\n      if (orderArray.value && orderArray.value.length > 0) {\n        orderArray.value.forEach((item: any) => {\n          orderBy += `${item.prop} ${\n            item.order === 'ascending' ? 'asc' : 'desc'\n          }, `\n        })\n        orderBy = orderBy.slice(0, Math.max(0, orderBy.length - 2))\n      }\n      const paginationPageSize: string = paginationPageSizeStr.value as string\n      const paginationPageNum: string= paginationPageNumStr.value as string\n      global.$http\n        .request({\n          url,\n          method: props.queryInterfaceMethod,\n          [props.queryInterfaceMethod === 'GET' ? 'params' : 'data']: {\n            [paginationPageSize]: pagination.value.pageSize,\n            [paginationPageNum]: pagination.value.pageNum,\n            orderBy,\n            ...props.formInline,\n            ...params,\n          },\n        })\n        .then((res: any) => {\n          if (res.data && res.data.list) {\n            tableData.value = res.data.list\n            pagination.value.total = getObjectValue(\n              res.data,\n              paginationTotal.value,\n              0\n            )\n          } else {\n            tableData.value = []\n            pagination.value.total = 0\n          }\n          if (res.data.length > 0) {\n            tableData.value = res.data\n            pagination.value.total = 0\n          } else {\n            tableData.value = res.data.list\n            pagination.value.total = getObjectValue(\n              res.data,\n              paginationTotal.value,\n              0\n            )\n          }\n          emit('result-table-back', tableData.value, res)\n        })\n        .finally(() => {\n          tableLoading.value = false\n          peTable?.value?.setRefreshTable(true)\n        })\n    } else {\n      tableLoading.value = false\n    }\n  }\n  if (props.searchBeforeCallbackPrevent) {\n    props.searchBeforeCallbackPrevent(vm).then((params: any) => {\n      fn(params)\n    })\n  } else {\n    fn()\n  }\n}\n\nconst search: FormBaseContext['search'] = () => {\n  pagination.value.pageNum = 1\n  multipleSelection.value = []\n  if (props.searchBeforeCallback) {\n    const next = props.searchBeforeCallback()\n    if (next) {\n      query()\n    }\n  } else {\n    query()\n  }\n}\n\nconst handleTableLoad = (tree: any) => {\n  return new Promise((resolve, reject) => {\n    if (props.queryInterface) {\n      const params = {\n        ...props.formInline,\n      }\n      params[props.lazyKey] = tree[props.lazyKey]\n      const url = renderTemplate(props.queryInterface, params)\n      global.$http\n        .request({\n          url,\n          method: props.queryInterfaceMethod,\n          [props.queryInterfaceMethod === 'GET' ? 'params' : 'data']: {\n            pageSize: pagination.value.pageSize,\n            pageNumber: pagination.value.pageNum,\n            ...params,\n          },\n        })\n        .then((res: any) => {\n          if (res.data.length > 0) {\n            resolve(res['data'])\n          }\n        })\n        .catch((e: any) => {\n          reject(e)\n        })\n    }\n  })\n}\n\nconst add: FormBaseContext['add'] = () => {\n  if (props.addBeforeCallback) {\n    const next = props.addBeforeCallback()\n    if (next) {\n      operatingType.value = 'add'\n      const addTitle =\n        props.customizeDialogTitle && props.customizeDialogTitle.addTitle\n      dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n      emit('update:operatingTypeProps', 'add')\n      // 判断是弹窗还是全屏弹窗\n      if (props.dialogType === 'dialog') {\n        dialogVisible.value = true\n      } else {\n        dialogHeaderVisible.value = true\n      }\n    }\n  } else if (props.addBeforeAsyncCallback) {\n    props.addBeforeAsyncCallback().then((next: boolean) => {\n      if (next) {\n        operatingType.value = 'add'\n        const addTitle =\n          props.customizeDialogTitle && props.customizeDialogTitle.addTitle\n        dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n        emit('update:operatingTypeProps', 'add')\n        // 判断是弹窗还是全屏弹窗\n        if (props.dialogType === 'dialog') {\n          dialogVisible.value = true\n        } else {\n          dialogHeaderVisible.value = true\n        }\n      }\n    })\n  } else {\n    operatingType.value = 'add'\n    const addTitle =\n      props.customizeDialogTitle && props.customizeDialogTitle.addTitle\n    dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n    emit('update:operatingTypeProps', 'add')\n    // 判断是弹窗还是全屏弹窗\n    if (props.dialogType === 'dialog') {\n      dialogVisible.value = true\n    } else {\n      dialogHeaderVisible.value = true\n    }\n  }\n}\n\nconst update = () => {\n  let selection: string | any[] = []\n  if (props.rowSingle) {\n    selection = multipleSelection.value\n  } else {\n    selection = currentRow.value ? [currentRow.value] : []\n  }\n  if (selection.length === 0) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOption.value,\n      duration: props.duration,\n    })\n  } else if (selection.length >= 2) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOptionOne.value,\n      duration: props.duration,\n    })\n  } else {\n    info(selection[0][props.primaryKey ? props.primaryKey : ''])\n  }\n}\n\nconst info: FormBaseContext['info'] = (primaryKey: string, data?: any) => {\n  if (props.infoBeforeCallback) {\n    const next = props.infoBeforeCallback()\n    if (next) {\n      infoFn(primaryKey, data)\n    }\n  } else {\n    infoFn(primaryKey, data)\n  }\n}\n\nconst infoFn = (primaryKey: string, data?: any) => {\n  emit('update:operatingTypeProps', 'edit')\n  const originalUrl = `${props.queryOneInterface}/${primaryKey}`\n  const url = renderTemplate(originalUrl, props.formInline)\n  global.$http\n    .request({\n      url,\n      method: props.queryOneInterfaceMethod,\n      data,\n    })\n    .then((res: any) => {\n      operatingType.value = 'edit'\n      const editTitle = props.customizeDialogTitle?.editTitle\n      dialogTitle.value = editTitle ? editTitle : t('el.formBase.editBtnText')\n      Object.assign(cloneAddForm, cloneDeep(res['data']))\n      // 判断是弹窗还是全屏弹窗\n      if (props.dialogType === 'dialog') {\n        dialogVisible.value = true\n      } else {\n        dialogHeaderVisible.value = true\n      }\n      if (props.infoControllerCallback) {\n        props.infoControllerCallback(res['data'])\n      }\n    })\n}\n\nconst details: FormBaseContext['info'] = (primaryKey: string, data?: any) => {\n  addFormDisabled.value = true\n  draftBtnDisabled.value = true\n  initiateProcessBtnDisabled.value = true\n  if (props.infoBeforeCallback) {\n    const next = props.infoBeforeCallback()\n    if (next) {\n      detailsFn(primaryKey, data)\n    }\n  } else {\n    detailsFn(primaryKey, data)\n  }\n}\n\nconst detailsFn = (primaryKey: string, data: any) => {\n  emit('update:operatingTypeProps', 'info')\n  const originalUrl = `${props.queryOneInterface}/${primaryKey}`\n  const url = renderTemplate(originalUrl, props.formInline)\n  global.$http\n    .request({\n      url,\n      method: props.queryOneInterfaceMethod,\n      data,\n    })\n    .then((res: any) => {\n      operatingType.value = 'info'\n      const infoTitle =\n        props.customizeDialogTitle && props.customizeDialogTitle.infoTitle\n      dialogTitle.value = infoTitle ? infoTitle : t('el.formBase.infoText')\n      Object.assign(cloneAddForm, cloneDeep(res['data']))\n      // 判断是弹窗还是全屏弹窗\n      if (props.dialogType === 'dialog') {\n        dialogVisible.value = true\n      } else {\n        dialogHeaderVisible.value = true\n      }\n      if (props.infoControllerCallback) {\n        props.infoControllerCallback(res['data'])\n      }\n    })\n    .catch(() => {\n      beforeCloseFn()\n    })\n}\n\nconst del = () => {\n  let selection: string | any[] = []\n  if (props.rowSingle) {\n    selection = multipleSelection.value\n  } else {\n    selection = currentRow.value ? [currentRow.value] : []\n  }\n  if (selection.length === 0) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOption.value,\n      duration: props.duration,\n    })\n  } else if (selection.length >= 2) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOptionOne.value,\n      duration: props.duration,\n    })\n  } else {\n    const id = selection[0][props.primaryKey ? props.primaryKey : '']\n    if (props.delBeforeCallback) {\n      props.delBeforeCallback(id).then((res) => {\n        if (res) {\n          deleteRow(id)\n        }\n      })\n    } else {\n      deleteRow(id)\n    }\n  }\n}\n\nconst batchDel = () => {\n  const selection = multipleSelection.value\n  if (selection.length === 0) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOption.value,\n      duration: props.duration,\n    })\n  } else {\n    const ids = selection.map((item) => item[props.primaryKey])\n    if (props.delBeforeCallback) {\n      props.delBeforeCallback(ids).then((res) => {\n        if (res) {\n          deleteRow(ids)\n        }\n      })\n    } else {\n      deleteRow(ids)\n    }\n  }\n}\n\nconst deleteRow: FormBaseContext['deleteRow'] = (ids: any) => {\n  if (typeof ids === 'string') {\n    ids = [ids]\n  }\n  ElMessageBox.confirm(localeTextDelStr.value, t('el.formBase.title'), {\n    confirmButtonText: t('el.formBase.confirm'),\n    cancelButtonText: t('el.formBase.cancel'),\n    type: 'warning',\n  })\n    .then(() => {\n      if (!props.isBatchDelete) {\n        global.$http\n          .request({\n            url: props.deleteInterface,\n            method: props.deleteInterfaceMethod,\n            data: ids,\n          })\n          .then((res: any) => {\n            if (res.code === global.is_OK) {\n              setTimeout(() => {\n                ElMessage({\n                  type: 'success',\n                  message: localeTextDelSuccess.value,\n                  duration: props.duration,\n                })\n                query()\n              }, 500)\n              if (props.delControllerCallback) {\n                props.delControllerCallback()\n              }\n            }\n          })\n      } else {\n        global.$http\n          .request({\n            url: `${props.deleteInterface}/${ids[0]}`,\n            method: props.deleteInterfaceMethod,\n          })\n          .then((res: any) => {\n            if (res.code === global.is_OK) {\n              setTimeout(() => {\n                ElMessage({\n                  type: 'success',\n                  message: localeTextDelSuccess.value,\n                  duration: props.duration,\n                })\n                query()\n              }, 500)\n              if (props.delControllerCallback) {\n                props.delControllerCallback()\n              }\n            }\n          })\n      }\n    })\n    .catch(() => {\n      // eslint-disable-next-line no-console\n      console.log('取消')\n    })\n}\n\nconst save = async (formEl: FormInstance | undefined) => {\n  if (!formEl) return\n  await formEl.validate((valid, fields): any => {\n    if (valid) {\n      if (props.addParamControllerCallback) {\n        props.addParamControllerCallback().then(() => {\n          submit()\n        })\n      } else if (props.addParamPromiseControllerCallback) {\n        props.addParamPromiseControllerCallback(vm).then((res: any) => {\n          if (res) {\n            submit()\n          }\n        })\n      } else if (props.addParamControllerPreventCallback) {\n        props.addParamControllerPreventCallback()\n      } else {\n        submit()\n      }\n    } else {\n      // eslint-disable-next-line no-console\n      console.log('error submit!', fields)\n      return false\n    }\n  })\n}\n\nconst submit: FormBaseContext['submit'] = (params?: any) => {\n  formBtnLoading.value = true\n  if (operatingType.value === 'add') {\n    const url = renderTemplate(props.saveInterface || '', cloneAddForm)\n    global.$http\n      .request({\n        url,\n        method: props.saveInterfaceMethod,\n        data: params ? params : cloneAddForm,\n      })\n      .then((res: any) => {\n        if (res.code === global.is_OK) {\n          setTimeout(() => {\n            ElMessage({\n              type: 'success',\n              message: localeTextAddSuccess.value,\n              duration: props.duration,\n            })\n            beforeClose()\n            query()\n          }, 500)\n          if (props.addControllerCallback) {\n            props.addControllerCallback(res)\n          }\n        }\n        formBtnLoading.value = false\n      })\n      .finally(() => {\n        formBtnLoading.value = false\n      })\n      .catch(() => {\n        formBtnLoading.value = false\n      })\n  } else {\n    const url = renderTemplate(props.updateInterface || '', cloneAddForm)\n    global.$http\n      .request({\n        url,\n        method: props.updateInterfaceMethod,\n        data: params ? params : cloneAddForm,\n      })\n      .then((res: any) => {\n        if (res.code === global.is_OK) {\n          setTimeout(() => {\n            ElMessage({\n              type: 'success',\n              message: localeTextEditSuccess.value,\n              duration: props.duration,\n            })\n            beforeClose()\n            query()\n          }, 500)\n          if (props.addControllerCallback) {\n            props.addControllerCallback(res)\n          }\n        }\n        formBtnLoading.value = false\n      })\n      .finally(() => {\n        formBtnLoading.value = false\n      })\n      .catch(() => {\n        formBtnLoading.value = false\n      })\n  }\n}\n\nconst beforeClose = () => {\n  if (props.dialogBeforeClose) {\n    props.dialogBeforeClose()\n  } else {\n    beforeCloseFn()\n  }\n}\n\nconst beforeCloseFn: FormBaseContext['beforeCloseFn'] = () => {\n  addFormRef.value?.resetFields()\n  Object.keys(cloneAddForm).forEach((key) => {\n    delete cloneAddForm[key]\n  })\n  Object.assign(cloneAddForm, JSON.parse(JSON.stringify(props.addForm)))\n  dialogVisible.value = false\n  dialogHeaderVisible.value = false\n  operatingType.value = 'add'\n  addFormDisabled.value = false\n  const addTitle = props.customizeDialogTitle?.addTitle\n  formBtnLoading.value = false\n  draftBtnLoading.value = false\n  initiateProcessBtnLoading.value = false\n  draftBtnDisabled.value = false\n  initiateProcessBtnDisabled.value = false\n  storageBtnLoading.value = false\n  dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n}\n\n// 保存草稿事件\nconst draft = async (formEl: FormInstance | undefined) => {\n  if (!formEl) return\n  await formEl.validate((valid, fields): any => {\n    if (valid) {\n      if (props.draftParamControllerCallback) {\n        // this\n        props.draftParamControllerCallback().then(() => {\n          draftSubmit()\n        })\n      } else if (props.draftParamPromiseControllerCallback) {\n        // this\n        props.draftParamPromiseControllerCallback().then((res) => {\n          if (res) {\n            draftSubmit()\n          }\n        })\n      } else if (props.draftParamControllerPreventCallback) {\n        // this\n        props.draftParamControllerPreventCallback()\n      } else {\n        draftSubmit()\n      }\n    } else {\n      // eslint-disable-next-line no-console\n      console.log('error submit!', fields)\n      return false\n    }\n  })\n}\n\nconst draftSubmit: FormBaseContext['draftSubmit'] = (params?: any) => {\n  draftBtnLoading.value = true\n  initiateProcessBtnLoading.value = true\n  storageBtnLoading.value = true\n  const url = renderTemplate(props.draftInterface || '', cloneAddForm)\n  global.$http\n    .request({\n      url,\n      method: props.draftInterfaceMethod,\n      data: params ? params : cloneAddForm,\n    })\n    .then((res: any) => {\n      if (res.code === global.is_OK) {\n        setTimeout(() => {\n          ElMessage({\n            type: 'success',\n            message: localeTextDraftSuccess.value,\n            duration: props.duration,\n          })\n          beforeClose()\n          query()\n          draftBtnLoading.value = false\n          initiateProcessBtnLoading.value = false\n          storageBtnLoading.value = false\n        }, 500)\n        if (props.addControllerCallback) {\n          props.addControllerCallback(res)\n        }\n      }\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n    })\n    .finally(() => {\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n    })\n    .catch(() => {\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n      if (props.draftControllerErrorCallback) {\n        props.draftControllerErrorCallback()\n      }\n    })\n}\n\n// 发起流程事件\nconst startProcess = async (formEl: FormInstance | undefined) => {\n  if (!formEl) return\n  await formEl.validate((valid, fields): any => {\n    if (valid) {\n      if (props.processParamControllerCallback) {\n        // this\n        props.processParamControllerCallback().then(() => {\n          processSubmit()\n        })\n      } else if (props.processParamPromiseControllerCallback) {\n        // this\n        props.processParamPromiseControllerCallback().then((res) => {\n          if (res) {\n            processSubmit()\n          }\n        })\n      } else if (props.processParamControllerPreventCallback) {\n        // this\n        props.processParamControllerPreventCallback()\n      } else {\n        processSubmit()\n      }\n    } else {\n      // eslint-disable-next-line no-console\n      console.log('error submit!', fields)\n      return false\n    }\n  })\n}\n\nconst processSubmit: FormBaseContext['processSubmit'] = (params?: any) => {\n  draftBtnLoading.value = true\n  initiateProcessBtnLoading.value = true\n  storageBtnLoading.value = true\n  global.$openRunFlow({\n    handleId: cloneAddForm.handleId,\n    bidId: cloneAddForm.bidId,\n    bpmKey: cloneAddForm.bpmKey || '',\n    peFormBase: vm,\n    success(flowDialogForm: any, app: any) {\n      const fn = (newFlowDialogForm: any) => {\n        let dataParams = {\n          ...newFlowDialogForm,\n          ...(params ? params : cloneAddForm),\n        }\n        if (props.processRunFlowParamsControllerCallback) {\n          dataParams = props.processRunFlowParamsControllerCallback(dataParams)\n        }\n        const url = renderTemplate(props.processInterface || '', cloneAddForm)\n        global.$http\n          .request({\n            url,\n            method: props.processInterfaceMethod,\n            data: dataParams,\n          })\n          .then((res: any) => {\n            if (res['code'] === global.is_OK) {\n              setTimeout(() => {\n                ElMessage({\n                  type: 'success',\n                  message: localeTextProcessSuccess.value,\n                  duration: props.duration,\n                })\n                app.close()\n                beforeClose()\n                query()\n                draftBtnLoading.value = false\n                initiateProcessBtnLoading.value = false\n                storageBtnLoading.value = false\n              }, 500)\n              if (props.processControllerCallback) {\n                props.processControllerCallback(res)\n              }\n            } else {\n              draftBtnLoading.value = false\n              initiateProcessBtnLoading.value = false\n              storageBtnLoading.value = false\n              app.callback((config: any) => {\n                fn(config)\n              }, res)\n            }\n          })\n          .catch((err: any) => {\n            draftBtnLoading.value = false\n            initiateProcessBtnLoading.value = false\n            storageBtnLoading.value = false\n            app.callback((config: any) => {\n              fn(config)\n            }, err)\n            if (props.processControllerErrorCallback) {\n              props.processControllerErrorCallback()\n            }\n          })\n      }\n      fn(flowDialogForm)\n    },\n    error(app: any) {\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n      app.close()\n    },\n  })\n}\n\n// 暂存按钮事件\nconst storage = () => {\n  draftBtnLoading.value = true\n  initiateProcessBtnLoading.value = true\n  storageBtnLoading.value = true\n  if (props.storageCallback) {\n    props.storageCallback().then(() => {\n      setTimeout(() => {\n        ElMessage({\n          type: 'success',\n          message: localeTextEditSuccess.value,\n          duration: props.duration,\n        })\n        beforeClose()\n        query()\n        draftBtnLoading.value = false\n        initiateProcessBtnLoading.value = false\n        storageBtnLoading.value = false\n      }, 500)\n    })\n  }\n  if (props.storageControllerPreventCallback) {\n    props.storageControllerPreventCallback().then((res: any) => {\n      if (res) {\n        setTimeout(() => {\n          ElMessage({\n            type: 'success',\n            message: localeTextEditSuccess.value,\n            duration: props.duration,\n          })\n          beforeClose()\n          query()\n          draftBtnLoading.value = false\n          initiateProcessBtnLoading.value = false\n          storageBtnLoading.value = false\n        }, 500)\n      } else {\n        setTimeout(() => {\n          draftBtnLoading.value = false\n          initiateProcessBtnLoading.value = false\n          storageBtnLoading.value = false\n        }, 500)\n      }\n    })\n  }\n}\n\nconst handleSizeChange = (val: number) => {\n  pagination.value.pageSize = val\n  pagination.value.pageNum = 1\n  query()\n}\n\nconst handleCurrentChange = (val: number) => {\n  pagination.value.pageNum = val\n  query()\n}\n\nconst handleChangeFlowStatus = () => {\n  query()\n}\n\nconst handleRowDblclick = (row: any) => {\n  if (props.isDoubleClickDetails) {\n    if (props.hasFlow) {\n      if (row.formUrl && row.procInstId) {\n        // 默认打开流程详情是无法进行操作\n        row.optionType = 'end'\n        global.$openFlowBox({\n          row,\n          peFormBase: vm,\n        })\n      } else {\n        details(row[props.primaryKey])\n      }\n    } else {\n      details(row[props.primaryKey])\n    }\n  } else {\n    emit('table-row-dblclick', row)\n  }\n}\n\nconst handleTableCurrentChange = (row: any) => {\n  currentRow.value = row\n  emit('table-current-change', row)\n}\n\nconst handleTableSelectionChange = (row: any) => {\n  multipleSelection.value = row\n  emit('table-selection-change', row)\n}\n\nconst handleClickInfo = (columns: FormBaseColumnsItem, row: any) => {\n  if (columns.isDetails) {\n    if (props.hasFlow) {\n      if (row.formUrl && row.procInstId) {\n        // 默认打开流程详情是无法进行操作\n        row.optionType = 'end'\n        global.$openFlowBox({\n          row,\n          peFormBase: vm,\n        })\n      } else {\n        details(row[props.primaryKey])\n      }\n    } else {\n      details(row[props.primaryKey])\n    }\n  }\n}\n\nconst handleTableSortChange = (sort: any) => {\n  orderArray.value = sort\n  query()\n}\n\nconst setData: FormBaseContext['setData'] = (data: any) => {\n  tableData.value = data\n}\n\nconst doLayout: FormBaseContext['doLayout'] = () => {\n  peTable?.value?.doLayout()\n}\n\nconst validate: FormBaseContext['validate'] = (callback?: any) => {\n  return addFormRef.value?.validate(callback)\n}\n\nconst setFormBtnLoading: FormBaseContext['setFormBtnLoading'] = (\n  val: boolean\n) => {\n  formBtnLoading.value = val\n}\n\nconst setAddFormDisabled: FormBaseContext['setAddFormDisabled'] = (\n  val: boolean\n) => {\n  addFormDisabled.value = val\n}\n\nconst reloadTable: FormBaseContext['reloadTable'] = () => {\n  isShowDataTable.value = false\n  nextTick(() => {\n    isShowDataTable.value = true\n  })\n}\n\nconst setupClick = () => {\n  if (customSetUpCallback.value) {\n    customSetUpCallback.value(vm)\n  }\n}\n\nconst handleToggleExpand = () => {\n  if (props.isVirtuallyTable) {\n    tableDefaultExpandAll.value = !tableDefaultExpandAll.value\n    peTable?.value?.dataTableRef().setAllTreeExpand(tableDefaultExpandAll.value)\n    peTable?.value?.dataTableRef().refreshColumn()\n  } else {\n    peTable?.value?.setRefreshTable(false)\n    tableDefaultExpandAll.value = !tableDefaultExpandAll.value\n    nextTick(() => {\n      peTable?.value?.setRefreshTable(true)\n    })\n  }\n}\n\nprovide(formBaseContextKey, {\n  ...toRefs(props),\n  query,\n  search,\n  add,\n  info,\n  deleteRow,\n  details,\n  setData,\n  submit,\n  draftSubmit,\n  processSubmit,\n  beforeCloseFn,\n  doLayout,\n  validate,\n  setFormBtnLoading,\n  setAddFormDisabled,\n})\n\ndefineExpose({\n  /**\n   * @description pagination\n   */\n  pagination,\n  /**\n   * @description addFormDisabled\n   */\n  addFormDisabled,\n  /**\n   * @description formBtnLoading\n   */\n  formBtnLoading,\n  /**\n   * @description tableData\n   */\n  tableData,\n  /**\n   * @description cloneAddForm\n   */\n  cloneAddForm,\n  /**\n   * @description currentRow\n   */\n  currentRow,\n  /**\n   * @description multipleSelection\n   */\n  multipleSelection,\n  /**\n   * @description peTable\n   */\n  peTable,\n  /**\n   * @description query\n   */\n  query,\n  /**\n   * @description search\n   */\n  search,\n  /**\n   * @description add\n   */\n  add,\n  /**\n   * @description info\n   */\n  info,\n  /**\n   * @description deleteRow\n   */\n  deleteRow,\n  /**\n   * @description details\n   */\n  details,\n  /**\n   * @description setData\n   */\n  setData,\n  /**\n   * @description submit\n   */\n  submit,\n  /**\n   * @description draftSubmit\n   */\n  draftSubmit,\n  /**\n   * @description processSubmit\n   */\n  processSubmit,\n  /**\n   * @description beforeCloseFn\n   */\n  beforeCloseFn,\n  /**\n   * @description doLayout\n   */\n  doLayout,\n  /**\n   * @description validate\n   */\n  validate,\n  /**\n   * @description setFormBtnLoading\n   */\n  setFormBtnLoading,\n  /**\n   * @description setAddFormDisabled\n   */\n  setAddFormDisabled,\n  /**\n   * @description draftBtnLoading\n   */\n  draftBtnLoading,\n  /**\n   * @description initiateProcessBtnLoading\n   */\n  initiateProcessBtnLoading,\n  /**\n   * @description draftBtnDisabled\n   */\n  draftBtnDisabled,\n  /**\n   * @description initiateProcessBtnDisabled\n   */\n  initiateProcessBtnDisabled,\n  /**\n   * @description storageBtnLoading\n   */\n  storageBtnLoading,\n  /**\n   * @description reloadTable\n   */\n  reloadTable,\n})\n</script>\n","<template>\n  <div :class=\"[ns.b()]\">\n    <div\n      v-if=\"props.noSearchForm\"\n      class=\"el-form-base-head el-form-base-search\"\n    >\n      <div class=\"el-form-base-inline-box\">\n        <el-form\n          v-if=\"props.noSearchFormLeft\"\n          ref=\"formInlineRef\"\n          :inline=\"true\"\n          :model=\"props.formInline\"\n          label-suffix=\"\"\n          :is-search=\"true\"\n          @submit.prevent\n        >\n          <template v-if=\"searchConditionArr.length === 0\">\n            <slot name=\"searchForm\" :form-inline=\"props.formInline\" />\n          </template>\n          <template v-if=\"searchConditionArr.length > 0\">\n            <el-form-item\n              v-for=\"(item, index) in searchConditionArr\"\n              :key=\"index\"\n              :label=\"item.label\"\n              :prop=\"item.prop\"\n            >\n              <component\n                :is=\"item.searchType\"\n                v-model=\"props.formInline[item.prop]\"\n                :code=\"item.searchValue\"\n              />\n            </el-form-item>\n          </template>\n          <el-form-item v-if=\"props.hasFlow\" label=\"流程状态\">\n            <el-select\n              v-model=\"approvalStatus\"\n              :style=\"getFlowWidth\"\n              :clearable=\"true\"\n              @change=\"handleChangeFlowStatus\"\n            >\n              <el-option\n                v-for=\"item in getFlowStatus\"\n                :key=\"item.value\"\n                :value=\"item.value\"\n                :label=\"item.label\"\n              />\n            </el-select>\n          </el-form-item>\n          <el-form-item v-if=\"props.noFormInlineBtn\">\n            <slot name=\"searchLeft\" />\n            <el-button\n              v-if=\"props.noSearch\"\n              :type=\"searchTypeStr\"\n              :icon=\"Search\"\n              native-type=\"submit\"\n              @click=\"search\"\n              >{{ localeSearchBtnText }}</el-button\n            >\n            <el-button\n              v-if=\"props.noClear\"\n              :type=\"clearTypeStr\"\n              :icon=\"Delete\"\n              @click=\"clear\"\n              >{{ localeClearBtnText }}</el-button\n            >\n            <slot name=\"searchRight\" />\n          </el-form-item>\n        </el-form>\n      </div>\n      <div\n        v-if=\"props.noOperation && !isButtonAreaType\"\n        class=\"el-form-base-inline-operation\"\n      >\n        <el-button\n          v-if=\"hiddenAddBtn\"\n          :icon=\"Plus\"\n          :type=\"addTypeStr\"\n          @click=\"add\"\n          >{{ localeAddBtnText }}</el-button\n        >\n        <el-button\n          v-if=\"hiddenEditBtn\"\n          :icon=\"EditPen\"\n          :type=\"updateTypeStr\"\n          @click=\"update\"\n          >{{ localeEditBtnText }}</el-button\n        >\n        <el-button\n          v-if=\"hiddenDelBtn\"\n          :icon=\"Delete\"\n          :type=\"deleteTypeStr\"\n          @click=\"del\"\n          >{{ localeDelBtnText }}</el-button\n        >\n        <slot name=\"toolbar\" />\n        <el-button\n          v-if=\"hiddenBatchBtn\"\n          :icon=\"Delete\"\n          :type=\"batchDelTypeStr\"\n          @click=\"batchDel\"\n          >{{ localeBatchBtnText }}</el-button\n        >\n        <template v-if=\"props.noExpandsBtn\">\n          <el-button\n            v-show=\"props.rowKey && !tableDefaultExpandAll\"\n            class=\"el-form-base-expand-btn\"\n            :type=\"expandTypeStr\"\n            :icon=\"DArrowRight\"\n            @click=\"handleToggleExpand\"\n          >\n            {{ localeExpandBtnText }}\n          </el-button>\n          <el-button\n            v-show=\"props.rowKey && tableDefaultExpandAll\"\n            :type=\"expandTypeStr\"\n            class=\"el-form-base-fold-btn\"\n            :icon=\"DArrowRight\"\n            @click=\"handleToggleExpand\"\n          >\n            {{ localeFoldBtnText }}\n          </el-button>\n        </template>\n      </div>\n    </div>\n    <slot name=\"tabList\" />\n    <div class=\"el-form-base-body\">\n      <div\n        v-if=\"props.noOperation && isButtonAreaType\"\n        class=\"el-form-base-operation\"\n      >\n        <div class=\"el-form-base-operation-left\">\n          <el-button v-if=\"hiddenAddBtn\" :type=\"addTypeStr\" :icon=\"Plus\">{{\n            localeAddBtnText\n          }}</el-button>\n          <el-button\n            v-if=\"hiddenEditBtn\"\n            :type=\"updateTypeStr\"\n            :icon=\"EditPen\"\n            >{{ localeEditBtnText }}</el-button\n          >\n          <el-button v-if=\"hiddenDelBtn\" :type=\"deleteTypeStr\" :icon=\"Delete\">{{\n            localeDelBtnText\n          }}</el-button>\n          <slot name=\"toolbar\" />\n          <el-button\n            v-if=\"hiddenBatchBtn\"\n            :type=\"batchDelTypeStr\"\n            :icon=\"Delete\"\n            >{{ localeBatchBtnText }}</el-button\n          >\n        </div>\n        <div v-if=\"props.noRefreshBtn\" class=\"el-form-base-operation-right\" />\n      </div>\n      <slot name=\"table\">\n        <form-base-table\n          ref=\"peTable\"\n          v-if=\"isShowDataTable\"\n          v-loading=\"tableLoading\"\n          element-loading-text=\"正在加载中...\"\n          :row-key=\"props.rowKey\"\n          :primary-key=\"props.primaryKey\"\n          :row-single=\"props.rowSingle\"\n          :columns=\"getColumns\"\n          :table-data=\"tableData\"\n          :pagination=\"pagination\"\n          :no-batch-btn=\"props.noBatchBtn\"\n          :no-pagination=\"props.noPagination\"\n          :no-table-index=\"props.noTableIndex\"\n          :table-lazy=\"props.tableLazy\"\n          :is-virtually-table=\"props.isVirtuallyTable\"\n          :table-transform=\"props.tableTransform\"\n          :selection-width=\"props.selectionWidth\"\n          :selection-align=\"props.selectionAlign\"\n          :selection-fixed=\"props.selectionFixed\"\n          :index-width=\"props.indexWidth\"\n          :index-align=\"props.indexAlign\"\n          :index-fixed=\"props.indexFixed\"\n          :span-method=\"props.spanMethod\"\n          :default-expand-all=\"tableDefaultExpandAll\"\n          :table-load=\"handleTableLoad\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @size-change=\"handleSizeChange\"\n          @current-change=\"handleCurrentChange\"\n          @table-current-change=\"handleTableCurrentChange\"\n          @table-selection-change=\"handleTableSelectionChange\"\n          @table-row-dblclick=\"handleRowDblclick\"\n          @click-info=\"handleClickInfo\"\n          @table-sort-change=\"handleTableSortChange\"\n        >\n          <template #tableWarp>\n            <slot name=\"tableWarp\" />\n          </template>\n        </form-base-table>\n      </slot>\n    </div>\n\n    <template v-if=\"props.dialogType === 'dialog'\">\n      <el-dialog\n        v-model=\"dialogVisible\"\n        :title=\"dialogTitle\"\n        :close-on-click-modal=\"false\"\n        :width=\"props.dialogWidth\"\n        :before-close=\"beforeClose\"\n        modal-class=\"form-base-dialog\"\n        draggable\n      >\n        <slot name=\"addWarp\">\n          <el-form\n            ref=\"addFormRef\"\n            :model=\"cloneAddForm\"\n            :rules=\"props.rules\"\n            :label-width=\"props.labelWidth\"\n            status-icon\n            :disabled=\"addFormDisabled\"\n            :validateOnRuleChange=\"props.validateOnRuleChange\"\n          >\n            <slot name=\"add\" :add-form=\"cloneAddForm\" />\n          </el-form>\n        </slot>\n        <template #footer>\n          <span class=\"dialog-footer\">\n            <slot name=\"dialog-footer-left\" />\n            <el-button\n              v-if=\"props.noCancelBtn\"\n              :type=\"cancelTypeStr\"\n              @click=\"beforeClose()\"\n              >{{ t('el.formBase.cancel') }}</el-button\n            >\n            <slot name=\"dialog-footer-center\" />\n            <template v-if=\"!hasFlow\">\n              <el-button\n                v-if=\"!addFormDisabled && props.noConfirmBtn\"\n                :type=\"saveTypeStr\"\n                :loading=\"formBtnLoading\"\n                @click=\"save(addFormRef)\"\n              >\n                {{ localeConfirmBtnText }}\n              </el-button>\n            </template>\n            <template v-else>\n              <el-button\n                v-if=\"props.noStorageBtn\"\n                type=\"colour-10\"\n                :loading=\"storageBtnLoading\"\n                @click=\"storage\"\n                >{{ localeStorageBtnText }}</el-button\n              >\n              <el-button\n                v-if=\"!draftBtnDisabled && props.noDraftBtn\"\n                :type=\"draftBtnTypeStr\"\n                :loading=\"draftBtnLoading\"\n                @click=\"draft(addFormRef)\"\n                >{{ localeDraftBtnText }}</el-button\n              >\n              <el-button\n                v-if=\"!initiateProcessBtnDisabled && props.noInitiateProcessBtn\"\n                :type=\"initiateProcessBtnTypeStr\"\n                :loading=\"initiateProcessBtnLoading\"\n                @click=\"startProcess(addFormRef)\"\n                >{{ localeInitiateProcessBtnText }}</el-button\n              >\n              <pit-view-process\n                v-if=\"props.operatingTypeProps != 'info' && props.hasFlow\"\n                :flow-code=\"props.flowCode\"\n                :bid-id=\"cloneAddForm.bidId\"\n              />\n            </template>\n            <slot name=\"dialog-footer-right\" />\n          </span>\n        </template>\n      </el-dialog>\n    </template>\n    <template v-else>\n      <el-dialog-header\n        v-model=\"dialogHeaderVisible\"\n        :title=\"dialogTitle\"\n        :width=\"props.dialogWidth\"\n        :before-close=\"beforeClose\"\n        :close-on-click-modal=\"false\"\n        :no-cancel-btn=\"props.noCancelBtn\"\n        modal-class=\"form-base-dialog-header\"\n      >\n        <slot name=\"addWarp\">\n          <el-form\n            ref=\"addFormRef\"\n            :model=\"cloneAddForm\"\n            :rules=\"props.rules\"\n            :label-width=\"props.labelWidth\"\n            status-icon\n            :disabled=\"addFormDisabled\"\n            :validateOnRuleChange=\"props.validateOnRuleChange\"\n          >\n            <slot name=\"add\" :add-form=\"cloneAddForm\" />\n          </el-form>\n        </slot>\n        <template #footer-right>\n          <slot name=\"dialog-footer-left\" />\n          <slot name=\"dialog-footer-center\" />\n          <template v-if=\"!hasFlow\">\n            <el-button\n              v-if=\"!addFormDisabled && props.noConfirmBtn\"\n              :type=\"saveTypeStr\"\n              :loading=\"formBtnLoading\"\n              @click=\"save(addFormRef)\"\n            >\n              {{ localeConfirmBtnText }}\n            </el-button>\n          </template>\n          <template v-else>\n            <el-button\n              v-if=\"props.noStorageBtn\"\n              type=\"colour-10\"\n              :loading=\"storageBtnLoading\"\n              @click=\"storage\"\n              >{{ localeStorageBtnText }}</el-button\n            >\n            <el-button\n              v-if=\"!draftBtnDisabled && props.noDraftBtn\"\n              :type=\"draftBtnTypeStr\"\n              :loading=\"draftBtnLoading\"\n              @click=\"draft(addFormRef)\"\n              >{{ localeDraftBtnText }}</el-button\n            >\n            <el-button\n              v-if=\"!initiateProcessBtnDisabled && props.noInitiateProcessBtn\"\n              :type=\"initiateProcessBtnTypeStr\"\n              :loading=\"initiateProcessBtnLoading\"\n              @click=\"startProcess(addFormRef)\"\n              >{{ localeInitiateProcessBtnText }}</el-button\n            >\n            <pit-view-process\n              v-if=\"props.operatingTypeProps != 'info' && props.hasFlow\"\n              :flow-code=\"props.flowCode\"\n              :bid-id=\"cloneAddForm.bidId\"\n            />\n          </template>\n          <slot name=\"dialog-footer-right\" />\n        </template>\n      </el-dialog-header>\n    </template>\n\n    <component\n      :is=\"customSetUpRender\"\n      v-if=\"props.isSetUpRender\"\n      @click=\"setupClick\"\n    />\n  </div>\n</template>\n\n<script setup lang=\"tsx\">\nimport {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport { DArrowRight, Delete, EditPen, Plus, Search } from 'pit-element-icons'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n  useGlobalProperties,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport { getObjectValue, renderTemplate } from '@pit-element-plus/utils'\nimport { ElMessage, ElMessageBox } from '@pit-element-plus/components'\nimport { formBaseEmits, formBaseProps } from './form-base'\nimport formBaseTable from './form-base-table.vue'\nimport useFormBase from './use-form-base'\nimport useFormBaseLocale from './use-form-base-locale'\nimport { formBaseContextKey } from './constants'\nimport type { FormBaseColumnsItem } from './form-base'\nimport type { FormInstance } from '@pit-element-plus/components/form'\nimport type { FormBaseContext } from './types'\n\ndefineOptions({\n  name: 'ElFormBase',\n})\n\nconst ns = useNamespace('form-base')\nconst { t } = useLocale()\nconst global = useGlobalProperties()\nconst props = defineProps(formBaseProps)\nconst emit = defineEmits(formBaseEmits)\n\nconst {\n  pageSize,\n  pageNum,\n  hiddenAddBtn,\n  hiddenEditBtn,\n  hiddenDelBtn,\n  hiddenBatchBtn,\n  isButtonAreaType,\n  searchTypeStr,\n  clearTypeStr,\n  addTypeStr,\n  updateTypeStr,\n  deleteTypeStr,\n  batchDelTypeStr,\n  expandTypeStr,\n  saveTypeStr,\n  cancelTypeStr,\n  paginationTotal,\n  draftBtnTypeStr,\n  initiateProcessBtnTypeStr,\n  columnsStr,\n  flowStatusData,\n  defaultFlowStatus,\n  flowStatusWidth,\n  customSetUpRender,\n  customSetUpCallback,\n  paginationPageSizeStr,\n  paginationPageNumStr,\n} = useFormBase(props)\n\nconst {\n  localeAddBtnText,\n  localeEditBtnText,\n  localeDelBtnText,\n  localeBatchBtnText,\n  localeExpandBtnText,\n  localeFoldBtnText,\n  localeSearchBtnText,\n  localeClearBtnText,\n  localeConfirmBtnText,\n  localeTextAddSuccess,\n  localeTextEditSuccess,\n  localeTextDelSuccess,\n  localeTextDelStr,\n  localeTextEmptyOption,\n  localeTextEmptyOptionOne,\n  localeStorageBtnText,\n  localeDraftBtnText,\n  localeInitiateProcessBtnText,\n  localeTextDraftSuccess,\n  localeTextProcessSuccess,\n} = useFormBaseLocale(props)\n\nconst tableData: any = ref([])\nconst tableLoading = ref(false)\nconst isShowDataTable = ref(true)\nconst pagination = ref({\n  pageSize: pageSize.value,\n  pageNum: pageNum.value,\n  total: 0,\n})\n\nconst formInlineRef = ref<FormInstance>()\nconst addFormRef = ref<FormInstance>()\nconst dialogVisible = ref(false)\nconst dialogHeaderVisible = ref(false)\nconst formBtnLoading = ref(false)\nconst operatingType = ref('add')\nconst dialogTitle = ref(t('el.formBase.addBtnText'))\nconst cloneAddForm = reactive(JSON.parse(JSON.stringify(props.addForm || {})))\nconst addFormDisabled = ref(false)\n\nconst tableDefaultExpandAll = ref(props.defaultExpandAll)\n\nconst draftBtnLoading = ref(false)\nconst initiateProcessBtnLoading = ref(false)\nconst draftBtnDisabled = ref(false)\nconst initiateProcessBtnDisabled = ref(false)\nconst storageBtnLoading = ref(false)\n\nconst approvalStatus = ref(defaultFlowStatus.value)\n\nconst peTable = ref()\nconst currentRow = ref(null)\nconst multipleSelection = ref([])\n\nconst orderArray: any = ref([])\n\nconst searchConditionArr: Record<string, any> = ref([])\n\nwatch(\n  () => props.addForm,\n  (val) => {\n    Object.assign(cloneAddForm, cloneDeep(val))\n  },\n  { deep: true, immediate: true }\n)\n\nwatch(\n  () => dialogVisible.value,\n  (val: boolean) => {\n    emit('update:isDialogVisible', val)\n  }\n)\n\nwatch(\n  () => dialogHeaderVisible.value,\n  (val: boolean) => {\n    emit('update:isDialogVisible', val)\n  }\n)\n\nlet vm: any\n\nonMounted(() => {\n  vm = getCurrentInstance()\n  if (props.isDefaultQuery) {\n    query()\n  }\n})\n\nconst getColumns = computed(() => {\n  const route = global.$route?.meta?.menuListData\n  const sortEncoding = global.$route?.meta?.sortEncoding\n  const columns: any = cloneDeep(props.columns)\n  let routerColumns: any = []\n  let searchCondition: any = []\n  if (props.isSetUpRender && route && route.length > 0) {\n    route.forEach((item: any) => {\n      const findColumn = columns.find((k: any) => k.prop === item.prop)\n      const obj = {\n        ...findColumn,\n        prop: item.prop,\n        label: item.label,\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'isDetails')) {\n        obj.isDetails = item.isDetails\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'width')) {\n        obj.width = item.width\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'align')) {\n        obj.align = item.align\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'showOverflow')) {\n        obj.showOverflow = item.showOverflow\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'hidden')) {\n        obj.hidden = item.hidden\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'resizable')) {\n        obj.resizable = item.resizable\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'sortable')) {\n        obj.sortable = item.sortable\n      }\n      routerColumns.push(obj)\n      // 处理搜索条件\n      if (item.isSearch) {\n        let searchItem = {\n          prop: item.prop,\n          label: item.label,\n          searchType: item.searchType,\n          searchValue: item.searchValue,\n        }\n        searchCondition.push(searchItem)\n      }\n    })\n    searchConditionArr.value = searchCondition\n  } else {\n    // 配置了排序编码则去匹配规则\n    if (sortEncoding) {\n      const allSort = global.$pinia?.state?.value?.base?.allSort || {}\n      const sortArr = allSort[sortEncoding] || []\n      sortArr.forEach((item: any) => {\n        const obj = columns.find((i: any) => i.prop === item.value)\n        if (obj) {\n          obj.sortable = item.defaultOption\n        }\n      })\n    }\n    routerColumns = columns\n  }\n  if (props.hasFlow) {\n    const flowStatus = routerColumns.filter(\n      (item: any) => item.label === '流程状态'\n    )\n    if (flowStatus.length === 0) {\n      const index: number = routerColumns.length - 1\n      routerColumns.splice(index, 0, {\n        prop: 'approvalStatus',\n        label: '流程状态',\n        align: global.$TABLE_SIZE.FLOW_STATUS_ALIGN,\n        width: props.tableFlowStatusWidth,\n        render: (_params: any) => (\n          <pit-flow-table-status\n            status={_params.approvalStatus}\n            row={_params}\n            rowKey={props.flowVersion}\n          />\n        ),\n        showOverflow: true,\n      })\n    }\n  }\n  if (columnsStr.value && columnsStr.value.length > 0) {\n    routerColumns = routerColumns.map((item: any) => {\n      // @ts-ignore\n      const newItem: any = columnsStr.value.find((k) => k.label === item.label)\n      if (newItem) {\n        item.width = newItem.width\n        item.align = newItem.align\n        item.showOverflow = newItem.showOverflow\n        item.dateFormatter = newItem.dateFormatter\n        item.renderTooltip = newItem.renderTooltip\n        item.hidden = newItem.hidden\n      }\n      return item\n    })\n  }\n  return routerColumns\n})\n\nconst getFlowWidth = computed(() => {\n  if (props.flowStatusWidth) {\n    return { width: `${props.flowStatusWidth}px` }\n  }\n  if (flowStatusWidth.value) {\n    return { width: `${flowStatusWidth.value}px` }\n  }\n  return {}\n})\n\nconst getFlowStatus = computed((): any => {\n  return flowStatusData.value\n})\n\nconst clear = () => {\n  if (props.clearCallback) {\n    props.clearCallback()\n    clearFn()\n  } else if (props.clearPreventCallback) {\n    props.clearPreventCallback()\n  } else {\n    clearFn()\n  }\n}\n\nconst clearFn = () => {\n  approvalStatus.value = defaultFlowStatus.value\n  formInlineRef.value?.resetFields()\n  multipleSelection.value = []\n  nextTick(() => {\n    query()\n  })\n}\n\nconst query: FormBaseContext['query'] = () => {\n  const fn = (params?: any) => {\n    tableLoading.value = true\n    peTable?.value?.setRefreshTable(false)\n    if (props.queryInterface) {\n      const url = renderTemplate(props.queryInterface, props.formInline)\n      if (props.hasFlow) {\n        props!.formInline!.approvalStatus = approvalStatus.value\n      }\n      let orderBy = ''\n      if (orderArray.value && orderArray.value.length > 0) {\n        orderArray.value.forEach((item: any) => {\n          orderBy += `${item.prop} ${\n            item.order === 'ascending' ? 'asc' : 'desc'\n          }, `\n        })\n        orderBy = orderBy.slice(0, Math.max(0, orderBy.length - 2))\n      }\n      const paginationPageSize: string = paginationPageSizeStr.value as string\n      const paginationPageNum: string= paginationPageNumStr.value as string\n      global.$http\n        .request({\n          url,\n          method: props.queryInterfaceMethod,\n          [props.queryInterfaceMethod === 'GET' ? 'params' : 'data']: {\n            [paginationPageSize]: pagination.value.pageSize,\n            [paginationPageNum]: pagination.value.pageNum,\n            orderBy,\n            ...props.formInline,\n            ...params,\n          },\n        })\n        .then((res: any) => {\n          if (res.data && res.data.list) {\n            tableData.value = res.data.list\n            pagination.value.total = getObjectValue(\n              res.data,\n              paginationTotal.value,\n              0\n            )\n          } else {\n            tableData.value = []\n            pagination.value.total = 0\n          }\n          if (res.data.length > 0) {\n            tableData.value = res.data\n            pagination.value.total = 0\n          } else {\n            tableData.value = res.data.list\n            pagination.value.total = getObjectValue(\n              res.data,\n              paginationTotal.value,\n              0\n            )\n          }\n          emit('result-table-back', tableData.value, res)\n        })\n        .finally(() => {\n          tableLoading.value = false\n          peTable?.value?.setRefreshTable(true)\n        })\n    } else {\n      tableLoading.value = false\n    }\n  }\n  if (props.searchBeforeCallbackPrevent) {\n    props.searchBeforeCallbackPrevent(vm).then((params: any) => {\n      fn(params)\n    })\n  } else {\n    fn()\n  }\n}\n\nconst search: FormBaseContext['search'] = () => {\n  pagination.value.pageNum = 1\n  multipleSelection.value = []\n  if (props.searchBeforeCallback) {\n    const next = props.searchBeforeCallback()\n    if (next) {\n      query()\n    }\n  } else {\n    query()\n  }\n}\n\nconst handleTableLoad = (tree: any) => {\n  return new Promise((resolve, reject) => {\n    if (props.queryInterface) {\n      const params = {\n        ...props.formInline,\n      }\n      params[props.lazyKey] = tree[props.lazyKey]\n      const url = renderTemplate(props.queryInterface, params)\n      global.$http\n        .request({\n          url,\n          method: props.queryInterfaceMethod,\n          [props.queryInterfaceMethod === 'GET' ? 'params' : 'data']: {\n            pageSize: pagination.value.pageSize,\n            pageNumber: pagination.value.pageNum,\n            ...params,\n          },\n        })\n        .then((res: any) => {\n          if (res.data.length > 0) {\n            resolve(res['data'])\n          }\n        })\n        .catch((e: any) => {\n          reject(e)\n        })\n    }\n  })\n}\n\nconst add: FormBaseContext['add'] = () => {\n  if (props.addBeforeCallback) {\n    const next = props.addBeforeCallback()\n    if (next) {\n      operatingType.value = 'add'\n      const addTitle =\n        props.customizeDialogTitle && props.customizeDialogTitle.addTitle\n      dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n      emit('update:operatingTypeProps', 'add')\n      // 判断是弹窗还是全屏弹窗\n      if (props.dialogType === 'dialog') {\n        dialogVisible.value = true\n      } else {\n        dialogHeaderVisible.value = true\n      }\n    }\n  } else if (props.addBeforeAsyncCallback) {\n    props.addBeforeAsyncCallback().then((next: boolean) => {\n      if (next) {\n        operatingType.value = 'add'\n        const addTitle =\n          props.customizeDialogTitle && props.customizeDialogTitle.addTitle\n        dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n        emit('update:operatingTypeProps', 'add')\n        // 判断是弹窗还是全屏弹窗\n        if (props.dialogType === 'dialog') {\n          dialogVisible.value = true\n        } else {\n          dialogHeaderVisible.value = true\n        }\n      }\n    })\n  } else {\n    operatingType.value = 'add'\n    const addTitle =\n      props.customizeDialogTitle && props.customizeDialogTitle.addTitle\n    dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n    emit('update:operatingTypeProps', 'add')\n    // 判断是弹窗还是全屏弹窗\n    if (props.dialogType === 'dialog') {\n      dialogVisible.value = true\n    } else {\n      dialogHeaderVisible.value = true\n    }\n  }\n}\n\nconst update = () => {\n  let selection: string | any[] = []\n  if (props.rowSingle) {\n    selection = multipleSelection.value\n  } else {\n    selection = currentRow.value ? [currentRow.value] : []\n  }\n  if (selection.length === 0) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOption.value,\n      duration: props.duration,\n    })\n  } else if (selection.length >= 2) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOptionOne.value,\n      duration: props.duration,\n    })\n  } else {\n    info(selection[0][props.primaryKey ? props.primaryKey : ''])\n  }\n}\n\nconst info: FormBaseContext['info'] = (primaryKey: string, data?: any) => {\n  if (props.infoBeforeCallback) {\n    const next = props.infoBeforeCallback()\n    if (next) {\n      infoFn(primaryKey, data)\n    }\n  } else {\n    infoFn(primaryKey, data)\n  }\n}\n\nconst infoFn = (primaryKey: string, data?: any) => {\n  emit('update:operatingTypeProps', 'edit')\n  const originalUrl = `${props.queryOneInterface}/${primaryKey}`\n  const url = renderTemplate(originalUrl, props.formInline)\n  global.$http\n    .request({\n      url,\n      method: props.queryOneInterfaceMethod,\n      data,\n    })\n    .then((res: any) => {\n      operatingType.value = 'edit'\n      const editTitle = props.customizeDialogTitle?.editTitle\n      dialogTitle.value = editTitle ? editTitle : t('el.formBase.editBtnText')\n      Object.assign(cloneAddForm, cloneDeep(res['data']))\n      // 判断是弹窗还是全屏弹窗\n      if (props.dialogType === 'dialog') {\n        dialogVisible.value = true\n      } else {\n        dialogHeaderVisible.value = true\n      }\n      if (props.infoControllerCallback) {\n        props.infoControllerCallback(res['data'])\n      }\n    })\n}\n\nconst details: FormBaseContext['info'] = (primaryKey: string, data?: any) => {\n  addFormDisabled.value = true\n  draftBtnDisabled.value = true\n  initiateProcessBtnDisabled.value = true\n  if (props.infoBeforeCallback) {\n    const next = props.infoBeforeCallback()\n    if (next) {\n      detailsFn(primaryKey, data)\n    }\n  } else {\n    detailsFn(primaryKey, data)\n  }\n}\n\nconst detailsFn = (primaryKey: string, data: any) => {\n  emit('update:operatingTypeProps', 'info')\n  const originalUrl = `${props.queryOneInterface}/${primaryKey}`\n  const url = renderTemplate(originalUrl, props.formInline)\n  global.$http\n    .request({\n      url,\n      method: props.queryOneInterfaceMethod,\n      data,\n    })\n    .then((res: any) => {\n      operatingType.value = 'info'\n      const infoTitle =\n        props.customizeDialogTitle && props.customizeDialogTitle.infoTitle\n      dialogTitle.value = infoTitle ? infoTitle : t('el.formBase.infoText')\n      Object.assign(cloneAddForm, cloneDeep(res['data']))\n      // 判断是弹窗还是全屏弹窗\n      if (props.dialogType === 'dialog') {\n        dialogVisible.value = true\n      } else {\n        dialogHeaderVisible.value = true\n      }\n      if (props.infoControllerCallback) {\n        props.infoControllerCallback(res['data'])\n      }\n    })\n    .catch(() => {\n      beforeCloseFn()\n    })\n}\n\nconst del = () => {\n  let selection: string | any[] = []\n  if (props.rowSingle) {\n    selection = multipleSelection.value\n  } else {\n    selection = currentRow.value ? [currentRow.value] : []\n  }\n  if (selection.length === 0) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOption.value,\n      duration: props.duration,\n    })\n  } else if (selection.length >= 2) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOptionOne.value,\n      duration: props.duration,\n    })\n  } else {\n    const id = selection[0][props.primaryKey ? props.primaryKey : '']\n    if (props.delBeforeCallback) {\n      props.delBeforeCallback(id).then((res) => {\n        if (res) {\n          deleteRow(id)\n        }\n      })\n    } else {\n      deleteRow(id)\n    }\n  }\n}\n\nconst batchDel = () => {\n  const selection = multipleSelection.value\n  if (selection.length === 0) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOption.value,\n      duration: props.duration,\n    })\n  } else {\n    const ids = selection.map((item) => item[props.primaryKey])\n    if (props.delBeforeCallback) {\n      props.delBeforeCallback(ids).then((res) => {\n        if (res) {\n          deleteRow(ids)\n        }\n      })\n    } else {\n      deleteRow(ids)\n    }\n  }\n}\n\nconst deleteRow: FormBaseContext['deleteRow'] = (ids: any) => {\n  if (typeof ids === 'string') {\n    ids = [ids]\n  }\n  ElMessageBox.confirm(localeTextDelStr.value, t('el.formBase.title'), {\n    confirmButtonText: t('el.formBase.confirm'),\n    cancelButtonText: t('el.formBase.cancel'),\n    type: 'warning',\n  })\n    .then(() => {\n      if (!props.isBatchDelete) {\n        global.$http\n          .request({\n            url: props.deleteInterface,\n            method: props.deleteInterfaceMethod,\n            data: ids,\n          })\n          .then((res: any) => {\n            if (res.code === global.is_OK) {\n              setTimeout(() => {\n                ElMessage({\n                  type: 'success',\n                  message: localeTextDelSuccess.value,\n                  duration: props.duration,\n                })\n                query()\n              }, 500)\n              if (props.delControllerCallback) {\n                props.delControllerCallback()\n              }\n            }\n          })\n      } else {\n        global.$http\n          .request({\n            url: `${props.deleteInterface}/${ids[0]}`,\n            method: props.deleteInterfaceMethod,\n          })\n          .then((res: any) => {\n            if (res.code === global.is_OK) {\n              setTimeout(() => {\n                ElMessage({\n                  type: 'success',\n                  message: localeTextDelSuccess.value,\n                  duration: props.duration,\n                })\n                query()\n              }, 500)\n              if (props.delControllerCallback) {\n                props.delControllerCallback()\n              }\n            }\n          })\n      }\n    })\n    .catch(() => {\n      // eslint-disable-next-line no-console\n      console.log('取消')\n    })\n}\n\nconst save = async (formEl: FormInstance | undefined) => {\n  if (!formEl) return\n  await formEl.validate((valid, fields): any => {\n    if (valid) {\n      if (props.addParamControllerCallback) {\n        props.addParamControllerCallback().then(() => {\n          submit()\n        })\n      } else if (props.addParamPromiseControllerCallback) {\n        props.addParamPromiseControllerCallback(vm).then((res: any) => {\n          if (res) {\n            submit()\n          }\n        })\n      } else if (props.addParamControllerPreventCallback) {\n        props.addParamControllerPreventCallback()\n      } else {\n        submit()\n      }\n    } else {\n      // eslint-disable-next-line no-console\n      console.log('error submit!', fields)\n      return false\n    }\n  })\n}\n\nconst submit: FormBaseContext['submit'] = (params?: any) => {\n  formBtnLoading.value = true\n  if (operatingType.value === 'add') {\n    const url = renderTemplate(props.saveInterface || '', cloneAddForm)\n    global.$http\n      .request({\n        url,\n        method: props.saveInterfaceMethod,\n        data: params ? params : cloneAddForm,\n      })\n      .then((res: any) => {\n        if (res.code === global.is_OK) {\n          setTimeout(() => {\n            ElMessage({\n              type: 'success',\n              message: localeTextAddSuccess.value,\n              duration: props.duration,\n            })\n            beforeClose()\n            query()\n          }, 500)\n          if (props.addControllerCallback) {\n            props.addControllerCallback(res)\n          }\n        }\n        formBtnLoading.value = false\n      })\n      .finally(() => {\n        formBtnLoading.value = false\n      })\n      .catch(() => {\n        formBtnLoading.value = false\n      })\n  } else {\n    const url = renderTemplate(props.updateInterface || '', cloneAddForm)\n    global.$http\n      .request({\n        url,\n        method: props.updateInterfaceMethod,\n        data: params ? params : cloneAddForm,\n      })\n      .then((res: any) => {\n        if (res.code === global.is_OK) {\n          setTimeout(() => {\n            ElMessage({\n              type: 'success',\n              message: localeTextEditSuccess.value,\n              duration: props.duration,\n            })\n            beforeClose()\n            query()\n          }, 500)\n          if (props.addControllerCallback) {\n            props.addControllerCallback(res)\n          }\n        }\n        formBtnLoading.value = false\n      })\n      .finally(() => {\n        formBtnLoading.value = false\n      })\n      .catch(() => {\n        formBtnLoading.value = false\n      })\n  }\n}\n\nconst beforeClose = () => {\n  if (props.dialogBeforeClose) {\n    props.dialogBeforeClose()\n  } else {\n    beforeCloseFn()\n  }\n}\n\nconst beforeCloseFn: FormBaseContext['beforeCloseFn'] = () => {\n  addFormRef.value?.resetFields()\n  Object.keys(cloneAddForm).forEach((key) => {\n    delete cloneAddForm[key]\n  })\n  Object.assign(cloneAddForm, JSON.parse(JSON.stringify(props.addForm)))\n  dialogVisible.value = false\n  dialogHeaderVisible.value = false\n  operatingType.value = 'add'\n  addFormDisabled.value = false\n  const addTitle = props.customizeDialogTitle?.addTitle\n  formBtnLoading.value = false\n  draftBtnLoading.value = false\n  initiateProcessBtnLoading.value = false\n  draftBtnDisabled.value = false\n  initiateProcessBtnDisabled.value = false\n  storageBtnLoading.value = false\n  dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n}\n\n// 保存草稿事件\nconst draft = async (formEl: FormInstance | undefined) => {\n  if (!formEl) return\n  await formEl.validate((valid, fields): any => {\n    if (valid) {\n      if (props.draftParamControllerCallback) {\n        // this\n        props.draftParamControllerCallback().then(() => {\n          draftSubmit()\n        })\n      } else if (props.draftParamPromiseControllerCallback) {\n        // this\n        props.draftParamPromiseControllerCallback().then((res) => {\n          if (res) {\n            draftSubmit()\n          }\n        })\n      } else if (props.draftParamControllerPreventCallback) {\n        // this\n        props.draftParamControllerPreventCallback()\n      } else {\n        draftSubmit()\n      }\n    } else {\n      // eslint-disable-next-line no-console\n      console.log('error submit!', fields)\n      return false\n    }\n  })\n}\n\nconst draftSubmit: FormBaseContext['draftSubmit'] = (params?: any) => {\n  draftBtnLoading.value = true\n  initiateProcessBtnLoading.value = true\n  storageBtnLoading.value = true\n  const url = renderTemplate(props.draftInterface || '', cloneAddForm)\n  global.$http\n    .request({\n      url,\n      method: props.draftInterfaceMethod,\n      data: params ? params : cloneAddForm,\n    })\n    .then((res: any) => {\n      if (res.code === global.is_OK) {\n        setTimeout(() => {\n          ElMessage({\n            type: 'success',\n            message: localeTextDraftSuccess.value,\n            duration: props.duration,\n          })\n          beforeClose()\n          query()\n          draftBtnLoading.value = false\n          initiateProcessBtnLoading.value = false\n          storageBtnLoading.value = false\n        }, 500)\n        if (props.addControllerCallback) {\n          props.addControllerCallback(res)\n        }\n      }\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n    })\n    .finally(() => {\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n    })\n    .catch(() => {\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n      if (props.draftControllerErrorCallback) {\n        props.draftControllerErrorCallback()\n      }\n    })\n}\n\n// 发起流程事件\nconst startProcess = async (formEl: FormInstance | undefined) => {\n  if (!formEl) return\n  await formEl.validate((valid, fields): any => {\n    if (valid) {\n      if (props.processParamControllerCallback) {\n        // this\n        props.processParamControllerCallback().then(() => {\n          processSubmit()\n        })\n      } else if (props.processParamPromiseControllerCallback) {\n        // this\n        props.processParamPromiseControllerCallback().then((res) => {\n          if (res) {\n            processSubmit()\n          }\n        })\n      } else if (props.processParamControllerPreventCallback) {\n        // this\n        props.processParamControllerPreventCallback()\n      } else {\n        processSubmit()\n      }\n    } else {\n      // eslint-disable-next-line no-console\n      console.log('error submit!', fields)\n      return false\n    }\n  })\n}\n\nconst processSubmit: FormBaseContext['processSubmit'] = (params?: any) => {\n  draftBtnLoading.value = true\n  initiateProcessBtnLoading.value = true\n  storageBtnLoading.value = true\n  global.$openRunFlow({\n    handleId: cloneAddForm.handleId,\n    bidId: cloneAddForm.bidId,\n    bpmKey: cloneAddForm.bpmKey || '',\n    peFormBase: vm,\n    success(flowDialogForm: any, app: any) {\n      const fn = (newFlowDialogForm: any) => {\n        let dataParams = {\n          ...newFlowDialogForm,\n          ...(params ? params : cloneAddForm),\n        }\n        if (props.processRunFlowParamsControllerCallback) {\n          dataParams = props.processRunFlowParamsControllerCallback(dataParams)\n        }\n        const url = renderTemplate(props.processInterface || '', cloneAddForm)\n        global.$http\n          .request({\n            url,\n            method: props.processInterfaceMethod,\n            data: dataParams,\n          })\n          .then((res: any) => {\n            if (res['code'] === global.is_OK) {\n              setTimeout(() => {\n                ElMessage({\n                  type: 'success',\n                  message: localeTextProcessSuccess.value,\n                  duration: props.duration,\n                })\n                app.close()\n                beforeClose()\n                query()\n                draftBtnLoading.value = false\n                initiateProcessBtnLoading.value = false\n                storageBtnLoading.value = false\n              }, 500)\n              if (props.processControllerCallback) {\n                props.processControllerCallback(res)\n              }\n            } else {\n              draftBtnLoading.value = false\n              initiateProcessBtnLoading.value = false\n              storageBtnLoading.value = false\n              app.callback((config: any) => {\n                fn(config)\n              }, res)\n            }\n          })\n          .catch((err: any) => {\n            draftBtnLoading.value = false\n            initiateProcessBtnLoading.value = false\n            storageBtnLoading.value = false\n            app.callback((config: any) => {\n              fn(config)\n            }, err)\n            if (props.processControllerErrorCallback) {\n              props.processControllerErrorCallback()\n            }\n          })\n      }\n      fn(flowDialogForm)\n    },\n    error(app: any) {\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n      app.close()\n    },\n  })\n}\n\n// 暂存按钮事件\nconst storage = () => {\n  draftBtnLoading.value = true\n  initiateProcessBtnLoading.value = true\n  storageBtnLoading.value = true\n  if (props.storageCallback) {\n    props.storageCallback().then(() => {\n      setTimeout(() => {\n        ElMessage({\n          type: 'success',\n          message: localeTextEditSuccess.value,\n          duration: props.duration,\n        })\n        beforeClose()\n        query()\n        draftBtnLoading.value = false\n        initiateProcessBtnLoading.value = false\n        storageBtnLoading.value = false\n      }, 500)\n    })\n  }\n  if (props.storageControllerPreventCallback) {\n    props.storageControllerPreventCallback().then((res: any) => {\n      if (res) {\n        setTimeout(() => {\n          ElMessage({\n            type: 'success',\n            message: localeTextEditSuccess.value,\n            duration: props.duration,\n          })\n          beforeClose()\n          query()\n          draftBtnLoading.value = false\n          initiateProcessBtnLoading.value = false\n          storageBtnLoading.value = false\n        }, 500)\n      } else {\n        setTimeout(() => {\n          draftBtnLoading.value = false\n          initiateProcessBtnLoading.value = false\n          storageBtnLoading.value = false\n        }, 500)\n      }\n    })\n  }\n}\n\nconst handleSizeChange = (val: number) => {\n  pagination.value.pageSize = val\n  pagination.value.pageNum = 1\n  query()\n}\n\nconst handleCurrentChange = (val: number) => {\n  pagination.value.pageNum = val\n  query()\n}\n\nconst handleChangeFlowStatus = () => {\n  query()\n}\n\nconst handleRowDblclick = (row: any) => {\n  if (props.isDoubleClickDetails) {\n    if (props.hasFlow) {\n      if (row.formUrl && row.procInstId) {\n        // 默认打开流程详情是无法进行操作\n        row.optionType = 'end'\n        global.$openFlowBox({\n          row,\n          peFormBase: vm,\n        })\n      } else {\n        details(row[props.primaryKey])\n      }\n    } else {\n      details(row[props.primaryKey])\n    }\n  } else {\n    emit('table-row-dblclick', row)\n  }\n}\n\nconst handleTableCurrentChange = (row: any) => {\n  currentRow.value = row\n  emit('table-current-change', row)\n}\n\nconst handleTableSelectionChange = (row: any) => {\n  multipleSelection.value = row\n  emit('table-selection-change', row)\n}\n\nconst handleClickInfo = (columns: FormBaseColumnsItem, row: any) => {\n  if (columns.isDetails) {\n    if (props.hasFlow) {\n      if (row.formUrl && row.procInstId) {\n        // 默认打开流程详情是无法进行操作\n        row.optionType = 'end'\n        global.$openFlowBox({\n          row,\n          peFormBase: vm,\n        })\n      } else {\n        details(row[props.primaryKey])\n      }\n    } else {\n      details(row[props.primaryKey])\n    }\n  }\n}\n\nconst handleTableSortChange = (sort: any) => {\n  orderArray.value = sort\n  query()\n}\n\nconst setData: FormBaseContext['setData'] = (data: any) => {\n  tableData.value = data\n}\n\nconst doLayout: FormBaseContext['doLayout'] = () => {\n  peTable?.value?.doLayout()\n}\n\nconst validate: FormBaseContext['validate'] = (callback?: any) => {\n  return addFormRef.value?.validate(callback)\n}\n\nconst setFormBtnLoading: FormBaseContext['setFormBtnLoading'] = (\n  val: boolean\n) => {\n  formBtnLoading.value = val\n}\n\nconst setAddFormDisabled: FormBaseContext['setAddFormDisabled'] = (\n  val: boolean\n) => {\n  addFormDisabled.value = val\n}\n\nconst reloadTable: FormBaseContext['reloadTable'] = () => {\n  isShowDataTable.value = false\n  nextTick(() => {\n    isShowDataTable.value = true\n  })\n}\n\nconst setupClick = () => {\n  if (customSetUpCallback.value) {\n    customSetUpCallback.value(vm)\n  }\n}\n\nconst handleToggleExpand = () => {\n  if (props.isVirtuallyTable) {\n    tableDefaultExpandAll.value = !tableDefaultExpandAll.value\n    peTable?.value?.dataTableRef().setAllTreeExpand(tableDefaultExpandAll.value)\n    peTable?.value?.dataTableRef().refreshColumn()\n  } else {\n    peTable?.value?.setRefreshTable(false)\n    tableDefaultExpandAll.value = !tableDefaultExpandAll.value\n    nextTick(() => {\n      peTable?.value?.setRefreshTable(true)\n    })\n  }\n}\n\nprovide(formBaseContextKey, {\n  ...toRefs(props),\n  query,\n  search,\n  add,\n  info,\n  deleteRow,\n  details,\n  setData,\n  submit,\n  draftSubmit,\n  processSubmit,\n  beforeCloseFn,\n  doLayout,\n  validate,\n  setFormBtnLoading,\n  setAddFormDisabled,\n})\n\ndefineExpose({\n  /**\n   * @description pagination\n   */\n  pagination,\n  /**\n   * @description addFormDisabled\n   */\n  addFormDisabled,\n  /**\n   * @description formBtnLoading\n   */\n  formBtnLoading,\n  /**\n   * @description tableData\n   */\n  tableData,\n  /**\n   * @description cloneAddForm\n   */\n  cloneAddForm,\n  /**\n   * @description currentRow\n   */\n  currentRow,\n  /**\n   * @description multipleSelection\n   */\n  multipleSelection,\n  /**\n   * @description peTable\n   */\n  peTable,\n  /**\n   * @description query\n   */\n  query,\n  /**\n   * @description search\n   */\n  search,\n  /**\n   * @description add\n   */\n  add,\n  /**\n   * @description info\n   */\n  info,\n  /**\n   * @description deleteRow\n   */\n  deleteRow,\n  /**\n   * @description details\n   */\n  details,\n  /**\n   * @description setData\n   */\n  setData,\n  /**\n   * @description submit\n   */\n  submit,\n  /**\n   * @description draftSubmit\n   */\n  draftSubmit,\n  /**\n   * @description processSubmit\n   */\n  processSubmit,\n  /**\n   * @description beforeCloseFn\n   */\n  beforeCloseFn,\n  /**\n   * @description doLayout\n   */\n  doLayout,\n  /**\n   * @description validate\n   */\n  validate,\n  /**\n   * @description setFormBtnLoading\n   */\n  setFormBtnLoading,\n  /**\n   * @description setAddFormDisabled\n   */\n  setAddFormDisabled,\n  /**\n   * @description draftBtnLoading\n   */\n  draftBtnLoading,\n  /**\n   * @description initiateProcessBtnLoading\n   */\n  initiateProcessBtnLoading,\n  /**\n   * @description draftBtnDisabled\n   */\n  draftBtnDisabled,\n  /**\n   * @description initiateProcessBtnDisabled\n   */\n  initiateProcessBtnDisabled,\n  /**\n   * @description storageBtnLoading\n   */\n  storageBtnLoading,\n  /**\n   * @description reloadTable\n   */\n  reloadTable,\n})\n</script>\n","<template>\n  <div :class=\"[ns.b()]\">\n    <div\n      v-if=\"props.noSearchForm\"\n      class=\"el-form-base-head el-form-base-search\"\n    >\n      <div class=\"el-form-base-inline-box\">\n        <el-form\n          v-if=\"props.noSearchFormLeft\"\n          ref=\"formInlineRef\"\n          :inline=\"true\"\n          :model=\"props.formInline\"\n          label-suffix=\"\"\n          :is-search=\"true\"\n          @submit.prevent\n        >\n          <template v-if=\"searchConditionArr.length === 0\">\n            <slot name=\"searchForm\" :form-inline=\"props.formInline\" />\n          </template>\n          <template v-if=\"searchConditionArr.length > 0\">\n            <el-form-item\n              v-for=\"(item, index) in searchConditionArr\"\n              :key=\"index\"\n              :label=\"item.label\"\n              :prop=\"item.prop\"\n            >\n              <component\n                :is=\"item.searchType\"\n                v-model=\"props.formInline[item.prop]\"\n                :code=\"item.searchValue\"\n              />\n            </el-form-item>\n          </template>\n          <el-form-item v-if=\"props.hasFlow\" label=\"流程状态\">\n            <el-select\n              v-model=\"approvalStatus\"\n              :style=\"getFlowWidth\"\n              :clearable=\"true\"\n              @change=\"handleChangeFlowStatus\"\n            >\n              <el-option\n                v-for=\"item in getFlowStatus\"\n                :key=\"item.value\"\n                :value=\"item.value\"\n                :label=\"item.label\"\n              />\n            </el-select>\n          </el-form-item>\n          <el-form-item v-if=\"props.noFormInlineBtn\">\n            <slot name=\"searchLeft\" />\n            <el-button\n              v-if=\"props.noSearch\"\n              :type=\"searchTypeStr\"\n              :icon=\"Search\"\n              native-type=\"submit\"\n              @click=\"search\"\n              >{{ localeSearchBtnText }}</el-button\n            >\n            <el-button\n              v-if=\"props.noClear\"\n              :type=\"clearTypeStr\"\n              :icon=\"Delete\"\n              @click=\"clear\"\n              >{{ localeClearBtnText }}</el-button\n            >\n            <slot name=\"searchRight\" />\n          </el-form-item>\n        </el-form>\n      </div>\n      <div\n        v-if=\"props.noOperation && !isButtonAreaType\"\n        class=\"el-form-base-inline-operation\"\n      >\n        <el-button\n          v-if=\"hiddenAddBtn\"\n          :icon=\"Plus\"\n          :type=\"addTypeStr\"\n          @click=\"add\"\n          >{{ localeAddBtnText }}</el-button\n        >\n        <el-button\n          v-if=\"hiddenEditBtn\"\n          :icon=\"EditPen\"\n          :type=\"updateTypeStr\"\n          @click=\"update\"\n          >{{ localeEditBtnText }}</el-button\n        >\n        <el-button\n          v-if=\"hiddenDelBtn\"\n          :icon=\"Delete\"\n          :type=\"deleteTypeStr\"\n          @click=\"del\"\n          >{{ localeDelBtnText }}</el-button\n        >\n        <slot name=\"toolbar\" />\n        <el-button\n          v-if=\"hiddenBatchBtn\"\n          :icon=\"Delete\"\n          :type=\"batchDelTypeStr\"\n          @click=\"batchDel\"\n          >{{ localeBatchBtnText }}</el-button\n        >\n        <template v-if=\"props.noExpandsBtn\">\n          <el-button\n            v-show=\"props.rowKey && !tableDefaultExpandAll\"\n            class=\"el-form-base-expand-btn\"\n            :type=\"expandTypeStr\"\n            :icon=\"DArrowRight\"\n            @click=\"handleToggleExpand\"\n          >\n            {{ localeExpandBtnText }}\n          </el-button>\n          <el-button\n            v-show=\"props.rowKey && tableDefaultExpandAll\"\n            :type=\"expandTypeStr\"\n            class=\"el-form-base-fold-btn\"\n            :icon=\"DArrowRight\"\n            @click=\"handleToggleExpand\"\n          >\n            {{ localeFoldBtnText }}\n          </el-button>\n        </template>\n      </div>\n    </div>\n    <slot name=\"tabList\" />\n    <div class=\"el-form-base-body\">\n      <div\n        v-if=\"props.noOperation && isButtonAreaType\"\n        class=\"el-form-base-operation\"\n      >\n        <div class=\"el-form-base-operation-left\">\n          <el-button v-if=\"hiddenAddBtn\" :type=\"addTypeStr\" :icon=\"Plus\">{{\n            localeAddBtnText\n          }}</el-button>\n          <el-button\n            v-if=\"hiddenEditBtn\"\n            :type=\"updateTypeStr\"\n            :icon=\"EditPen\"\n            >{{ localeEditBtnText }}</el-button\n          >\n          <el-button v-if=\"hiddenDelBtn\" :type=\"deleteTypeStr\" :icon=\"Delete\">{{\n            localeDelBtnText\n          }}</el-button>\n          <slot name=\"toolbar\" />\n          <el-button\n            v-if=\"hiddenBatchBtn\"\n            :type=\"batchDelTypeStr\"\n            :icon=\"Delete\"\n            >{{ localeBatchBtnText }}</el-button\n          >\n        </div>\n        <div v-if=\"props.noRefreshBtn\" class=\"el-form-base-operation-right\" />\n      </div>\n      <slot name=\"table\">\n        <form-base-table\n          ref=\"peTable\"\n          v-if=\"isShowDataTable\"\n          v-loading=\"tableLoading\"\n          element-loading-text=\"正在加载中...\"\n          :row-key=\"props.rowKey\"\n          :primary-key=\"props.primaryKey\"\n          :row-single=\"props.rowSingle\"\n          :columns=\"getColumns\"\n          :table-data=\"tableData\"\n          :pagination=\"pagination\"\n          :no-batch-btn=\"props.noBatchBtn\"\n          :no-pagination=\"props.noPagination\"\n          :no-table-index=\"props.noTableIndex\"\n          :table-lazy=\"props.tableLazy\"\n          :is-virtually-table=\"props.isVirtuallyTable\"\n          :table-transform=\"props.tableTransform\"\n          :selection-width=\"props.selectionWidth\"\n          :selection-align=\"props.selectionAlign\"\n          :selection-fixed=\"props.selectionFixed\"\n          :index-width=\"props.indexWidth\"\n          :index-align=\"props.indexAlign\"\n          :index-fixed=\"props.indexFixed\"\n          :span-method=\"props.spanMethod\"\n          :default-expand-all=\"tableDefaultExpandAll\"\n          :table-load=\"handleTableLoad\"\n          :row-class-name=\"props.rowClassName\"\n          :cell-class-name=\"props.cellClassName\"\n          @size-change=\"handleSizeChange\"\n          @current-change=\"handleCurrentChange\"\n          @table-current-change=\"handleTableCurrentChange\"\n          @table-selection-change=\"handleTableSelectionChange\"\n          @table-row-dblclick=\"handleRowDblclick\"\n          @click-info=\"handleClickInfo\"\n          @table-sort-change=\"handleTableSortChange\"\n        >\n          <template #tableWarp>\n            <slot name=\"tableWarp\" />\n          </template>\n        </form-base-table>\n      </slot>\n    </div>\n\n    <template v-if=\"props.dialogType === 'dialog'\">\n      <el-dialog\n        v-model=\"dialogVisible\"\n        :title=\"dialogTitle\"\n        :close-on-click-modal=\"false\"\n        :width=\"props.dialogWidth\"\n        :before-close=\"beforeClose\"\n        modal-class=\"form-base-dialog\"\n        draggable\n      >\n        <slot name=\"addWarp\">\n          <el-form\n            ref=\"addFormRef\"\n            :model=\"cloneAddForm\"\n            :rules=\"props.rules\"\n            :label-width=\"props.labelWidth\"\n            status-icon\n            :disabled=\"addFormDisabled\"\n            :validateOnRuleChange=\"props.validateOnRuleChange\"\n          >\n            <slot name=\"add\" :add-form=\"cloneAddForm\" />\n          </el-form>\n        </slot>\n        <template #footer>\n          <span class=\"dialog-footer\">\n            <slot name=\"dialog-footer-left\" />\n            <el-button\n              v-if=\"props.noCancelBtn\"\n              :type=\"cancelTypeStr\"\n              @click=\"beforeClose()\"\n              >{{ t('el.formBase.cancel') }}</el-button\n            >\n            <slot name=\"dialog-footer-center\" />\n            <template v-if=\"!hasFlow\">\n              <el-button\n                v-if=\"!addFormDisabled && props.noConfirmBtn\"\n                :type=\"saveTypeStr\"\n                :loading=\"formBtnLoading\"\n                @click=\"save(addFormRef)\"\n              >\n                {{ localeConfirmBtnText }}\n              </el-button>\n            </template>\n            <template v-else>\n              <el-button\n                v-if=\"props.noStorageBtn\"\n                type=\"colour-10\"\n                :loading=\"storageBtnLoading\"\n                @click=\"storage\"\n                >{{ localeStorageBtnText }}</el-button\n              >\n              <el-button\n                v-if=\"!draftBtnDisabled && props.noDraftBtn\"\n                :type=\"draftBtnTypeStr\"\n                :loading=\"draftBtnLoading\"\n                @click=\"draft(addFormRef)\"\n                >{{ localeDraftBtnText }}</el-button\n              >\n              <el-button\n                v-if=\"!initiateProcessBtnDisabled && props.noInitiateProcessBtn\"\n                :type=\"initiateProcessBtnTypeStr\"\n                :loading=\"initiateProcessBtnLoading\"\n                @click=\"startProcess(addFormRef)\"\n                >{{ localeInitiateProcessBtnText }}</el-button\n              >\n              <pit-view-process\n                v-if=\"props.operatingTypeProps != 'info' && props.hasFlow\"\n                :flow-code=\"props.flowCode\"\n                :bid-id=\"cloneAddForm.bidId\"\n              />\n            </template>\n            <slot name=\"dialog-footer-right\" />\n          </span>\n        </template>\n      </el-dialog>\n    </template>\n    <template v-else>\n      <el-dialog-header\n        v-model=\"dialogHeaderVisible\"\n        :title=\"dialogTitle\"\n        :width=\"props.dialogWidth\"\n        :before-close=\"beforeClose\"\n        :close-on-click-modal=\"false\"\n        :no-cancel-btn=\"props.noCancelBtn\"\n        modal-class=\"form-base-dialog-header\"\n      >\n        <slot name=\"addWarp\">\n          <el-form\n            ref=\"addFormRef\"\n            :model=\"cloneAddForm\"\n            :rules=\"props.rules\"\n            :label-width=\"props.labelWidth\"\n            status-icon\n            :disabled=\"addFormDisabled\"\n            :validateOnRuleChange=\"props.validateOnRuleChange\"\n          >\n            <slot name=\"add\" :add-form=\"cloneAddForm\" />\n          </el-form>\n        </slot>\n        <template #footer-right>\n          <slot name=\"dialog-footer-left\" />\n          <slot name=\"dialog-footer-center\" />\n          <template v-if=\"!hasFlow\">\n            <el-button\n              v-if=\"!addFormDisabled && props.noConfirmBtn\"\n              :type=\"saveTypeStr\"\n              :loading=\"formBtnLoading\"\n              @click=\"save(addFormRef)\"\n            >\n              {{ localeConfirmBtnText }}\n            </el-button>\n          </template>\n          <template v-else>\n            <el-button\n              v-if=\"props.noStorageBtn\"\n              type=\"colour-10\"\n              :loading=\"storageBtnLoading\"\n              @click=\"storage\"\n              >{{ localeStorageBtnText }}</el-button\n            >\n            <el-button\n              v-if=\"!draftBtnDisabled && props.noDraftBtn\"\n              :type=\"draftBtnTypeStr\"\n              :loading=\"draftBtnLoading\"\n              @click=\"draft(addFormRef)\"\n              >{{ localeDraftBtnText }}</el-button\n            >\n            <el-button\n              v-if=\"!initiateProcessBtnDisabled && props.noInitiateProcessBtn\"\n              :type=\"initiateProcessBtnTypeStr\"\n              :loading=\"initiateProcessBtnLoading\"\n              @click=\"startProcess(addFormRef)\"\n              >{{ localeInitiateProcessBtnText }}</el-button\n            >\n            <pit-view-process\n              v-if=\"props.operatingTypeProps != 'info' && props.hasFlow\"\n              :flow-code=\"props.flowCode\"\n              :bid-id=\"cloneAddForm.bidId\"\n            />\n          </template>\n          <slot name=\"dialog-footer-right\" />\n        </template>\n      </el-dialog-header>\n    </template>\n\n    <component\n      :is=\"customSetUpRender\"\n      v-if=\"props.isSetUpRender\"\n      @click=\"setupClick\"\n    />\n  </div>\n</template>\n\n<script setup lang=\"tsx\">\nimport {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport { DArrowRight, Delete, EditPen, Plus, Search } from 'pit-element-icons'\nimport { cloneDeep } from 'lodash-unified'\nimport {\n  useGlobalProperties,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport { getObjectValue, renderTemplate } from '@pit-element-plus/utils'\nimport { ElMessage, ElMessageBox } from '@pit-element-plus/components'\nimport { formBaseEmits, formBaseProps } from './form-base'\nimport formBaseTable from './form-base-table.vue'\nimport useFormBase from './use-form-base'\nimport useFormBaseLocale from './use-form-base-locale'\nimport { formBaseContextKey } from './constants'\nimport type { FormBaseColumnsItem } from './form-base'\nimport type { FormInstance } from '@pit-element-plus/components/form'\nimport type { FormBaseContext } from './types'\n\ndefineOptions({\n  name: 'ElFormBase',\n})\n\nconst ns = useNamespace('form-base')\nconst { t } = useLocale()\nconst global = useGlobalProperties()\nconst props = defineProps(formBaseProps)\nconst emit = defineEmits(formBaseEmits)\n\nconst {\n  pageSize,\n  pageNum,\n  hiddenAddBtn,\n  hiddenEditBtn,\n  hiddenDelBtn,\n  hiddenBatchBtn,\n  isButtonAreaType,\n  searchTypeStr,\n  clearTypeStr,\n  addTypeStr,\n  updateTypeStr,\n  deleteTypeStr,\n  batchDelTypeStr,\n  expandTypeStr,\n  saveTypeStr,\n  cancelTypeStr,\n  paginationTotal,\n  draftBtnTypeStr,\n  initiateProcessBtnTypeStr,\n  columnsStr,\n  flowStatusData,\n  defaultFlowStatus,\n  flowStatusWidth,\n  customSetUpRender,\n  customSetUpCallback,\n  paginationPageSizeStr,\n  paginationPageNumStr,\n} = useFormBase(props)\n\nconst {\n  localeAddBtnText,\n  localeEditBtnText,\n  localeDelBtnText,\n  localeBatchBtnText,\n  localeExpandBtnText,\n  localeFoldBtnText,\n  localeSearchBtnText,\n  localeClearBtnText,\n  localeConfirmBtnText,\n  localeTextAddSuccess,\n  localeTextEditSuccess,\n  localeTextDelSuccess,\n  localeTextDelStr,\n  localeTextEmptyOption,\n  localeTextEmptyOptionOne,\n  localeStorageBtnText,\n  localeDraftBtnText,\n  localeInitiateProcessBtnText,\n  localeTextDraftSuccess,\n  localeTextProcessSuccess,\n} = useFormBaseLocale(props)\n\nconst tableData: any = ref([])\nconst tableLoading = ref(false)\nconst isShowDataTable = ref(true)\nconst pagination = ref({\n  pageSize: pageSize.value,\n  pageNum: pageNum.value,\n  total: 0,\n})\n\nconst formInlineRef = ref<FormInstance>()\nconst addFormRef = ref<FormInstance>()\nconst dialogVisible = ref(false)\nconst dialogHeaderVisible = ref(false)\nconst formBtnLoading = ref(false)\nconst operatingType = ref('add')\nconst dialogTitle = ref(t('el.formBase.addBtnText'))\nconst cloneAddForm = reactive(JSON.parse(JSON.stringify(props.addForm || {})))\nconst addFormDisabled = ref(false)\n\nconst tableDefaultExpandAll = ref(props.defaultExpandAll)\n\nconst draftBtnLoading = ref(false)\nconst initiateProcessBtnLoading = ref(false)\nconst draftBtnDisabled = ref(false)\nconst initiateProcessBtnDisabled = ref(false)\nconst storageBtnLoading = ref(false)\n\nconst approvalStatus = ref(defaultFlowStatus.value)\n\nconst peTable = ref()\nconst currentRow = ref(null)\nconst multipleSelection = ref([])\n\nconst orderArray: any = ref([])\n\nconst searchConditionArr: Record<string, any> = ref([])\n\nwatch(\n  () => props.addForm,\n  (val) => {\n    Object.assign(cloneAddForm, cloneDeep(val))\n  },\n  { deep: true, immediate: true }\n)\n\nwatch(\n  () => dialogVisible.value,\n  (val: boolean) => {\n    emit('update:isDialogVisible', val)\n  }\n)\n\nwatch(\n  () => dialogHeaderVisible.value,\n  (val: boolean) => {\n    emit('update:isDialogVisible', val)\n  }\n)\n\nlet vm: any\n\nonMounted(() => {\n  vm = getCurrentInstance()\n  if (props.isDefaultQuery) {\n    query()\n  }\n})\n\nconst getColumns = computed(() => {\n  const route = global.$route?.meta?.menuListData\n  const sortEncoding = global.$route?.meta?.sortEncoding\n  const columns: any = cloneDeep(props.columns)\n  let routerColumns: any = []\n  let searchCondition: any = []\n  if (props.isSetUpRender && route && route.length > 0) {\n    route.forEach((item: any) => {\n      const findColumn = columns.find((k: any) => k.prop === item.prop)\n      const obj = {\n        ...findColumn,\n        prop: item.prop,\n        label: item.label,\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'isDetails')) {\n        obj.isDetails = item.isDetails\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'width')) {\n        obj.width = item.width\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'align')) {\n        obj.align = item.align\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'showOverflow')) {\n        obj.showOverflow = item.showOverflow\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'hidden')) {\n        obj.hidden = item.hidden\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'resizable')) {\n        obj.resizable = item.resizable\n      }\n      if (Object.prototype.hasOwnProperty.call(item, 'sortable')) {\n        obj.sortable = item.sortable\n      }\n      routerColumns.push(obj)\n      // 处理搜索条件\n      if (item.isSearch) {\n        let searchItem = {\n          prop: item.prop,\n          label: item.label,\n          searchType: item.searchType,\n          searchValue: item.searchValue,\n        }\n        searchCondition.push(searchItem)\n      }\n    })\n    searchConditionArr.value = searchCondition\n  } else {\n    // 配置了排序编码则去匹配规则\n    if (sortEncoding) {\n      const allSort = global.$pinia?.state?.value?.base?.allSort || {}\n      const sortArr = allSort[sortEncoding] || []\n      sortArr.forEach((item: any) => {\n        const obj = columns.find((i: any) => i.prop === item.value)\n        if (obj) {\n          obj.sortable = item.defaultOption\n        }\n      })\n    }\n    routerColumns = columns\n  }\n  if (props.hasFlow) {\n    const flowStatus = routerColumns.filter(\n      (item: any) => item.label === '流程状态'\n    )\n    if (flowStatus.length === 0) {\n      const index: number = routerColumns.length - 1\n      routerColumns.splice(index, 0, {\n        prop: 'approvalStatus',\n        label: '流程状态',\n        align: global.$TABLE_SIZE.FLOW_STATUS_ALIGN,\n        width: props.tableFlowStatusWidth,\n        render: (_params: any) => (\n          <pit-flow-table-status\n            status={_params.approvalStatus}\n            row={_params}\n            rowKey={props.flowVersion}\n          />\n        ),\n        showOverflow: true,\n      })\n    }\n  }\n  if (columnsStr.value && columnsStr.value.length > 0) {\n    routerColumns = routerColumns.map((item: any) => {\n      // @ts-ignore\n      const newItem: any = columnsStr.value.find((k) => k.label === item.label)\n      if (newItem) {\n        item.width = newItem.width\n        item.align = newItem.align\n        item.showOverflow = newItem.showOverflow\n        item.dateFormatter = newItem.dateFormatter\n        item.renderTooltip = newItem.renderTooltip\n        item.hidden = newItem.hidden\n      }\n      return item\n    })\n  }\n  return routerColumns\n})\n\nconst getFlowWidth = computed(() => {\n  if (props.flowStatusWidth) {\n    return { width: `${props.flowStatusWidth}px` }\n  }\n  if (flowStatusWidth.value) {\n    return { width: `${flowStatusWidth.value}px` }\n  }\n  return {}\n})\n\nconst getFlowStatus = computed((): any => {\n  return flowStatusData.value\n})\n\nconst clear = () => {\n  if (props.clearCallback) {\n    props.clearCallback()\n    clearFn()\n  } else if (props.clearPreventCallback) {\n    props.clearPreventCallback()\n  } else {\n    clearFn()\n  }\n}\n\nconst clearFn = () => {\n  approvalStatus.value = defaultFlowStatus.value\n  formInlineRef.value?.resetFields()\n  multipleSelection.value = []\n  nextTick(() => {\n    query()\n  })\n}\n\nconst query: FormBaseContext['query'] = () => {\n  const fn = (params?: any) => {\n    tableLoading.value = true\n    peTable?.value?.setRefreshTable(false)\n    if (props.queryInterface) {\n      const url = renderTemplate(props.queryInterface, props.formInline)\n      if (props.hasFlow) {\n        props!.formInline!.approvalStatus = approvalStatus.value\n      }\n      let orderBy = ''\n      if (orderArray.value && orderArray.value.length > 0) {\n        orderArray.value.forEach((item: any) => {\n          orderBy += `${item.prop} ${\n            item.order === 'ascending' ? 'asc' : 'desc'\n          }, `\n        })\n        orderBy = orderBy.slice(0, Math.max(0, orderBy.length - 2))\n      }\n      const paginationPageSize: string = paginationPageSizeStr.value as string\n      const paginationPageNum: string= paginationPageNumStr.value as string\n      global.$http\n        .request({\n          url,\n          method: props.queryInterfaceMethod,\n          [props.queryInterfaceMethod === 'GET' ? 'params' : 'data']: {\n            [paginationPageSize]: pagination.value.pageSize,\n            [paginationPageNum]: pagination.value.pageNum,\n            orderBy,\n            ...props.formInline,\n            ...params,\n          },\n        })\n        .then((res: any) => {\n          if (res.data && res.data.list) {\n            tableData.value = res.data.list\n            pagination.value.total = getObjectValue(\n              res.data,\n              paginationTotal.value,\n              0\n            )\n          } else {\n            tableData.value = []\n            pagination.value.total = 0\n          }\n          if (res.data.length > 0) {\n            tableData.value = res.data\n            pagination.value.total = 0\n          } else {\n            tableData.value = res.data.list\n            pagination.value.total = getObjectValue(\n              res.data,\n              paginationTotal.value,\n              0\n            )\n          }\n          emit('result-table-back', tableData.value, res)\n        })\n        .finally(() => {\n          tableLoading.value = false\n          peTable?.value?.setRefreshTable(true)\n        })\n    } else {\n      tableLoading.value = false\n    }\n  }\n  if (props.searchBeforeCallbackPrevent) {\n    props.searchBeforeCallbackPrevent(vm).then((params: any) => {\n      fn(params)\n    })\n  } else {\n    fn()\n  }\n}\n\nconst search: FormBaseContext['search'] = () => {\n  pagination.value.pageNum = 1\n  multipleSelection.value = []\n  if (props.searchBeforeCallback) {\n    const next = props.searchBeforeCallback()\n    if (next) {\n      query()\n    }\n  } else {\n    query()\n  }\n}\n\nconst handleTableLoad = (tree: any) => {\n  return new Promise((resolve, reject) => {\n    if (props.queryInterface) {\n      const params = {\n        ...props.formInline,\n      }\n      params[props.lazyKey] = tree[props.lazyKey]\n      const url = renderTemplate(props.queryInterface, params)\n      global.$http\n        .request({\n          url,\n          method: props.queryInterfaceMethod,\n          [props.queryInterfaceMethod === 'GET' ? 'params' : 'data']: {\n            pageSize: pagination.value.pageSize,\n            pageNumber: pagination.value.pageNum,\n            ...params,\n          },\n        })\n        .then((res: any) => {\n          if (res.data.length > 0) {\n            resolve(res['data'])\n          }\n        })\n        .catch((e: any) => {\n          reject(e)\n        })\n    }\n  })\n}\n\nconst add: FormBaseContext['add'] = () => {\n  if (props.addBeforeCallback) {\n    const next = props.addBeforeCallback()\n    if (next) {\n      operatingType.value = 'add'\n      const addTitle =\n        props.customizeDialogTitle && props.customizeDialogTitle.addTitle\n      dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n      emit('update:operatingTypeProps', 'add')\n      // 判断是弹窗还是全屏弹窗\n      if (props.dialogType === 'dialog') {\n        dialogVisible.value = true\n      } else {\n        dialogHeaderVisible.value = true\n      }\n    }\n  } else if (props.addBeforeAsyncCallback) {\n    props.addBeforeAsyncCallback().then((next: boolean) => {\n      if (next) {\n        operatingType.value = 'add'\n        const addTitle =\n          props.customizeDialogTitle && props.customizeDialogTitle.addTitle\n        dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n        emit('update:operatingTypeProps', 'add')\n        // 判断是弹窗还是全屏弹窗\n        if (props.dialogType === 'dialog') {\n          dialogVisible.value = true\n        } else {\n          dialogHeaderVisible.value = true\n        }\n      }\n    })\n  } else {\n    operatingType.value = 'add'\n    const addTitle =\n      props.customizeDialogTitle && props.customizeDialogTitle.addTitle\n    dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n    emit('update:operatingTypeProps', 'add')\n    // 判断是弹窗还是全屏弹窗\n    if (props.dialogType === 'dialog') {\n      dialogVisible.value = true\n    } else {\n      dialogHeaderVisible.value = true\n    }\n  }\n}\n\nconst update = () => {\n  let selection: string | any[] = []\n  if (props.rowSingle) {\n    selection = multipleSelection.value\n  } else {\n    selection = currentRow.value ? [currentRow.value] : []\n  }\n  if (selection.length === 0) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOption.value,\n      duration: props.duration,\n    })\n  } else if (selection.length >= 2) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOptionOne.value,\n      duration: props.duration,\n    })\n  } else {\n    info(selection[0][props.primaryKey ? props.primaryKey : ''])\n  }\n}\n\nconst info: FormBaseContext['info'] = (primaryKey: string, data?: any) => {\n  if (props.infoBeforeCallback) {\n    const next = props.infoBeforeCallback()\n    if (next) {\n      infoFn(primaryKey, data)\n    }\n  } else {\n    infoFn(primaryKey, data)\n  }\n}\n\nconst infoFn = (primaryKey: string, data?: any) => {\n  emit('update:operatingTypeProps', 'edit')\n  const originalUrl = `${props.queryOneInterface}/${primaryKey}`\n  const url = renderTemplate(originalUrl, props.formInline)\n  global.$http\n    .request({\n      url,\n      method: props.queryOneInterfaceMethod,\n      data,\n    })\n    .then((res: any) => {\n      operatingType.value = 'edit'\n      const editTitle = props.customizeDialogTitle?.editTitle\n      dialogTitle.value = editTitle ? editTitle : t('el.formBase.editBtnText')\n      Object.assign(cloneAddForm, cloneDeep(res['data']))\n      // 判断是弹窗还是全屏弹窗\n      if (props.dialogType === 'dialog') {\n        dialogVisible.value = true\n      } else {\n        dialogHeaderVisible.value = true\n      }\n      if (props.infoControllerCallback) {\n        props.infoControllerCallback(res['data'])\n      }\n    })\n}\n\nconst details: FormBaseContext['info'] = (primaryKey: string, data?: any) => {\n  addFormDisabled.value = true\n  draftBtnDisabled.value = true\n  initiateProcessBtnDisabled.value = true\n  if (props.infoBeforeCallback) {\n    const next = props.infoBeforeCallback()\n    if (next) {\n      detailsFn(primaryKey, data)\n    }\n  } else {\n    detailsFn(primaryKey, data)\n  }\n}\n\nconst detailsFn = (primaryKey: string, data: any) => {\n  emit('update:operatingTypeProps', 'info')\n  const originalUrl = `${props.queryOneInterface}/${primaryKey}`\n  const url = renderTemplate(originalUrl, props.formInline)\n  global.$http\n    .request({\n      url,\n      method: props.queryOneInterfaceMethod,\n      data,\n    })\n    .then((res: any) => {\n      operatingType.value = 'info'\n      const infoTitle =\n        props.customizeDialogTitle && props.customizeDialogTitle.infoTitle\n      dialogTitle.value = infoTitle ? infoTitle : t('el.formBase.infoText')\n      Object.assign(cloneAddForm, cloneDeep(res['data']))\n      // 判断是弹窗还是全屏弹窗\n      if (props.dialogType === 'dialog') {\n        dialogVisible.value = true\n      } else {\n        dialogHeaderVisible.value = true\n      }\n      if (props.infoControllerCallback) {\n        props.infoControllerCallback(res['data'])\n      }\n    })\n    .catch(() => {\n      beforeCloseFn()\n    })\n}\n\nconst del = () => {\n  let selection: string | any[] = []\n  if (props.rowSingle) {\n    selection = multipleSelection.value\n  } else {\n    selection = currentRow.value ? [currentRow.value] : []\n  }\n  if (selection.length === 0) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOption.value,\n      duration: props.duration,\n    })\n  } else if (selection.length >= 2) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOptionOne.value,\n      duration: props.duration,\n    })\n  } else {\n    const id = selection[0][props.primaryKey ? props.primaryKey : '']\n    if (props.delBeforeCallback) {\n      props.delBeforeCallback(id).then((res) => {\n        if (res) {\n          deleteRow(id)\n        }\n      })\n    } else {\n      deleteRow(id)\n    }\n  }\n}\n\nconst batchDel = () => {\n  const selection = multipleSelection.value\n  if (selection.length === 0) {\n    ElMessage({\n      type: 'warning',\n      message: localeTextEmptyOption.value,\n      duration: props.duration,\n    })\n  } else {\n    const ids = selection.map((item) => item[props.primaryKey])\n    if (props.delBeforeCallback) {\n      props.delBeforeCallback(ids).then((res) => {\n        if (res) {\n          deleteRow(ids)\n        }\n      })\n    } else {\n      deleteRow(ids)\n    }\n  }\n}\n\nconst deleteRow: FormBaseContext['deleteRow'] = (ids: any) => {\n  if (typeof ids === 'string') {\n    ids = [ids]\n  }\n  ElMessageBox.confirm(localeTextDelStr.value, t('el.formBase.title'), {\n    confirmButtonText: t('el.formBase.confirm'),\n    cancelButtonText: t('el.formBase.cancel'),\n    type: 'warning',\n  })\n    .then(() => {\n      if (!props.isBatchDelete) {\n        global.$http\n          .request({\n            url: props.deleteInterface,\n            method: props.deleteInterfaceMethod,\n            data: ids,\n          })\n          .then((res: any) => {\n            if (res.code === global.is_OK) {\n              setTimeout(() => {\n                ElMessage({\n                  type: 'success',\n                  message: localeTextDelSuccess.value,\n                  duration: props.duration,\n                })\n                query()\n              }, 500)\n              if (props.delControllerCallback) {\n                props.delControllerCallback()\n              }\n            }\n          })\n      } else {\n        global.$http\n          .request({\n            url: `${props.deleteInterface}/${ids[0]}`,\n            method: props.deleteInterfaceMethod,\n          })\n          .then((res: any) => {\n            if (res.code === global.is_OK) {\n              setTimeout(() => {\n                ElMessage({\n                  type: 'success',\n                  message: localeTextDelSuccess.value,\n                  duration: props.duration,\n                })\n                query()\n              }, 500)\n              if (props.delControllerCallback) {\n                props.delControllerCallback()\n              }\n            }\n          })\n      }\n    })\n    .catch(() => {\n      // eslint-disable-next-line no-console\n      console.log('取消')\n    })\n}\n\nconst save = async (formEl: FormInstance | undefined) => {\n  if (!formEl) return\n  await formEl.validate((valid, fields): any => {\n    if (valid) {\n      if (props.addParamControllerCallback) {\n        props.addParamControllerCallback().then(() => {\n          submit()\n        })\n      } else if (props.addParamPromiseControllerCallback) {\n        props.addParamPromiseControllerCallback(vm).then((res: any) => {\n          if (res) {\n            submit()\n          }\n        })\n      } else if (props.addParamControllerPreventCallback) {\n        props.addParamControllerPreventCallback()\n      } else {\n        submit()\n      }\n    } else {\n      // eslint-disable-next-line no-console\n      console.log('error submit!', fields)\n      return false\n    }\n  })\n}\n\nconst submit: FormBaseContext['submit'] = (params?: any) => {\n  formBtnLoading.value = true\n  if (operatingType.value === 'add') {\n    const url = renderTemplate(props.saveInterface || '', cloneAddForm)\n    global.$http\n      .request({\n        url,\n        method: props.saveInterfaceMethod,\n        data: params ? params : cloneAddForm,\n      })\n      .then((res: any) => {\n        if (res.code === global.is_OK) {\n          setTimeout(() => {\n            ElMessage({\n              type: 'success',\n              message: localeTextAddSuccess.value,\n              duration: props.duration,\n            })\n            beforeClose()\n            query()\n          }, 500)\n          if (props.addControllerCallback) {\n            props.addControllerCallback(res)\n          }\n        }\n        formBtnLoading.value = false\n      })\n      .finally(() => {\n        formBtnLoading.value = false\n      })\n      .catch(() => {\n        formBtnLoading.value = false\n      })\n  } else {\n    const url = renderTemplate(props.updateInterface || '', cloneAddForm)\n    global.$http\n      .request({\n        url,\n        method: props.updateInterfaceMethod,\n        data: params ? params : cloneAddForm,\n      })\n      .then((res: any) => {\n        if (res.code === global.is_OK) {\n          setTimeout(() => {\n            ElMessage({\n              type: 'success',\n              message: localeTextEditSuccess.value,\n              duration: props.duration,\n            })\n            beforeClose()\n            query()\n          }, 500)\n          if (props.addControllerCallback) {\n            props.addControllerCallback(res)\n          }\n        }\n        formBtnLoading.value = false\n      })\n      .finally(() => {\n        formBtnLoading.value = false\n      })\n      .catch(() => {\n        formBtnLoading.value = false\n      })\n  }\n}\n\nconst beforeClose = () => {\n  if (props.dialogBeforeClose) {\n    props.dialogBeforeClose()\n  } else {\n    beforeCloseFn()\n  }\n}\n\nconst beforeCloseFn: FormBaseContext['beforeCloseFn'] = () => {\n  addFormRef.value?.resetFields()\n  Object.keys(cloneAddForm).forEach((key) => {\n    delete cloneAddForm[key]\n  })\n  Object.assign(cloneAddForm, JSON.parse(JSON.stringify(props.addForm)))\n  dialogVisible.value = false\n  dialogHeaderVisible.value = false\n  operatingType.value = 'add'\n  addFormDisabled.value = false\n  const addTitle = props.customizeDialogTitle?.addTitle\n  formBtnLoading.value = false\n  draftBtnLoading.value = false\n  initiateProcessBtnLoading.value = false\n  draftBtnDisabled.value = false\n  initiateProcessBtnDisabled.value = false\n  storageBtnLoading.value = false\n  dialogTitle.value = addTitle ? addTitle : t('el.formBase.addBtnText')\n}\n\n// 保存草稿事件\nconst draft = async (formEl: FormInstance | undefined) => {\n  if (!formEl) return\n  await formEl.validate((valid, fields): any => {\n    if (valid) {\n      if (props.draftParamControllerCallback) {\n        // this\n        props.draftParamControllerCallback().then(() => {\n          draftSubmit()\n        })\n      } else if (props.draftParamPromiseControllerCallback) {\n        // this\n        props.draftParamPromiseControllerCallback().then((res) => {\n          if (res) {\n            draftSubmit()\n          }\n        })\n      } else if (props.draftParamControllerPreventCallback) {\n        // this\n        props.draftParamControllerPreventCallback()\n      } else {\n        draftSubmit()\n      }\n    } else {\n      // eslint-disable-next-line no-console\n      console.log('error submit!', fields)\n      return false\n    }\n  })\n}\n\nconst draftSubmit: FormBaseContext['draftSubmit'] = (params?: any) => {\n  draftBtnLoading.value = true\n  initiateProcessBtnLoading.value = true\n  storageBtnLoading.value = true\n  const url = renderTemplate(props.draftInterface || '', cloneAddForm)\n  global.$http\n    .request({\n      url,\n      method: props.draftInterfaceMethod,\n      data: params ? params : cloneAddForm,\n    })\n    .then((res: any) => {\n      if (res.code === global.is_OK) {\n        setTimeout(() => {\n          ElMessage({\n            type: 'success',\n            message: localeTextDraftSuccess.value,\n            duration: props.duration,\n          })\n          beforeClose()\n          query()\n          draftBtnLoading.value = false\n          initiateProcessBtnLoading.value = false\n          storageBtnLoading.value = false\n        }, 500)\n        if (props.addControllerCallback) {\n          props.addControllerCallback(res)\n        }\n      }\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n    })\n    .finally(() => {\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n    })\n    .catch(() => {\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n      if (props.draftControllerErrorCallback) {\n        props.draftControllerErrorCallback()\n      }\n    })\n}\n\n// 发起流程事件\nconst startProcess = async (formEl: FormInstance | undefined) => {\n  if (!formEl) return\n  await formEl.validate((valid, fields): any => {\n    if (valid) {\n      if (props.processParamControllerCallback) {\n        // this\n        props.processParamControllerCallback().then(() => {\n          processSubmit()\n        })\n      } else if (props.processParamPromiseControllerCallback) {\n        // this\n        props.processParamPromiseControllerCallback().then((res) => {\n          if (res) {\n            processSubmit()\n          }\n        })\n      } else if (props.processParamControllerPreventCallback) {\n        // this\n        props.processParamControllerPreventCallback()\n      } else {\n        processSubmit()\n      }\n    } else {\n      // eslint-disable-next-line no-console\n      console.log('error submit!', fields)\n      return false\n    }\n  })\n}\n\nconst processSubmit: FormBaseContext['processSubmit'] = (params?: any) => {\n  draftBtnLoading.value = true\n  initiateProcessBtnLoading.value = true\n  storageBtnLoading.value = true\n  global.$openRunFlow({\n    handleId: cloneAddForm.handleId,\n    bidId: cloneAddForm.bidId,\n    bpmKey: cloneAddForm.bpmKey || '',\n    peFormBase: vm,\n    success(flowDialogForm: any, app: any) {\n      const fn = (newFlowDialogForm: any) => {\n        let dataParams = {\n          ...newFlowDialogForm,\n          ...(params ? params : cloneAddForm),\n        }\n        if (props.processRunFlowParamsControllerCallback) {\n          dataParams = props.processRunFlowParamsControllerCallback(dataParams)\n        }\n        const url = renderTemplate(props.processInterface || '', cloneAddForm)\n        global.$http\n          .request({\n            url,\n            method: props.processInterfaceMethod,\n            data: dataParams,\n          })\n          .then((res: any) => {\n            if (res['code'] === global.is_OK) {\n              setTimeout(() => {\n                ElMessage({\n                  type: 'success',\n                  message: localeTextProcessSuccess.value,\n                  duration: props.duration,\n                })\n                app.close()\n                beforeClose()\n                query()\n                draftBtnLoading.value = false\n                initiateProcessBtnLoading.value = false\n                storageBtnLoading.value = false\n              }, 500)\n              if (props.processControllerCallback) {\n                props.processControllerCallback(res)\n              }\n            } else {\n              draftBtnLoading.value = false\n              initiateProcessBtnLoading.value = false\n              storageBtnLoading.value = false\n              app.callback((config: any) => {\n                fn(config)\n              }, res)\n            }\n          })\n          .catch((err: any) => {\n            draftBtnLoading.value = false\n            initiateProcessBtnLoading.value = false\n            storageBtnLoading.value = false\n            app.callback((config: any) => {\n              fn(config)\n            }, err)\n            if (props.processControllerErrorCallback) {\n              props.processControllerErrorCallback()\n            }\n          })\n      }\n      fn(flowDialogForm)\n    },\n    error(app: any) {\n      draftBtnLoading.value = false\n      initiateProcessBtnLoading.value = false\n      storageBtnLoading.value = false\n      app.close()\n    },\n  })\n}\n\n// 暂存按钮事件\nconst storage = () => {\n  draftBtnLoading.value = true\n  initiateProcessBtnLoading.value = true\n  storageBtnLoading.value = true\n  if (props.storageCallback) {\n    props.storageCallback().then(() => {\n      setTimeout(() => {\n        ElMessage({\n          type: 'success',\n          message: localeTextEditSuccess.value,\n          duration: props.duration,\n        })\n        beforeClose()\n        query()\n        draftBtnLoading.value = false\n        initiateProcessBtnLoading.value = false\n        storageBtnLoading.value = false\n      }, 500)\n    })\n  }\n  if (props.storageControllerPreventCallback) {\n    props.storageControllerPreventCallback().then((res: any) => {\n      if (res) {\n        setTimeout(() => {\n          ElMessage({\n            type: 'success',\n            message: localeTextEditSuccess.value,\n            duration: props.duration,\n          })\n          beforeClose()\n          query()\n          draftBtnLoading.value = false\n          initiateProcessBtnLoading.value = false\n          storageBtnLoading.value = false\n        }, 500)\n      } else {\n        setTimeout(() => {\n          draftBtnLoading.value = false\n          initiateProcessBtnLoading.value = false\n          storageBtnLoading.value = false\n        }, 500)\n      }\n    })\n  }\n}\n\nconst handleSizeChange = (val: number) => {\n  pagination.value.pageSize = val\n  pagination.value.pageNum = 1\n  query()\n}\n\nconst handleCurrentChange = (val: number) => {\n  pagination.value.pageNum = val\n  query()\n}\n\nconst handleChangeFlowStatus = () => {\n  query()\n}\n\nconst handleRowDblclick = (row: any) => {\n  if (props.isDoubleClickDetails) {\n    if (props.hasFlow) {\n      if (row.formUrl && row.procInstId) {\n        // 默认打开流程详情是无法进行操作\n        row.optionType = 'end'\n        global.$openFlowBox({\n          row,\n          peFormBase: vm,\n        })\n      } else {\n        details(row[props.primaryKey])\n      }\n    } else {\n      details(row[props.primaryKey])\n    }\n  } else {\n    emit('table-row-dblclick', row)\n  }\n}\n\nconst handleTableCurrentChange = (row: any) => {\n  currentRow.value = row\n  emit('table-current-change', row)\n}\n\nconst handleTableSelectionChange = (row: any) => {\n  multipleSelection.value = row\n  emit('table-selection-change', row)\n}\n\nconst handleClickInfo = (columns: FormBaseColumnsItem, row: any) => {\n  if (columns.isDetails) {\n    if (props.hasFlow) {\n      if (row.formUrl && row.procInstId) {\n        // 默认打开流程详情是无法进行操作\n        row.optionType = 'end'\n        global.$openFlowBox({\n          row,\n          peFormBase: vm,\n        })\n      } else {\n        details(row[props.primaryKey])\n      }\n    } else {\n      details(row[props.primaryKey])\n    }\n  }\n}\n\nconst handleTableSortChange = (sort: any) => {\n  orderArray.value = sort\n  query()\n}\n\nconst setData: FormBaseContext['setData'] = (data: any) => {\n  tableData.value = data\n}\n\nconst doLayout: FormBaseContext['doLayout'] = () => {\n  peTable?.value?.doLayout()\n}\n\nconst validate: FormBaseContext['validate'] = (callback?: any) => {\n  return addFormRef.value?.validate(callback)\n}\n\nconst setFormBtnLoading: FormBaseContext['setFormBtnLoading'] = (\n  val: boolean\n) => {\n  formBtnLoading.value = val\n}\n\nconst setAddFormDisabled: FormBaseContext['setAddFormDisabled'] = (\n  val: boolean\n) => {\n  addFormDisabled.value = val\n}\n\nconst reloadTable: FormBaseContext['reloadTable'] = () => {\n  isShowDataTable.value = false\n  nextTick(() => {\n    isShowDataTable.value = true\n  })\n}\n\nconst setupClick = () => {\n  if (customSetUpCallback.value) {\n    customSetUpCallback.value(vm)\n  }\n}\n\nconst handleToggleExpand = () => {\n  if (props.isVirtuallyTable) {\n    tableDefaultExpandAll.value = !tableDefaultExpandAll.value\n    peTable?.value?.dataTableRef().setAllTreeExpand(tableDefaultExpandAll.value)\n    peTable?.value?.dataTableRef().refreshColumn()\n  } else {\n    peTable?.value?.setRefreshTable(false)\n    tableDefaultExpandAll.value = !tableDefaultExpandAll.value\n    nextTick(() => {\n      peTable?.value?.setRefreshTable(true)\n    })\n  }\n}\n\nprovide(formBaseContextKey, {\n  ...toRefs(props),\n  query,\n  search,\n  add,\n  info,\n  deleteRow,\n  details,\n  setData,\n  submit,\n  draftSubmit,\n  processSubmit,\n  beforeCloseFn,\n  doLayout,\n  validate,\n  setFormBtnLoading,\n  setAddFormDisabled,\n})\n\ndefineExpose({\n  /**\n   * @description pagination\n   */\n  pagination,\n  /**\n   * @description addFormDisabled\n   */\n  addFormDisabled,\n  /**\n   * @description formBtnLoading\n   */\n  formBtnLoading,\n  /**\n   * @description tableData\n   */\n  tableData,\n  /**\n   * @description cloneAddForm\n   */\n  cloneAddForm,\n  /**\n   * @description currentRow\n   */\n  currentRow,\n  /**\n   * @description multipleSelection\n   */\n  multipleSelection,\n  /**\n   * @description peTable\n   */\n  peTable,\n  /**\n   * @description query\n   */\n  query,\n  /**\n   * @description search\n   */\n  search,\n  /**\n   * @description add\n   */\n  add,\n  /**\n   * @description info\n   */\n  info,\n  /**\n   * @description deleteRow\n   */\n  deleteRow,\n  /**\n   * @description details\n   */\n  details,\n  /**\n   * @description setData\n   */\n  setData,\n  /**\n   * @description submit\n   */\n  submit,\n  /**\n   * @description draftSubmit\n   */\n  draftSubmit,\n  /**\n   * @description processSubmit\n   */\n  processSubmit,\n  /**\n   * @description beforeCloseFn\n   */\n  beforeCloseFn,\n  /**\n   * @description doLayout\n   */\n  doLayout,\n  /**\n   * @description validate\n   */\n  validate,\n  /**\n   * @description setFormBtnLoading\n   */\n  setFormBtnLoading,\n  /**\n   * @description setAddFormDisabled\n   */\n  setAddFormDisabled,\n  /**\n   * @description draftBtnLoading\n   */\n  draftBtnLoading,\n  /**\n   * @description initiateProcessBtnLoading\n   */\n  initiateProcessBtnLoading,\n  /**\n   * @description draftBtnDisabled\n   */\n  draftBtnDisabled,\n  /**\n   * @description initiateProcessBtnDisabled\n   */\n  initiateProcessBtnDisabled,\n  /**\n   * @description storageBtnLoading\n   */\n  storageBtnLoading,\n  /**\n   * @description reloadTable\n   */\n  reloadTable,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport FormBase from './src/form-base.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElFormBase: SFCWithInstall<typeof FormBase> = withInstall(FormBase)\nexport default ElFormBase\n\nexport * from './src/form-base'\nexport * from './src/constants'\n\nexport type ElFormBaseInstance = InstanceType<typeof FormBase> & unknown\n","import {\n  buildProps,\n  definePropType,\n  isNumber,\n  mutable,\n} from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Image from './image.vue'\n\nexport type ImageFitType =\n  | ''\n  | 'contain'\n  | 'cover'\n  | 'fill'\n  | 'none'\n  | 'scale-down'\nexport type ImageCrossorigin = 'anonymous' | 'use-credentials' | ''\n\nexport interface ImageProps {\n  /**\n   * @description when enabling preview, use this flag to control whether clicking on backdrop can exit preview mode.\n   */\n  hideOnClickModal?: boolean\n  /**\n   * @description image source, same as native.\n   */\n  src?: string\n  /**\n   * @description indicate how the image should be resized to fit its container, same as [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit).\n   */\n  fit?: ImageFitType\n  /**\n   * @description Indicates how the browser should load the image, same as [native](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img#loading)\n   */\n  loading?: 'eager' | 'lazy'\n  /**\n   * @description whether to use lazy load.\n   */\n  lazy?: boolean\n  /**\n   * @description the container to add scroll listener when using lazy load.\n   */\n  scrollContainer?: string | HTMLElement\n  /**\n   * @description allow big image preview.\n   */\n  previewSrcList?: string[]\n  /**\n   * @description whether to append image-viewer to body. A nested parent element attribute transform should have this attribute set to `true`.\n   */\n  previewTeleported?: boolean\n  /**\n   * @description set image preview z-index.\n   */\n  zIndex?: number\n  /**\n   * @description initial preview image index, less than the length of `url-list`.\n   */\n  initialIndex?: number\n  /**\n   * @description whether the viewer preview is infinite.\n   */\n  infinite?: boolean\n  /**\n   * @description whether the image-viewer can be closed by pressing ESC.\n   */\n  closeOnPressEscape?: boolean\n  /**\n   * @description the zoom rate of the image viewer zoom event\n   */\n  zoomRate?: number\n  /**\n   * @description preview image scale.\n   */\n  scale?: number\n  /**\n   * @description the min scale of the image viewer zoom event.\n   */\n  minScale?: number\n  /**\n   * @description the max scale of the image viewer zoom event.\n   */\n  maxScale?: number\n  /**\n   * @description show preview image progress content.\n   */\n  showProgress?: boolean\n  /**\n   * @description set HTML attribute: crossorigin.\n   */\n  crossorigin?: ImageCrossorigin\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ImageProps` instead.\n */\nexport const imageProps = buildProps({\n  /**\n   * @description when enabling preview, use this flag to control whether clicking on backdrop can exit preview mode.\n   */\n  hideOnClickModal: Boolean,\n  /**\n   * @description image source, same as native.\n   */\n  src: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description indicate how the image should be resized to fit its container, same as [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit).\n   */\n  fit: {\n    type: String,\n    values: ['', 'contain', 'cover', 'fill', 'none', 'scale-down'],\n    default: '',\n  },\n  /**\n   * @description Indicates how the browser should load the image, same as [native](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img#loading)\n   */\n  loading: {\n    type: String,\n    values: ['eager', 'lazy'],\n  },\n  /**\n   * @description whether to use lazy load.\n   */\n  lazy: Boolean,\n  /**\n   * @description the container to add scroll listener when using lazy load.\n   */\n  scrollContainer: {\n    type: definePropType<string | HTMLElement | undefined>([String, Object]),\n  },\n  /**\n   * @description allow big image preview.\n   */\n  previewSrcList: {\n    type: definePropType<string[]>(Array),\n    default: () => mutable([] as const),\n  },\n  /**\n   * @description whether to append image-viewer to body. A nested parent element attribute transform should have this attribute set to `true`.\n   */\n  previewTeleported: Boolean,\n  /**\n   * @description set image preview z-index.\n   */\n  zIndex: {\n    type: Number,\n  },\n  /**\n   * @description initial preview image index, less than the length of `url-list`.\n   */\n  initialIndex: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description whether the viewer preview is infinite.\n   */\n  infinite: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether the image-viewer can be closed by pressing ESC.\n   */\n  closeOnPressEscape: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description the zoom rate of the image viewer zoom event\n   */\n  zoomRate: {\n    type: Number,\n    default: 1.2,\n  },\n  /**\n   * @description preview image scale.\n   */\n  scale: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description the min scale of the image viewer zoom event.\n   */\n  minScale: {\n    type: Number,\n    default: 0.2,\n  },\n  /**\n   * @description the max scale of the image viewer zoom event.\n   */\n  maxScale: {\n    type: Number,\n    default: 7,\n  },\n  /**\n   * @description show preview image progress content.\n   */\n  showProgress: Boolean,\n  /**\n   * @description set HTML attribute: crossorigin.\n   */\n  crossorigin: {\n    type: definePropType<ImageCrossorigin>(String),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `ImageProps` instead.\n */\nexport type ImagePropsPublic = ExtractPublicPropTypes<typeof imageProps>\n\nexport const imageEmits = {\n  load: (evt: Event) => evt instanceof Event,\n  error: (evt: Event) => evt instanceof Event,\n  switch: (val: number) => isNumber(val),\n  close: () => true,\n  show: () => true,\n}\nexport type ImageEmits = typeof imageEmits\nexport type ImageInstance = InstanceType<typeof Image> & unknown\n","import {\n  buildProps,\n  definePropType,\n  isNumber,\n  mutable,\n} from '@pit-element-plus/utils'\n\nimport type { Component, ExtractPublicPropTypes } from 'vue'\nimport type ImageViewer from './image-viewer.vue'\n\nexport type ImageViewerAction =\n  | 'zoomIn'\n  | 'zoomOut'\n  | 'clockwise'\n  | 'anticlockwise'\n\nexport type ImageViewerCrossorigin = 'anonymous' | 'use-credentials' | ''\n\nexport interface ImageViewerProps {\n  /**\n   * @description preview link list.\n   */\n  urlList?: string[]\n  /**\n   * @description preview backdrop z-index.\n   */\n  zIndex?: number\n  /**\n   * @description the initial preview image index, less than or equal to the length of `url-list`.\n   */\n  initialIndex?: number\n  /**\n   * @description whether preview is infinite.\n   */\n  infinite?: boolean\n  /**\n   * @description whether user can emit close event when clicking backdrop.\n   */\n  hideOnClickModal?: boolean\n  /**\n   * @description whether to append image itself to body. A nested parent element attribute transform should have this attribute set to `true`.\n   */\n  teleported?: boolean\n  /**\n   * @description whether the image-viewer can be closed by pressing ESC.\n   */\n  closeOnPressEscape?: boolean\n  /**\n   * @description the zoom rate of the image viewer zoom event.\n   */\n  zoomRate?: number\n  /**\n   * @description preview image scale.\n   */\n  scale?: number\n  /**\n   * @description the min scale of the image viewer zoom event.\n   */\n  minScale?: number\n  /**\n   * @description the max scale of the image viewer zoom event.\n   */\n  maxScale?: number\n  /**\n   * @description show preview image progress content.\n   */\n  showProgress?: boolean\n  /**\n   * @description set HTML attribute: crossorigin.\n   */\n  crossorigin?: ImageViewerCrossorigin\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ImageViewerProps` instead.\n */\nexport const imageViewerProps = buildProps({\n  /**\n   * @description preview link list.\n   */\n  urlList: {\n    type: definePropType<string[]>(Array),\n    default: () => mutable([] as const),\n  },\n  /**\n   * @description preview backdrop z-index.\n   */\n  zIndex: {\n    type: Number,\n  },\n  /**\n   * @description the initial preview image index, less than or equal to the length of `url-list`.\n   */\n  initialIndex: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description whether preview is infinite.\n   */\n  infinite: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether user can emit close event when clicking backdrop.\n   */\n  hideOnClickModal: Boolean,\n  /**\n   * @description whether to append image itself to body. A nested parent element attribute transform should have this attribute set to `true`.\n   */\n  teleported: Boolean,\n  /**\n   * @description whether the image-viewer can be closed by pressing ESC.\n   */\n  closeOnPressEscape: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description the zoom rate of the image viewer zoom event.\n   */\n  zoomRate: {\n    type: Number,\n    default: 1.2,\n  },\n  /**\n   * @description preview image scale.\n   */\n  scale: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description the min scale of the image viewer zoom event.\n   */\n  minScale: {\n    type: Number,\n    default: 0.2,\n  },\n  /**\n   * @description the max scale of the image viewer zoom event.\n   */\n  maxScale: {\n    type: Number,\n    default: 7,\n  },\n  /**\n   * @description show preview image progress content.\n   */\n  showProgress: Boolean,\n  /**\n   * @description set HTML attribute: crossorigin.\n   */\n  crossorigin: {\n    type: definePropType<ImageViewerCrossorigin>(String),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `ImageViewerProps` instead.\n */\nexport type ImageViewerPropsPublic = ExtractPublicPropTypes<\n  typeof imageViewerProps\n>\n\nexport const imageViewerEmits = {\n  close: () => true,\n  error: (evt: Event) => evt instanceof Event,\n  switch: (index: number) => isNumber(index),\n  rotate: (deg: number) => isNumber(deg),\n}\nexport type ImageViewerEmits = typeof imageViewerEmits\n\nexport interface ImageViewerMode {\n  name: string\n  icon: Component\n}\n\nexport type ImageViewerInstance = InstanceType<typeof ImageViewer> & unknown\n","<template>\n  <el-teleport to=\"body\" :disabled=\"!teleported\">\n    <transition name=\"viewer-fade\" appear>\n      <div\n        ref=\"wrapper\"\n        :tabindex=\"-1\"\n        :class=\"ns.e('wrapper')\"\n        :style=\"{ zIndex }\"\n      >\n        <el-focus-trap\n          loop\n          trapped\n          :focus-trap-el=\"wrapper\"\n          focus-start-el=\"container\"\n          @focusout-prevented=\"onFocusoutPrevented\"\n          @release-requested=\"onCloseRequested\"\n        >\n          <div :class=\"ns.e('mask')\" @click.self=\"hideOnClickModal && hide()\" />\n\n          <!-- CLOSE -->\n          <span :class=\"[ns.e('btn'), ns.e('close')]\" @click=\"hide\">\n            <el-icon>\n              <Close />\n            </el-icon>\n          </span>\n\n          <!-- ARROW -->\n          <template v-if=\"!isSingle\">\n            <span :class=\"arrowPrevKls\" @click=\"prev\">\n              <el-icon>\n                <ArrowLeft />\n              </el-icon>\n            </span>\n            <span :class=\"arrowNextKls\" @click=\"next\">\n              <el-icon>\n                <ArrowRight />\n              </el-icon>\n            </span>\n          </template>\n          <div\n            v-if=\"$slots.progress || showProgress\"\n            :class=\"[ns.e('btn'), ns.e('progress')]\"\n          >\n            <slot\n              name=\"progress\"\n              :active-index=\"activeIndex\"\n              :total=\"urlList.length\"\n            >\n              {{ progress }}\n            </slot>\n          </div>\n          <!-- ACTIONS -->\n          <div :class=\"[ns.e('btn'), ns.e('actions')]\">\n            <div :class=\"ns.e('actions__inner')\">\n              <slot\n                name=\"toolbar\"\n                :actions=\"handleActions\"\n                :prev=\"prev\"\n                :next=\"next\"\n                :reset=\"toggleMode\"\n                :active-index=\"activeIndex\"\n                :set-active-item=\"setActiveItem\"\n              >\n                <el-icon @click=\"handleActions('zoomOut')\">\n                  <ZoomOut />\n                </el-icon>\n                <el-icon @click=\"handleActions('zoomIn')\">\n                  <ZoomIn />\n                </el-icon>\n                <i :class=\"ns.e('actions__divider')\" />\n                <el-icon @click=\"toggleMode\">\n                  <component :is=\"mode.icon\" />\n                </el-icon>\n                <i :class=\"ns.e('actions__divider')\" />\n                <el-icon @click=\"handleActions('anticlockwise')\">\n                  <RefreshLeft />\n                </el-icon>\n                <el-icon @click=\"handleActions('clockwise')\">\n                  <RefreshRight />\n                </el-icon>\n              </slot>\n            </div>\n          </div>\n          <!-- CANVAS -->\n          <div :class=\"ns.e('canvas')\">\n            <slot\n              v-if=\"loadError && $slots['viewer-error']\"\n              name=\"viewer-error\"\n              :active-index=\"activeIndex\"\n              :src=\"currentImg\"\n            />\n            <img\n              v-else\n              ref=\"imgRef\"\n              :key=\"currentImg\"\n              :src=\"currentImg\"\n              :style=\"imgStyle\"\n              :class=\"ns.e('img')\"\n              :crossorigin=\"crossorigin\"\n              @load=\"handleImgLoad\"\n              @error=\"handleImgError\"\n              @mousedown=\"handleMouseDown\"\n              @touchstart=\"handleTouchStart\"\n            />\n          </div>\n          <slot />\n        </el-focus-trap>\n      </div>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  effectScope,\n  markRaw,\n  nextTick,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue'\nimport { clamp, useEventListener } from '@vueuse/core'\nimport { throttle } from 'lodash-unified'\nimport {\n  useLocale,\n  useLockscreen,\n  useNamespace,\n  useZIndex,\n} from '@pit-element-plus/hooks'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { getEventCode, keysOf } from '@pit-element-plus/utils'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  Close,\n  FullScreen,\n  RefreshLeft,\n  RefreshRight,\n  ScaleToOriginal,\n  ZoomIn,\n  ZoomOut,\n} from 'pit-element-icons'\nimport { imageViewerEmits } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\nimport type {\n  ImageViewerAction,\n  ImageViewerMode,\n  ImageViewerProps,\n} from './image-viewer'\n\nconst modes: Record<'CONTAIN' | 'ORIGINAL', ImageViewerMode> = {\n  CONTAIN: {\n    name: 'contain',\n    icon: markRaw(FullScreen),\n  },\n  ORIGINAL: {\n    name: 'original',\n    icon: markRaw(ScaleToOriginal),\n  },\n}\n\ndefineOptions({\n  name: 'ElImageViewer',\n})\n\nconst props = withDefaults(defineProps<ImageViewerProps>(), {\n  urlList: () => [],\n  initialIndex: 0,\n  infinite: true,\n  closeOnPressEscape: true,\n  zoomRate: 1.2,\n  scale: 1,\n  minScale: 0.2,\n  maxScale: 7,\n})\nconst emit = defineEmits(imageViewerEmits)\n\nlet stopWheelListener: (() => void) | undefined\n\nconst { t } = useLocale()\nconst ns = useNamespace('image-viewer')\nconst { nextZIndex } = useZIndex()\nconst wrapper = ref<HTMLDivElement>()\nconst imgRef = ref<HTMLImageElement>()\n\nconst scopeEventListener = effectScope()\n\nconst scaleClamped = computed(() => {\n  const { scale, minScale, maxScale } = props\n  return clamp(scale, minScale, maxScale)\n})\n\nconst loading = ref(true)\nconst loadError = ref(false)\nconst visible = ref(false)\nconst activeIndex = ref(props.initialIndex)\nconst mode = shallowRef<ImageViewerMode>(modes.CONTAIN)\nconst transform = ref({\n  scale: scaleClamped.value,\n  deg: 0,\n  offsetX: 0,\n  offsetY: 0,\n  enableTransition: false,\n})\nconst zIndex = ref(props.zIndex ?? nextZIndex())\n\nuseLockscreen(visible, { ns })\n\nconst isSingle = computed(() => {\n  const { urlList } = props\n  return urlList.length <= 1\n})\n\nconst isFirst = computed(() => activeIndex.value === 0)\n\nconst isLast = computed(() => activeIndex.value === props.urlList.length - 1)\n\nconst currentImg = computed(() => props.urlList[activeIndex.value])\n\nconst arrowPrevKls = computed(() => [\n  ns.e('btn'),\n  ns.e('prev'),\n  ns.is('disabled', !props.infinite && isFirst.value),\n])\n\nconst arrowNextKls = computed(() => [\n  ns.e('btn'),\n  ns.e('next'),\n  ns.is('disabled', !props.infinite && isLast.value),\n])\n\nconst imgStyle = computed(() => {\n  const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n  let translateX = offsetX / scale\n  let translateY = offsetY / scale\n\n  const radian = (deg * Math.PI) / 180\n  const cosRadian = Math.cos(radian)\n  const sinRadian = Math.sin(radian)\n  translateX = translateX * cosRadian + translateY * sinRadian\n  translateY = translateY * cosRadian - (offsetX / scale) * sinRadian\n\n  const style: CSSProperties = {\n    transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`,\n    transition: enableTransition ? 'transform .3s' : '',\n  }\n  if (mode.value.name === modes.CONTAIN.name) {\n    style.maxWidth = style.maxHeight = '100%'\n  }\n  return style\n})\n\nconst progress = computed(\n  () => `${activeIndex.value + 1} / ${props.urlList.length}`\n)\n\nfunction hide() {\n  unregisterEventListener()\n  stopWheelListener?.()\n  visible.value = false\n  emit('close')\n}\n\nfunction registerEventListener() {\n  const keydownHandler = throttle((e: KeyboardEvent) => {\n    const code = getEventCode(e)\n\n    switch (code) {\n      // ESC\n      case EVENT_CODE.esc:\n        props.closeOnPressEscape && hide()\n        break\n      // SPACE\n      case EVENT_CODE.space:\n        toggleMode()\n        break\n      // LEFT_ARROW\n      case EVENT_CODE.left:\n        prev()\n        break\n      // UP_ARROW\n      case EVENT_CODE.up:\n        handleActions('zoomIn')\n        break\n      // RIGHT_ARROW\n      case EVENT_CODE.right:\n        next()\n        break\n      // DOWN_ARROW\n      case EVENT_CODE.down:\n        handleActions('zoomOut')\n        break\n    }\n  })\n  const mousewheelHandler = throttle((e: WheelEvent) => {\n    const delta = e.deltaY || e.deltaX\n    handleActions(delta < 0 ? 'zoomIn' : 'zoomOut', {\n      zoomRate: props.zoomRate,\n      enableTransition: false,\n    })\n  })\n\n  scopeEventListener.run(() => {\n    useEventListener(document, 'keydown', keydownHandler)\n    useEventListener(wrapper, 'wheel', mousewheelHandler)\n  })\n}\n\nfunction unregisterEventListener() {\n  scopeEventListener.stop()\n}\n\nfunction handleImgLoad() {\n  loading.value = false\n}\n\nfunction handleImgError(e: Event) {\n  loadError.value = true\n  loading.value = false\n  emit('error', e)\n  ;(e.target as HTMLImageElement).alt = t('el.image.error')\n}\n\nfunction handleMouseDown(e: MouseEvent) {\n  if (loading.value || e.button !== 0 || !wrapper.value) return\n  transform.value.enableTransition = false\n\n  const { offsetX, offsetY } = transform.value\n  const startX = e.pageX\n  const startY = e.pageY\n\n  const dragHandler = throttle((ev: MouseEvent) => {\n    transform.value = {\n      ...transform.value,\n      offsetX: offsetX + ev.pageX - startX,\n      offsetY: offsetY + ev.pageY - startY,\n    }\n  })\n  const removeMousemove = useEventListener(document, 'mousemove', dragHandler)\n  const removeMouseup = useEventListener(document, 'mouseup', () => {\n    removeMousemove()\n    removeMouseup()\n  })\n\n  e.preventDefault()\n}\n\nfunction handleTouchStart(e: TouchEvent) {\n  if (loading.value || !wrapper.value || e.touches.length !== 1) return\n  transform.value.enableTransition = false\n\n  const { offsetX, offsetY } = transform.value\n  const { pageX: startX, pageY: startY } = e.touches[0]\n\n  const dragHandler = throttle((ev: TouchEvent) => {\n    const targetTouch = ev.touches[0]\n    transform.value = {\n      ...transform.value,\n      offsetX: offsetX + targetTouch.pageX - startX,\n      offsetY: offsetY + targetTouch.pageY - startY,\n    }\n  })\n  const removeTouchmove = useEventListener(document, 'touchmove', dragHandler)\n  const removeTouchend = useEventListener(document, 'touchend', () => {\n    removeTouchmove()\n    removeTouchend()\n  })\n\n  e.preventDefault()\n}\n\nfunction reset() {\n  transform.value = {\n    scale: scaleClamped.value,\n    deg: 0,\n    offsetX: 0,\n    offsetY: 0,\n    enableTransition: false,\n  }\n}\n\nfunction toggleMode() {\n  if (loading.value || loadError.value) return\n\n  const modeNames = keysOf(modes)\n  const modeValues = Object.values(modes)\n  const currentMode = mode.value.name\n  const index = modeValues.findIndex((i) => i.name === currentMode)\n  const nextIndex = (index + 1) % modeNames.length\n  mode.value = modes[modeNames[nextIndex]]\n  reset()\n}\n\nfunction setActiveItem(index: number) {\n  loadError.value = false\n  const len = props.urlList.length\n  activeIndex.value = (index + len) % len\n}\n\nfunction prev() {\n  if (isFirst.value && !props.infinite) return\n  setActiveItem(activeIndex.value - 1)\n}\n\nfunction next() {\n  if (isLast.value && !props.infinite) return\n  setActiveItem(activeIndex.value + 1)\n}\n\nfunction handleActions(action: ImageViewerAction, options = {}) {\n  if (loading.value || loadError.value) return\n  const { minScale, maxScale } = props\n  const { zoomRate, rotateDeg, enableTransition } = {\n    zoomRate: props.zoomRate,\n    rotateDeg: 90,\n    enableTransition: true,\n    ...options,\n  }\n  switch (action) {\n    case 'zoomOut':\n      if (transform.value.scale > minScale) {\n        transform.value.scale = Number.parseFloat(\n          (transform.value.scale / zoomRate).toFixed(3)\n        )\n      }\n      break\n    case 'zoomIn':\n      if (transform.value.scale < maxScale) {\n        transform.value.scale = Number.parseFloat(\n          (transform.value.scale * zoomRate).toFixed(3)\n        )\n      }\n      break\n    case 'clockwise':\n      transform.value.deg += rotateDeg\n      emit('rotate', transform.value.deg)\n      break\n    case 'anticlockwise':\n      transform.value.deg -= rotateDeg\n      emit('rotate', transform.value.deg)\n      break\n  }\n  transform.value.enableTransition = enableTransition\n}\n\nfunction onFocusoutPrevented(event: CustomEvent) {\n  if (event.detail?.focusReason === 'pointer') {\n    event.preventDefault()\n  }\n}\n\nfunction onCloseRequested() {\n  if (props.closeOnPressEscape) {\n    hide()\n  }\n}\n\nfunction wheelHandler(e: WheelEvent) {\n  if (!e.ctrlKey) return\n\n  if (e.deltaY < 0) {\n    e.preventDefault()\n    return false\n  } else if (e.deltaY > 0) {\n    e.preventDefault()\n    return false\n  }\n}\n\nwatch(\n  () => scaleClamped.value,\n  (val) => {\n    transform.value.scale = val\n  }\n)\n\nwatch(currentImg, () => {\n  nextTick(() => {\n    const $img = imgRef.value\n    if (!$img?.complete) {\n      loading.value = true\n    }\n  })\n})\n\nwatch(activeIndex, (val) => {\n  reset()\n  emit('switch', val)\n})\n\nonMounted(() => {\n  visible.value = true\n  registerEventListener()\n\n  stopWheelListener = useEventListener('wheel', wheelHandler, {\n    passive: false,\n  })\n})\n\ndefineExpose({\n  /**\n   * @description manually switch image\n   */\n  setActiveItem,\n})\n</script>\n","<template>\n  <el-teleport to=\"body\" :disabled=\"!teleported\">\n    <transition name=\"viewer-fade\" appear>\n      <div\n        ref=\"wrapper\"\n        :tabindex=\"-1\"\n        :class=\"ns.e('wrapper')\"\n        :style=\"{ zIndex }\"\n      >\n        <el-focus-trap\n          loop\n          trapped\n          :focus-trap-el=\"wrapper\"\n          focus-start-el=\"container\"\n          @focusout-prevented=\"onFocusoutPrevented\"\n          @release-requested=\"onCloseRequested\"\n        >\n          <div :class=\"ns.e('mask')\" @click.self=\"hideOnClickModal && hide()\" />\n\n          <!-- CLOSE -->\n          <span :class=\"[ns.e('btn'), ns.e('close')]\" @click=\"hide\">\n            <el-icon>\n              <Close />\n            </el-icon>\n          </span>\n\n          <!-- ARROW -->\n          <template v-if=\"!isSingle\">\n            <span :class=\"arrowPrevKls\" @click=\"prev\">\n              <el-icon>\n                <ArrowLeft />\n              </el-icon>\n            </span>\n            <span :class=\"arrowNextKls\" @click=\"next\">\n              <el-icon>\n                <ArrowRight />\n              </el-icon>\n            </span>\n          </template>\n          <div\n            v-if=\"$slots.progress || showProgress\"\n            :class=\"[ns.e('btn'), ns.e('progress')]\"\n          >\n            <slot\n              name=\"progress\"\n              :active-index=\"activeIndex\"\n              :total=\"urlList.length\"\n            >\n              {{ progress }}\n            </slot>\n          </div>\n          <!-- ACTIONS -->\n          <div :class=\"[ns.e('btn'), ns.e('actions')]\">\n            <div :class=\"ns.e('actions__inner')\">\n              <slot\n                name=\"toolbar\"\n                :actions=\"handleActions\"\n                :prev=\"prev\"\n                :next=\"next\"\n                :reset=\"toggleMode\"\n                :active-index=\"activeIndex\"\n                :set-active-item=\"setActiveItem\"\n              >\n                <el-icon @click=\"handleActions('zoomOut')\">\n                  <ZoomOut />\n                </el-icon>\n                <el-icon @click=\"handleActions('zoomIn')\">\n                  <ZoomIn />\n                </el-icon>\n                <i :class=\"ns.e('actions__divider')\" />\n                <el-icon @click=\"toggleMode\">\n                  <component :is=\"mode.icon\" />\n                </el-icon>\n                <i :class=\"ns.e('actions__divider')\" />\n                <el-icon @click=\"handleActions('anticlockwise')\">\n                  <RefreshLeft />\n                </el-icon>\n                <el-icon @click=\"handleActions('clockwise')\">\n                  <RefreshRight />\n                </el-icon>\n              </slot>\n            </div>\n          </div>\n          <!-- CANVAS -->\n          <div :class=\"ns.e('canvas')\">\n            <slot\n              v-if=\"loadError && $slots['viewer-error']\"\n              name=\"viewer-error\"\n              :active-index=\"activeIndex\"\n              :src=\"currentImg\"\n            />\n            <img\n              v-else\n              ref=\"imgRef\"\n              :key=\"currentImg\"\n              :src=\"currentImg\"\n              :style=\"imgStyle\"\n              :class=\"ns.e('img')\"\n              :crossorigin=\"crossorigin\"\n              @load=\"handleImgLoad\"\n              @error=\"handleImgError\"\n              @mousedown=\"handleMouseDown\"\n              @touchstart=\"handleTouchStart\"\n            />\n          </div>\n          <slot />\n        </el-focus-trap>\n      </div>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  effectScope,\n  markRaw,\n  nextTick,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue'\nimport { clamp, useEventListener } from '@vueuse/core'\nimport { throttle } from 'lodash-unified'\nimport {\n  useLocale,\n  useLockscreen,\n  useNamespace,\n  useZIndex,\n} from '@pit-element-plus/hooks'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { getEventCode, keysOf } from '@pit-element-plus/utils'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  Close,\n  FullScreen,\n  RefreshLeft,\n  RefreshRight,\n  ScaleToOriginal,\n  ZoomIn,\n  ZoomOut,\n} from 'pit-element-icons'\nimport { imageViewerEmits } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\nimport type {\n  ImageViewerAction,\n  ImageViewerMode,\n  ImageViewerProps,\n} from './image-viewer'\n\nconst modes: Record<'CONTAIN' | 'ORIGINAL', ImageViewerMode> = {\n  CONTAIN: {\n    name: 'contain',\n    icon: markRaw(FullScreen),\n  },\n  ORIGINAL: {\n    name: 'original',\n    icon: markRaw(ScaleToOriginal),\n  },\n}\n\ndefineOptions({\n  name: 'ElImageViewer',\n})\n\nconst props = withDefaults(defineProps<ImageViewerProps>(), {\n  urlList: () => [],\n  initialIndex: 0,\n  infinite: true,\n  closeOnPressEscape: true,\n  zoomRate: 1.2,\n  scale: 1,\n  minScale: 0.2,\n  maxScale: 7,\n})\nconst emit = defineEmits(imageViewerEmits)\n\nlet stopWheelListener: (() => void) | undefined\n\nconst { t } = useLocale()\nconst ns = useNamespace('image-viewer')\nconst { nextZIndex } = useZIndex()\nconst wrapper = ref<HTMLDivElement>()\nconst imgRef = ref<HTMLImageElement>()\n\nconst scopeEventListener = effectScope()\n\nconst scaleClamped = computed(() => {\n  const { scale, minScale, maxScale } = props\n  return clamp(scale, minScale, maxScale)\n})\n\nconst loading = ref(true)\nconst loadError = ref(false)\nconst visible = ref(false)\nconst activeIndex = ref(props.initialIndex)\nconst mode = shallowRef<ImageViewerMode>(modes.CONTAIN)\nconst transform = ref({\n  scale: scaleClamped.value,\n  deg: 0,\n  offsetX: 0,\n  offsetY: 0,\n  enableTransition: false,\n})\nconst zIndex = ref(props.zIndex ?? nextZIndex())\n\nuseLockscreen(visible, { ns })\n\nconst isSingle = computed(() => {\n  const { urlList } = props\n  return urlList.length <= 1\n})\n\nconst isFirst = computed(() => activeIndex.value === 0)\n\nconst isLast = computed(() => activeIndex.value === props.urlList.length - 1)\n\nconst currentImg = computed(() => props.urlList[activeIndex.value])\n\nconst arrowPrevKls = computed(() => [\n  ns.e('btn'),\n  ns.e('prev'),\n  ns.is('disabled', !props.infinite && isFirst.value),\n])\n\nconst arrowNextKls = computed(() => [\n  ns.e('btn'),\n  ns.e('next'),\n  ns.is('disabled', !props.infinite && isLast.value),\n])\n\nconst imgStyle = computed(() => {\n  const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n  let translateX = offsetX / scale\n  let translateY = offsetY / scale\n\n  const radian = (deg * Math.PI) / 180\n  const cosRadian = Math.cos(radian)\n  const sinRadian = Math.sin(radian)\n  translateX = translateX * cosRadian + translateY * sinRadian\n  translateY = translateY * cosRadian - (offsetX / scale) * sinRadian\n\n  const style: CSSProperties = {\n    transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`,\n    transition: enableTransition ? 'transform .3s' : '',\n  }\n  if (mode.value.name === modes.CONTAIN.name) {\n    style.maxWidth = style.maxHeight = '100%'\n  }\n  return style\n})\n\nconst progress = computed(\n  () => `${activeIndex.value + 1} / ${props.urlList.length}`\n)\n\nfunction hide() {\n  unregisterEventListener()\n  stopWheelListener?.()\n  visible.value = false\n  emit('close')\n}\n\nfunction registerEventListener() {\n  const keydownHandler = throttle((e: KeyboardEvent) => {\n    const code = getEventCode(e)\n\n    switch (code) {\n      // ESC\n      case EVENT_CODE.esc:\n        props.closeOnPressEscape && hide()\n        break\n      // SPACE\n      case EVENT_CODE.space:\n        toggleMode()\n        break\n      // LEFT_ARROW\n      case EVENT_CODE.left:\n        prev()\n        break\n      // UP_ARROW\n      case EVENT_CODE.up:\n        handleActions('zoomIn')\n        break\n      // RIGHT_ARROW\n      case EVENT_CODE.right:\n        next()\n        break\n      // DOWN_ARROW\n      case EVENT_CODE.down:\n        handleActions('zoomOut')\n        break\n    }\n  })\n  const mousewheelHandler = throttle((e: WheelEvent) => {\n    const delta = e.deltaY || e.deltaX\n    handleActions(delta < 0 ? 'zoomIn' : 'zoomOut', {\n      zoomRate: props.zoomRate,\n      enableTransition: false,\n    })\n  })\n\n  scopeEventListener.run(() => {\n    useEventListener(document, 'keydown', keydownHandler)\n    useEventListener(wrapper, 'wheel', mousewheelHandler)\n  })\n}\n\nfunction unregisterEventListener() {\n  scopeEventListener.stop()\n}\n\nfunction handleImgLoad() {\n  loading.value = false\n}\n\nfunction handleImgError(e: Event) {\n  loadError.value = true\n  loading.value = false\n  emit('error', e)\n  ;(e.target as HTMLImageElement).alt = t('el.image.error')\n}\n\nfunction handleMouseDown(e: MouseEvent) {\n  if (loading.value || e.button !== 0 || !wrapper.value) return\n  transform.value.enableTransition = false\n\n  const { offsetX, offsetY } = transform.value\n  const startX = e.pageX\n  const startY = e.pageY\n\n  const dragHandler = throttle((ev: MouseEvent) => {\n    transform.value = {\n      ...transform.value,\n      offsetX: offsetX + ev.pageX - startX,\n      offsetY: offsetY + ev.pageY - startY,\n    }\n  })\n  const removeMousemove = useEventListener(document, 'mousemove', dragHandler)\n  const removeMouseup = useEventListener(document, 'mouseup', () => {\n    removeMousemove()\n    removeMouseup()\n  })\n\n  e.preventDefault()\n}\n\nfunction handleTouchStart(e: TouchEvent) {\n  if (loading.value || !wrapper.value || e.touches.length !== 1) return\n  transform.value.enableTransition = false\n\n  const { offsetX, offsetY } = transform.value\n  const { pageX: startX, pageY: startY } = e.touches[0]\n\n  const dragHandler = throttle((ev: TouchEvent) => {\n    const targetTouch = ev.touches[0]\n    transform.value = {\n      ...transform.value,\n      offsetX: offsetX + targetTouch.pageX - startX,\n      offsetY: offsetY + targetTouch.pageY - startY,\n    }\n  })\n  const removeTouchmove = useEventListener(document, 'touchmove', dragHandler)\n  const removeTouchend = useEventListener(document, 'touchend', () => {\n    removeTouchmove()\n    removeTouchend()\n  })\n\n  e.preventDefault()\n}\n\nfunction reset() {\n  transform.value = {\n    scale: scaleClamped.value,\n    deg: 0,\n    offsetX: 0,\n    offsetY: 0,\n    enableTransition: false,\n  }\n}\n\nfunction toggleMode() {\n  if (loading.value || loadError.value) return\n\n  const modeNames = keysOf(modes)\n  const modeValues = Object.values(modes)\n  const currentMode = mode.value.name\n  const index = modeValues.findIndex((i) => i.name === currentMode)\n  const nextIndex = (index + 1) % modeNames.length\n  mode.value = modes[modeNames[nextIndex]]\n  reset()\n}\n\nfunction setActiveItem(index: number) {\n  loadError.value = false\n  const len = props.urlList.length\n  activeIndex.value = (index + len) % len\n}\n\nfunction prev() {\n  if (isFirst.value && !props.infinite) return\n  setActiveItem(activeIndex.value - 1)\n}\n\nfunction next() {\n  if (isLast.value && !props.infinite) return\n  setActiveItem(activeIndex.value + 1)\n}\n\nfunction handleActions(action: ImageViewerAction, options = {}) {\n  if (loading.value || loadError.value) return\n  const { minScale, maxScale } = props\n  const { zoomRate, rotateDeg, enableTransition } = {\n    zoomRate: props.zoomRate,\n    rotateDeg: 90,\n    enableTransition: true,\n    ...options,\n  }\n  switch (action) {\n    case 'zoomOut':\n      if (transform.value.scale > minScale) {\n        transform.value.scale = Number.parseFloat(\n          (transform.value.scale / zoomRate).toFixed(3)\n        )\n      }\n      break\n    case 'zoomIn':\n      if (transform.value.scale < maxScale) {\n        transform.value.scale = Number.parseFloat(\n          (transform.value.scale * zoomRate).toFixed(3)\n        )\n      }\n      break\n    case 'clockwise':\n      transform.value.deg += rotateDeg\n      emit('rotate', transform.value.deg)\n      break\n    case 'anticlockwise':\n      transform.value.deg -= rotateDeg\n      emit('rotate', transform.value.deg)\n      break\n  }\n  transform.value.enableTransition = enableTransition\n}\n\nfunction onFocusoutPrevented(event: CustomEvent) {\n  if (event.detail?.focusReason === 'pointer') {\n    event.preventDefault()\n  }\n}\n\nfunction onCloseRequested() {\n  if (props.closeOnPressEscape) {\n    hide()\n  }\n}\n\nfunction wheelHandler(e: WheelEvent) {\n  if (!e.ctrlKey) return\n\n  if (e.deltaY < 0) {\n    e.preventDefault()\n    return false\n  } else if (e.deltaY > 0) {\n    e.preventDefault()\n    return false\n  }\n}\n\nwatch(\n  () => scaleClamped.value,\n  (val) => {\n    transform.value.scale = val\n  }\n)\n\nwatch(currentImg, () => {\n  nextTick(() => {\n    const $img = imgRef.value\n    if (!$img?.complete) {\n      loading.value = true\n    }\n  })\n})\n\nwatch(activeIndex, (val) => {\n  reset()\n  emit('switch', val)\n})\n\nonMounted(() => {\n  visible.value = true\n  registerEventListener()\n\n  stopWheelListener = useEventListener('wheel', wheelHandler, {\n    passive: false,\n  })\n})\n\ndefineExpose({\n  /**\n   * @description manually switch image\n   */\n  setActiveItem,\n})\n</script>\n","<template>\n  <el-teleport to=\"body\" :disabled=\"!teleported\">\n    <transition name=\"viewer-fade\" appear>\n      <div\n        ref=\"wrapper\"\n        :tabindex=\"-1\"\n        :class=\"ns.e('wrapper')\"\n        :style=\"{ zIndex }\"\n      >\n        <el-focus-trap\n          loop\n          trapped\n          :focus-trap-el=\"wrapper\"\n          focus-start-el=\"container\"\n          @focusout-prevented=\"onFocusoutPrevented\"\n          @release-requested=\"onCloseRequested\"\n        >\n          <div :class=\"ns.e('mask')\" @click.self=\"hideOnClickModal && hide()\" />\n\n          <!-- CLOSE -->\n          <span :class=\"[ns.e('btn'), ns.e('close')]\" @click=\"hide\">\n            <el-icon>\n              <Close />\n            </el-icon>\n          </span>\n\n          <!-- ARROW -->\n          <template v-if=\"!isSingle\">\n            <span :class=\"arrowPrevKls\" @click=\"prev\">\n              <el-icon>\n                <ArrowLeft />\n              </el-icon>\n            </span>\n            <span :class=\"arrowNextKls\" @click=\"next\">\n              <el-icon>\n                <ArrowRight />\n              </el-icon>\n            </span>\n          </template>\n          <div\n            v-if=\"$slots.progress || showProgress\"\n            :class=\"[ns.e('btn'), ns.e('progress')]\"\n          >\n            <slot\n              name=\"progress\"\n              :active-index=\"activeIndex\"\n              :total=\"urlList.length\"\n            >\n              {{ progress }}\n            </slot>\n          </div>\n          <!-- ACTIONS -->\n          <div :class=\"[ns.e('btn'), ns.e('actions')]\">\n            <div :class=\"ns.e('actions__inner')\">\n              <slot\n                name=\"toolbar\"\n                :actions=\"handleActions\"\n                :prev=\"prev\"\n                :next=\"next\"\n                :reset=\"toggleMode\"\n                :active-index=\"activeIndex\"\n                :set-active-item=\"setActiveItem\"\n              >\n                <el-icon @click=\"handleActions('zoomOut')\">\n                  <ZoomOut />\n                </el-icon>\n                <el-icon @click=\"handleActions('zoomIn')\">\n                  <ZoomIn />\n                </el-icon>\n                <i :class=\"ns.e('actions__divider')\" />\n                <el-icon @click=\"toggleMode\">\n                  <component :is=\"mode.icon\" />\n                </el-icon>\n                <i :class=\"ns.e('actions__divider')\" />\n                <el-icon @click=\"handleActions('anticlockwise')\">\n                  <RefreshLeft />\n                </el-icon>\n                <el-icon @click=\"handleActions('clockwise')\">\n                  <RefreshRight />\n                </el-icon>\n              </slot>\n            </div>\n          </div>\n          <!-- CANVAS -->\n          <div :class=\"ns.e('canvas')\">\n            <slot\n              v-if=\"loadError && $slots['viewer-error']\"\n              name=\"viewer-error\"\n              :active-index=\"activeIndex\"\n              :src=\"currentImg\"\n            />\n            <img\n              v-else\n              ref=\"imgRef\"\n              :key=\"currentImg\"\n              :src=\"currentImg\"\n              :style=\"imgStyle\"\n              :class=\"ns.e('img')\"\n              :crossorigin=\"crossorigin\"\n              @load=\"handleImgLoad\"\n              @error=\"handleImgError\"\n              @mousedown=\"handleMouseDown\"\n              @touchstart=\"handleTouchStart\"\n            />\n          </div>\n          <slot />\n        </el-focus-trap>\n      </div>\n    </transition>\n  </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  effectScope,\n  markRaw,\n  nextTick,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue'\nimport { clamp, useEventListener } from '@vueuse/core'\nimport { throttle } from 'lodash-unified'\nimport {\n  useLocale,\n  useLockscreen,\n  useNamespace,\n  useZIndex,\n} from '@pit-element-plus/hooks'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { getEventCode, keysOf } from '@pit-element-plus/utils'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  ArrowLeft,\n  ArrowRight,\n  Close,\n  FullScreen,\n  RefreshLeft,\n  RefreshRight,\n  ScaleToOriginal,\n  ZoomIn,\n  ZoomOut,\n} from 'pit-element-icons'\nimport { imageViewerEmits } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\nimport type {\n  ImageViewerAction,\n  ImageViewerMode,\n  ImageViewerProps,\n} from './image-viewer'\n\nconst modes: Record<'CONTAIN' | 'ORIGINAL', ImageViewerMode> = {\n  CONTAIN: {\n    name: 'contain',\n    icon: markRaw(FullScreen),\n  },\n  ORIGINAL: {\n    name: 'original',\n    icon: markRaw(ScaleToOriginal),\n  },\n}\n\ndefineOptions({\n  name: 'ElImageViewer',\n})\n\nconst props = withDefaults(defineProps<ImageViewerProps>(), {\n  urlList: () => [],\n  initialIndex: 0,\n  infinite: true,\n  closeOnPressEscape: true,\n  zoomRate: 1.2,\n  scale: 1,\n  minScale: 0.2,\n  maxScale: 7,\n})\nconst emit = defineEmits(imageViewerEmits)\n\nlet stopWheelListener: (() => void) | undefined\n\nconst { t } = useLocale()\nconst ns = useNamespace('image-viewer')\nconst { nextZIndex } = useZIndex()\nconst wrapper = ref<HTMLDivElement>()\nconst imgRef = ref<HTMLImageElement>()\n\nconst scopeEventListener = effectScope()\n\nconst scaleClamped = computed(() => {\n  const { scale, minScale, maxScale } = props\n  return clamp(scale, minScale, maxScale)\n})\n\nconst loading = ref(true)\nconst loadError = ref(false)\nconst visible = ref(false)\nconst activeIndex = ref(props.initialIndex)\nconst mode = shallowRef<ImageViewerMode>(modes.CONTAIN)\nconst transform = ref({\n  scale: scaleClamped.value,\n  deg: 0,\n  offsetX: 0,\n  offsetY: 0,\n  enableTransition: false,\n})\nconst zIndex = ref(props.zIndex ?? nextZIndex())\n\nuseLockscreen(visible, { ns })\n\nconst isSingle = computed(() => {\n  const { urlList } = props\n  return urlList.length <= 1\n})\n\nconst isFirst = computed(() => activeIndex.value === 0)\n\nconst isLast = computed(() => activeIndex.value === props.urlList.length - 1)\n\nconst currentImg = computed(() => props.urlList[activeIndex.value])\n\nconst arrowPrevKls = computed(() => [\n  ns.e('btn'),\n  ns.e('prev'),\n  ns.is('disabled', !props.infinite && isFirst.value),\n])\n\nconst arrowNextKls = computed(() => [\n  ns.e('btn'),\n  ns.e('next'),\n  ns.is('disabled', !props.infinite && isLast.value),\n])\n\nconst imgStyle = computed(() => {\n  const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n  let translateX = offsetX / scale\n  let translateY = offsetY / scale\n\n  const radian = (deg * Math.PI) / 180\n  const cosRadian = Math.cos(radian)\n  const sinRadian = Math.sin(radian)\n  translateX = translateX * cosRadian + translateY * sinRadian\n  translateY = translateY * cosRadian - (offsetX / scale) * sinRadian\n\n  const style: CSSProperties = {\n    transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`,\n    transition: enableTransition ? 'transform .3s' : '',\n  }\n  if (mode.value.name === modes.CONTAIN.name) {\n    style.maxWidth = style.maxHeight = '100%'\n  }\n  return style\n})\n\nconst progress = computed(\n  () => `${activeIndex.value + 1} / ${props.urlList.length}`\n)\n\nfunction hide() {\n  unregisterEventListener()\n  stopWheelListener?.()\n  visible.value = false\n  emit('close')\n}\n\nfunction registerEventListener() {\n  const keydownHandler = throttle((e: KeyboardEvent) => {\n    const code = getEventCode(e)\n\n    switch (code) {\n      // ESC\n      case EVENT_CODE.esc:\n        props.closeOnPressEscape && hide()\n        break\n      // SPACE\n      case EVENT_CODE.space:\n        toggleMode()\n        break\n      // LEFT_ARROW\n      case EVENT_CODE.left:\n        prev()\n        break\n      // UP_ARROW\n      case EVENT_CODE.up:\n        handleActions('zoomIn')\n        break\n      // RIGHT_ARROW\n      case EVENT_CODE.right:\n        next()\n        break\n      // DOWN_ARROW\n      case EVENT_CODE.down:\n        handleActions('zoomOut')\n        break\n    }\n  })\n  const mousewheelHandler = throttle((e: WheelEvent) => {\n    const delta = e.deltaY || e.deltaX\n    handleActions(delta < 0 ? 'zoomIn' : 'zoomOut', {\n      zoomRate: props.zoomRate,\n      enableTransition: false,\n    })\n  })\n\n  scopeEventListener.run(() => {\n    useEventListener(document, 'keydown', keydownHandler)\n    useEventListener(wrapper, 'wheel', mousewheelHandler)\n  })\n}\n\nfunction unregisterEventListener() {\n  scopeEventListener.stop()\n}\n\nfunction handleImgLoad() {\n  loading.value = false\n}\n\nfunction handleImgError(e: Event) {\n  loadError.value = true\n  loading.value = false\n  emit('error', e)\n  ;(e.target as HTMLImageElement).alt = t('el.image.error')\n}\n\nfunction handleMouseDown(e: MouseEvent) {\n  if (loading.value || e.button !== 0 || !wrapper.value) return\n  transform.value.enableTransition = false\n\n  const { offsetX, offsetY } = transform.value\n  const startX = e.pageX\n  const startY = e.pageY\n\n  const dragHandler = throttle((ev: MouseEvent) => {\n    transform.value = {\n      ...transform.value,\n      offsetX: offsetX + ev.pageX - startX,\n      offsetY: offsetY + ev.pageY - startY,\n    }\n  })\n  const removeMousemove = useEventListener(document, 'mousemove', dragHandler)\n  const removeMouseup = useEventListener(document, 'mouseup', () => {\n    removeMousemove()\n    removeMouseup()\n  })\n\n  e.preventDefault()\n}\n\nfunction handleTouchStart(e: TouchEvent) {\n  if (loading.value || !wrapper.value || e.touches.length !== 1) return\n  transform.value.enableTransition = false\n\n  const { offsetX, offsetY } = transform.value\n  const { pageX: startX, pageY: startY } = e.touches[0]\n\n  const dragHandler = throttle((ev: TouchEvent) => {\n    const targetTouch = ev.touches[0]\n    transform.value = {\n      ...transform.value,\n      offsetX: offsetX + targetTouch.pageX - startX,\n      offsetY: offsetY + targetTouch.pageY - startY,\n    }\n  })\n  const removeTouchmove = useEventListener(document, 'touchmove', dragHandler)\n  const removeTouchend = useEventListener(document, 'touchend', () => {\n    removeTouchmove()\n    removeTouchend()\n  })\n\n  e.preventDefault()\n}\n\nfunction reset() {\n  transform.value = {\n    scale: scaleClamped.value,\n    deg: 0,\n    offsetX: 0,\n    offsetY: 0,\n    enableTransition: false,\n  }\n}\n\nfunction toggleMode() {\n  if (loading.value || loadError.value) return\n\n  const modeNames = keysOf(modes)\n  const modeValues = Object.values(modes)\n  const currentMode = mode.value.name\n  const index = modeValues.findIndex((i) => i.name === currentMode)\n  const nextIndex = (index + 1) % modeNames.length\n  mode.value = modes[modeNames[nextIndex]]\n  reset()\n}\n\nfunction setActiveItem(index: number) {\n  loadError.value = false\n  const len = props.urlList.length\n  activeIndex.value = (index + len) % len\n}\n\nfunction prev() {\n  if (isFirst.value && !props.infinite) return\n  setActiveItem(activeIndex.value - 1)\n}\n\nfunction next() {\n  if (isLast.value && !props.infinite) return\n  setActiveItem(activeIndex.value + 1)\n}\n\nfunction handleActions(action: ImageViewerAction, options = {}) {\n  if (loading.value || loadError.value) return\n  const { minScale, maxScale } = props\n  const { zoomRate, rotateDeg, enableTransition } = {\n    zoomRate: props.zoomRate,\n    rotateDeg: 90,\n    enableTransition: true,\n    ...options,\n  }\n  switch (action) {\n    case 'zoomOut':\n      if (transform.value.scale > minScale) {\n        transform.value.scale = Number.parseFloat(\n          (transform.value.scale / zoomRate).toFixed(3)\n        )\n      }\n      break\n    case 'zoomIn':\n      if (transform.value.scale < maxScale) {\n        transform.value.scale = Number.parseFloat(\n          (transform.value.scale * zoomRate).toFixed(3)\n        )\n      }\n      break\n    case 'clockwise':\n      transform.value.deg += rotateDeg\n      emit('rotate', transform.value.deg)\n      break\n    case 'anticlockwise':\n      transform.value.deg -= rotateDeg\n      emit('rotate', transform.value.deg)\n      break\n  }\n  transform.value.enableTransition = enableTransition\n}\n\nfunction onFocusoutPrevented(event: CustomEvent) {\n  if (event.detail?.focusReason === 'pointer') {\n    event.preventDefault()\n  }\n}\n\nfunction onCloseRequested() {\n  if (props.closeOnPressEscape) {\n    hide()\n  }\n}\n\nfunction wheelHandler(e: WheelEvent) {\n  if (!e.ctrlKey) return\n\n  if (e.deltaY < 0) {\n    e.preventDefault()\n    return false\n  } else if (e.deltaY > 0) {\n    e.preventDefault()\n    return false\n  }\n}\n\nwatch(\n  () => scaleClamped.value,\n  (val) => {\n    transform.value.scale = val\n  }\n)\n\nwatch(currentImg, () => {\n  nextTick(() => {\n    const $img = imgRef.value\n    if (!$img?.complete) {\n      loading.value = true\n    }\n  })\n})\n\nwatch(activeIndex, (val) => {\n  reset()\n  emit('switch', val)\n})\n\nonMounted(() => {\n  visible.value = true\n  registerEventListener()\n\n  stopWheelListener = useEventListener('wheel', wheelHandler, {\n    passive: false,\n  })\n})\n\ndefineExpose({\n  /**\n   * @description manually switch image\n   */\n  setActiveItem,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport ImageViewer from './src/image-viewer.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElImageViewer: SFCWithInstall<typeof ImageViewer> =\n  withInstall(ImageViewer)\nexport default ElImageViewer\n\nexport * from './src/image-viewer'\n","<template>\n  <div ref=\"container\" v-bind=\"containerAttrs\" :class=\"[ns.b(), $attrs.class]\">\n    <slot v-if=\"hasLoadError\" name=\"error\">\n      <div :class=\"ns.e('error')\">{{ t('el.image.error') }}</div>\n    </slot>\n    <template v-else>\n      <img\n        v-if=\"imageSrc !== undefined\"\n        v-bind=\"imgAttrs\"\n        :src=\"imageSrc\"\n        :loading=\"loading\"\n        :style=\"imageStyle\"\n        :class=\"imageKls\"\n        :crossorigin=\"crossorigin\"\n        @click=\"clickHandler\"\n        @load=\"handleLoad\"\n        @error=\"handleError\"\n      />\n      <div v-if=\"isLoading\" :class=\"ns.e('wrapper')\">\n        <slot name=\"placeholder\">\n          <div :class=\"ns.e('placeholder')\" />\n        </slot>\n      </div>\n    </template>\n    <template v-if=\"preview\">\n      <image-viewer\n        v-if=\"showViewer\"\n        :z-index=\"zIndex\"\n        :initial-index=\"imageIndex\"\n        :infinite=\"infinite\"\n        :zoom-rate=\"zoomRate\"\n        :min-scale=\"minScale\"\n        :max-scale=\"maxScale\"\n        :show-progress=\"showProgress\"\n        :url-list=\"previewSrcList\"\n        :scale=\"scale\"\n        :crossorigin=\"crossorigin\"\n        :hide-on-click-modal=\"hideOnClickModal\"\n        :teleported=\"previewTeleported\"\n        :close-on-press-escape=\"closeOnPressEscape\"\n        @close=\"closeViewer\"\n        @switch=\"switchViewer\"\n      >\n        <div v-if=\"$slots.viewer\">\n          <slot name=\"viewer\" />\n        </div>\n        <template v-if=\"$slots.progress\" #progress=\"progress\">\n          <slot name=\"progress\" v-bind=\"progress\" />\n        </template>\n        <template #toolbar=\"toolbar\">\n          <slot name=\"toolbar\" v-bind=\"toolbar\" />\n        </template>\n        <template v-if=\"$slots['viewer-error']\" #viewer-error=\"viewerError\">\n          <slot name=\"viewer-error\" v-bind=\"viewerError\" />\n        </template>\n      </image-viewer>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  ref,\n  useAttrs as useRawAttrs,\n  watch,\n} from 'vue'\nimport { useIntersectionObserver, useThrottleFn } from '@vueuse/core'\nimport { fromPairs } from 'lodash-unified'\nimport { useAttrs, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ImageViewer from '@pit-element-plus/components/image-viewer'\nimport {\n  getScrollContainer,\n  isArray,\n  isClient,\n  isElement,\n  isString,\n  isWindow,\n} from '@pit-element-plus/utils'\nimport { imageEmits } from './image'\n\nimport type { ImageProps } from './image'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElImage',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ImageProps>(), {\n  src: '',\n  fit: '',\n  previewSrcList: () => [],\n  initialIndex: 0,\n  infinite: true,\n  closeOnPressEscape: true,\n  zoomRate: 1.2,\n  scale: 1,\n  minScale: 0.2,\n  maxScale: 7,\n})\nconst emit = defineEmits(imageEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('image')\nconst rawAttrs = useRawAttrs()\n\nconst containerAttrs = computed(() => {\n  return fromPairs(\n    Object.entries(rawAttrs).filter(\n      ([key]) => /^(data-|on[A-Z])/i.test(key) || ['id', 'style'].includes(key)\n    )\n  )\n})\n\nconst imgAttrs = useAttrs({\n  excludeListeners: true,\n  excludeKeys: computed<string[]>(() => {\n    return Object.keys(containerAttrs.value)\n  }),\n})\n\nconst imageSrc = ref<string | undefined>()\nconst hasLoadError = ref(false)\nconst isLoading = ref(true)\nconst showViewer = ref(false)\nconst container = ref<HTMLElement>()\nconst _scrollContainer = ref<HTMLElement | undefined>()\n\nconst supportLoading = isClient && 'loading' in HTMLImageElement.prototype\nlet stopScrollListener: (() => void) | undefined\n\nconst imageKls = computed(() => [\n  ns.e('inner'),\n  preview.value && ns.e('preview'),\n  isLoading.value && ns.is('loading'),\n])\n\nconst imageStyle = computed<CSSProperties>(() => {\n  const { fit } = props\n  if (isClient && fit) {\n    return { objectFit: fit }\n  }\n  return {}\n})\n\nconst preview = computed(() => {\n  const { previewSrcList } = props\n  return isArray(previewSrcList) && previewSrcList.length > 0\n})\n\nconst imageIndex = computed(() => {\n  const { previewSrcList, initialIndex } = props\n  let previewIndex = initialIndex\n  if (initialIndex > previewSrcList.length - 1) {\n    previewIndex = 0\n  }\n  return previewIndex\n})\n\nconst isManual = computed(() => {\n  if (props.loading === 'eager') return false\n  return (!supportLoading && props.loading === 'lazy') || props.lazy\n})\n\nconst loadImage = () => {\n  if (!isClient) return\n\n  // reset status\n  isLoading.value = true\n  hasLoadError.value = false\n  imageSrc.value = props.src\n}\n\nfunction handleLoad(event: Event) {\n  isLoading.value = false\n  hasLoadError.value = false\n  emit('load', event)\n}\n\nfunction handleError(event: Event) {\n  isLoading.value = false\n  hasLoadError.value = true\n  emit('error', event)\n}\n\nfunction handleLazyLoad(isIntersecting: boolean) {\n  if (isIntersecting) {\n    loadImage()\n    removeLazyLoadListener()\n  }\n}\n\nconst lazyLoadHandler = useThrottleFn(handleLazyLoad, 200, true)\n\nasync function addLazyLoadListener() {\n  if (!isClient) return\n\n  await nextTick()\n\n  const { scrollContainer } = props\n  if (isElement(scrollContainer)) {\n    _scrollContainer.value = scrollContainer\n  } else if (isString(scrollContainer) && scrollContainer !== '') {\n    _scrollContainer.value =\n      document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n  } else if (container.value) {\n    const scrollContainer = getScrollContainer(container.value)\n    _scrollContainer.value = isWindow(scrollContainer)\n      ? undefined\n      : scrollContainer\n  }\n\n  const { stop } = useIntersectionObserver(\n    container,\n    ([entry]) => {\n      lazyLoadHandler(entry.isIntersecting)\n    },\n    { root: _scrollContainer }\n  )\n  stopScrollListener = stop\n}\n\nfunction removeLazyLoadListener() {\n  if (!isClient || !lazyLoadHandler) return\n\n  stopScrollListener?.()\n  _scrollContainer.value = undefined\n  stopScrollListener = undefined\n}\n\nfunction clickHandler() {\n  // don't show viewer when preview is false\n  if (!preview.value) return\n  showViewer.value = true\n  emit('show')\n}\n\nfunction closeViewer() {\n  showViewer.value = false\n  emit('close')\n}\n\nfunction switchViewer(val: number) {\n  emit('switch', val)\n}\n\nwatch(\n  () => props.src,\n  () => {\n    if (isManual.value) {\n      // reset status\n      isLoading.value = true\n      hasLoadError.value = false\n      removeLazyLoadListener()\n      addLazyLoadListener()\n    } else {\n      loadImage()\n    }\n  }\n)\n\nonMounted(() => {\n  if (isManual.value) {\n    addLazyLoadListener()\n  } else {\n    loadImage()\n  }\n})\n\ndefineExpose({\n  /** @description manually open preview */\n  showPreview: clickHandler,\n})\n</script>\n","<template>\n  <div ref=\"container\" v-bind=\"containerAttrs\" :class=\"[ns.b(), $attrs.class]\">\n    <slot v-if=\"hasLoadError\" name=\"error\">\n      <div :class=\"ns.e('error')\">{{ t('el.image.error') }}</div>\n    </slot>\n    <template v-else>\n      <img\n        v-if=\"imageSrc !== undefined\"\n        v-bind=\"imgAttrs\"\n        :src=\"imageSrc\"\n        :loading=\"loading\"\n        :style=\"imageStyle\"\n        :class=\"imageKls\"\n        :crossorigin=\"crossorigin\"\n        @click=\"clickHandler\"\n        @load=\"handleLoad\"\n        @error=\"handleError\"\n      />\n      <div v-if=\"isLoading\" :class=\"ns.e('wrapper')\">\n        <slot name=\"placeholder\">\n          <div :class=\"ns.e('placeholder')\" />\n        </slot>\n      </div>\n    </template>\n    <template v-if=\"preview\">\n      <image-viewer\n        v-if=\"showViewer\"\n        :z-index=\"zIndex\"\n        :initial-index=\"imageIndex\"\n        :infinite=\"infinite\"\n        :zoom-rate=\"zoomRate\"\n        :min-scale=\"minScale\"\n        :max-scale=\"maxScale\"\n        :show-progress=\"showProgress\"\n        :url-list=\"previewSrcList\"\n        :scale=\"scale\"\n        :crossorigin=\"crossorigin\"\n        :hide-on-click-modal=\"hideOnClickModal\"\n        :teleported=\"previewTeleported\"\n        :close-on-press-escape=\"closeOnPressEscape\"\n        @close=\"closeViewer\"\n        @switch=\"switchViewer\"\n      >\n        <div v-if=\"$slots.viewer\">\n          <slot name=\"viewer\" />\n        </div>\n        <template v-if=\"$slots.progress\" #progress=\"progress\">\n          <slot name=\"progress\" v-bind=\"progress\" />\n        </template>\n        <template #toolbar=\"toolbar\">\n          <slot name=\"toolbar\" v-bind=\"toolbar\" />\n        </template>\n        <template v-if=\"$slots['viewer-error']\" #viewer-error=\"viewerError\">\n          <slot name=\"viewer-error\" v-bind=\"viewerError\" />\n        </template>\n      </image-viewer>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  ref,\n  useAttrs as useRawAttrs,\n  watch,\n} from 'vue'\nimport { useIntersectionObserver, useThrottleFn } from '@vueuse/core'\nimport { fromPairs } from 'lodash-unified'\nimport { useAttrs, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ImageViewer from '@pit-element-plus/components/image-viewer'\nimport {\n  getScrollContainer,\n  isArray,\n  isClient,\n  isElement,\n  isString,\n  isWindow,\n} from '@pit-element-plus/utils'\nimport { imageEmits } from './image'\n\nimport type { ImageProps } from './image'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElImage',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ImageProps>(), {\n  src: '',\n  fit: '',\n  previewSrcList: () => [],\n  initialIndex: 0,\n  infinite: true,\n  closeOnPressEscape: true,\n  zoomRate: 1.2,\n  scale: 1,\n  minScale: 0.2,\n  maxScale: 7,\n})\nconst emit = defineEmits(imageEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('image')\nconst rawAttrs = useRawAttrs()\n\nconst containerAttrs = computed(() => {\n  return fromPairs(\n    Object.entries(rawAttrs).filter(\n      ([key]) => /^(data-|on[A-Z])/i.test(key) || ['id', 'style'].includes(key)\n    )\n  )\n})\n\nconst imgAttrs = useAttrs({\n  excludeListeners: true,\n  excludeKeys: computed<string[]>(() => {\n    return Object.keys(containerAttrs.value)\n  }),\n})\n\nconst imageSrc = ref<string | undefined>()\nconst hasLoadError = ref(false)\nconst isLoading = ref(true)\nconst showViewer = ref(false)\nconst container = ref<HTMLElement>()\nconst _scrollContainer = ref<HTMLElement | undefined>()\n\nconst supportLoading = isClient && 'loading' in HTMLImageElement.prototype\nlet stopScrollListener: (() => void) | undefined\n\nconst imageKls = computed(() => [\n  ns.e('inner'),\n  preview.value && ns.e('preview'),\n  isLoading.value && ns.is('loading'),\n])\n\nconst imageStyle = computed<CSSProperties>(() => {\n  const { fit } = props\n  if (isClient && fit) {\n    return { objectFit: fit }\n  }\n  return {}\n})\n\nconst preview = computed(() => {\n  const { previewSrcList } = props\n  return isArray(previewSrcList) && previewSrcList.length > 0\n})\n\nconst imageIndex = computed(() => {\n  const { previewSrcList, initialIndex } = props\n  let previewIndex = initialIndex\n  if (initialIndex > previewSrcList.length - 1) {\n    previewIndex = 0\n  }\n  return previewIndex\n})\n\nconst isManual = computed(() => {\n  if (props.loading === 'eager') return false\n  return (!supportLoading && props.loading === 'lazy') || props.lazy\n})\n\nconst loadImage = () => {\n  if (!isClient) return\n\n  // reset status\n  isLoading.value = true\n  hasLoadError.value = false\n  imageSrc.value = props.src\n}\n\nfunction handleLoad(event: Event) {\n  isLoading.value = false\n  hasLoadError.value = false\n  emit('load', event)\n}\n\nfunction handleError(event: Event) {\n  isLoading.value = false\n  hasLoadError.value = true\n  emit('error', event)\n}\n\nfunction handleLazyLoad(isIntersecting: boolean) {\n  if (isIntersecting) {\n    loadImage()\n    removeLazyLoadListener()\n  }\n}\n\nconst lazyLoadHandler = useThrottleFn(handleLazyLoad, 200, true)\n\nasync function addLazyLoadListener() {\n  if (!isClient) return\n\n  await nextTick()\n\n  const { scrollContainer } = props\n  if (isElement(scrollContainer)) {\n    _scrollContainer.value = scrollContainer\n  } else if (isString(scrollContainer) && scrollContainer !== '') {\n    _scrollContainer.value =\n      document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n  } else if (container.value) {\n    const scrollContainer = getScrollContainer(container.value)\n    _scrollContainer.value = isWindow(scrollContainer)\n      ? undefined\n      : scrollContainer\n  }\n\n  const { stop } = useIntersectionObserver(\n    container,\n    ([entry]) => {\n      lazyLoadHandler(entry.isIntersecting)\n    },\n    { root: _scrollContainer }\n  )\n  stopScrollListener = stop\n}\n\nfunction removeLazyLoadListener() {\n  if (!isClient || !lazyLoadHandler) return\n\n  stopScrollListener?.()\n  _scrollContainer.value = undefined\n  stopScrollListener = undefined\n}\n\nfunction clickHandler() {\n  // don't show viewer when preview is false\n  if (!preview.value) return\n  showViewer.value = true\n  emit('show')\n}\n\nfunction closeViewer() {\n  showViewer.value = false\n  emit('close')\n}\n\nfunction switchViewer(val: number) {\n  emit('switch', val)\n}\n\nwatch(\n  () => props.src,\n  () => {\n    if (isManual.value) {\n      // reset status\n      isLoading.value = true\n      hasLoadError.value = false\n      removeLazyLoadListener()\n      addLazyLoadListener()\n    } else {\n      loadImage()\n    }\n  }\n)\n\nonMounted(() => {\n  if (isManual.value) {\n    addLazyLoadListener()\n  } else {\n    loadImage()\n  }\n})\n\ndefineExpose({\n  /** @description manually open preview */\n  showPreview: clickHandler,\n})\n</script>\n","<template>\n  <div ref=\"container\" v-bind=\"containerAttrs\" :class=\"[ns.b(), $attrs.class]\">\n    <slot v-if=\"hasLoadError\" name=\"error\">\n      <div :class=\"ns.e('error')\">{{ t('el.image.error') }}</div>\n    </slot>\n    <template v-else>\n      <img\n        v-if=\"imageSrc !== undefined\"\n        v-bind=\"imgAttrs\"\n        :src=\"imageSrc\"\n        :loading=\"loading\"\n        :style=\"imageStyle\"\n        :class=\"imageKls\"\n        :crossorigin=\"crossorigin\"\n        @click=\"clickHandler\"\n        @load=\"handleLoad\"\n        @error=\"handleError\"\n      />\n      <div v-if=\"isLoading\" :class=\"ns.e('wrapper')\">\n        <slot name=\"placeholder\">\n          <div :class=\"ns.e('placeholder')\" />\n        </slot>\n      </div>\n    </template>\n    <template v-if=\"preview\">\n      <image-viewer\n        v-if=\"showViewer\"\n        :z-index=\"zIndex\"\n        :initial-index=\"imageIndex\"\n        :infinite=\"infinite\"\n        :zoom-rate=\"zoomRate\"\n        :min-scale=\"minScale\"\n        :max-scale=\"maxScale\"\n        :show-progress=\"showProgress\"\n        :url-list=\"previewSrcList\"\n        :scale=\"scale\"\n        :crossorigin=\"crossorigin\"\n        :hide-on-click-modal=\"hideOnClickModal\"\n        :teleported=\"previewTeleported\"\n        :close-on-press-escape=\"closeOnPressEscape\"\n        @close=\"closeViewer\"\n        @switch=\"switchViewer\"\n      >\n        <div v-if=\"$slots.viewer\">\n          <slot name=\"viewer\" />\n        </div>\n        <template v-if=\"$slots.progress\" #progress=\"progress\">\n          <slot name=\"progress\" v-bind=\"progress\" />\n        </template>\n        <template #toolbar=\"toolbar\">\n          <slot name=\"toolbar\" v-bind=\"toolbar\" />\n        </template>\n        <template v-if=\"$slots['viewer-error']\" #viewer-error=\"viewerError\">\n          <slot name=\"viewer-error\" v-bind=\"viewerError\" />\n        </template>\n      </image-viewer>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  ref,\n  useAttrs as useRawAttrs,\n  watch,\n} from 'vue'\nimport { useIntersectionObserver, useThrottleFn } from '@vueuse/core'\nimport { fromPairs } from 'lodash-unified'\nimport { useAttrs, useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ImageViewer from '@pit-element-plus/components/image-viewer'\nimport {\n  getScrollContainer,\n  isArray,\n  isClient,\n  isElement,\n  isString,\n  isWindow,\n} from '@pit-element-plus/utils'\nimport { imageEmits } from './image'\n\nimport type { ImageProps } from './image'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElImage',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ImageProps>(), {\n  src: '',\n  fit: '',\n  previewSrcList: () => [],\n  initialIndex: 0,\n  infinite: true,\n  closeOnPressEscape: true,\n  zoomRate: 1.2,\n  scale: 1,\n  minScale: 0.2,\n  maxScale: 7,\n})\nconst emit = defineEmits(imageEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('image')\nconst rawAttrs = useRawAttrs()\n\nconst containerAttrs = computed(() => {\n  return fromPairs(\n    Object.entries(rawAttrs).filter(\n      ([key]) => /^(data-|on[A-Z])/i.test(key) || ['id', 'style'].includes(key)\n    )\n  )\n})\n\nconst imgAttrs = useAttrs({\n  excludeListeners: true,\n  excludeKeys: computed<string[]>(() => {\n    return Object.keys(containerAttrs.value)\n  }),\n})\n\nconst imageSrc = ref<string | undefined>()\nconst hasLoadError = ref(false)\nconst isLoading = ref(true)\nconst showViewer = ref(false)\nconst container = ref<HTMLElement>()\nconst _scrollContainer = ref<HTMLElement | undefined>()\n\nconst supportLoading = isClient && 'loading' in HTMLImageElement.prototype\nlet stopScrollListener: (() => void) | undefined\n\nconst imageKls = computed(() => [\n  ns.e('inner'),\n  preview.value && ns.e('preview'),\n  isLoading.value && ns.is('loading'),\n])\n\nconst imageStyle = computed<CSSProperties>(() => {\n  const { fit } = props\n  if (isClient && fit) {\n    return { objectFit: fit }\n  }\n  return {}\n})\n\nconst preview = computed(() => {\n  const { previewSrcList } = props\n  return isArray(previewSrcList) && previewSrcList.length > 0\n})\n\nconst imageIndex = computed(() => {\n  const { previewSrcList, initialIndex } = props\n  let previewIndex = initialIndex\n  if (initialIndex > previewSrcList.length - 1) {\n    previewIndex = 0\n  }\n  return previewIndex\n})\n\nconst isManual = computed(() => {\n  if (props.loading === 'eager') return false\n  return (!supportLoading && props.loading === 'lazy') || props.lazy\n})\n\nconst loadImage = () => {\n  if (!isClient) return\n\n  // reset status\n  isLoading.value = true\n  hasLoadError.value = false\n  imageSrc.value = props.src\n}\n\nfunction handleLoad(event: Event) {\n  isLoading.value = false\n  hasLoadError.value = false\n  emit('load', event)\n}\n\nfunction handleError(event: Event) {\n  isLoading.value = false\n  hasLoadError.value = true\n  emit('error', event)\n}\n\nfunction handleLazyLoad(isIntersecting: boolean) {\n  if (isIntersecting) {\n    loadImage()\n    removeLazyLoadListener()\n  }\n}\n\nconst lazyLoadHandler = useThrottleFn(handleLazyLoad, 200, true)\n\nasync function addLazyLoadListener() {\n  if (!isClient) return\n\n  await nextTick()\n\n  const { scrollContainer } = props\n  if (isElement(scrollContainer)) {\n    _scrollContainer.value = scrollContainer\n  } else if (isString(scrollContainer) && scrollContainer !== '') {\n    _scrollContainer.value =\n      document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n  } else if (container.value) {\n    const scrollContainer = getScrollContainer(container.value)\n    _scrollContainer.value = isWindow(scrollContainer)\n      ? undefined\n      : scrollContainer\n  }\n\n  const { stop } = useIntersectionObserver(\n    container,\n    ([entry]) => {\n      lazyLoadHandler(entry.isIntersecting)\n    },\n    { root: _scrollContainer }\n  )\n  stopScrollListener = stop\n}\n\nfunction removeLazyLoadListener() {\n  if (!isClient || !lazyLoadHandler) return\n\n  stopScrollListener?.()\n  _scrollContainer.value = undefined\n  stopScrollListener = undefined\n}\n\nfunction clickHandler() {\n  // don't show viewer when preview is false\n  if (!preview.value) return\n  showViewer.value = true\n  emit('show')\n}\n\nfunction closeViewer() {\n  showViewer.value = false\n  emit('close')\n}\n\nfunction switchViewer(val: number) {\n  emit('switch', val)\n}\n\nwatch(\n  () => props.src,\n  () => {\n    if (isManual.value) {\n      // reset status\n      isLoading.value = true\n      hasLoadError.value = false\n      removeLazyLoadListener()\n      addLazyLoadListener()\n    } else {\n      loadImage()\n    }\n  }\n)\n\nonMounted(() => {\n  if (isManual.value) {\n    addLazyLoadListener()\n  } else {\n    loadImage()\n  }\n})\n\ndefineExpose({\n  /** @description manually open preview */\n  showPreview: clickHandler,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Image from './src/image.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElImage: SFCWithInstall<typeof Image> = withInstall(Image)\nexport default ElImage\n\nexport * from './src/image'\n","import { isNil } from 'lodash-unified'\nimport { buildProps, definePropType, isNumber } from '@pit-element-plus/utils'\nimport { useAriaProps, useSizeProp } from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\n\nimport type { ExtractPublicPropTypes, HTMLAttributes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type InputNumber from './input-number.vue'\n\n/**\n * @description input-number component props\n */\nexport interface InputNumberProps {\n  /**\n   * @description same as `id` in native input\n   */\n  id?: string\n  /**\n   * @description incremental step\n   */\n  step?: number\n  /**\n   * @description whether input value can only be multiple of step\n   */\n  stepStrictly?: boolean\n  /**\n   * @description the maximum allowed value\n   */\n  max?: number\n  /**\n   * @description the minimum allowed value\n   */\n  min?: number\n  /**\n   * @description binding value\n   */\n  modelValue?: number | null\n  /**\n   * @description same as `readonly` in native input\n   */\n  readonly?: boolean\n  /**\n   * @description whether the component is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description size of the component\n   */\n  size?: ComponentSize\n  /**\n   * @description whether to enable the control buttons\n   */\n  controls?: boolean\n  /**\n   * @description position of the control buttons\n   */\n  controlsPosition?: '' | 'right'\n  /**\n   * @description value should be set when input box is cleared\n   */\n  valueOnClear?: 'min' | 'max' | number | null\n  /**\n   * @description same as `name` in native input\n   */\n  name?: string\n  /**\n   * @description same as `placeholder` in native input\n   */\n  placeholder?: string\n  /**\n   * @description precision of input value\n   */\n  precision?: number\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n  /**\n   * @description native aria-label attribute\n   */\n  ariaLabel?: string\n  /**\n   * @description native input mode for virtual keyboards\n   */\n  inputmode?: HTMLAttributes['inputmode']\n  /**\n   * @description alignment for the inner input text\n   */\n  align?: 'left' | 'right' | 'center'\n  /**\n   * @description whether to disable scientific notation input (e.g. 'e', 'E')\n   */\n  disabledScientific?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `InputNumberProps` instead.\n */\nexport const inputNumberProps = buildProps({\n  /**\n   * @description same as `id` in native input\n   */\n  id: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description incremental step\n   */\n  step: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description whether input value can only be multiple of step\n   */\n  stepStrictly: Boolean,\n  /**\n   * @description the maximum allowed value\n   */\n  max: {\n    type: Number,\n    default: Number.MAX_SAFE_INTEGER,\n  },\n  /**\n   * @description the minimum allowed value\n   */\n  min: {\n    type: Number,\n    default: Number.MIN_SAFE_INTEGER,\n  },\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: [Number, null],\n  },\n  /**\n   * @description same as `readonly` in native input\n   */\n  readonly: Boolean,\n  /**\n   * @description whether the component is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description size of the component\n   */\n  size: useSizeProp,\n  /**\n   * @description whether to enable the control buttons\n   */\n  controls: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description position of the control buttons\n   */\n  controlsPosition: {\n    type: String,\n    default: '',\n    values: ['', 'right'],\n  },\n  /**\n   * @description value should be set when input box is cleared\n   */\n  valueOnClear: {\n    type: definePropType<'min' | 'max' | number | null>([String, Number, null]),\n    validator: (val: 'min' | 'max' | number | null) =>\n      val === null || isNumber(val) || ['min', 'max'].includes(val),\n    default: null,\n  },\n  /**\n   * @description same as `name` in native input\n   */\n  name: String,\n  /**\n   * @description same as `placeholder` in native input\n   */\n  placeholder: String,\n  /**\n   * @description precision of input value\n   */\n  precision: {\n    type: Number,\n    validator: (val: number) =>\n      val >= 0 && val === Number.parseInt(`${val}`, 10),\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  ...useAriaProps(['ariaLabel']),\n  /**\n   * @description native input mode for virtual keyboards\n   */\n  inputmode: {\n    type: definePropType<HTMLAttributes['inputmode']>(String),\n    default: undefined,\n  },\n  /**\n   * @description alignment for the inner input text\n   */\n  align: {\n    type: definePropType<'left' | 'right' | 'center'>(String),\n    default: 'center',\n  },\n  /**\n   * @description whether to disable scientific notation input (e.g. 'e', 'E')\n   */\n  disabledScientific: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `InputNumberProps` instead.\n */\nexport type InputNumberPropsPublic = ExtractPublicPropTypes<\n  typeof inputNumberProps\n>\n\nexport const inputNumberEmits = {\n  [CHANGE_EVENT]: (cur: number | undefined, prev: number | undefined) =>\n    prev !== cur,\n  blur: (e: FocusEvent) => e instanceof FocusEvent,\n  focus: (e: FocusEvent) => e instanceof FocusEvent,\n  [INPUT_EVENT]: (val: number | null | undefined) =>\n    isNumber(val) || isNil(val),\n  [UPDATE_MODEL_EVENT]: (val: number | undefined) =>\n    isNumber(val) || isNil(val),\n}\nexport type InputNumberEmits = typeof inputNumberEmits\n\nexport type InputNumberInstance = InstanceType<typeof InputNumber> & unknown\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(inputNumberSize),\n      ns.is('disabled', inputNumberDisabled),\n      ns.is('without-controls', !controls),\n      ns.is('controls-right', controlsAtRight),\n      ns.is(align, !!align),\n    ]\"\n    @dragstart.prevent\n  >\n    <span\n      v-if=\"controls\"\n      v-repeat-click=\"decrease\"\n      role=\"button\"\n      :aria-label=\"t('el.inputNumber.decrease')\"\n      :class=\"[ns.e('decrease'), ns.is('disabled', minDisabled)]\"\n      @keydown.enter=\"decrease\"\n    >\n      <slot name=\"decrease-icon\">\n        <el-icon>\n          <arrow-down v-if=\"controlsAtRight\" />\n          <minus v-else />\n        </el-icon>\n      </slot>\n    </span>\n    <span\n      v-if=\"controls\"\n      v-repeat-click=\"increase\"\n      role=\"button\"\n      :aria-label=\"t('el.inputNumber.increase')\"\n      :class=\"[ns.e('increase'), ns.is('disabled', maxDisabled)]\"\n      @keydown.enter=\"increase\"\n    >\n      <slot name=\"increase-icon\">\n        <el-icon>\n          <arrow-up v-if=\"controlsAtRight\" />\n          <plus v-else />\n        </el-icon>\n      </slot>\n    </span>\n    <el-input\n      :id=\"id\"\n      ref=\"input\"\n      type=\"number\"\n      :step=\"step\"\n      :model-value=\"displayValue\"\n      :placeholder=\"placeholder\"\n      :readonly=\"readonly\"\n      :disabled=\"inputNumberDisabled\"\n      :size=\"inputNumberSize\"\n      :max=\"max\"\n      :min=\"min\"\n      :name=\"name\"\n      :is-select=\"false\"\n      :clearable=\"false\"\n      :aria-label=\"ariaLabel\"\n      :validate-event=\"false\"\n      :inputmode=\"inputmode\"\n      @keydown=\"handleKeydown\"\n      @blur=\"handleBlur\"\n      @focus=\"handleFocus\"\n      @input=\"handleInput\"\n      @change=\"handleInputChange\"\n    >\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    </el-input>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onMounted, onUpdated, reactive, ref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { vRepeatClick } from '@pit-element-plus/directives'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  debugWarn,\n  getEventCode,\n  getEventKey,\n  isNumber,\n  isString,\n  isUndefined,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { ArrowDown, ArrowUp, Minus, Plus } from 'pit-element-icons'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { inputNumberEmits } from './input-number'\n\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { InputNumberProps } from './input-number'\n\ndefineOptions({\n  name: 'ElInputNumber',\n})\n\nconst props = withDefaults(defineProps<InputNumberProps>(), {\n  id: undefined,\n  disabled: undefined,\n  step: 1,\n  max: Number.MAX_SAFE_INTEGER,\n  min: Number.MIN_SAFE_INTEGER,\n  stepStrictly: false,\n  readonly: false,\n  controls: true,\n  controlsPosition: '',\n  valueOnClear: null,\n  validateEvent: true,\n  inputmode: undefined,\n  align: 'center',\n})\nconst emit = defineEmits(inputNumberEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('input-number')\nconst input = ref<InputInstance>()\n\ninterface Data {\n  currentValue: number | null | undefined\n  userInput: null | number | string\n}\nconst data = reactive<Data>({\n  currentValue: props.modelValue,\n  userInput: null,\n})\n\nconst { formItem } = useFormItem()\n\nconst minDisabled = computed(\n  () => isNumber(props.modelValue) && props.modelValue <= props.min\n)\nconst maxDisabled = computed(\n  () => isNumber(props.modelValue) && props.modelValue >= props.max\n)\n\nconst numPrecision = computed(() => {\n  const stepPrecision = getPrecision(props.step)\n  if (!isUndefined(props.precision)) {\n    if (stepPrecision > props.precision) {\n      debugWarn(\n        'InputNumber',\n        'precision should not be less than the decimal places of step'\n      )\n    }\n    return props.precision\n  } else {\n    return Math.max(getPrecision(props.modelValue), stepPrecision)\n  }\n})\nconst controlsAtRight = computed(() => {\n  return props.controls && props.controlsPosition === 'right'\n})\n\nconst inputNumberSize = useFormSize()\nconst inputNumberDisabled = useFormDisabled()\n\nconst displayValue = computed(() => {\n  if (data.userInput !== null) {\n    return data.userInput\n  }\n  let currentValue: number | string | undefined | null = data.currentValue\n  if (isNil(currentValue)) return ''\n  if (isNumber(currentValue)) {\n    if (Number.isNaN(currentValue)) return ''\n    if (!isUndefined(props.precision)) {\n      currentValue = currentValue.toFixed(props.precision)\n    }\n  }\n  return currentValue\n})\nconst toPrecision = (num: number, pre?: number) => {\n  if (isUndefined(pre)) pre = numPrecision.value\n  if (pre === 0) return Math.round(num)\n  let snum = String(num)\n  const pointPos = snum.indexOf('.')\n  if (pointPos === -1) return num\n  const nums = snum.replace('.', '').split('')\n  const datum = nums[pointPos + pre]\n  if (!datum) return num\n  const length = snum.length\n  if (snum.charAt(length - 1) === '5') {\n    snum = `${snum.slice(0, Math.max(0, length - 1))}6`\n  }\n  return Number.parseFloat(Number(snum).toFixed(pre))\n}\nconst getPrecision = (value: number | null | undefined) => {\n  if (isNil(value)) return 0\n  const valueString = value.toString()\n  const dotPosition = valueString.indexOf('.')\n  let precision = 0\n  if (dotPosition !== -1) {\n    precision = valueString.length - dotPosition - 1\n  }\n  return precision\n}\nconst ensurePrecision = (val: number, coefficient: 1 | -1 = 1) => {\n  if (!isNumber(val)) return data.currentValue\n  if (val >= Number.MAX_SAFE_INTEGER && coefficient === 1) {\n    debugWarn(\n      'InputNumber',\n      'The value has reached the maximum safe integer limit.'\n    )\n    return val\n  } else if (val <= Number.MIN_SAFE_INTEGER && coefficient === -1) {\n    debugWarn(\n      'InputNumber',\n      'The value has reached the minimum safe integer limit.'\n    )\n    return val\n  }\n\n  // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n  return toPrecision(val + props.step * coefficient)\n}\nconst handleKeydown = (event: KeyboardEvent | Event) => {\n  const code = getEventCode(event as KeyboardEvent)\n  const key = getEventKey(event as KeyboardEvent)\n\n  if (props.disabledScientific && ['e', 'E'].includes(key)) {\n    event.preventDefault()\n    return\n  }\n\n  switch (code) {\n    case EVENT_CODE.up: {\n      event.preventDefault()\n      increase()\n      break\n    }\n    case EVENT_CODE.down: {\n      event.preventDefault()\n      decrease()\n      break\n    }\n  }\n}\nconst increase = () => {\n  if (props.readonly || inputNumberDisabled.value || maxDisabled.value) return\n  const value = Number(displayValue.value) || 0\n  const newVal = ensurePrecision(value)\n  setCurrentValue(newVal)\n  emit(INPUT_EVENT, data.currentValue)\n  setCurrentValueToModelValue()\n}\nconst decrease = () => {\n  if (props.readonly || inputNumberDisabled.value || minDisabled.value) return\n  const value = Number(displayValue.value) || 0\n  const newVal = ensurePrecision(value, -1)\n  setCurrentValue(newVal)\n  emit(INPUT_EVENT, data.currentValue)\n  setCurrentValueToModelValue()\n}\nconst verifyValue = (\n  value: number | string | null | undefined,\n  update?: boolean\n): number | null | undefined => {\n  const { max, min, step, precision, stepStrictly, valueOnClear } = props\n  if (max < min) {\n    throwError('InputNumber', 'min should not be greater than max.')\n  }\n  let newVal = Number(value)\n  if (isNil(value) || Number.isNaN(newVal)) {\n    return null\n  }\n  if (value === '') {\n    if (valueOnClear === null) {\n      return null\n    }\n    newVal = isString(valueOnClear) ? { min, max }[valueOnClear] : valueOnClear\n  }\n  if (stepStrictly) {\n    newVal = toPrecision(\n      Math.round(toPrecision(newVal / step)) * step,\n      precision\n    )\n    if (newVal !== value) {\n      update && emit(UPDATE_MODEL_EVENT, newVal)\n    }\n  }\n  if (!isUndefined(precision)) {\n    newVal = toPrecision(newVal, precision)\n  }\n  if (newVal > max || newVal < min) {\n    newVal = newVal > max ? max : min\n    update && emit(UPDATE_MODEL_EVENT, newVal)\n  }\n  return newVal\n}\nconst setCurrentValue = (\n  value: number | string | null | undefined,\n  emitChange = true\n) => {\n  const oldVal = data.currentValue\n  const newVal = verifyValue(value)\n  if (!emitChange) {\n    emit(UPDATE_MODEL_EVENT, newVal!)\n    return\n  }\n  data.userInput = null\n  if (oldVal === newVal && value) return\n  emit(UPDATE_MODEL_EVENT, newVal!)\n  if (oldVal !== newVal) {\n    emit(CHANGE_EVENT, newVal!, oldVal!)\n  }\n  if (props.validateEvent) {\n    formItem?.validate?.('change').catch((err) => debugWarn(err))\n  }\n  data.currentValue = newVal\n}\nconst handleInput = (value: string) => {\n  data.userInput = value\n  const newVal = value === '' ? null : Number(value)\n  emit(INPUT_EVENT, newVal)\n  setCurrentValue(newVal, false)\n}\nconst handleInputChange = (value: string) => {\n  const newVal = value !== '' ? Number(value) : ''\n  if ((isNumber(newVal) && !Number.isNaN(newVal)) || value === '') {\n    setCurrentValue(newVal)\n  }\n  setCurrentValueToModelValue()\n  data.userInput = null\n}\n\nconst focus = () => {\n  input.value?.focus?.()\n}\n\nconst blur = () => {\n  input.value?.blur?.()\n}\n\nconst handleFocus = (event: MouseEvent | FocusEvent) => {\n  emit('focus', event)\n}\n\nconst handleBlur = (event: MouseEvent | FocusEvent) => {\n  data.userInput = null\n  // When non-numeric content is entered into a numeric input box,\n  // the content displayed on the page is not cleared after the value is cleared. #18533\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=1398528\n  if (data.currentValue === null && input.value?.input) {\n    input.value.input.value = ''\n  }\n  emit('blur', event)\n  if (props.validateEvent) {\n    formItem?.validate?.('blur').catch((err) => debugWarn(err))\n  }\n}\n\nconst setCurrentValueToModelValue = () => {\n  if (data.currentValue !== props.modelValue) {\n    data.currentValue = props.modelValue\n  }\n}\nconst handleWheel = (e: WheelEvent) => {\n  if (document.activeElement === e.target) e.preventDefault()\n}\n\nwatch(\n  () => props.modelValue,\n  (value, oldValue) => {\n    const newValue = verifyValue(value, true)\n    if (data.userInput === null && newValue !== oldValue) {\n      data.currentValue = newValue\n    }\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => props.precision,\n  () => {\n    data.currentValue = verifyValue(props.modelValue)\n  }\n)\nonMounted(() => {\n  const { min, max, modelValue } = props\n  const innerInput = input.value?.input as HTMLInputElement\n  innerInput.setAttribute('role', 'spinbutton')\n  if (Number.isFinite(max)) {\n    innerInput.setAttribute('aria-valuemax', String(max))\n  } else {\n    innerInput.removeAttribute('aria-valuemax')\n  }\n  if (Number.isFinite(min)) {\n    innerInput.setAttribute('aria-valuemin', String(min))\n  } else {\n    innerInput.removeAttribute('aria-valuemin')\n  }\n  innerInput.setAttribute(\n    'aria-valuenow',\n    data.currentValue || data.currentValue === 0\n      ? String(data.currentValue)\n      : ''\n  )\n  innerInput.setAttribute('aria-disabled', String(inputNumberDisabled.value))\n  if (!isNumber(modelValue) && modelValue != null) {\n    let val: number | null = Number(modelValue)\n    if (Number.isNaN(val)) {\n      val = null\n    }\n    emit(UPDATE_MODEL_EVENT, val!)\n  }\n  innerInput.addEventListener('wheel', handleWheel, { passive: false })\n})\nonUpdated(() => {\n  const innerInput = input.value?.input\n  innerInput?.setAttribute('aria-valuenow', `${data.currentValue ?? ''}`)\n})\ndefineExpose({\n  /** @description get focus the input component */\n  focus,\n  /** @description remove focus the input component */\n  blur,\n})\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(inputNumberSize),\n      ns.is('disabled', inputNumberDisabled),\n      ns.is('without-controls', !controls),\n      ns.is('controls-right', controlsAtRight),\n      ns.is(align, !!align),\n    ]\"\n    @dragstart.prevent\n  >\n    <span\n      v-if=\"controls\"\n      v-repeat-click=\"decrease\"\n      role=\"button\"\n      :aria-label=\"t('el.inputNumber.decrease')\"\n      :class=\"[ns.e('decrease'), ns.is('disabled', minDisabled)]\"\n      @keydown.enter=\"decrease\"\n    >\n      <slot name=\"decrease-icon\">\n        <el-icon>\n          <arrow-down v-if=\"controlsAtRight\" />\n          <minus v-else />\n        </el-icon>\n      </slot>\n    </span>\n    <span\n      v-if=\"controls\"\n      v-repeat-click=\"increase\"\n      role=\"button\"\n      :aria-label=\"t('el.inputNumber.increase')\"\n      :class=\"[ns.e('increase'), ns.is('disabled', maxDisabled)]\"\n      @keydown.enter=\"increase\"\n    >\n      <slot name=\"increase-icon\">\n        <el-icon>\n          <arrow-up v-if=\"controlsAtRight\" />\n          <plus v-else />\n        </el-icon>\n      </slot>\n    </span>\n    <el-input\n      :id=\"id\"\n      ref=\"input\"\n      type=\"number\"\n      :step=\"step\"\n      :model-value=\"displayValue\"\n      :placeholder=\"placeholder\"\n      :readonly=\"readonly\"\n      :disabled=\"inputNumberDisabled\"\n      :size=\"inputNumberSize\"\n      :max=\"max\"\n      :min=\"min\"\n      :name=\"name\"\n      :is-select=\"false\"\n      :clearable=\"false\"\n      :aria-label=\"ariaLabel\"\n      :validate-event=\"false\"\n      :inputmode=\"inputmode\"\n      @keydown=\"handleKeydown\"\n      @blur=\"handleBlur\"\n      @focus=\"handleFocus\"\n      @input=\"handleInput\"\n      @change=\"handleInputChange\"\n    >\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    </el-input>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onMounted, onUpdated, reactive, ref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { vRepeatClick } from '@pit-element-plus/directives'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  debugWarn,\n  getEventCode,\n  getEventKey,\n  isNumber,\n  isString,\n  isUndefined,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { ArrowDown, ArrowUp, Minus, Plus } from 'pit-element-icons'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { inputNumberEmits } from './input-number'\n\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { InputNumberProps } from './input-number'\n\ndefineOptions({\n  name: 'ElInputNumber',\n})\n\nconst props = withDefaults(defineProps<InputNumberProps>(), {\n  id: undefined,\n  disabled: undefined,\n  step: 1,\n  max: Number.MAX_SAFE_INTEGER,\n  min: Number.MIN_SAFE_INTEGER,\n  stepStrictly: false,\n  readonly: false,\n  controls: true,\n  controlsPosition: '',\n  valueOnClear: null,\n  validateEvent: true,\n  inputmode: undefined,\n  align: 'center',\n})\nconst emit = defineEmits(inputNumberEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('input-number')\nconst input = ref<InputInstance>()\n\ninterface Data {\n  currentValue: number | null | undefined\n  userInput: null | number | string\n}\nconst data = reactive<Data>({\n  currentValue: props.modelValue,\n  userInput: null,\n})\n\nconst { formItem } = useFormItem()\n\nconst minDisabled = computed(\n  () => isNumber(props.modelValue) && props.modelValue <= props.min\n)\nconst maxDisabled = computed(\n  () => isNumber(props.modelValue) && props.modelValue >= props.max\n)\n\nconst numPrecision = computed(() => {\n  const stepPrecision = getPrecision(props.step)\n  if (!isUndefined(props.precision)) {\n    if (stepPrecision > props.precision) {\n      debugWarn(\n        'InputNumber',\n        'precision should not be less than the decimal places of step'\n      )\n    }\n    return props.precision\n  } else {\n    return Math.max(getPrecision(props.modelValue), stepPrecision)\n  }\n})\nconst controlsAtRight = computed(() => {\n  return props.controls && props.controlsPosition === 'right'\n})\n\nconst inputNumberSize = useFormSize()\nconst inputNumberDisabled = useFormDisabled()\n\nconst displayValue = computed(() => {\n  if (data.userInput !== null) {\n    return data.userInput\n  }\n  let currentValue: number | string | undefined | null = data.currentValue\n  if (isNil(currentValue)) return ''\n  if (isNumber(currentValue)) {\n    if (Number.isNaN(currentValue)) return ''\n    if (!isUndefined(props.precision)) {\n      currentValue = currentValue.toFixed(props.precision)\n    }\n  }\n  return currentValue\n})\nconst toPrecision = (num: number, pre?: number) => {\n  if (isUndefined(pre)) pre = numPrecision.value\n  if (pre === 0) return Math.round(num)\n  let snum = String(num)\n  const pointPos = snum.indexOf('.')\n  if (pointPos === -1) return num\n  const nums = snum.replace('.', '').split('')\n  const datum = nums[pointPos + pre]\n  if (!datum) return num\n  const length = snum.length\n  if (snum.charAt(length - 1) === '5') {\n    snum = `${snum.slice(0, Math.max(0, length - 1))}6`\n  }\n  return Number.parseFloat(Number(snum).toFixed(pre))\n}\nconst getPrecision = (value: number | null | undefined) => {\n  if (isNil(value)) return 0\n  const valueString = value.toString()\n  const dotPosition = valueString.indexOf('.')\n  let precision = 0\n  if (dotPosition !== -1) {\n    precision = valueString.length - dotPosition - 1\n  }\n  return precision\n}\nconst ensurePrecision = (val: number, coefficient: 1 | -1 = 1) => {\n  if (!isNumber(val)) return data.currentValue\n  if (val >= Number.MAX_SAFE_INTEGER && coefficient === 1) {\n    debugWarn(\n      'InputNumber',\n      'The value has reached the maximum safe integer limit.'\n    )\n    return val\n  } else if (val <= Number.MIN_SAFE_INTEGER && coefficient === -1) {\n    debugWarn(\n      'InputNumber',\n      'The value has reached the minimum safe integer limit.'\n    )\n    return val\n  }\n\n  // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n  return toPrecision(val + props.step * coefficient)\n}\nconst handleKeydown = (event: KeyboardEvent | Event) => {\n  const code = getEventCode(event as KeyboardEvent)\n  const key = getEventKey(event as KeyboardEvent)\n\n  if (props.disabledScientific && ['e', 'E'].includes(key)) {\n    event.preventDefault()\n    return\n  }\n\n  switch (code) {\n    case EVENT_CODE.up: {\n      event.preventDefault()\n      increase()\n      break\n    }\n    case EVENT_CODE.down: {\n      event.preventDefault()\n      decrease()\n      break\n    }\n  }\n}\nconst increase = () => {\n  if (props.readonly || inputNumberDisabled.value || maxDisabled.value) return\n  const value = Number(displayValue.value) || 0\n  const newVal = ensurePrecision(value)\n  setCurrentValue(newVal)\n  emit(INPUT_EVENT, data.currentValue)\n  setCurrentValueToModelValue()\n}\nconst decrease = () => {\n  if (props.readonly || inputNumberDisabled.value || minDisabled.value) return\n  const value = Number(displayValue.value) || 0\n  const newVal = ensurePrecision(value, -1)\n  setCurrentValue(newVal)\n  emit(INPUT_EVENT, data.currentValue)\n  setCurrentValueToModelValue()\n}\nconst verifyValue = (\n  value: number | string | null | undefined,\n  update?: boolean\n): number | null | undefined => {\n  const { max, min, step, precision, stepStrictly, valueOnClear } = props\n  if (max < min) {\n    throwError('InputNumber', 'min should not be greater than max.')\n  }\n  let newVal = Number(value)\n  if (isNil(value) || Number.isNaN(newVal)) {\n    return null\n  }\n  if (value === '') {\n    if (valueOnClear === null) {\n      return null\n    }\n    newVal = isString(valueOnClear) ? { min, max }[valueOnClear] : valueOnClear\n  }\n  if (stepStrictly) {\n    newVal = toPrecision(\n      Math.round(toPrecision(newVal / step)) * step,\n      precision\n    )\n    if (newVal !== value) {\n      update && emit(UPDATE_MODEL_EVENT, newVal)\n    }\n  }\n  if (!isUndefined(precision)) {\n    newVal = toPrecision(newVal, precision)\n  }\n  if (newVal > max || newVal < min) {\n    newVal = newVal > max ? max : min\n    update && emit(UPDATE_MODEL_EVENT, newVal)\n  }\n  return newVal\n}\nconst setCurrentValue = (\n  value: number | string | null | undefined,\n  emitChange = true\n) => {\n  const oldVal = data.currentValue\n  const newVal = verifyValue(value)\n  if (!emitChange) {\n    emit(UPDATE_MODEL_EVENT, newVal!)\n    return\n  }\n  data.userInput = null\n  if (oldVal === newVal && value) return\n  emit(UPDATE_MODEL_EVENT, newVal!)\n  if (oldVal !== newVal) {\n    emit(CHANGE_EVENT, newVal!, oldVal!)\n  }\n  if (props.validateEvent) {\n    formItem?.validate?.('change').catch((err) => debugWarn(err))\n  }\n  data.currentValue = newVal\n}\nconst handleInput = (value: string) => {\n  data.userInput = value\n  const newVal = value === '' ? null : Number(value)\n  emit(INPUT_EVENT, newVal)\n  setCurrentValue(newVal, false)\n}\nconst handleInputChange = (value: string) => {\n  const newVal = value !== '' ? Number(value) : ''\n  if ((isNumber(newVal) && !Number.isNaN(newVal)) || value === '') {\n    setCurrentValue(newVal)\n  }\n  setCurrentValueToModelValue()\n  data.userInput = null\n}\n\nconst focus = () => {\n  input.value?.focus?.()\n}\n\nconst blur = () => {\n  input.value?.blur?.()\n}\n\nconst handleFocus = (event: MouseEvent | FocusEvent) => {\n  emit('focus', event)\n}\n\nconst handleBlur = (event: MouseEvent | FocusEvent) => {\n  data.userInput = null\n  // When non-numeric content is entered into a numeric input box,\n  // the content displayed on the page is not cleared after the value is cleared. #18533\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=1398528\n  if (data.currentValue === null && input.value?.input) {\n    input.value.input.value = ''\n  }\n  emit('blur', event)\n  if (props.validateEvent) {\n    formItem?.validate?.('blur').catch((err) => debugWarn(err))\n  }\n}\n\nconst setCurrentValueToModelValue = () => {\n  if (data.currentValue !== props.modelValue) {\n    data.currentValue = props.modelValue\n  }\n}\nconst handleWheel = (e: WheelEvent) => {\n  if (document.activeElement === e.target) e.preventDefault()\n}\n\nwatch(\n  () => props.modelValue,\n  (value, oldValue) => {\n    const newValue = verifyValue(value, true)\n    if (data.userInput === null && newValue !== oldValue) {\n      data.currentValue = newValue\n    }\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => props.precision,\n  () => {\n    data.currentValue = verifyValue(props.modelValue)\n  }\n)\nonMounted(() => {\n  const { min, max, modelValue } = props\n  const innerInput = input.value?.input as HTMLInputElement\n  innerInput.setAttribute('role', 'spinbutton')\n  if (Number.isFinite(max)) {\n    innerInput.setAttribute('aria-valuemax', String(max))\n  } else {\n    innerInput.removeAttribute('aria-valuemax')\n  }\n  if (Number.isFinite(min)) {\n    innerInput.setAttribute('aria-valuemin', String(min))\n  } else {\n    innerInput.removeAttribute('aria-valuemin')\n  }\n  innerInput.setAttribute(\n    'aria-valuenow',\n    data.currentValue || data.currentValue === 0\n      ? String(data.currentValue)\n      : ''\n  )\n  innerInput.setAttribute('aria-disabled', String(inputNumberDisabled.value))\n  if (!isNumber(modelValue) && modelValue != null) {\n    let val: number | null = Number(modelValue)\n    if (Number.isNaN(val)) {\n      val = null\n    }\n    emit(UPDATE_MODEL_EVENT, val!)\n  }\n  innerInput.addEventListener('wheel', handleWheel, { passive: false })\n})\nonUpdated(() => {\n  const innerInput = input.value?.input\n  innerInput?.setAttribute('aria-valuenow', `${data.currentValue ?? ''}`)\n})\ndefineExpose({\n  /** @description get focus the input component */\n  focus,\n  /** @description remove focus the input component */\n  blur,\n})\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(inputNumberSize),\n      ns.is('disabled', inputNumberDisabled),\n      ns.is('without-controls', !controls),\n      ns.is('controls-right', controlsAtRight),\n      ns.is(align, !!align),\n    ]\"\n    @dragstart.prevent\n  >\n    <span\n      v-if=\"controls\"\n      v-repeat-click=\"decrease\"\n      role=\"button\"\n      :aria-label=\"t('el.inputNumber.decrease')\"\n      :class=\"[ns.e('decrease'), ns.is('disabled', minDisabled)]\"\n      @keydown.enter=\"decrease\"\n    >\n      <slot name=\"decrease-icon\">\n        <el-icon>\n          <arrow-down v-if=\"controlsAtRight\" />\n          <minus v-else />\n        </el-icon>\n      </slot>\n    </span>\n    <span\n      v-if=\"controls\"\n      v-repeat-click=\"increase\"\n      role=\"button\"\n      :aria-label=\"t('el.inputNumber.increase')\"\n      :class=\"[ns.e('increase'), ns.is('disabled', maxDisabled)]\"\n      @keydown.enter=\"increase\"\n    >\n      <slot name=\"increase-icon\">\n        <el-icon>\n          <arrow-up v-if=\"controlsAtRight\" />\n          <plus v-else />\n        </el-icon>\n      </slot>\n    </span>\n    <el-input\n      :id=\"id\"\n      ref=\"input\"\n      type=\"number\"\n      :step=\"step\"\n      :model-value=\"displayValue\"\n      :placeholder=\"placeholder\"\n      :readonly=\"readonly\"\n      :disabled=\"inputNumberDisabled\"\n      :size=\"inputNumberSize\"\n      :max=\"max\"\n      :min=\"min\"\n      :name=\"name\"\n      :is-select=\"false\"\n      :clearable=\"false\"\n      :aria-label=\"ariaLabel\"\n      :validate-event=\"false\"\n      :inputmode=\"inputmode\"\n      @keydown=\"handleKeydown\"\n      @blur=\"handleBlur\"\n      @focus=\"handleFocus\"\n      @input=\"handleInput\"\n      @change=\"handleInputChange\"\n    >\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    </el-input>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onMounted, onUpdated, reactive, ref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { vRepeatClick } from '@pit-element-plus/directives'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  debugWarn,\n  getEventCode,\n  getEventKey,\n  isNumber,\n  isString,\n  isUndefined,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { ArrowDown, ArrowUp, Minus, Plus } from 'pit-element-icons'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { inputNumberEmits } from './input-number'\n\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { InputNumberProps } from './input-number'\n\ndefineOptions({\n  name: 'ElInputNumber',\n})\n\nconst props = withDefaults(defineProps<InputNumberProps>(), {\n  id: undefined,\n  disabled: undefined,\n  step: 1,\n  max: Number.MAX_SAFE_INTEGER,\n  min: Number.MIN_SAFE_INTEGER,\n  stepStrictly: false,\n  readonly: false,\n  controls: true,\n  controlsPosition: '',\n  valueOnClear: null,\n  validateEvent: true,\n  inputmode: undefined,\n  align: 'center',\n})\nconst emit = defineEmits(inputNumberEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('input-number')\nconst input = ref<InputInstance>()\n\ninterface Data {\n  currentValue: number | null | undefined\n  userInput: null | number | string\n}\nconst data = reactive<Data>({\n  currentValue: props.modelValue,\n  userInput: null,\n})\n\nconst { formItem } = useFormItem()\n\nconst minDisabled = computed(\n  () => isNumber(props.modelValue) && props.modelValue <= props.min\n)\nconst maxDisabled = computed(\n  () => isNumber(props.modelValue) && props.modelValue >= props.max\n)\n\nconst numPrecision = computed(() => {\n  const stepPrecision = getPrecision(props.step)\n  if (!isUndefined(props.precision)) {\n    if (stepPrecision > props.precision) {\n      debugWarn(\n        'InputNumber',\n        'precision should not be less than the decimal places of step'\n      )\n    }\n    return props.precision\n  } else {\n    return Math.max(getPrecision(props.modelValue), stepPrecision)\n  }\n})\nconst controlsAtRight = computed(() => {\n  return props.controls && props.controlsPosition === 'right'\n})\n\nconst inputNumberSize = useFormSize()\nconst inputNumberDisabled = useFormDisabled()\n\nconst displayValue = computed(() => {\n  if (data.userInput !== null) {\n    return data.userInput\n  }\n  let currentValue: number | string | undefined | null = data.currentValue\n  if (isNil(currentValue)) return ''\n  if (isNumber(currentValue)) {\n    if (Number.isNaN(currentValue)) return ''\n    if (!isUndefined(props.precision)) {\n      currentValue = currentValue.toFixed(props.precision)\n    }\n  }\n  return currentValue\n})\nconst toPrecision = (num: number, pre?: number) => {\n  if (isUndefined(pre)) pre = numPrecision.value\n  if (pre === 0) return Math.round(num)\n  let snum = String(num)\n  const pointPos = snum.indexOf('.')\n  if (pointPos === -1) return num\n  const nums = snum.replace('.', '').split('')\n  const datum = nums[pointPos + pre]\n  if (!datum) return num\n  const length = snum.length\n  if (snum.charAt(length - 1) === '5') {\n    snum = `${snum.slice(0, Math.max(0, length - 1))}6`\n  }\n  return Number.parseFloat(Number(snum).toFixed(pre))\n}\nconst getPrecision = (value: number | null | undefined) => {\n  if (isNil(value)) return 0\n  const valueString = value.toString()\n  const dotPosition = valueString.indexOf('.')\n  let precision = 0\n  if (dotPosition !== -1) {\n    precision = valueString.length - dotPosition - 1\n  }\n  return precision\n}\nconst ensurePrecision = (val: number, coefficient: 1 | -1 = 1) => {\n  if (!isNumber(val)) return data.currentValue\n  if (val >= Number.MAX_SAFE_INTEGER && coefficient === 1) {\n    debugWarn(\n      'InputNumber',\n      'The value has reached the maximum safe integer limit.'\n    )\n    return val\n  } else if (val <= Number.MIN_SAFE_INTEGER && coefficient === -1) {\n    debugWarn(\n      'InputNumber',\n      'The value has reached the minimum safe integer limit.'\n    )\n    return val\n  }\n\n  // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n  return toPrecision(val + props.step * coefficient)\n}\nconst handleKeydown = (event: KeyboardEvent | Event) => {\n  const code = getEventCode(event as KeyboardEvent)\n  const key = getEventKey(event as KeyboardEvent)\n\n  if (props.disabledScientific && ['e', 'E'].includes(key)) {\n    event.preventDefault()\n    return\n  }\n\n  switch (code) {\n    case EVENT_CODE.up: {\n      event.preventDefault()\n      increase()\n      break\n    }\n    case EVENT_CODE.down: {\n      event.preventDefault()\n      decrease()\n      break\n    }\n  }\n}\nconst increase = () => {\n  if (props.readonly || inputNumberDisabled.value || maxDisabled.value) return\n  const value = Number(displayValue.value) || 0\n  const newVal = ensurePrecision(value)\n  setCurrentValue(newVal)\n  emit(INPUT_EVENT, data.currentValue)\n  setCurrentValueToModelValue()\n}\nconst decrease = () => {\n  if (props.readonly || inputNumberDisabled.value || minDisabled.value) return\n  const value = Number(displayValue.value) || 0\n  const newVal = ensurePrecision(value, -1)\n  setCurrentValue(newVal)\n  emit(INPUT_EVENT, data.currentValue)\n  setCurrentValueToModelValue()\n}\nconst verifyValue = (\n  value: number | string | null | undefined,\n  update?: boolean\n): number | null | undefined => {\n  const { max, min, step, precision, stepStrictly, valueOnClear } = props\n  if (max < min) {\n    throwError('InputNumber', 'min should not be greater than max.')\n  }\n  let newVal = Number(value)\n  if (isNil(value) || Number.isNaN(newVal)) {\n    return null\n  }\n  if (value === '') {\n    if (valueOnClear === null) {\n      return null\n    }\n    newVal = isString(valueOnClear) ? { min, max }[valueOnClear] : valueOnClear\n  }\n  if (stepStrictly) {\n    newVal = toPrecision(\n      Math.round(toPrecision(newVal / step)) * step,\n      precision\n    )\n    if (newVal !== value) {\n      update && emit(UPDATE_MODEL_EVENT, newVal)\n    }\n  }\n  if (!isUndefined(precision)) {\n    newVal = toPrecision(newVal, precision)\n  }\n  if (newVal > max || newVal < min) {\n    newVal = newVal > max ? max : min\n    update && emit(UPDATE_MODEL_EVENT, newVal)\n  }\n  return newVal\n}\nconst setCurrentValue = (\n  value: number | string | null | undefined,\n  emitChange = true\n) => {\n  const oldVal = data.currentValue\n  const newVal = verifyValue(value)\n  if (!emitChange) {\n    emit(UPDATE_MODEL_EVENT, newVal!)\n    return\n  }\n  data.userInput = null\n  if (oldVal === newVal && value) return\n  emit(UPDATE_MODEL_EVENT, newVal!)\n  if (oldVal !== newVal) {\n    emit(CHANGE_EVENT, newVal!, oldVal!)\n  }\n  if (props.validateEvent) {\n    formItem?.validate?.('change').catch((err) => debugWarn(err))\n  }\n  data.currentValue = newVal\n}\nconst handleInput = (value: string) => {\n  data.userInput = value\n  const newVal = value === '' ? null : Number(value)\n  emit(INPUT_EVENT, newVal)\n  setCurrentValue(newVal, false)\n}\nconst handleInputChange = (value: string) => {\n  const newVal = value !== '' ? Number(value) : ''\n  if ((isNumber(newVal) && !Number.isNaN(newVal)) || value === '') {\n    setCurrentValue(newVal)\n  }\n  setCurrentValueToModelValue()\n  data.userInput = null\n}\n\nconst focus = () => {\n  input.value?.focus?.()\n}\n\nconst blur = () => {\n  input.value?.blur?.()\n}\n\nconst handleFocus = (event: MouseEvent | FocusEvent) => {\n  emit('focus', event)\n}\n\nconst handleBlur = (event: MouseEvent | FocusEvent) => {\n  data.userInput = null\n  // When non-numeric content is entered into a numeric input box,\n  // the content displayed on the page is not cleared after the value is cleared. #18533\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=1398528\n  if (data.currentValue === null && input.value?.input) {\n    input.value.input.value = ''\n  }\n  emit('blur', event)\n  if (props.validateEvent) {\n    formItem?.validate?.('blur').catch((err) => debugWarn(err))\n  }\n}\n\nconst setCurrentValueToModelValue = () => {\n  if (data.currentValue !== props.modelValue) {\n    data.currentValue = props.modelValue\n  }\n}\nconst handleWheel = (e: WheelEvent) => {\n  if (document.activeElement === e.target) e.preventDefault()\n}\n\nwatch(\n  () => props.modelValue,\n  (value, oldValue) => {\n    const newValue = verifyValue(value, true)\n    if (data.userInput === null && newValue !== oldValue) {\n      data.currentValue = newValue\n    }\n  },\n  { immediate: true }\n)\n\nwatch(\n  () => props.precision,\n  () => {\n    data.currentValue = verifyValue(props.modelValue)\n  }\n)\nonMounted(() => {\n  const { min, max, modelValue } = props\n  const innerInput = input.value?.input as HTMLInputElement\n  innerInput.setAttribute('role', 'spinbutton')\n  if (Number.isFinite(max)) {\n    innerInput.setAttribute('aria-valuemax', String(max))\n  } else {\n    innerInput.removeAttribute('aria-valuemax')\n  }\n  if (Number.isFinite(min)) {\n    innerInput.setAttribute('aria-valuemin', String(min))\n  } else {\n    innerInput.removeAttribute('aria-valuemin')\n  }\n  innerInput.setAttribute(\n    'aria-valuenow',\n    data.currentValue || data.currentValue === 0\n      ? String(data.currentValue)\n      : ''\n  )\n  innerInput.setAttribute('aria-disabled', String(inputNumberDisabled.value))\n  if (!isNumber(modelValue) && modelValue != null) {\n    let val: number | null = Number(modelValue)\n    if (Number.isNaN(val)) {\n      val = null\n    }\n    emit(UPDATE_MODEL_EVENT, val!)\n  }\n  innerInput.addEventListener('wheel', handleWheel, { passive: false })\n})\nonUpdated(() => {\n  const innerInput = input.value?.input\n  innerInput?.setAttribute('aria-valuenow', `${data.currentValue ?? ''}`)\n})\ndefineExpose({\n  /** @description get focus the input component */\n  focus,\n  /** @description remove focus the input component */\n  blur,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport InputNumber from './src/input-number.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElInputNumber: SFCWithInstall<typeof InputNumber> =\n  withInstall(InputNumber)\n\nexport default ElInputNumber\nexport * from './src/input-number'\n","import { buildProps } from '@pit-element-plus/utils'\nimport type { ExtractPropTypes } from 'vue'\nimport type LayoutColumn from './layout-column.vue'\n\nexport const layoutColumnProps = buildProps({\n  /**\n   * @description title\n   */\n  title: {\n    type: String,\n    default: '菜单管理',\n  },\n  /**\n   * @description noTitle\n   */\n  noTitle: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description width\n   */\n  width: {\n    type: String,\n    default: '260px',\n  },\n  /**\n   * @description isScrollbar\n   */\n  isScrollbar: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\nexport type LayoutColumnProps = ExtractPropTypes<typeof layoutColumnProps>\nexport type LayoutColumnInstance = InstanceType<typeof LayoutColumn>\n","<template>\n  <div ref=\"peLayoutItem\" :class=\"[ns.b()]\">\n    <div\n      ref=\"peLayoutItemLeft\"\n      class=\"el-layout-item-left\"\n      :style=\"{ width: props.width }\"\n    >\n      <div v-if=\"props.noTitle\" class=\"el-layout-item-left-title\">\n        {{ props.title }}\n        <div class=\"el-layout-item-icon\">\n          <slot name=\"title-right\" />\n        </div>\n      </div>\n      <div\n        ref=\"peLayoutItemBody\"\n        class=\"el-layout-item-left-body\"\n        :style=\"{ height: props.noTitle ? 'calc(100% - 48px)' : '100%' }\"\n      >\n        <el-scrollbar\n          v-if=\"props.isScrollbar\"\n          class=\"h-full\"\n          style=\"overflow-x: hidden\"\n        >\n          <slot name=\"left\" class=\"h-full\" />\n        </el-scrollbar>\n        <slot v-else name=\"left\" class=\"h-full\" />\n      </div>\n    </div>\n    <div ref=\"peLayoutItemTrigger\" class=\"el-layout-item-split-trigger\" />\n    <div ref=\"peLayoutItemRight\" class=\"el-layout-item-right\">\n      <slot name=\"right\" class=\"h-full\" />\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, ref } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { layoutColumnProps } from './layout-column'\n\nconst props = defineProps(layoutColumnProps)\nconst ns = useNamespace('layout-column')\nconst peLayoutItem = ref()\nconst peLayoutItemLeft = ref()\nconst peLayoutItemBody = ref()\nconst peLayoutItemTrigger = ref()\nconst peLayoutItemRight = ref()\n\ndefineOptions({\n  name: 'ElLayoutColumn',\n})\n\nonMounted(() => {\n  dragControllerDiv()\n})\n\nconst dragControllerDiv = () => {\n  const box = peLayoutItem.value\n  const left = peLayoutItemLeft.value\n  const resize1 = peLayoutItemTrigger.value\n  const middle = peLayoutItemRight.value\n\n  resize1.onmousedown = function (e: { clientX: any }) {\n    const initWindowWidth = box.clientWidth\n    const initLeftWidth = left.clientWidth\n    const initResize1Width = resize1.clientWidth\n    const initMiddleWidth = middle.clientWidth\n    const mouseStartDistanceToWindowLeft = e.clientX\n    // 左边拖拽区域添加mousemove事件，并不断计算各区域宽度\n    document.onmousemove = function (e) {\n      const mouseFinalDistanceToWindowLeft = e.clientX\n      // 获取鼠标移动的距离\n      const mouseMovedDistance =\n        mouseFinalDistanceToWindowLeft - mouseStartDistanceToWindowLeft\n      // 各种计算距离和宽度\n      if (initLeftWidth + mouseMovedDistance >= 200) {\n        resize1.style.left = initLeftWidth + mouseMovedDistance\n        left.style.width = `${initLeftWidth + mouseMovedDistance}px`\n        middle.style.left = `${\n          initMiddleWidth + mouseMovedDistance + initResize1Width\n        }px`\n        middle.style.width = `${\n          initWindowWidth -\n          initLeftWidth -\n          initResize1Width -\n          mouseMovedDistance\n        }px`\n      }\n    }\n    document.onmouseup = function () {\n      document.onmousemove = null\n      document.onmouseup = null\n      resize1.releaseCapture && resize1.releaseCapture()\n    }\n    resize1.setCapture && resize1.setCapture()\n    return false\n  }\n}\n</script>\n","<template>\n  <div ref=\"peLayoutItem\" :class=\"[ns.b()]\">\n    <div\n      ref=\"peLayoutItemLeft\"\n      class=\"el-layout-item-left\"\n      :style=\"{ width: props.width }\"\n    >\n      <div v-if=\"props.noTitle\" class=\"el-layout-item-left-title\">\n        {{ props.title }}\n        <div class=\"el-layout-item-icon\">\n          <slot name=\"title-right\" />\n        </div>\n      </div>\n      <div\n        ref=\"peLayoutItemBody\"\n        class=\"el-layout-item-left-body\"\n        :style=\"{ height: props.noTitle ? 'calc(100% - 48px)' : '100%' }\"\n      >\n        <el-scrollbar\n          v-if=\"props.isScrollbar\"\n          class=\"h-full\"\n          style=\"overflow-x: hidden\"\n        >\n          <slot name=\"left\" class=\"h-full\" />\n        </el-scrollbar>\n        <slot v-else name=\"left\" class=\"h-full\" />\n      </div>\n    </div>\n    <div ref=\"peLayoutItemTrigger\" class=\"el-layout-item-split-trigger\" />\n    <div ref=\"peLayoutItemRight\" class=\"el-layout-item-right\">\n      <slot name=\"right\" class=\"h-full\" />\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, ref } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { layoutColumnProps } from './layout-column'\n\nconst props = defineProps(layoutColumnProps)\nconst ns = useNamespace('layout-column')\nconst peLayoutItem = ref()\nconst peLayoutItemLeft = ref()\nconst peLayoutItemBody = ref()\nconst peLayoutItemTrigger = ref()\nconst peLayoutItemRight = ref()\n\ndefineOptions({\n  name: 'ElLayoutColumn',\n})\n\nonMounted(() => {\n  dragControllerDiv()\n})\n\nconst dragControllerDiv = () => {\n  const box = peLayoutItem.value\n  const left = peLayoutItemLeft.value\n  const resize1 = peLayoutItemTrigger.value\n  const middle = peLayoutItemRight.value\n\n  resize1.onmousedown = function (e: { clientX: any }) {\n    const initWindowWidth = box.clientWidth\n    const initLeftWidth = left.clientWidth\n    const initResize1Width = resize1.clientWidth\n    const initMiddleWidth = middle.clientWidth\n    const mouseStartDistanceToWindowLeft = e.clientX\n    // 左边拖拽区域添加mousemove事件，并不断计算各区域宽度\n    document.onmousemove = function (e) {\n      const mouseFinalDistanceToWindowLeft = e.clientX\n      // 获取鼠标移动的距离\n      const mouseMovedDistance =\n        mouseFinalDistanceToWindowLeft - mouseStartDistanceToWindowLeft\n      // 各种计算距离和宽度\n      if (initLeftWidth + mouseMovedDistance >= 200) {\n        resize1.style.left = initLeftWidth + mouseMovedDistance\n        left.style.width = `${initLeftWidth + mouseMovedDistance}px`\n        middle.style.left = `${\n          initMiddleWidth + mouseMovedDistance + initResize1Width\n        }px`\n        middle.style.width = `${\n          initWindowWidth -\n          initLeftWidth -\n          initResize1Width -\n          mouseMovedDistance\n        }px`\n      }\n    }\n    document.onmouseup = function () {\n      document.onmousemove = null\n      document.onmouseup = null\n      resize1.releaseCapture && resize1.releaseCapture()\n    }\n    resize1.setCapture && resize1.setCapture()\n    return false\n  }\n}\n</script>\n","<template>\n  <div ref=\"peLayoutItem\" :class=\"[ns.b()]\">\n    <div\n      ref=\"peLayoutItemLeft\"\n      class=\"el-layout-item-left\"\n      :style=\"{ width: props.width }\"\n    >\n      <div v-if=\"props.noTitle\" class=\"el-layout-item-left-title\">\n        {{ props.title }}\n        <div class=\"el-layout-item-icon\">\n          <slot name=\"title-right\" />\n        </div>\n      </div>\n      <div\n        ref=\"peLayoutItemBody\"\n        class=\"el-layout-item-left-body\"\n        :style=\"{ height: props.noTitle ? 'calc(100% - 48px)' : '100%' }\"\n      >\n        <el-scrollbar\n          v-if=\"props.isScrollbar\"\n          class=\"h-full\"\n          style=\"overflow-x: hidden\"\n        >\n          <slot name=\"left\" class=\"h-full\" />\n        </el-scrollbar>\n        <slot v-else name=\"left\" class=\"h-full\" />\n      </div>\n    </div>\n    <div ref=\"peLayoutItemTrigger\" class=\"el-layout-item-split-trigger\" />\n    <div ref=\"peLayoutItemRight\" class=\"el-layout-item-right\">\n      <slot name=\"right\" class=\"h-full\" />\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, ref } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { layoutColumnProps } from './layout-column'\n\nconst props = defineProps(layoutColumnProps)\nconst ns = useNamespace('layout-column')\nconst peLayoutItem = ref()\nconst peLayoutItemLeft = ref()\nconst peLayoutItemBody = ref()\nconst peLayoutItemTrigger = ref()\nconst peLayoutItemRight = ref()\n\ndefineOptions({\n  name: 'ElLayoutColumn',\n})\n\nonMounted(() => {\n  dragControllerDiv()\n})\n\nconst dragControllerDiv = () => {\n  const box = peLayoutItem.value\n  const left = peLayoutItemLeft.value\n  const resize1 = peLayoutItemTrigger.value\n  const middle = peLayoutItemRight.value\n\n  resize1.onmousedown = function (e: { clientX: any }) {\n    const initWindowWidth = box.clientWidth\n    const initLeftWidth = left.clientWidth\n    const initResize1Width = resize1.clientWidth\n    const initMiddleWidth = middle.clientWidth\n    const mouseStartDistanceToWindowLeft = e.clientX\n    // 左边拖拽区域添加mousemove事件，并不断计算各区域宽度\n    document.onmousemove = function (e) {\n      const mouseFinalDistanceToWindowLeft = e.clientX\n      // 获取鼠标移动的距离\n      const mouseMovedDistance =\n        mouseFinalDistanceToWindowLeft - mouseStartDistanceToWindowLeft\n      // 各种计算距离和宽度\n      if (initLeftWidth + mouseMovedDistance >= 200) {\n        resize1.style.left = initLeftWidth + mouseMovedDistance\n        left.style.width = `${initLeftWidth + mouseMovedDistance}px`\n        middle.style.left = `${\n          initMiddleWidth + mouseMovedDistance + initResize1Width\n        }px`\n        middle.style.width = `${\n          initWindowWidth -\n          initLeftWidth -\n          initResize1Width -\n          mouseMovedDistance\n        }px`\n      }\n    }\n    document.onmouseup = function () {\n      document.onmousemove = null\n      document.onmouseup = null\n      resize1.releaseCapture && resize1.releaseCapture()\n    }\n    resize1.setCapture && resize1.setCapture()\n    return false\n  }\n}\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\n\nimport LayoutColumn from './src/layout-column.vue'\n\nexport const ElLayoutColumn = withInstall(LayoutColumn)\nexport default ElLayoutColumn\n\nexport * from './src/layout-column'\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n} from '@pit-element-plus/utils'\nimport type {\n  CheckedInfo,\n  TreeNode,\n  TreeNodeData,\n} from '@pit-element-plus/components/tree-v2/src/types'\nimport type { ExtractPropTypes } from 'vue'\nimport type LayoutTree from './layout-tree.vue'\nimport type { Placement } from '@pit-element-plus/components/popper'\n\nexport const layoutTreeProps = buildProps({\n  /**\n   * @description dataList\n   */\n  dataList: {\n    type: Array,\n    default: () => [],\n  },\n  /**\n   * @description defaultObjectData\n   */\n  defaultObjectData: Object,\n  /**\n   * @description nodeKey\n   */\n  nodeKey: {\n    type: String,\n    default: 'id',\n  },\n  /**\n   * @description queryTreeInterface\n   */\n  queryTreeInterface: String,\n  /**\n   * @description queryTreeInterfaceMethod\n   */\n  queryTreeInterfaceMethod: {\n    type: String,\n    default: 'GET',\n  },\n  /**\n   * @description queryTreeParams\n   */\n  queryTreeParams: Object,\n  /**\n   * @description expandOnClickNode\n   */\n  expandOnClickNode: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description defaultExpandAll\n   */\n  defaultExpandAll: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description label\n   */\n  label: {\n    type: String,\n    default: 'label',\n  },\n  /**\n   * @description isTooltip\n   */\n  isTooltip: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description placement\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    default: 'top',\n  },\n  /**\n   * @description icon\n   */\n  icon: {\n    type: iconPropType,\n  },\n  /**\n   * @description iconColor\n   */\n  iconColor: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description noSearchInput 是否显示输入框\n   */\n  noSearchInput: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description filterPlaceholder 输入框占位符\n   */\n  filterPlaceholder: {\n    type: String,\n    default: '请输入名称回车键查询',\n  },\n  /**\n   * @description noFilterInput 执行input事件直接查询\n   */\n  noFilterInput: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description isRequestQuery\n   */\n  // 是否使用服务端查询\n  isRequestQuery: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description beforeSearchCallback\n   */\n  // 输入框事件前回调\n  beforeSearchCallback: Function,\n  /**\n   * @description renderContent 树节点的内容区的渲染 Function\n   */\n  renderContent: Function,\n  /**\n   * @description clearable\n   */\n  clearable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description lazy 是否懒加载子节点数据\n   */\n  lazy: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description lazyKey 懒加载匹配的key\n   */\n  lazyKey: {\n    type: String,\n    default: 'id',\n  },\n  /**\n   * @description itemSize\n   */\n  itemSize: {\n    type: Number,\n    default: 32,\n  },\n  /**\n   * @description isDefaultQuery 是否默认查询\n   */\n  isDefaultQuery: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description showCheckbox 是否显示复选框\n   */\n  showCheckbox: {\n    type: Boolean,\n    default: false,\n  },\n  /**\n   * @description forceOnSelectAll 是否强制开启全部\n   */\n  forceOnSelectAll: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description expandedLevel 如果defaultExpandAll为false，则展开的级别生效，并且默认为1级\n   */\n  expandedLevel: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description showExpandIcon 是否展开搜索区域图标\n   */\n  showExpandIcon: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\nexport const layoutTreeEmits = {\n  'node-click': (data: TreeNodeData, node: TreeNode, e: MouseEvent) =>\n    data && node && e,\n  'result-back': (data: any) => data,\n  check: (data: TreeNodeData, info: CheckedInfo) => data && info,\n}\n\nexport type LayoutTreeProps = ExtractPropTypes<typeof layoutTreeProps>\nexport type LayoutTreeInstance = InstanceType<typeof LayoutTree>\nexport type LayoutTreeEmits = typeof layoutTreeEmits\n","<template>\n  <div class=\"el-layout-tree\">\n    <div v-if=\"props.noSearchInput\" class=\"el-layout-tree-search\">\n      <el-input\n        v-model=\"filterText\"\n        class=\"input-with-select\"\n        :placeholder=\"props.filterPlaceholder\"\n        :clearable=\"props.clearable\"\n        @input=\"handleInput\"\n        @keyup.enter=\"submit\"\n      >\n        <template #append>\n          <el-button :icon=\"Search\" @click=\"submit\" />\n        </template>\n      </el-input>\n      <template v-if=\"props.showExpandIcon\">\n        <el-icon\n          class=\"el-layout-tree-search-more fold-btn\"\n          v-show=\"expandAllStatus\"\n          @click=\"handleExpand\"\n          title=\"展开\"\n        >\n          <DArrowRight />\n        </el-icon>\n        <el-icon\n          class=\"el-layout-tree-search-more expand-btn\"\n          v-show=\"!expandAllStatus\"\n          @click=\"handleExpand\"\n          title=\"折叠\"\n        >\n          <DArrowRight />\n        </el-icon>\n      </template>\n    </div>\n    <div ref=\"elLayoutTreeBody\" class=\"el-layout-tree-body\">\n      <el-scrollbar class=\"pe-layout-tree-lazy\" style=\"overflow-x: hidden\">\n        <template v-if=\"props.lazy\">\n          <el-tree\n            ref=\"tree\"\n            v-loading=\"treeLoading\"\n            :data=\"dataListData\"\n            element-loading-text=\"正在加载中...\"\n            :props=\"defaultProps\"\n            :node-key=\"props.nodeKey\"\n            :show-checkbox=\"props.showCheckbox\"\n            :expand-on-click-node=\"props.expandOnClickNode\"\n            :lazy=\"props.lazy\"\n            :lazy-key=\"props.lazyKey\"\n            :load=\"loadNode\"\n            :filter-node-method=\"filterMethod\"\n            @node-click=\"handleNodeClick\"\n          >\n            <template #default=\"{ data }\">\n              <slot :data=\"data\">\n                <template v-if=\"props.icon\">\n                  <el-icon class=\"layout-tree-icon\" :color=\"props.iconColor\">\n                    <component :is=\"props.icon\" />\n                  </el-icon>\n                </template>\n                <template v-else>\n                  <el-icon\n                    v-if=\"data.children?.length > 0\"\n                    class=\"layout-tree-icon\"\n                  >\n                    <FolderOpened />\n                  </el-icon>\n                  <el-icon v-else class=\"layout-tree-icon\">\n                    <Document />\n                  </el-icon>\n                </template>\n                <template v-if=\"props.isTooltip\">\n                  <el-tooltip\n                    effect=\"dark\"\n                    :show-after=\"500\"\n                    :content=\"data[props.label]\"\n                    :placement=\"props.placement\"\n                  >\n                    <span class=\"layout-tree-text\">{{\n                      data[props.label]\n                    }}</span>\n                    <template #content>\n                      <slot name=\"toolTip\" :row=\"data\">{{\n                        data[props.label]\n                      }}</slot>\n                    </template>\n                  </el-tooltip>\n                </template>\n                <template v-else>\n                  <span class=\"layout-tree-text\">{{ data[props.label] }}</span>\n                  <slot name=\"right\" :data=\"data\" />\n                </template>\n              </slot>\n            </template>\n          </el-tree>\n        </template>\n        <template v-else>\n          <el-tree-v2\n            ref=\"tree\"\n            v-loading=\"treeLoading\"\n            element-loading-text=\"正在加载中...\"\n            :props=\"defaultProps\"\n            :height=\"height\"\n            :filter-method=\"filterMethod\"\n            highlight-current\n            :expand-on-click-node=\"false\"\n            :check-on-click-node=\"false\"\n            :item-size=\"getItemSize\"\n            :show-checkbox=\"props.showCheckbox\"\n            :default-expanded-keys=\"defaultExpandedKeys\"\n            :is-layout-tree=\"true\"\n            empty-text=\"暂无数据\"\n            @check=\"handleChecked\"\n            @node-click=\"handleNodeClick\"\n          >\n            <template #default=\"{ data }\">\n              <slot :data=\"data\">\n                <template v-if=\"props.icon\">\n                  <el-icon class=\"layout-tree-icon\" :color=\"props.iconColor\">\n                    <component :is=\"props.icon\" />\n                  </el-icon>\n                </template>\n                <template v-else>\n                  <el-icon\n                    v-if=\"data.children?.length > 0\"\n                    class=\"layout-tree-icon\"\n                  >\n                    <FolderOpened />\n                  </el-icon>\n                  <el-icon v-else class=\"layout-tree-icon\">\n                    <Document />\n                  </el-icon>\n                </template>\n                <template v-if=\"props.isTooltip\">\n                  <el-tooltip\n                    effect=\"dark\"\n                    :show-after=\"500\"\n                    :content=\"data[props.label]\"\n                    :placement=\"props.placement\"\n                  >\n                    <span class=\"layout-tree-text\">{{\n                      data[props.label]\n                    }}</span>\n                    <template #content>\n                      <slot name=\"toolTip\" :row=\"data\">{{\n                        data[props.label]\n                      }}</slot>\n                    </template>\n                  </el-tooltip>\n                </template>\n                <template v-else>\n                  <span class=\"layout-tree-text\">{{ data[props.label] }}</span>\n                  <slot name=\"right\" :data=\"data\" />\n                </template>\n              </slot>\n            </template>\n          </el-tree-v2>\n        </template>\n      </el-scrollbar>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, ref } from 'vue'\nimport { Document, FolderOpened, Search, DArrowRight } from 'pit-element-icons'\nimport { flattenTree, renderTemplate } from '@pit-element-plus/utils'\nimport { useGlobalProperties } from '@pit-element-plus/hooks'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { ElTreeV2 } from '@pit-element-plus/components'\nimport { layoutTreeEmits, layoutTreeProps } from './layout-tree'\nimport type {\n  CheckedInfo,\n  TreeNode,\n  TreeNodeData,\n} from '@pit-element-plus/components/tree-v2/src/types'\nimport type { LayoutTreeContext } from './types'\n\ndefineOptions({\n  name: 'ElLayoutTree',\n})\n\nconst props = defineProps(layoutTreeProps)\nconst emit = defineEmits(layoutTreeEmits)\nconst global = useGlobalProperties()\nconst isTreeShowAll = useGlobalConfig('isTreeShowAll')\nconst treeItemSize = useGlobalConfig('treeItemSize')\n\nconst filterText = ref('')\nconst dataListData: any = ref([])\nconst elLayoutTreeBody = ref()\nconst height = ref(0)\nconst treeLoading = ref(false)\nconst tree = ref<InstanceType<typeof ElTreeV2>>()\nconst defaultExpandedKeys: any = ref([])\nconst expandAllStatus: any = ref(false)\n\nconst getItemSize = computed(() => props.itemSize || treeItemSize.value)\n\nconst defaultProps = {\n  children: 'children',\n  label: props.label,\n  isLeaf: 'isLeaf',\n  value: props.nodeKey,\n}\n\nconst handleInput = () => {\n  if (props.noFilterInput) {\n    submit()\n  }\n}\n\nconst submit = () => {\n  if (props.beforeSearchCallback) {\n    props.beforeSearchCallback()\n  } else {\n    submitFn()\n  }\n}\n\nconst submitFn = () => {\n  if (props.isRequestQuery) {\n    getQueryTree()\n  } else {\n    tree.value!.filter(filterText.value)\n  }\n}\n\nconst filterMethod = (value: any, data: { [x: string]: string | any[] }) => {\n  if (!value) return true\n  return data[props.label].includes(value)\n}\n\nconst loadNode = (node: any, resolve: (data: any) => void) => {\n  if (Object.keys(node.data).length > 0) {\n    const params = {\n      ...props.queryTreeParams,\n    }\n    params[props.lazyKey] = node.data[props.lazyKey]\n    const url = renderTemplate(props.queryTreeInterface as string, params)\n    global.$http\n      .request({\n        url,\n        method: props.queryTreeInterfaceMethod,\n        data: params,\n      })\n      .then((res: any) => {\n        if (res['data'].length > 0) {\n          res['data'].forEach((item: any) => {\n            if (!item.isLeaf) {\n              item.isLeaf = !item.hasChildren\n            }\n          })\n          return resolve(res['data'])\n        } else {\n          return resolve([])\n        }\n      })\n  }\n}\n\nconst getQueryTree: LayoutTreeContext['getQueryTree'] = () => {\n  treeLoading.value = true\n  if (props.queryTreeInterface) {\n    const queryTreeParams = props.queryTreeParams as object\n    const url = renderTemplate(props.queryTreeInterface, queryTreeParams)\n    global.$http\n      .request({\n        url,\n        method: props.queryTreeInterfaceMethod,\n        data: props.queryTreeParams,\n      })\n      .then((res: any) => {\n        treeLoading.value = false\n        let data: any = []\n        if (res['data']['list']) {\n          data = res['data']['list']\n        } else if (res['data']) {\n          data = res['data']\n        }\n        if (props.lazy) {\n          // eslint-disable-next-line array-callback-return\n          data.map((item: any) => {\n            item.isLeaf = !item.hasChildren\n          })\n        }\n        if (props.defaultObjectData) {\n          // eslint-disable-next-line vue/no-mutating-props\n          props.defaultObjectData[defaultProps.children] = data\n          data = [props.defaultObjectData]\n        } else {\n          if (isTreeShowAll.value) {\n            if (data && data.length > 0) {\n              if (props.forceOnSelectAll) {\n                const newData = [\n                  {\n                    [props.nodeKey]:\n                      props.queryTreeParams &&\n                      props.queryTreeParams[props.lazyKey]\n                        ? props.queryTreeParams[props.lazyKey]\n                        : '',\n                    [defaultProps.label]: '全部',\n                    hasChildren: true,\n                    isLeaf: false,\n                    [defaultProps.children]: data,\n                  },\n                ]\n                data = newData\n              }\n            }\n          }\n        }\n        setDataList(data)\n        if (props.defaultExpandAll) {\n          nextTick(() => {\n            defaultExpandedKeys.value = getExpanedKeys(data) as never[]\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        } else {\n          const ids = getTreeIds2(data, props.expandedLevel)\n          nextTick(() => {\n            defaultExpandedKeys.value = ids\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        }\n        nextTick(() => {\n          emit('result-back', data)\n        })\n      })\n      .finally(() => {\n        treeLoading.value = false\n      })\n  }\n}\n\nconst handleNodeClick = (data: TreeNodeData, node: TreeNode, e: MouseEvent) => {\n  emit('node-click', data, node, e)\n}\n\nconst handleChecked = (data: TreeNodeData, info: CheckedInfo) => {\n  emit('check', data, info)\n}\n\nconst setCurrentKey: LayoutTreeContext['setCurrentKey'] = (\n  value: string | number\n) => {\n  nextTick(() => {\n    tree.value?.setCurrentKey(value)\n  })\n}\n\nconst setDataList: LayoutTreeContext['setDataList'] = (data: any) => {\n  if (props.lazy) {\n    dataListData.value = data\n  } else {\n    dataListData.value = data\n    tree.value?.setData(data)\n  }\n}\n\nconst setExpandedKeysData = (keys: any) => {\n  if (!props.lazy) {\n    tree.value?.setExpandedKeys(keys)\n  }\n}\n\nconst getExpanedKeys = (data: any) => {\n  const flattenTreeData = flattenTree(data).map((item) => item[props.nodeKey])\n  if (props.defaultObjectData) {\n    flattenTreeData.unshift(props.defaultObjectData[props.nodeKey])\n  } else {\n    if (isTreeShowAll.value) {\n      if (props.forceOnSelectAll) {\n        flattenTreeData.unshift(\n          props.queryTreeParams && props.queryTreeParams[props.lazyKey]\n            ? props.queryTreeParams[props.lazyKey]\n            : ''\n        )\n      }\n    }\n  }\n  return flattenTreeData\n}\n\nconst getTreeIds = (\n  data: any,\n  targetLevel: any,\n  currentLevel = 1,\n  ids: any[] = []\n) => {\n  if (currentLevel === targetLevel) {\n    for (const node of data) {\n      ids.push(node[props.nodeKey])\n    }\n  } else {\n    for (const node of data) {\n      if (node.children && node.children.length > 0) {\n        getTreeIds(node.children, targetLevel, currentLevel + 1, ids)\n      }\n    }\n  }\n  return ids\n}\n\nconst getTreeIds2 = (data: any[], currentLevel = 1, ids: any[] = []) => {\n  for (const node of data) {\n    ids.push(node[props.nodeKey])\n    if (node.children && node.children.length > 0) {\n      getTreeIds2(node.children, currentLevel + 1, ids)\n    }\n  }\n  return ids\n}\n\nconst handleExpand = () => {\n  filterText.value = ''\n  if (expandAllStatus.value) {\n    const ids = getTreeIds2(dataListData.value)\n    defaultExpandedKeys.value = ids\n    setExpandedKeysData(defaultExpandedKeys.value)\n  } else {\n    const ids = getTreeIds(dataListData.value, props.expandedLevel)\n    defaultExpandedKeys.value = ids\n    setExpandedKeysData(defaultExpandedKeys.value)\n  }\n  expandAllStatus.value = !expandAllStatus.value\n}\n\nconst query: LayoutTreeContext['query'] = () => getQueryTree()\n\nonMounted(() => {\n  nextTick(() => {\n    height.value = elLayoutTreeBody.value.clientHeight\n    if (props.isDefaultQuery) {\n      if (props.dataList && props.dataList.length === 0) {\n        getQueryTree()\n      } else {\n        setDataList(props.dataList)\n        if (props.defaultExpandAll) {\n          nextTick(() => {\n            defaultExpandedKeys.value = getExpanedKeys(\n              props.dataList\n            ) as never[]\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        } else {\n          const ids = getTreeIds2(props.dataList, props.expandedLevel)\n          nextTick(() => {\n            defaultExpandedKeys.value = ids\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        }\n      }\n    }\n  })\n})\n\ndefineExpose({\n  /**\n   * @description setCurrentKey\n   */\n  setCurrentKey,\n  /**\n   * @description getQueryTree\n   */\n  getQueryTree,\n  /**\n   * @description setDataList\n   */\n  setDataList,\n  /**\n   * @description query\n   */\n  query,\n})\n</script>\n","<template>\n  <div class=\"el-layout-tree\">\n    <div v-if=\"props.noSearchInput\" class=\"el-layout-tree-search\">\n      <el-input\n        v-model=\"filterText\"\n        class=\"input-with-select\"\n        :placeholder=\"props.filterPlaceholder\"\n        :clearable=\"props.clearable\"\n        @input=\"handleInput\"\n        @keyup.enter=\"submit\"\n      >\n        <template #append>\n          <el-button :icon=\"Search\" @click=\"submit\" />\n        </template>\n      </el-input>\n      <template v-if=\"props.showExpandIcon\">\n        <el-icon\n          class=\"el-layout-tree-search-more fold-btn\"\n          v-show=\"expandAllStatus\"\n          @click=\"handleExpand\"\n          title=\"展开\"\n        >\n          <DArrowRight />\n        </el-icon>\n        <el-icon\n          class=\"el-layout-tree-search-more expand-btn\"\n          v-show=\"!expandAllStatus\"\n          @click=\"handleExpand\"\n          title=\"折叠\"\n        >\n          <DArrowRight />\n        </el-icon>\n      </template>\n    </div>\n    <div ref=\"elLayoutTreeBody\" class=\"el-layout-tree-body\">\n      <el-scrollbar class=\"pe-layout-tree-lazy\" style=\"overflow-x: hidden\">\n        <template v-if=\"props.lazy\">\n          <el-tree\n            ref=\"tree\"\n            v-loading=\"treeLoading\"\n            :data=\"dataListData\"\n            element-loading-text=\"正在加载中...\"\n            :props=\"defaultProps\"\n            :node-key=\"props.nodeKey\"\n            :show-checkbox=\"props.showCheckbox\"\n            :expand-on-click-node=\"props.expandOnClickNode\"\n            :lazy=\"props.lazy\"\n            :lazy-key=\"props.lazyKey\"\n            :load=\"loadNode\"\n            :filter-node-method=\"filterMethod\"\n            @node-click=\"handleNodeClick\"\n          >\n            <template #default=\"{ data }\">\n              <slot :data=\"data\">\n                <template v-if=\"props.icon\">\n                  <el-icon class=\"layout-tree-icon\" :color=\"props.iconColor\">\n                    <component :is=\"props.icon\" />\n                  </el-icon>\n                </template>\n                <template v-else>\n                  <el-icon\n                    v-if=\"data.children?.length > 0\"\n                    class=\"layout-tree-icon\"\n                  >\n                    <FolderOpened />\n                  </el-icon>\n                  <el-icon v-else class=\"layout-tree-icon\">\n                    <Document />\n                  </el-icon>\n                </template>\n                <template v-if=\"props.isTooltip\">\n                  <el-tooltip\n                    effect=\"dark\"\n                    :show-after=\"500\"\n                    :content=\"data[props.label]\"\n                    :placement=\"props.placement\"\n                  >\n                    <span class=\"layout-tree-text\">{{\n                      data[props.label]\n                    }}</span>\n                    <template #content>\n                      <slot name=\"toolTip\" :row=\"data\">{{\n                        data[props.label]\n                      }}</slot>\n                    </template>\n                  </el-tooltip>\n                </template>\n                <template v-else>\n                  <span class=\"layout-tree-text\">{{ data[props.label] }}</span>\n                  <slot name=\"right\" :data=\"data\" />\n                </template>\n              </slot>\n            </template>\n          </el-tree>\n        </template>\n        <template v-else>\n          <el-tree-v2\n            ref=\"tree\"\n            v-loading=\"treeLoading\"\n            element-loading-text=\"正在加载中...\"\n            :props=\"defaultProps\"\n            :height=\"height\"\n            :filter-method=\"filterMethod\"\n            highlight-current\n            :expand-on-click-node=\"false\"\n            :check-on-click-node=\"false\"\n            :item-size=\"getItemSize\"\n            :show-checkbox=\"props.showCheckbox\"\n            :default-expanded-keys=\"defaultExpandedKeys\"\n            :is-layout-tree=\"true\"\n            empty-text=\"暂无数据\"\n            @check=\"handleChecked\"\n            @node-click=\"handleNodeClick\"\n          >\n            <template #default=\"{ data }\">\n              <slot :data=\"data\">\n                <template v-if=\"props.icon\">\n                  <el-icon class=\"layout-tree-icon\" :color=\"props.iconColor\">\n                    <component :is=\"props.icon\" />\n                  </el-icon>\n                </template>\n                <template v-else>\n                  <el-icon\n                    v-if=\"data.children?.length > 0\"\n                    class=\"layout-tree-icon\"\n                  >\n                    <FolderOpened />\n                  </el-icon>\n                  <el-icon v-else class=\"layout-tree-icon\">\n                    <Document />\n                  </el-icon>\n                </template>\n                <template v-if=\"props.isTooltip\">\n                  <el-tooltip\n                    effect=\"dark\"\n                    :show-after=\"500\"\n                    :content=\"data[props.label]\"\n                    :placement=\"props.placement\"\n                  >\n                    <span class=\"layout-tree-text\">{{\n                      data[props.label]\n                    }}</span>\n                    <template #content>\n                      <slot name=\"toolTip\" :row=\"data\">{{\n                        data[props.label]\n                      }}</slot>\n                    </template>\n                  </el-tooltip>\n                </template>\n                <template v-else>\n                  <span class=\"layout-tree-text\">{{ data[props.label] }}</span>\n                  <slot name=\"right\" :data=\"data\" />\n                </template>\n              </slot>\n            </template>\n          </el-tree-v2>\n        </template>\n      </el-scrollbar>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, ref } from 'vue'\nimport { Document, FolderOpened, Search, DArrowRight } from 'pit-element-icons'\nimport { flattenTree, renderTemplate } from '@pit-element-plus/utils'\nimport { useGlobalProperties } from '@pit-element-plus/hooks'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { ElTreeV2 } from '@pit-element-plus/components'\nimport { layoutTreeEmits, layoutTreeProps } from './layout-tree'\nimport type {\n  CheckedInfo,\n  TreeNode,\n  TreeNodeData,\n} from '@pit-element-plus/components/tree-v2/src/types'\nimport type { LayoutTreeContext } from './types'\n\ndefineOptions({\n  name: 'ElLayoutTree',\n})\n\nconst props = defineProps(layoutTreeProps)\nconst emit = defineEmits(layoutTreeEmits)\nconst global = useGlobalProperties()\nconst isTreeShowAll = useGlobalConfig('isTreeShowAll')\nconst treeItemSize = useGlobalConfig('treeItemSize')\n\nconst filterText = ref('')\nconst dataListData: any = ref([])\nconst elLayoutTreeBody = ref()\nconst height = ref(0)\nconst treeLoading = ref(false)\nconst tree = ref<InstanceType<typeof ElTreeV2>>()\nconst defaultExpandedKeys: any = ref([])\nconst expandAllStatus: any = ref(false)\n\nconst getItemSize = computed(() => props.itemSize || treeItemSize.value)\n\nconst defaultProps = {\n  children: 'children',\n  label: props.label,\n  isLeaf: 'isLeaf',\n  value: props.nodeKey,\n}\n\nconst handleInput = () => {\n  if (props.noFilterInput) {\n    submit()\n  }\n}\n\nconst submit = () => {\n  if (props.beforeSearchCallback) {\n    props.beforeSearchCallback()\n  } else {\n    submitFn()\n  }\n}\n\nconst submitFn = () => {\n  if (props.isRequestQuery) {\n    getQueryTree()\n  } else {\n    tree.value!.filter(filterText.value)\n  }\n}\n\nconst filterMethod = (value: any, data: { [x: string]: string | any[] }) => {\n  if (!value) return true\n  return data[props.label].includes(value)\n}\n\nconst loadNode = (node: any, resolve: (data: any) => void) => {\n  if (Object.keys(node.data).length > 0) {\n    const params = {\n      ...props.queryTreeParams,\n    }\n    params[props.lazyKey] = node.data[props.lazyKey]\n    const url = renderTemplate(props.queryTreeInterface as string, params)\n    global.$http\n      .request({\n        url,\n        method: props.queryTreeInterfaceMethod,\n        data: params,\n      })\n      .then((res: any) => {\n        if (res['data'].length > 0) {\n          res['data'].forEach((item: any) => {\n            if (!item.isLeaf) {\n              item.isLeaf = !item.hasChildren\n            }\n          })\n          return resolve(res['data'])\n        } else {\n          return resolve([])\n        }\n      })\n  }\n}\n\nconst getQueryTree: LayoutTreeContext['getQueryTree'] = () => {\n  treeLoading.value = true\n  if (props.queryTreeInterface) {\n    const queryTreeParams = props.queryTreeParams as object\n    const url = renderTemplate(props.queryTreeInterface, queryTreeParams)\n    global.$http\n      .request({\n        url,\n        method: props.queryTreeInterfaceMethod,\n        data: props.queryTreeParams,\n      })\n      .then((res: any) => {\n        treeLoading.value = false\n        let data: any = []\n        if (res['data']['list']) {\n          data = res['data']['list']\n        } else if (res['data']) {\n          data = res['data']\n        }\n        if (props.lazy) {\n          // eslint-disable-next-line array-callback-return\n          data.map((item: any) => {\n            item.isLeaf = !item.hasChildren\n          })\n        }\n        if (props.defaultObjectData) {\n          // eslint-disable-next-line vue/no-mutating-props\n          props.defaultObjectData[defaultProps.children] = data\n          data = [props.defaultObjectData]\n        } else {\n          if (isTreeShowAll.value) {\n            if (data && data.length > 0) {\n              if (props.forceOnSelectAll) {\n                const newData = [\n                  {\n                    [props.nodeKey]:\n                      props.queryTreeParams &&\n                      props.queryTreeParams[props.lazyKey]\n                        ? props.queryTreeParams[props.lazyKey]\n                        : '',\n                    [defaultProps.label]: '全部',\n                    hasChildren: true,\n                    isLeaf: false,\n                    [defaultProps.children]: data,\n                  },\n                ]\n                data = newData\n              }\n            }\n          }\n        }\n        setDataList(data)\n        if (props.defaultExpandAll) {\n          nextTick(() => {\n            defaultExpandedKeys.value = getExpanedKeys(data) as never[]\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        } else {\n          const ids = getTreeIds2(data, props.expandedLevel)\n          nextTick(() => {\n            defaultExpandedKeys.value = ids\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        }\n        nextTick(() => {\n          emit('result-back', data)\n        })\n      })\n      .finally(() => {\n        treeLoading.value = false\n      })\n  }\n}\n\nconst handleNodeClick = (data: TreeNodeData, node: TreeNode, e: MouseEvent) => {\n  emit('node-click', data, node, e)\n}\n\nconst handleChecked = (data: TreeNodeData, info: CheckedInfo) => {\n  emit('check', data, info)\n}\n\nconst setCurrentKey: LayoutTreeContext['setCurrentKey'] = (\n  value: string | number\n) => {\n  nextTick(() => {\n    tree.value?.setCurrentKey(value)\n  })\n}\n\nconst setDataList: LayoutTreeContext['setDataList'] = (data: any) => {\n  if (props.lazy) {\n    dataListData.value = data\n  } else {\n    dataListData.value = data\n    tree.value?.setData(data)\n  }\n}\n\nconst setExpandedKeysData = (keys: any) => {\n  if (!props.lazy) {\n    tree.value?.setExpandedKeys(keys)\n  }\n}\n\nconst getExpanedKeys = (data: any) => {\n  const flattenTreeData = flattenTree(data).map((item) => item[props.nodeKey])\n  if (props.defaultObjectData) {\n    flattenTreeData.unshift(props.defaultObjectData[props.nodeKey])\n  } else {\n    if (isTreeShowAll.value) {\n      if (props.forceOnSelectAll) {\n        flattenTreeData.unshift(\n          props.queryTreeParams && props.queryTreeParams[props.lazyKey]\n            ? props.queryTreeParams[props.lazyKey]\n            : ''\n        )\n      }\n    }\n  }\n  return flattenTreeData\n}\n\nconst getTreeIds = (\n  data: any,\n  targetLevel: any,\n  currentLevel = 1,\n  ids: any[] = []\n) => {\n  if (currentLevel === targetLevel) {\n    for (const node of data) {\n      ids.push(node[props.nodeKey])\n    }\n  } else {\n    for (const node of data) {\n      if (node.children && node.children.length > 0) {\n        getTreeIds(node.children, targetLevel, currentLevel + 1, ids)\n      }\n    }\n  }\n  return ids\n}\n\nconst getTreeIds2 = (data: any[], currentLevel = 1, ids: any[] = []) => {\n  for (const node of data) {\n    ids.push(node[props.nodeKey])\n    if (node.children && node.children.length > 0) {\n      getTreeIds2(node.children, currentLevel + 1, ids)\n    }\n  }\n  return ids\n}\n\nconst handleExpand = () => {\n  filterText.value = ''\n  if (expandAllStatus.value) {\n    const ids = getTreeIds2(dataListData.value)\n    defaultExpandedKeys.value = ids\n    setExpandedKeysData(defaultExpandedKeys.value)\n  } else {\n    const ids = getTreeIds(dataListData.value, props.expandedLevel)\n    defaultExpandedKeys.value = ids\n    setExpandedKeysData(defaultExpandedKeys.value)\n  }\n  expandAllStatus.value = !expandAllStatus.value\n}\n\nconst query: LayoutTreeContext['query'] = () => getQueryTree()\n\nonMounted(() => {\n  nextTick(() => {\n    height.value = elLayoutTreeBody.value.clientHeight\n    if (props.isDefaultQuery) {\n      if (props.dataList && props.dataList.length === 0) {\n        getQueryTree()\n      } else {\n        setDataList(props.dataList)\n        if (props.defaultExpandAll) {\n          nextTick(() => {\n            defaultExpandedKeys.value = getExpanedKeys(\n              props.dataList\n            ) as never[]\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        } else {\n          const ids = getTreeIds2(props.dataList, props.expandedLevel)\n          nextTick(() => {\n            defaultExpandedKeys.value = ids\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        }\n      }\n    }\n  })\n})\n\ndefineExpose({\n  /**\n   * @description setCurrentKey\n   */\n  setCurrentKey,\n  /**\n   * @description getQueryTree\n   */\n  getQueryTree,\n  /**\n   * @description setDataList\n   */\n  setDataList,\n  /**\n   * @description query\n   */\n  query,\n})\n</script>\n","<template>\n  <div class=\"el-layout-tree\">\n    <div v-if=\"props.noSearchInput\" class=\"el-layout-tree-search\">\n      <el-input\n        v-model=\"filterText\"\n        class=\"input-with-select\"\n        :placeholder=\"props.filterPlaceholder\"\n        :clearable=\"props.clearable\"\n        @input=\"handleInput\"\n        @keyup.enter=\"submit\"\n      >\n        <template #append>\n          <el-button :icon=\"Search\" @click=\"submit\" />\n        </template>\n      </el-input>\n      <template v-if=\"props.showExpandIcon\">\n        <el-icon\n          class=\"el-layout-tree-search-more fold-btn\"\n          v-show=\"expandAllStatus\"\n          @click=\"handleExpand\"\n          title=\"展开\"\n        >\n          <DArrowRight />\n        </el-icon>\n        <el-icon\n          class=\"el-layout-tree-search-more expand-btn\"\n          v-show=\"!expandAllStatus\"\n          @click=\"handleExpand\"\n          title=\"折叠\"\n        >\n          <DArrowRight />\n        </el-icon>\n      </template>\n    </div>\n    <div ref=\"elLayoutTreeBody\" class=\"el-layout-tree-body\">\n      <el-scrollbar class=\"pe-layout-tree-lazy\" style=\"overflow-x: hidden\">\n        <template v-if=\"props.lazy\">\n          <el-tree\n            ref=\"tree\"\n            v-loading=\"treeLoading\"\n            :data=\"dataListData\"\n            element-loading-text=\"正在加载中...\"\n            :props=\"defaultProps\"\n            :node-key=\"props.nodeKey\"\n            :show-checkbox=\"props.showCheckbox\"\n            :expand-on-click-node=\"props.expandOnClickNode\"\n            :lazy=\"props.lazy\"\n            :lazy-key=\"props.lazyKey\"\n            :load=\"loadNode\"\n            :filter-node-method=\"filterMethod\"\n            @node-click=\"handleNodeClick\"\n          >\n            <template #default=\"{ data }\">\n              <slot :data=\"data\">\n                <template v-if=\"props.icon\">\n                  <el-icon class=\"layout-tree-icon\" :color=\"props.iconColor\">\n                    <component :is=\"props.icon\" />\n                  </el-icon>\n                </template>\n                <template v-else>\n                  <el-icon\n                    v-if=\"data.children?.length > 0\"\n                    class=\"layout-tree-icon\"\n                  >\n                    <FolderOpened />\n                  </el-icon>\n                  <el-icon v-else class=\"layout-tree-icon\">\n                    <Document />\n                  </el-icon>\n                </template>\n                <template v-if=\"props.isTooltip\">\n                  <el-tooltip\n                    effect=\"dark\"\n                    :show-after=\"500\"\n                    :content=\"data[props.label]\"\n                    :placement=\"props.placement\"\n                  >\n                    <span class=\"layout-tree-text\">{{\n                      data[props.label]\n                    }}</span>\n                    <template #content>\n                      <slot name=\"toolTip\" :row=\"data\">{{\n                        data[props.label]\n                      }}</slot>\n                    </template>\n                  </el-tooltip>\n                </template>\n                <template v-else>\n                  <span class=\"layout-tree-text\">{{ data[props.label] }}</span>\n                  <slot name=\"right\" :data=\"data\" />\n                </template>\n              </slot>\n            </template>\n          </el-tree>\n        </template>\n        <template v-else>\n          <el-tree-v2\n            ref=\"tree\"\n            v-loading=\"treeLoading\"\n            element-loading-text=\"正在加载中...\"\n            :props=\"defaultProps\"\n            :height=\"height\"\n            :filter-method=\"filterMethod\"\n            highlight-current\n            :expand-on-click-node=\"false\"\n            :check-on-click-node=\"false\"\n            :item-size=\"getItemSize\"\n            :show-checkbox=\"props.showCheckbox\"\n            :default-expanded-keys=\"defaultExpandedKeys\"\n            :is-layout-tree=\"true\"\n            empty-text=\"暂无数据\"\n            @check=\"handleChecked\"\n            @node-click=\"handleNodeClick\"\n          >\n            <template #default=\"{ data }\">\n              <slot :data=\"data\">\n                <template v-if=\"props.icon\">\n                  <el-icon class=\"layout-tree-icon\" :color=\"props.iconColor\">\n                    <component :is=\"props.icon\" />\n                  </el-icon>\n                </template>\n                <template v-else>\n                  <el-icon\n                    v-if=\"data.children?.length > 0\"\n                    class=\"layout-tree-icon\"\n                  >\n                    <FolderOpened />\n                  </el-icon>\n                  <el-icon v-else class=\"layout-tree-icon\">\n                    <Document />\n                  </el-icon>\n                </template>\n                <template v-if=\"props.isTooltip\">\n                  <el-tooltip\n                    effect=\"dark\"\n                    :show-after=\"500\"\n                    :content=\"data[props.label]\"\n                    :placement=\"props.placement\"\n                  >\n                    <span class=\"layout-tree-text\">{{\n                      data[props.label]\n                    }}</span>\n                    <template #content>\n                      <slot name=\"toolTip\" :row=\"data\">{{\n                        data[props.label]\n                      }}</slot>\n                    </template>\n                  </el-tooltip>\n                </template>\n                <template v-else>\n                  <span class=\"layout-tree-text\">{{ data[props.label] }}</span>\n                  <slot name=\"right\" :data=\"data\" />\n                </template>\n              </slot>\n            </template>\n          </el-tree-v2>\n        </template>\n      </el-scrollbar>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, ref } from 'vue'\nimport { Document, FolderOpened, Search, DArrowRight } from 'pit-element-icons'\nimport { flattenTree, renderTemplate } from '@pit-element-plus/utils'\nimport { useGlobalProperties } from '@pit-element-plus/hooks'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { ElTreeV2 } from '@pit-element-plus/components'\nimport { layoutTreeEmits, layoutTreeProps } from './layout-tree'\nimport type {\n  CheckedInfo,\n  TreeNode,\n  TreeNodeData,\n} from '@pit-element-plus/components/tree-v2/src/types'\nimport type { LayoutTreeContext } from './types'\n\ndefineOptions({\n  name: 'ElLayoutTree',\n})\n\nconst props = defineProps(layoutTreeProps)\nconst emit = defineEmits(layoutTreeEmits)\nconst global = useGlobalProperties()\nconst isTreeShowAll = useGlobalConfig('isTreeShowAll')\nconst treeItemSize = useGlobalConfig('treeItemSize')\n\nconst filterText = ref('')\nconst dataListData: any = ref([])\nconst elLayoutTreeBody = ref()\nconst height = ref(0)\nconst treeLoading = ref(false)\nconst tree = ref<InstanceType<typeof ElTreeV2>>()\nconst defaultExpandedKeys: any = ref([])\nconst expandAllStatus: any = ref(false)\n\nconst getItemSize = computed(() => props.itemSize || treeItemSize.value)\n\nconst defaultProps = {\n  children: 'children',\n  label: props.label,\n  isLeaf: 'isLeaf',\n  value: props.nodeKey,\n}\n\nconst handleInput = () => {\n  if (props.noFilterInput) {\n    submit()\n  }\n}\n\nconst submit = () => {\n  if (props.beforeSearchCallback) {\n    props.beforeSearchCallback()\n  } else {\n    submitFn()\n  }\n}\n\nconst submitFn = () => {\n  if (props.isRequestQuery) {\n    getQueryTree()\n  } else {\n    tree.value!.filter(filterText.value)\n  }\n}\n\nconst filterMethod = (value: any, data: { [x: string]: string | any[] }) => {\n  if (!value) return true\n  return data[props.label].includes(value)\n}\n\nconst loadNode = (node: any, resolve: (data: any) => void) => {\n  if (Object.keys(node.data).length > 0) {\n    const params = {\n      ...props.queryTreeParams,\n    }\n    params[props.lazyKey] = node.data[props.lazyKey]\n    const url = renderTemplate(props.queryTreeInterface as string, params)\n    global.$http\n      .request({\n        url,\n        method: props.queryTreeInterfaceMethod,\n        data: params,\n      })\n      .then((res: any) => {\n        if (res['data'].length > 0) {\n          res['data'].forEach((item: any) => {\n            if (!item.isLeaf) {\n              item.isLeaf = !item.hasChildren\n            }\n          })\n          return resolve(res['data'])\n        } else {\n          return resolve([])\n        }\n      })\n  }\n}\n\nconst getQueryTree: LayoutTreeContext['getQueryTree'] = () => {\n  treeLoading.value = true\n  if (props.queryTreeInterface) {\n    const queryTreeParams = props.queryTreeParams as object\n    const url = renderTemplate(props.queryTreeInterface, queryTreeParams)\n    global.$http\n      .request({\n        url,\n        method: props.queryTreeInterfaceMethod,\n        data: props.queryTreeParams,\n      })\n      .then((res: any) => {\n        treeLoading.value = false\n        let data: any = []\n        if (res['data']['list']) {\n          data = res['data']['list']\n        } else if (res['data']) {\n          data = res['data']\n        }\n        if (props.lazy) {\n          // eslint-disable-next-line array-callback-return\n          data.map((item: any) => {\n            item.isLeaf = !item.hasChildren\n          })\n        }\n        if (props.defaultObjectData) {\n          // eslint-disable-next-line vue/no-mutating-props\n          props.defaultObjectData[defaultProps.children] = data\n          data = [props.defaultObjectData]\n        } else {\n          if (isTreeShowAll.value) {\n            if (data && data.length > 0) {\n              if (props.forceOnSelectAll) {\n                const newData = [\n                  {\n                    [props.nodeKey]:\n                      props.queryTreeParams &&\n                      props.queryTreeParams[props.lazyKey]\n                        ? props.queryTreeParams[props.lazyKey]\n                        : '',\n                    [defaultProps.label]: '全部',\n                    hasChildren: true,\n                    isLeaf: false,\n                    [defaultProps.children]: data,\n                  },\n                ]\n                data = newData\n              }\n            }\n          }\n        }\n        setDataList(data)\n        if (props.defaultExpandAll) {\n          nextTick(() => {\n            defaultExpandedKeys.value = getExpanedKeys(data) as never[]\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        } else {\n          const ids = getTreeIds2(data, props.expandedLevel)\n          nextTick(() => {\n            defaultExpandedKeys.value = ids\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        }\n        nextTick(() => {\n          emit('result-back', data)\n        })\n      })\n      .finally(() => {\n        treeLoading.value = false\n      })\n  }\n}\n\nconst handleNodeClick = (data: TreeNodeData, node: TreeNode, e: MouseEvent) => {\n  emit('node-click', data, node, e)\n}\n\nconst handleChecked = (data: TreeNodeData, info: CheckedInfo) => {\n  emit('check', data, info)\n}\n\nconst setCurrentKey: LayoutTreeContext['setCurrentKey'] = (\n  value: string | number\n) => {\n  nextTick(() => {\n    tree.value?.setCurrentKey(value)\n  })\n}\n\nconst setDataList: LayoutTreeContext['setDataList'] = (data: any) => {\n  if (props.lazy) {\n    dataListData.value = data\n  } else {\n    dataListData.value = data\n    tree.value?.setData(data)\n  }\n}\n\nconst setExpandedKeysData = (keys: any) => {\n  if (!props.lazy) {\n    tree.value?.setExpandedKeys(keys)\n  }\n}\n\nconst getExpanedKeys = (data: any) => {\n  const flattenTreeData = flattenTree(data).map((item) => item[props.nodeKey])\n  if (props.defaultObjectData) {\n    flattenTreeData.unshift(props.defaultObjectData[props.nodeKey])\n  } else {\n    if (isTreeShowAll.value) {\n      if (props.forceOnSelectAll) {\n        flattenTreeData.unshift(\n          props.queryTreeParams && props.queryTreeParams[props.lazyKey]\n            ? props.queryTreeParams[props.lazyKey]\n            : ''\n        )\n      }\n    }\n  }\n  return flattenTreeData\n}\n\nconst getTreeIds = (\n  data: any,\n  targetLevel: any,\n  currentLevel = 1,\n  ids: any[] = []\n) => {\n  if (currentLevel === targetLevel) {\n    for (const node of data) {\n      ids.push(node[props.nodeKey])\n    }\n  } else {\n    for (const node of data) {\n      if (node.children && node.children.length > 0) {\n        getTreeIds(node.children, targetLevel, currentLevel + 1, ids)\n      }\n    }\n  }\n  return ids\n}\n\nconst getTreeIds2 = (data: any[], currentLevel = 1, ids: any[] = []) => {\n  for (const node of data) {\n    ids.push(node[props.nodeKey])\n    if (node.children && node.children.length > 0) {\n      getTreeIds2(node.children, currentLevel + 1, ids)\n    }\n  }\n  return ids\n}\n\nconst handleExpand = () => {\n  filterText.value = ''\n  if (expandAllStatus.value) {\n    const ids = getTreeIds2(dataListData.value)\n    defaultExpandedKeys.value = ids\n    setExpandedKeysData(defaultExpandedKeys.value)\n  } else {\n    const ids = getTreeIds(dataListData.value, props.expandedLevel)\n    defaultExpandedKeys.value = ids\n    setExpandedKeysData(defaultExpandedKeys.value)\n  }\n  expandAllStatus.value = !expandAllStatus.value\n}\n\nconst query: LayoutTreeContext['query'] = () => getQueryTree()\n\nonMounted(() => {\n  nextTick(() => {\n    height.value = elLayoutTreeBody.value.clientHeight\n    if (props.isDefaultQuery) {\n      if (props.dataList && props.dataList.length === 0) {\n        getQueryTree()\n      } else {\n        setDataList(props.dataList)\n        if (props.defaultExpandAll) {\n          nextTick(() => {\n            defaultExpandedKeys.value = getExpanedKeys(\n              props.dataList\n            ) as never[]\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        } else {\n          const ids = getTreeIds2(props.dataList, props.expandedLevel)\n          nextTick(() => {\n            defaultExpandedKeys.value = ids\n            setExpandedKeysData(defaultExpandedKeys.value)\n          })\n        }\n      }\n    }\n  })\n})\n\ndefineExpose({\n  /**\n   * @description setCurrentKey\n   */\n  setCurrentKey,\n  /**\n   * @description getQueryTree\n   */\n  getQueryTree,\n  /**\n   * @description setDataList\n   */\n  setDataList,\n  /**\n   * @description query\n   */\n  query,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\n\nimport LayoutTree from './src/layout-tree.vue'\n\nexport const ElLayoutTree = withInstall(LayoutTree)\nexport default ElLayoutTree\n\nexport * from './src/layout-tree'\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isArray,\n  isNumber,\n  isString,\n  isUndefined,\n} from '@pit-element-plus/utils'\nimport { useSizeProp } from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { tagProps } from '@pit-element-plus/components/tag/src/tag'\nimport { CircleClose } from 'pit-element-icons'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { PopperEffect } from '@pit-element-plus/components/popper'\nimport type { TagProps } from '@pit-element-plus/components/tag'\nimport type { IconPropType } from '@pit-element-plus/utils'\n\nexport interface InputTagProps {\n  /**\n   * @description binding value\n   */\n  modelValue?: string[]\n  /**\n   * @description max number tags that can be enter\n   */\n  max?: number\n  /**\n   * @description tag type\n   */\n  tagType?: TagProps['type']\n  /**\n   * @description tag effect\n   */\n  tagEffect?: TagProps['effect']\n  /**\n   * @description tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect?: PopperEffect\n  /**\n   * @description the key to trigger input tag\n   */\n  trigger?: 'Enter' | 'Space'\n  /**\n   * @description whether tags can be dragged\n   */\n  draggable?: boolean\n  /**\n   * @description add a tag when a delimiter is matched\n   */\n  delimiter?: string | RegExp\n  /**\n   * @description input box size\n   */\n  size?: ComponentSize\n  /**\n   * @description whether to show clear button\n   */\n  clearable?: boolean\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon?: IconPropType\n  /**\n   * @description whether to disable input-tag\n   */\n  disabled?: boolean\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n  /**\n   * @description native input readonly\n   */\n  readonly?: boolean\n  /**\n   * @description native input autofocus\n   */\n  autofocus?: boolean\n  /**\n   * @description same as `id` in native input\n   */\n  id?: string\n  /**\n   * @description same as `tabindex` in native input\n   */\n  tabindex?: string | number\n  /**\n   * @description same as `maxlength` in native input\n   */\n  maxlength?: string | number\n  /**\n   * @description same as `minlength` in native input\n   */\n  minlength?: string | number\n  /**\n   * @description placeholder of input\n   */\n  placeholder?: string\n  /**\n   * @description native input autocomplete\n   * - When the number of literal types in a union exceeds 315, the TS2590 error occurs. see: https://github.com/vuejs/core/issues/10514\n   */\n  autocomplete?: string // HTMLInputElement['autocomplete']\n  /**\n   * @description whether to save the input value when the input loses focus\n   */\n  saveOnBlur?: boolean\n  /**\n   * @description whether to collapse tags to a text\n   */\n  collapseTags?: boolean\n  /**\n   * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true\n   */\n  collapseTagsTooltip?: boolean\n  /**\n   * @description the max tags number to be shown. To use this, `collapse-tags` must be true\n   */\n  maxCollapseTags?: number\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `InputTagProps` instead.\n */\nexport const inputTagProps = buildProps({\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<string[]>(Array),\n  },\n  /**\n   * @description max number tags that can be enter\n   */\n  max: Number,\n  /**\n   * @description tag type\n   */\n  tagType: { ...tagProps.type, default: 'info' },\n  /**\n   * @description tag effect\n   */\n  tagEffect: tagProps.effect,\n  /**\n   * @description tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    type: definePropType<PopperEffect>(String),\n    default: 'light',\n  },\n  /**\n   * @description the key to trigger input tag\n   */\n  trigger: {\n    type: definePropType<'Enter' | 'Space'>(String),\n    default: EVENT_CODE.enter,\n  },\n  /**\n   * @description whether tags can be dragged\n   */\n  draggable: Boolean,\n  /**\n   * @description add a tag when a delimiter is matched\n   */\n  delimiter: {\n    type: [String, RegExp],\n    default: '',\n  },\n  /**\n   * @description input box size\n   */\n  size: useSizeProp,\n  /**\n   * @description whether to show clear button\n   */\n  clearable: Boolean,\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon: {\n    type: iconPropType,\n    default: CircleClose,\n  },\n  /**\n   * @description whether to disable input-tag\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description native input readonly\n   */\n  readonly: Boolean,\n  /**\n   * @description native input autofocus\n   */\n  autofocus: Boolean,\n  /**\n   * @description same as `id` in native input\n   */\n  id: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description same as `tabindex` in native input\n   */\n  tabindex: {\n    type: [String, Number],\n    default: 0,\n  },\n  /**\n   * @description same as `maxlength` in native input\n   */\n  maxlength: {\n    type: [String, Number],\n  },\n  /**\n   * @description same as `minlength` in native input\n   */\n  minlength: {\n    type: [String, Number],\n  },\n  /**\n   * @description placeholder of input\n   */\n  placeholder: String,\n  /**\n   * @description native input autocomplete\n   */\n  autocomplete: {\n    type: definePropType<HTMLInputElement['autocomplete']>(String),\n    default: 'off',\n  },\n  /**\n   * @description whether to save the input value when the input loses focus\n   */\n  saveOnBlur: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to collapse tags to a text\n   */\n  collapseTags: Boolean,\n  /**\n   * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true\n   */\n  collapseTagsTooltip: Boolean,\n  /**\n   * @description the max tags number to be shown. To use this, `collapse-tags` must be true\n   */\n  maxCollapseTags: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel: String,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `InputTagProps` instead.\n */\nexport type InputTagPropsPublic = ExtractPublicPropTypes<typeof inputTagProps>\n\nexport const inputTagEmits = {\n  [UPDATE_MODEL_EVENT]: (value?: string[]) =>\n    isArray(value) || isUndefined(value),\n  [CHANGE_EVENT]: (value?: string[]) => isArray(value) || isUndefined(value),\n  [INPUT_EVENT]: (value: string) => isString(value),\n  'add-tag': (value: string | string[]) => isString(value) || isArray(value),\n  'remove-tag': (value: string, index: number) =>\n    isString(value) && isNumber(index),\n  'drag-tag': (oldIndex: number, newIndex: number, value: string) =>\n    isNumber(oldIndex) && isNumber(newIndex) && isString(value),\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n}\nexport type InputTagEmits = typeof inputTagEmits\n","import { ref, shallowRef } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { getStyle, isUndefined, setStyle } from '@pit-element-plus/utils'\n\nimport type { ShallowRef } from 'vue'\n\ntype DropType = 'before' | 'after'\n\ninterface UseDragTagOptions {\n  wrapperRef: ShallowRef<HTMLElement | undefined>\n  handleDragged: (\n    draggingIndex: number,\n    dropIndex: number,\n    type: DropType\n  ) => void\n  afterDragged?: () => void\n}\n\nexport function useDragTag({\n  wrapperRef,\n  handleDragged,\n  afterDragged,\n}: UseDragTagOptions) {\n  const ns = useNamespace('input-tag')\n  const dropIndicatorRef = shallowRef<HTMLElement>()\n  const showDropIndicator = ref(false)\n\n  let draggingIndex: number | undefined\n  let draggingTag: HTMLElement | null\n  let dropIndex: number | undefined\n  let dropType: DropType | undefined\n\n  function getTagClassName(index: number) {\n    return `.${ns.e('inner')} .${ns.namespace.value}-tag:nth-child(${\n      index + 1\n    })`\n  }\n\n  function handleDragStart(event: DragEvent, index: number) {\n    draggingIndex = index\n    draggingTag = wrapperRef.value!.querySelector<HTMLElement>(\n      getTagClassName(index)\n    )\n\n    if (draggingTag) {\n      draggingTag.style.opacity = '0.5'\n    }\n    event.dataTransfer!.effectAllowed = 'move'\n  }\n\n  function handleDragOver(event: DragEvent, index: number) {\n    dropIndex = index\n    event.preventDefault()\n    event.dataTransfer!.dropEffect = 'move'\n\n    if (isUndefined(draggingIndex) || draggingIndex === index) {\n      showDropIndicator.value = false\n      return\n    }\n\n    const dropPosition = wrapperRef\n      .value!.querySelector<HTMLElement>(getTagClassName(index))!\n      .getBoundingClientRect()\n    const dropPrev = !(draggingIndex + 1 === index)\n    const dropNext = !(draggingIndex - 1 === index)\n    const distance = event.clientX - dropPosition.left\n    const prevPercent = dropPrev ? (dropNext ? 0.5 : 1) : -1\n    const nextPercent = dropNext ? (dropPrev ? 0.5 : 0) : 1\n\n    if (distance <= dropPosition.width * prevPercent) {\n      dropType = 'before'\n    } else if (distance > dropPosition.width * nextPercent) {\n      dropType = 'after'\n    } else {\n      dropType = undefined\n    }\n\n    const innerEl = wrapperRef.value!.querySelector<HTMLElement>(\n      `.${ns.e('inner')}`\n    )!\n    const innerPosition = innerEl.getBoundingClientRect()\n    const gap = Number.parseFloat(getStyle(innerEl, 'gap')) / 2\n\n    const indicatorTop = dropPosition.top - innerPosition.top\n    let indicatorLeft = -9999\n\n    if (dropType === 'before') {\n      indicatorLeft = Math.max(\n        dropPosition.left - innerPosition.left - gap,\n        Math.floor(-gap / 2)\n      )\n    } else if (dropType === 'after') {\n      const left = dropPosition.right - innerPosition.left\n      indicatorLeft =\n        left + (innerPosition.width === left ? Math.floor(gap / 2) : gap)\n    }\n\n    setStyle(dropIndicatorRef.value!, {\n      top: `${indicatorTop}px`,\n      left: `${indicatorLeft}px`,\n    })\n    showDropIndicator.value = !!dropType\n  }\n\n  function handleDragEnd(event: DragEvent) {\n    event.preventDefault()\n\n    if (draggingTag) {\n      draggingTag.style.opacity = ''\n    }\n\n    if (\n      dropType &&\n      !isUndefined(draggingIndex) &&\n      !isUndefined(dropIndex) &&\n      draggingIndex !== dropIndex\n    ) {\n      handleDragged(draggingIndex, dropIndex, dropType)\n    }\n\n    showDropIndicator.value = false\n    draggingIndex = undefined\n    draggingTag = null\n    dropIndex = undefined\n    dropType = undefined\n    afterDragged?.()\n  }\n\n  return {\n    dropIndicatorRef,\n    showDropIndicator,\n    handleDragStart,\n    handleDragOver,\n    handleDragEnd,\n  }\n}\n","import { ref } from 'vue'\n\nexport function useHovering() {\n  const hovering = ref(false)\n\n  const handleMouseEnter = () => {\n    hovering.value = true\n  }\n\n  const handleMouseLeave = () => {\n    hovering.value = false\n  }\n\n  return {\n    hovering,\n    handleMouseEnter,\n    handleMouseLeave,\n  }\n}\n","import { computed, ref, shallowRef, watch } from 'vue'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport {\n  debugWarn,\n  ensureArray,\n  getEventCode,\n  isAndroid,\n  isUndefined,\n} from '@pit-element-plus/utils'\nimport { useComposition, useFocusController } from '@pit-element-plus/hooks'\nimport { useFormDisabled, useFormSize } from '@pit-element-plus/components/form'\n\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { EmitFn } from '@pit-element-plus/utils'\nimport type { FormItemContext } from '@pit-element-plus/components/form'\nimport type { InputTagEmits, InputTagProps } from '../input-tag'\n\ninterface UseInputTagOptions {\n  props: InputTagProps\n  emit: EmitFn<InputTagEmits>\n  formItem?: FormItemContext\n}\n\nexport function useInputTag({ props, emit, formItem }: UseInputTagOptions) {\n  const disabled = useFormDisabled()\n  const size = useFormSize()\n\n  const inputRef = shallowRef<HTMLInputElement>()\n  const inputValue = ref<string>()\n  const tagTooltipRef = ref<TooltipInstance>()\n\n  const tagSize = computed(() => {\n    return ['small'].includes(size.value) ? 'small' : 'default'\n  })\n  const placeholder = computed(() => {\n    return props.modelValue?.length ? undefined : props.placeholder\n  })\n  const closable = computed(() => !(props.readonly || disabled.value))\n  const inputLimit = computed(() => {\n    return isUndefined(props.max)\n      ? false\n      : (props.modelValue?.length ?? 0) >= props.max\n  })\n  const showTagList = computed(() => {\n    return props.collapseTags\n      ? props.modelValue?.slice(0, props.maxCollapseTags)\n      : props.modelValue\n  })\n  const collapseTagList = computed(() => {\n    return props.collapseTags\n      ? props.modelValue?.slice(props.maxCollapseTags)\n      : []\n  })\n\n  const addTagsEmit = (value: string | string[]) => {\n    const list = [...(props.modelValue ?? []), ...ensureArray(value)]\n\n    emit(UPDATE_MODEL_EVENT, list)\n    emit(CHANGE_EVENT, list)\n    emit('add-tag', value)\n    inputValue.value = undefined\n  }\n\n  const getDelimitedTags = (input: string) => {\n    const parts = input.split(props.delimiter!)\n    const tags =\n      parts.length > 1 ? parts.map((val) => val.trim()).filter(Boolean) : []\n    if (props.max) {\n      const maxInsert = props.max - (props.modelValue?.length ?? 0)\n      tags.splice(maxInsert)\n    }\n    return tags.length === 1 ? tags[0] : tags\n  }\n\n  const handlePaste = (event: ClipboardEvent) => {\n    const pasted = event.clipboardData?.getData('text')\n    if (props.readonly || inputLimit.value || !props.delimiter || !pasted) {\n      return\n    }\n    const {\n      selectionStart = 0,\n      selectionEnd = 0,\n      value,\n    } = event.target as HTMLInputElement\n    const nextValue =\n      value.slice(0, selectionStart!) + pasted + value.slice(selectionEnd!)\n    const tags = getDelimitedTags(nextValue)\n    if (tags.length) {\n      addTagsEmit(tags)\n      emit(INPUT_EVENT, nextValue)\n      event.preventDefault()\n    }\n  }\n\n  const handleInput = (event: Event) => {\n    if (inputLimit.value) {\n      inputValue.value = undefined\n      return\n    }\n\n    if (isComposing.value) return\n    if (props.delimiter && inputValue.value) {\n      const tags = getDelimitedTags(inputValue.value)\n      if (tags.length) {\n        addTagsEmit(tags)\n      }\n    }\n    emit(INPUT_EVENT, (event.target as HTMLInputElement).value)\n  }\n\n  const handleKeydown = (event: KeyboardEvent) => {\n    if (isComposing.value) return\n    const code = getEventCode(event)\n\n    switch (code) {\n      case props.trigger:\n        event.preventDefault()\n        event.stopPropagation()\n        handleAddTag()\n        break\n      case EVENT_CODE.numpadEnter:\n        if (props.trigger === EVENT_CODE.enter) {\n          event.preventDefault()\n          event.stopPropagation()\n          handleAddTag()\n        }\n        break\n      case EVENT_CODE.backspace:\n        if (!inputValue.value && props.modelValue?.length) {\n          event.preventDefault()\n          event.stopPropagation()\n          handleRemoveTag(props.modelValue.length - 1)\n        }\n        break\n    }\n  }\n\n  const handleKeyup = (event: KeyboardEvent) => {\n    if (isComposing.value || !isAndroid()) return\n    const code = getEventCode(event)\n\n    switch (code) {\n      case EVENT_CODE.space:\n        if (props.trigger === EVENT_CODE.space) {\n          event.preventDefault()\n          event.stopPropagation()\n          handleAddTag()\n        }\n        break\n    }\n  }\n\n  const handleAddTag = () => {\n    const value = inputValue.value?.trim()\n    if (!value || inputLimit.value) return\n    addTagsEmit(value)\n  }\n\n  const handleRemoveTag = (index: number) => {\n    const value = (props.modelValue ?? []).slice()\n    const [item] = value.splice(index, 1)\n\n    emit(UPDATE_MODEL_EVENT, value)\n    emit(CHANGE_EVENT, value)\n    emit('remove-tag', item, index)\n  }\n\n  const handleClear = () => {\n    inputValue.value = undefined\n    emit(UPDATE_MODEL_EVENT, undefined)\n    emit(CHANGE_EVENT, undefined)\n    emit('clear')\n  }\n\n  const handleDragged = (\n    draggingIndex: number,\n    dropIndex: number,\n    type: 'before' | 'after'\n  ) => {\n    const value = (props.modelValue ?? []).slice()\n    const [draggedItem] = value.splice(draggingIndex, 1)\n    const step =\n      dropIndex > draggingIndex && type === 'before'\n        ? -1\n        : dropIndex < draggingIndex && type === 'after'\n          ? 1\n          : 0\n\n    value.splice(dropIndex + step, 0, draggedItem)\n    emit(UPDATE_MODEL_EVENT, value)\n    emit(CHANGE_EVENT, value)\n    emit('drag-tag', draggingIndex, dropIndex + step, draggedItem)\n  }\n\n  const focus = () => {\n    inputRef.value?.focus()\n  }\n\n  const blur = () => {\n    inputRef.value?.blur()\n  }\n\n  const { wrapperRef, isFocused } = useFocusController(inputRef, {\n    disabled,\n    beforeBlur(event) {\n      return tagTooltipRef.value?.isFocusInsideContent(event)\n    },\n    afterBlur() {\n      if (props.saveOnBlur) {\n        handleAddTag()\n      } else {\n        inputValue.value = undefined\n      }\n\n      if (props.validateEvent) {\n        formItem?.validate?.('blur').catch((err) => debugWarn(err))\n      }\n    },\n  })\n\n  const {\n    isComposing,\n    handleCompositionStart,\n    handleCompositionUpdate,\n    handleCompositionEnd,\n  } = useComposition({ afterComposition: handleInput })\n\n  watch(\n    () => props.modelValue,\n    () => {\n      if (props.validateEvent) {\n        formItem?.validate?.(CHANGE_EVENT).catch((err) => debugWarn(err))\n      }\n    }\n  )\n\n  return {\n    inputRef,\n    wrapperRef,\n    tagTooltipRef,\n    isFocused,\n    isComposing,\n    inputValue,\n    size,\n    tagSize,\n    placeholder,\n    closable,\n    disabled,\n    inputLimit,\n    showTagList,\n    collapseTagList,\n    handleDragged,\n    handlePaste,\n    handleInput,\n    handleKeydown,\n    handleKeyup,\n    handleAddTag,\n    handleRemoveTag,\n    handleClear,\n    handleCompositionStart,\n    handleCompositionUpdate,\n    handleCompositionEnd,\n    focus,\n    blur,\n  }\n}\n","import { computed, reactive, ref, useAttrs, useSlots } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { MINIMUM_INPUT_WIDTH } from '@pit-element-plus/constants'\nimport { useResizeObserver } from '@vueuse/core'\n\nimport type { ComputedRef, Ref, StyleValue } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { IconComponent } from '@pit-element-plus/utils'\nimport type { InputTagProps } from '../input-tag'\n\ninterface UseInputTagDomOptions {\n  props: InputTagProps\n  isFocused: Ref<boolean>\n  hovering: Ref<boolean>\n  disabled: ComputedRef<boolean>\n  inputValue: Ref<string | undefined>\n  size: ComputedRef<ComponentSize>\n  validateState: ComputedRef<string>\n  validateIcon: ComputedRef<'' | IconComponent>\n  needStatusIcon: ComputedRef<boolean>\n}\n\nexport function useInputTagDom({\n  props,\n  isFocused,\n  hovering,\n  disabled,\n  inputValue,\n  size,\n  validateState,\n  validateIcon,\n  needStatusIcon,\n}: UseInputTagDomOptions) {\n  const attrs = useAttrs()\n  const slots = useSlots()\n  const ns = useNamespace('input-tag')\n  const nsInput = useNamespace('input')\n\n  const collapseItemRef = ref<HTMLElement>()\n  const innerRef = ref<HTMLElement>()\n\n  const containerKls = computed(() => [\n    ns.b(),\n    ns.is('focused', isFocused.value),\n    ns.is('hovering', hovering.value),\n    ns.is('disabled', disabled.value),\n    ns.m(size.value),\n    ns.e('wrapper'),\n    attrs.class,\n  ])\n  const containerStyle = computed<StyleValue>(() => [attrs.style as StyleValue])\n  const innerKls = computed(() => [\n    ns.e('inner'),\n    ns.is('draggable', props.draggable),\n    ns.is('left-space', !props.modelValue?.length && !slots.prefix),\n    ns.is('right-space', !props.modelValue?.length && !showSuffix.value),\n  ])\n  const showClear = computed(() => {\n    return (\n      props.clearable &&\n      !disabled.value &&\n      !props.readonly &&\n      (props.modelValue?.length || inputValue.value) &&\n      (isFocused.value || hovering.value)\n    )\n  })\n  const showSuffix = computed(() => {\n    return (\n      slots.suffix ||\n      showClear.value ||\n      (validateState.value && validateIcon.value && needStatusIcon.value)\n    )\n  })\n\n  const states = reactive({\n    innerWidth: 0,\n    collapseItemWidth: 0,\n  })\n\n  const getGapWidth = () => {\n    if (!innerRef.value) return 0\n    const style = window.getComputedStyle(innerRef.value)\n    return Number.parseFloat(style.gap || '6px')\n  }\n\n  const resetInnerWidth = () => {\n    states.innerWidth = Number.parseFloat(\n      window.getComputedStyle(innerRef.value!).width\n    )\n  }\n\n  const resetCollapseItemWidth = () => {\n    states.collapseItemWidth =\n      collapseItemRef.value!.getBoundingClientRect().width\n  }\n\n  const tagStyle = computed(() => {\n    if (!props.collapseTags) return {}\n    const gapWidth = getGapWidth()\n\n    const inputSlotWidth = gapWidth + MINIMUM_INPUT_WIDTH\n\n    const maxWidth =\n      collapseItemRef.value && props.maxCollapseTags === 1\n        ? states.innerWidth -\n          states.collapseItemWidth -\n          gapWidth -\n          inputSlotWidth\n        : states.innerWidth - inputSlotWidth\n\n    return { maxWidth: `${Math.max(maxWidth, 0)}px` }\n  })\n\n  useResizeObserver(innerRef, resetInnerWidth)\n  useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n  return {\n    ns,\n    nsInput,\n    containerKls,\n    containerStyle,\n    innerKls,\n    showClear,\n    showSuffix,\n    tagStyle,\n    collapseItemRef,\n    innerRef,\n  }\n}\n","<template>\n  <div\n    ref=\"wrapperRef\"\n    :class=\"containerKls\"\n    :style=\"containerStyle\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n  >\n    <div v-if=\"slots.prefix\" :class=\"ns.e('prefix')\">\n      <slot name=\"prefix\" />\n    </div>\n    <div ref=\"innerRef\" :class=\"innerKls\">\n      <el-tag\n        v-for=\"(item, index) in showTagList\"\n        :key=\"index\"\n        :size=\"tagSize\"\n        :closable=\"closable\"\n        :type=\"tagType\"\n        :effect=\"tagEffect\"\n        :draggable=\"closable && draggable\"\n        :style=\"tagStyle\"\n        disable-transitions\n        @close=\"handleRemoveTag(index)\"\n        @dragstart=\"(event: DragEvent) => handleDragStart(event, index)\"\n        @dragover=\"(event: DragEvent) => handleDragOver(event, index)\"\n        @dragend=\"handleDragEnd\"\n        @drop.stop\n      >\n        <slot name=\"tag\" :value=\"item\" :index=\"index\">\n          {{ item }}\n        </slot>\n      </el-tag>\n      <el-tooltip\n        v-if=\"collapseTags && modelValue && modelValue.length > maxCollapseTags\"\n        ref=\"tagTooltipRef\"\n        :disabled=\"!collapseTagsTooltip\"\n        :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n        :effect=\"effect\"\n        placement=\"bottom\"\n      >\n        <template #default>\n          <div ref=\"collapseItemRef\" :class=\"ns.e('collapse-tag')\">\n            <el-tag\n              :closable=\"false\"\n              :size=\"tagSize\"\n              :type=\"tagType\"\n              :effect=\"tagEffect\"\n              disable-transitions\n            >\n              + {{ modelValue.length - maxCollapseTags }}\n            </el-tag>\n          </div>\n        </template>\n        <template #content>\n          <div :class=\"ns.e('input-tag-list')\">\n            <el-tag\n              v-for=\"(item, index) in collapseTagList\"\n              :key=\"index\"\n              :size=\"tagSize\"\n              :closable=\"closable\"\n              :type=\"tagType\"\n              :effect=\"tagEffect\"\n              disable-transitions\n              @close=\"handleRemoveTag(index + maxCollapseTags)\"\n            >\n              <slot name=\"tag\" :value=\"item\" :index=\"index + maxCollapseTags\">\n                {{ item }}\n              </slot>\n            </el-tag>\n          </div>\n        </template>\n      </el-tooltip>\n      <div :class=\"ns.e('input-wrapper')\">\n        <input\n          :id=\"inputId\"\n          ref=\"inputRef\"\n          v-model=\"inputValue\"\n          v-bind=\"attrs\"\n          type=\"text\"\n          :minlength=\"minlength\"\n          :maxlength=\"maxlength\"\n          :disabled=\"disabled\"\n          :readonly=\"readonly\"\n          :autocomplete=\"autocomplete\"\n          :tabindex=\"tabindex\"\n          :placeholder=\"placeholder\"\n          :autofocus=\"autofocus\"\n          :ariaLabel=\"ariaLabel\"\n          :class=\"ns.e('input')\"\n          :style=\"inputStyle\"\n          @compositionstart=\"handleCompositionStart\"\n          @compositionupdate=\"handleCompositionUpdate\"\n          @compositionend=\"handleCompositionEnd\"\n          @paste=\"handlePaste\"\n          @input=\"handleInput\"\n          @keydown=\"handleKeydown\"\n          @keyup=\"handleKeyup\"\n        />\n        <span\n          ref=\"calculatorRef\"\n          aria-hidden=\"true\"\n          :class=\"ns.e('input-calculator')\"\n          v-text=\"inputValue\"\n        />\n      </div>\n      <div\n        v-show=\"showDropIndicator\"\n        ref=\"dropIndicatorRef\"\n        :class=\"ns.e('drop-indicator')\"\n      />\n    </div>\n    <div v-if=\"showSuffix\" :class=\"ns.e('suffix')\">\n      <slot name=\"suffix\" />\n      <el-icon\n        v-if=\"showClear\"\n        :class=\"[ns.e('icon'), ns.e('clear')]\"\n        @mousedown.prevent=\"NOOP\"\n        @click=\"handleClear\"\n      >\n        <component :is=\"clearIcon\" />\n      </el-icon>\n      <el-icon\n        v-if=\"validateState && validateIcon && needStatusIcon\"\n        :class=\"[\n          nsInput.e('icon'),\n          nsInput.e('validateIcon'),\n          nsInput.is('loading', validateState === 'validating'),\n        ]\"\n      >\n        <component :is=\"validateIcon\" />\n      </el-icon>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, markRaw, useSlots } from 'vue'\nimport { useAttrs, useCalcInputWidth } from '@pit-element-plus/hooks'\nimport { NOOP, ValidateComponentsMap } from '@pit-element-plus/utils'\nimport { CircleClose } from 'pit-element-icons'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElTag from '@pit-element-plus/components/tag'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { inputTagEmits } from './input-tag'\nimport {\n  useDragTag,\n  useHovering,\n  useInputTag,\n  useInputTagDom,\n} from './composables'\n\nimport type { InputTagProps } from './input-tag'\n\ndefineOptions({\n  name: 'ElInputTag',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<InputTagProps>(), {\n  tagType: 'info',\n  tagEffect: 'light',\n  effect: 'light',\n  trigger: 'Enter',\n  delimiter: '',\n  clearIcon: markRaw(CircleClose),\n  disabled: undefined,\n  validateEvent: true,\n  id: undefined,\n  tabindex: 0,\n  autocomplete: 'off',\n  saveOnBlur: true,\n  maxCollapseTags: 1,\n})\nconst emit = defineEmits(inputTagEmits)\n\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst { form, formItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, { formItemContext: formItem })\n\nconst needStatusIcon = computed(() => form?.statusIcon ?? false)\nconst validateState = computed(() => formItem?.validateState || '')\nconst validateIcon = computed(() => {\n  return validateState.value && ValidateComponentsMap[validateState.value]\n})\n\nconst {\n  inputRef,\n  wrapperRef,\n  tagTooltipRef,\n  isFocused,\n  inputValue,\n  size,\n  tagSize,\n  placeholder,\n  closable,\n  disabled,\n  showTagList,\n  collapseTagList,\n  handleDragged,\n  handlePaste,\n  handleInput,\n  handleKeydown,\n  handleKeyup,\n  handleRemoveTag,\n  handleClear,\n  handleCompositionStart,\n  handleCompositionUpdate,\n  handleCompositionEnd,\n  focus,\n  blur,\n} = useInputTag({ props, emit, formItem })\nconst { hovering, handleMouseEnter, handleMouseLeave } = useHovering()\nconst { calculatorRef, inputStyle } = useCalcInputWidth()\nconst {\n  dropIndicatorRef,\n  showDropIndicator,\n  handleDragStart,\n  handleDragOver,\n  handleDragEnd,\n} = useDragTag({ wrapperRef, handleDragged, afterDragged: focus })\nconst {\n  ns,\n  nsInput,\n  containerKls,\n  containerStyle,\n  innerKls,\n  showClear,\n  showSuffix,\n  tagStyle,\n  collapseItemRef,\n  innerRef,\n} = useInputTagDom({\n  props,\n  hovering,\n  isFocused,\n  inputValue,\n  disabled,\n  size,\n  validateState,\n  validateIcon,\n  needStatusIcon,\n})\n\ndefineExpose({\n  focus,\n  blur,\n})\n</script>\n","<template>\n  <div\n    ref=\"wrapperRef\"\n    :class=\"containerKls\"\n    :style=\"containerStyle\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n  >\n    <div v-if=\"slots.prefix\" :class=\"ns.e('prefix')\">\n      <slot name=\"prefix\" />\n    </div>\n    <div ref=\"innerRef\" :class=\"innerKls\">\n      <el-tag\n        v-for=\"(item, index) in showTagList\"\n        :key=\"index\"\n        :size=\"tagSize\"\n        :closable=\"closable\"\n        :type=\"tagType\"\n        :effect=\"tagEffect\"\n        :draggable=\"closable && draggable\"\n        :style=\"tagStyle\"\n        disable-transitions\n        @close=\"handleRemoveTag(index)\"\n        @dragstart=\"(event: DragEvent) => handleDragStart(event, index)\"\n        @dragover=\"(event: DragEvent) => handleDragOver(event, index)\"\n        @dragend=\"handleDragEnd\"\n        @drop.stop\n      >\n        <slot name=\"tag\" :value=\"item\" :index=\"index\">\n          {{ item }}\n        </slot>\n      </el-tag>\n      <el-tooltip\n        v-if=\"collapseTags && modelValue && modelValue.length > maxCollapseTags\"\n        ref=\"tagTooltipRef\"\n        :disabled=\"!collapseTagsTooltip\"\n        :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n        :effect=\"effect\"\n        placement=\"bottom\"\n      >\n        <template #default>\n          <div ref=\"collapseItemRef\" :class=\"ns.e('collapse-tag')\">\n            <el-tag\n              :closable=\"false\"\n              :size=\"tagSize\"\n              :type=\"tagType\"\n              :effect=\"tagEffect\"\n              disable-transitions\n            >\n              + {{ modelValue.length - maxCollapseTags }}\n            </el-tag>\n          </div>\n        </template>\n        <template #content>\n          <div :class=\"ns.e('input-tag-list')\">\n            <el-tag\n              v-for=\"(item, index) in collapseTagList\"\n              :key=\"index\"\n              :size=\"tagSize\"\n              :closable=\"closable\"\n              :type=\"tagType\"\n              :effect=\"tagEffect\"\n              disable-transitions\n              @close=\"handleRemoveTag(index + maxCollapseTags)\"\n            >\n              <slot name=\"tag\" :value=\"item\" :index=\"index + maxCollapseTags\">\n                {{ item }}\n              </slot>\n            </el-tag>\n          </div>\n        </template>\n      </el-tooltip>\n      <div :class=\"ns.e('input-wrapper')\">\n        <input\n          :id=\"inputId\"\n          ref=\"inputRef\"\n          v-model=\"inputValue\"\n          v-bind=\"attrs\"\n          type=\"text\"\n          :minlength=\"minlength\"\n          :maxlength=\"maxlength\"\n          :disabled=\"disabled\"\n          :readonly=\"readonly\"\n          :autocomplete=\"autocomplete\"\n          :tabindex=\"tabindex\"\n          :placeholder=\"placeholder\"\n          :autofocus=\"autofocus\"\n          :ariaLabel=\"ariaLabel\"\n          :class=\"ns.e('input')\"\n          :style=\"inputStyle\"\n          @compositionstart=\"handleCompositionStart\"\n          @compositionupdate=\"handleCompositionUpdate\"\n          @compositionend=\"handleCompositionEnd\"\n          @paste=\"handlePaste\"\n          @input=\"handleInput\"\n          @keydown=\"handleKeydown\"\n          @keyup=\"handleKeyup\"\n        />\n        <span\n          ref=\"calculatorRef\"\n          aria-hidden=\"true\"\n          :class=\"ns.e('input-calculator')\"\n          v-text=\"inputValue\"\n        />\n      </div>\n      <div\n        v-show=\"showDropIndicator\"\n        ref=\"dropIndicatorRef\"\n        :class=\"ns.e('drop-indicator')\"\n      />\n    </div>\n    <div v-if=\"showSuffix\" :class=\"ns.e('suffix')\">\n      <slot name=\"suffix\" />\n      <el-icon\n        v-if=\"showClear\"\n        :class=\"[ns.e('icon'), ns.e('clear')]\"\n        @mousedown.prevent=\"NOOP\"\n        @click=\"handleClear\"\n      >\n        <component :is=\"clearIcon\" />\n      </el-icon>\n      <el-icon\n        v-if=\"validateState && validateIcon && needStatusIcon\"\n        :class=\"[\n          nsInput.e('icon'),\n          nsInput.e('validateIcon'),\n          nsInput.is('loading', validateState === 'validating'),\n        ]\"\n      >\n        <component :is=\"validateIcon\" />\n      </el-icon>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, markRaw, useSlots } from 'vue'\nimport { useAttrs, useCalcInputWidth } from '@pit-element-plus/hooks'\nimport { NOOP, ValidateComponentsMap } from '@pit-element-plus/utils'\nimport { CircleClose } from 'pit-element-icons'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElTag from '@pit-element-plus/components/tag'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { inputTagEmits } from './input-tag'\nimport {\n  useDragTag,\n  useHovering,\n  useInputTag,\n  useInputTagDom,\n} from './composables'\n\nimport type { InputTagProps } from './input-tag'\n\ndefineOptions({\n  name: 'ElInputTag',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<InputTagProps>(), {\n  tagType: 'info',\n  tagEffect: 'light',\n  effect: 'light',\n  trigger: 'Enter',\n  delimiter: '',\n  clearIcon: markRaw(CircleClose),\n  disabled: undefined,\n  validateEvent: true,\n  id: undefined,\n  tabindex: 0,\n  autocomplete: 'off',\n  saveOnBlur: true,\n  maxCollapseTags: 1,\n})\nconst emit = defineEmits(inputTagEmits)\n\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst { form, formItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, { formItemContext: formItem })\n\nconst needStatusIcon = computed(() => form?.statusIcon ?? false)\nconst validateState = computed(() => formItem?.validateState || '')\nconst validateIcon = computed(() => {\n  return validateState.value && ValidateComponentsMap[validateState.value]\n})\n\nconst {\n  inputRef,\n  wrapperRef,\n  tagTooltipRef,\n  isFocused,\n  inputValue,\n  size,\n  tagSize,\n  placeholder,\n  closable,\n  disabled,\n  showTagList,\n  collapseTagList,\n  handleDragged,\n  handlePaste,\n  handleInput,\n  handleKeydown,\n  handleKeyup,\n  handleRemoveTag,\n  handleClear,\n  handleCompositionStart,\n  handleCompositionUpdate,\n  handleCompositionEnd,\n  focus,\n  blur,\n} = useInputTag({ props, emit, formItem })\nconst { hovering, handleMouseEnter, handleMouseLeave } = useHovering()\nconst { calculatorRef, inputStyle } = useCalcInputWidth()\nconst {\n  dropIndicatorRef,\n  showDropIndicator,\n  handleDragStart,\n  handleDragOver,\n  handleDragEnd,\n} = useDragTag({ wrapperRef, handleDragged, afterDragged: focus })\nconst {\n  ns,\n  nsInput,\n  containerKls,\n  containerStyle,\n  innerKls,\n  showClear,\n  showSuffix,\n  tagStyle,\n  collapseItemRef,\n  innerRef,\n} = useInputTagDom({\n  props,\n  hovering,\n  isFocused,\n  inputValue,\n  disabled,\n  size,\n  validateState,\n  validateIcon,\n  needStatusIcon,\n})\n\ndefineExpose({\n  focus,\n  blur,\n})\n</script>\n","<template>\n  <div\n    ref=\"wrapperRef\"\n    :class=\"containerKls\"\n    :style=\"containerStyle\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n  >\n    <div v-if=\"slots.prefix\" :class=\"ns.e('prefix')\">\n      <slot name=\"prefix\" />\n    </div>\n    <div ref=\"innerRef\" :class=\"innerKls\">\n      <el-tag\n        v-for=\"(item, index) in showTagList\"\n        :key=\"index\"\n        :size=\"tagSize\"\n        :closable=\"closable\"\n        :type=\"tagType\"\n        :effect=\"tagEffect\"\n        :draggable=\"closable && draggable\"\n        :style=\"tagStyle\"\n        disable-transitions\n        @close=\"handleRemoveTag(index)\"\n        @dragstart=\"(event: DragEvent) => handleDragStart(event, index)\"\n        @dragover=\"(event: DragEvent) => handleDragOver(event, index)\"\n        @dragend=\"handleDragEnd\"\n        @drop.stop\n      >\n        <slot name=\"tag\" :value=\"item\" :index=\"index\">\n          {{ item }}\n        </slot>\n      </el-tag>\n      <el-tooltip\n        v-if=\"collapseTags && modelValue && modelValue.length > maxCollapseTags\"\n        ref=\"tagTooltipRef\"\n        :disabled=\"!collapseTagsTooltip\"\n        :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n        :effect=\"effect\"\n        placement=\"bottom\"\n      >\n        <template #default>\n          <div ref=\"collapseItemRef\" :class=\"ns.e('collapse-tag')\">\n            <el-tag\n              :closable=\"false\"\n              :size=\"tagSize\"\n              :type=\"tagType\"\n              :effect=\"tagEffect\"\n              disable-transitions\n            >\n              + {{ modelValue.length - maxCollapseTags }}\n            </el-tag>\n          </div>\n        </template>\n        <template #content>\n          <div :class=\"ns.e('input-tag-list')\">\n            <el-tag\n              v-for=\"(item, index) in collapseTagList\"\n              :key=\"index\"\n              :size=\"tagSize\"\n              :closable=\"closable\"\n              :type=\"tagType\"\n              :effect=\"tagEffect\"\n              disable-transitions\n              @close=\"handleRemoveTag(index + maxCollapseTags)\"\n            >\n              <slot name=\"tag\" :value=\"item\" :index=\"index + maxCollapseTags\">\n                {{ item }}\n              </slot>\n            </el-tag>\n          </div>\n        </template>\n      </el-tooltip>\n      <div :class=\"ns.e('input-wrapper')\">\n        <input\n          :id=\"inputId\"\n          ref=\"inputRef\"\n          v-model=\"inputValue\"\n          v-bind=\"attrs\"\n          type=\"text\"\n          :minlength=\"minlength\"\n          :maxlength=\"maxlength\"\n          :disabled=\"disabled\"\n          :readonly=\"readonly\"\n          :autocomplete=\"autocomplete\"\n          :tabindex=\"tabindex\"\n          :placeholder=\"placeholder\"\n          :autofocus=\"autofocus\"\n          :ariaLabel=\"ariaLabel\"\n          :class=\"ns.e('input')\"\n          :style=\"inputStyle\"\n          @compositionstart=\"handleCompositionStart\"\n          @compositionupdate=\"handleCompositionUpdate\"\n          @compositionend=\"handleCompositionEnd\"\n          @paste=\"handlePaste\"\n          @input=\"handleInput\"\n          @keydown=\"handleKeydown\"\n          @keyup=\"handleKeyup\"\n        />\n        <span\n          ref=\"calculatorRef\"\n          aria-hidden=\"true\"\n          :class=\"ns.e('input-calculator')\"\n          v-text=\"inputValue\"\n        />\n      </div>\n      <div\n        v-show=\"showDropIndicator\"\n        ref=\"dropIndicatorRef\"\n        :class=\"ns.e('drop-indicator')\"\n      />\n    </div>\n    <div v-if=\"showSuffix\" :class=\"ns.e('suffix')\">\n      <slot name=\"suffix\" />\n      <el-icon\n        v-if=\"showClear\"\n        :class=\"[ns.e('icon'), ns.e('clear')]\"\n        @mousedown.prevent=\"NOOP\"\n        @click=\"handleClear\"\n      >\n        <component :is=\"clearIcon\" />\n      </el-icon>\n      <el-icon\n        v-if=\"validateState && validateIcon && needStatusIcon\"\n        :class=\"[\n          nsInput.e('icon'),\n          nsInput.e('validateIcon'),\n          nsInput.is('loading', validateState === 'validating'),\n        ]\"\n      >\n        <component :is=\"validateIcon\" />\n      </el-icon>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, markRaw, useSlots } from 'vue'\nimport { useAttrs, useCalcInputWidth } from '@pit-element-plus/hooks'\nimport { NOOP, ValidateComponentsMap } from '@pit-element-plus/utils'\nimport { CircleClose } from 'pit-element-icons'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElTag from '@pit-element-plus/components/tag'\nimport {\n  useFormItem,\n  useFormItemInputId,\n} from '@pit-element-plus/components/form'\nimport { inputTagEmits } from './input-tag'\nimport {\n  useDragTag,\n  useHovering,\n  useInputTag,\n  useInputTagDom,\n} from './composables'\n\nimport type { InputTagProps } from './input-tag'\n\ndefineOptions({\n  name: 'ElInputTag',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<InputTagProps>(), {\n  tagType: 'info',\n  tagEffect: 'light',\n  effect: 'light',\n  trigger: 'Enter',\n  delimiter: '',\n  clearIcon: markRaw(CircleClose),\n  disabled: undefined,\n  validateEvent: true,\n  id: undefined,\n  tabindex: 0,\n  autocomplete: 'off',\n  saveOnBlur: true,\n  maxCollapseTags: 1,\n})\nconst emit = defineEmits(inputTagEmits)\n\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst { form, formItem } = useFormItem()\nconst { inputId } = useFormItemInputId(props, { formItemContext: formItem })\n\nconst needStatusIcon = computed(() => form?.statusIcon ?? false)\nconst validateState = computed(() => formItem?.validateState || '')\nconst validateIcon = computed(() => {\n  return validateState.value && ValidateComponentsMap[validateState.value]\n})\n\nconst {\n  inputRef,\n  wrapperRef,\n  tagTooltipRef,\n  isFocused,\n  inputValue,\n  size,\n  tagSize,\n  placeholder,\n  closable,\n  disabled,\n  showTagList,\n  collapseTagList,\n  handleDragged,\n  handlePaste,\n  handleInput,\n  handleKeydown,\n  handleKeyup,\n  handleRemoveTag,\n  handleClear,\n  handleCompositionStart,\n  handleCompositionUpdate,\n  handleCompositionEnd,\n  focus,\n  blur,\n} = useInputTag({ props, emit, formItem })\nconst { hovering, handleMouseEnter, handleMouseLeave } = useHovering()\nconst { calculatorRef, inputStyle } = useCalcInputWidth()\nconst {\n  dropIndicatorRef,\n  showDropIndicator,\n  handleDragStart,\n  handleDragOver,\n  handleDragEnd,\n} = useDragTag({ wrapperRef, handleDragged, afterDragged: focus })\nconst {\n  ns,\n  nsInput,\n  containerKls,\n  containerStyle,\n  innerKls,\n  showClear,\n  showSuffix,\n  tagStyle,\n  collapseItemRef,\n  innerRef,\n} = useInputTagDom({\n  props,\n  hovering,\n  isFocused,\n  inputValue,\n  disabled,\n  size,\n  validateState,\n  validateIcon,\n  needStatusIcon,\n})\n\ndefineExpose({\n  focus,\n  blur,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport InputTag from './src/input-tag.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElInputTag: SFCWithInstall<typeof InputTag> = withInstall(InputTag)\nexport default ElInputTag\n\nexport * from './src/input-tag'\nexport type { InputTagInstance } from './src/instance'\n","import { buildProps, iconPropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes, PropType } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type Link from './link.vue'\n\nexport interface LinkProps {\n  /**\n   * @description type\n   */\n  type?: 'primary' | 'success' | 'warning' | 'info' | 'danger' | 'default'\n  /**\n   * @description when underlines should appear\n   */\n  underline?: boolean | 'always' | 'never' | 'hover'\n\n  /**\n   * @description whether the component is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description same as native hyperlink's `href`\n   */\n  href?: string\n  /**\n   * @description same as native hyperlink's `target`\n   */\n  target?:\n    | '_blank'\n    | '_parent'\n    | '_self'\n    | '_top'\n    | (string & NonNullable<unknown>)\n\n  /**\n   * @description icon component\n   */\n  icon?: IconPropType\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `LinkProps` instead.\n */\nexport const linkProps = buildProps({\n  /**\n   * @description type\n   */\n  type: {\n    type: String,\n    values: ['primary', 'success', 'warning', 'info', 'danger', 'default'],\n    default: undefined,\n  },\n  /**\n   * @description when underlines should appear\n   */\n  underline: {\n    type: [Boolean, String],\n    values: [true, false, 'always', 'never', 'hover'],\n    default: undefined,\n  },\n  /**\n   * @description whether the component is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description same as native hyperlink's `href`\n   */\n  href: { type: String, default: '' },\n  /**\n   * @description same as native hyperlink's `target`\n   */\n  target: {\n    type: String as PropType<'_blank' | '_parent' | '_self' | '_top' | string>,\n    default: '_self',\n  },\n  /**\n   * @description icon component\n   */\n  icon: {\n    type: iconPropType,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `LinkProps` instead.\n */\nexport type LinkPropsPublic = ExtractPublicPropTypes<typeof linkProps>\n\nexport const linkEmits = {\n  click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\nexport type LinkEmits = typeof linkEmits\n\nexport type LinkInstance = InstanceType<typeof Link> & unknown\nexport interface LinkConfigContext {\n  type?: LinkProps['type']\n  underline?: LinkProps['underline']\n}\n","<template>\n  <a\n    :class=\"linkKls\"\n    :href=\"disabled || !href ? undefined : href\"\n    :target=\"disabled || !href ? undefined : target\"\n    @click=\"handleClick\"\n  >\n    <el-icon v-if=\"icon\"><component :is=\"icon\" /></el-icon>\n    <span v-if=\"$slots.default\" :class=\"ns.e('inner')\">\n      <slot />\n    </span>\n\n    <slot v-if=\"$slots.icon\" name=\"icon\" />\n  </a>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { useDeprecated, useNamespace } from '@pit-element-plus/hooks'\nimport { isBoolean } from '@pit-element-plus/utils'\nimport { linkEmits } from './link'\n\nimport type { LinkProps } from './link'\n\ndefineOptions({\n  name: 'ElLink',\n})\nconst props = withDefaults(defineProps<LinkProps>(), {\n  type: undefined,\n  underline: undefined,\n  href: '',\n  target: '_self',\n})\nconst emit = defineEmits(linkEmits)\nconst globalConfig = useGlobalConfig('link')\n\nuseDeprecated(\n  {\n    scope: 'el-link',\n    from: 'The underline option (boolean)',\n    replacement: \"'always' | 'hover' | 'never'\",\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/link.html#underline',\n  },\n  computed(() => isBoolean(props.underline))\n)\n\nconst ns = useNamespace('link')\n\nconst linkKls = computed(() => [\n  ns.b(),\n  ns.m(props.type ?? globalConfig.value?.type ?? 'default'),\n  ns.is('disabled', props.disabled),\n  ns.is('underline', underline.value === 'always'),\n  ns.is('hover-underline', underline.value === 'hover' && !props.disabled),\n])\n\n// Boolean compatibility\nconst underline = computed(() => {\n  if (isBoolean(props.underline)) {\n    return props.underline ? 'hover' : 'never'\n  } else return props.underline ?? globalConfig.value?.underline ?? 'hover'\n})\n\nfunction handleClick(event: MouseEvent) {\n  if (!props.disabled) emit('click', event)\n}\n</script>\n","<template>\n  <a\n    :class=\"linkKls\"\n    :href=\"disabled || !href ? undefined : href\"\n    :target=\"disabled || !href ? undefined : target\"\n    @click=\"handleClick\"\n  >\n    <el-icon v-if=\"icon\"><component :is=\"icon\" /></el-icon>\n    <span v-if=\"$slots.default\" :class=\"ns.e('inner')\">\n      <slot />\n    </span>\n\n    <slot v-if=\"$slots.icon\" name=\"icon\" />\n  </a>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { useDeprecated, useNamespace } from '@pit-element-plus/hooks'\nimport { isBoolean } from '@pit-element-plus/utils'\nimport { linkEmits } from './link'\n\nimport type { LinkProps } from './link'\n\ndefineOptions({\n  name: 'ElLink',\n})\nconst props = withDefaults(defineProps<LinkProps>(), {\n  type: undefined,\n  underline: undefined,\n  href: '',\n  target: '_self',\n})\nconst emit = defineEmits(linkEmits)\nconst globalConfig = useGlobalConfig('link')\n\nuseDeprecated(\n  {\n    scope: 'el-link',\n    from: 'The underline option (boolean)',\n    replacement: \"'always' | 'hover' | 'never'\",\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/link.html#underline',\n  },\n  computed(() => isBoolean(props.underline))\n)\n\nconst ns = useNamespace('link')\n\nconst linkKls = computed(() => [\n  ns.b(),\n  ns.m(props.type ?? globalConfig.value?.type ?? 'default'),\n  ns.is('disabled', props.disabled),\n  ns.is('underline', underline.value === 'always'),\n  ns.is('hover-underline', underline.value === 'hover' && !props.disabled),\n])\n\n// Boolean compatibility\nconst underline = computed(() => {\n  if (isBoolean(props.underline)) {\n    return props.underline ? 'hover' : 'never'\n  } else return props.underline ?? globalConfig.value?.underline ?? 'hover'\n})\n\nfunction handleClick(event: MouseEvent) {\n  if (!props.disabled) emit('click', event)\n}\n</script>\n","<template>\n  <a\n    :class=\"linkKls\"\n    :href=\"disabled || !href ? undefined : href\"\n    :target=\"disabled || !href ? undefined : target\"\n    @click=\"handleClick\"\n  >\n    <el-icon v-if=\"icon\"><component :is=\"icon\" /></el-icon>\n    <span v-if=\"$slots.default\" :class=\"ns.e('inner')\">\n      <slot />\n    </span>\n\n    <slot v-if=\"$slots.icon\" name=\"icon\" />\n  </a>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { useDeprecated, useNamespace } from '@pit-element-plus/hooks'\nimport { isBoolean } from '@pit-element-plus/utils'\nimport { linkEmits } from './link'\n\nimport type { LinkProps } from './link'\n\ndefineOptions({\n  name: 'ElLink',\n})\nconst props = withDefaults(defineProps<LinkProps>(), {\n  type: undefined,\n  underline: undefined,\n  href: '',\n  target: '_self',\n})\nconst emit = defineEmits(linkEmits)\nconst globalConfig = useGlobalConfig('link')\n\nuseDeprecated(\n  {\n    scope: 'el-link',\n    from: 'The underline option (boolean)',\n    replacement: \"'always' | 'hover' | 'never'\",\n    version: '3.0.0',\n    ref: 'https://element-plus.org/en-US/component/link.html#underline',\n  },\n  computed(() => isBoolean(props.underline))\n)\n\nconst ns = useNamespace('link')\n\nconst linkKls = computed(() => [\n  ns.b(),\n  ns.m(props.type ?? globalConfig.value?.type ?? 'default'),\n  ns.is('disabled', props.disabled),\n  ns.is('underline', underline.value === 'always'),\n  ns.is('hover-underline', underline.value === 'hover' && !props.disabled),\n])\n\n// Boolean compatibility\nconst underline = computed(() => {\n  if (isBoolean(props.underline)) {\n    return props.underline ? 'hover' : 'never'\n  } else return props.underline ?? globalConfig.value?.underline ?? 'hover'\n})\n\nfunction handleClick(event: MouseEvent) {\n  if (!props.disabled) emit('click', event)\n}\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Link from './src/link.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElLink: SFCWithInstall<typeof Link> = withInstall(Link)\nexport default ElLink\n\nexport * from './src/link'\n","// @ts-nocheck\nimport { getEventCode, triggerEvent } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\n\nimport type MenuItem from './menu-item'\n\nclass SubMenu {\n  public subMenuItems: NodeList\n  public subIndex = 0\n  constructor(\n    public parent: MenuItem,\n    public domNode: ParentNode\n  ) {\n    this.subIndex = 0\n    this.init()\n  }\n\n  init(): void {\n    this.subMenuItems = this.domNode.querySelectorAll('li')\n    this.addListeners()\n  }\n\n  gotoSubIndex(idx: number): void {\n    if (idx === this.subMenuItems.length) {\n      idx = 0\n    } else if (idx < 0) {\n      idx = this.subMenuItems.length - 1\n    }\n    ;(this.subMenuItems[idx] as HTMLElement).focus()\n    this.subIndex = idx\n  }\n\n  addListeners(): void {\n    const parentNode = this.parent.domNode\n    Array.prototype.forEach.call(this.subMenuItems, (el: Element) => {\n      el.addEventListener('keydown', (event: KeyboardEvent) => {\n        const code = getEventCode(event)\n        let prevDef = false\n\n        switch (code) {\n          case EVENT_CODE.down: {\n            this.gotoSubIndex(this.subIndex + 1)\n            prevDef = true\n            break\n          }\n          case EVENT_CODE.up: {\n            this.gotoSubIndex(this.subIndex - 1)\n            prevDef = true\n            break\n          }\n          case EVENT_CODE.tab: {\n            triggerEvent(parentNode as HTMLElement, 'mouseleave')\n            break\n          }\n          case EVENT_CODE.enter:\n          case EVENT_CODE.numpadEnter:\n          case EVENT_CODE.space: {\n            prevDef = true\n            ;(event.currentTarget as HTMLElement).click()\n            break\n          }\n        }\n        if (prevDef) {\n          event.preventDefault()\n          event.stopPropagation()\n        }\n        return false\n      })\n    })\n  }\n}\n\nexport default SubMenu\n","// @ts-nocheck\nimport { getEventCode, triggerEvent } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport SubMenu from './submenu'\n\nclass MenuItem {\n  public submenu: SubMenu = null\n  constructor(\n    public domNode: HTMLElement,\n    namespace: string\n  ) {\n    this.submenu = null\n    this.init(namespace)\n  }\n\n  init(namespace: string): void {\n    this.domNode.setAttribute('tabindex', '0')\n    const menuChild = this.domNode.querySelector(`.${namespace}-menu`)\n    if (menuChild) {\n      this.submenu = new SubMenu(this, menuChild)\n    }\n    this.addListeners()\n  }\n\n  addListeners(): void {\n    this.domNode.addEventListener('keydown', (event: KeyboardEvent) => {\n      const code = getEventCode(event)\n      let prevDef = false\n\n      switch (code) {\n        case EVENT_CODE.down: {\n          triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n          this.submenu && this.submenu.gotoSubIndex(0)\n          prevDef = true\n          break\n        }\n        case EVENT_CODE.up: {\n          triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n          this.submenu &&\n            this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1)\n          prevDef = true\n          break\n        }\n        case EVENT_CODE.tab: {\n          triggerEvent(event.currentTarget as HTMLElement, 'mouseleave')\n          break\n        }\n        case EVENT_CODE.enter:\n        case EVENT_CODE.numpadEnter:\n        case EVENT_CODE.space: {\n          prevDef = true\n          ;(event.currentTarget as HTMLElement).click()\n          break\n        }\n      }\n      if (prevDef) {\n        event.preventDefault()\n      }\n    })\n  }\n}\n\nexport default MenuItem\n","import MenuItem from './menu-item'\n\nimport type { RendererNode } from 'vue'\n\nclass Menu {\n  constructor(\n    public domNode: RendererNode,\n    namespace: string\n  ) {\n    this.init(namespace)\n  }\n  init(namespace: string): void {\n    const menuChildren = this.domNode.childNodes\n    Array.from<Node>(menuChildren).forEach((child) => {\n      if (child.nodeType === 1) {\n        new MenuItem(child as HTMLElement, namespace)\n      }\n    })\n  }\n}\n\nexport default Menu\n","<template>\n  <transition mode=\"out-in\" v-bind=\"listeners\">\n    <slot />\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addClass, hasClass, removeClass } from '@pit-element-plus/utils'\n\nimport type { BaseTransitionProps, TransitionProps } from 'vue'\n\ndefineOptions({\n  name: 'ElMenuCollapseTransition',\n})\n\nconst ns = useNamespace('menu')\nconst listeners = {\n  onBeforeEnter: (el) => (el.style.opacity = '0.2'),\n  onEnter(el, done) {\n    addClass(el, `${ns.namespace.value}-opacity-transition`)\n    el.style.opacity = '1'\n    done()\n  },\n\n  onAfterEnter(el) {\n    removeClass(el, `${ns.namespace.value}-opacity-transition`)\n    el.style.opacity = ''\n  },\n\n  onBeforeLeave(el) {\n    if (!el.dataset) (el as any).dataset = {}\n\n    if (hasClass(el, ns.m('collapse'))) {\n      removeClass(el, ns.m('collapse'))\n      el.dataset.oldOverflow = el.style.overflow\n      el.dataset.scrollWidth = el.clientWidth.toString()\n      addClass(el, ns.m('collapse'))\n    } else {\n      addClass(el, ns.m('collapse'))\n      el.dataset.oldOverflow = el.style.overflow\n      el.dataset.scrollWidth = el.clientWidth.toString()\n      removeClass(el, ns.m('collapse'))\n    }\n\n    el.style.width = `${el.scrollWidth}px`\n    el.style.overflow = 'hidden'\n  },\n\n  onLeave(el: HTMLElement) {\n    addClass(el, 'horizontal-collapse-transition')\n    el.style.width = `${el.dataset.scrollWidth}px`\n  },\n} as BaseTransitionProps<HTMLElement> as TransitionProps\n</script>\n","<template>\n  <transition mode=\"out-in\" v-bind=\"listeners\">\n    <slot />\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addClass, hasClass, removeClass } from '@pit-element-plus/utils'\n\nimport type { BaseTransitionProps, TransitionProps } from 'vue'\n\ndefineOptions({\n  name: 'ElMenuCollapseTransition',\n})\n\nconst ns = useNamespace('menu')\nconst listeners = {\n  onBeforeEnter: (el) => (el.style.opacity = '0.2'),\n  onEnter(el, done) {\n    addClass(el, `${ns.namespace.value}-opacity-transition`)\n    el.style.opacity = '1'\n    done()\n  },\n\n  onAfterEnter(el) {\n    removeClass(el, `${ns.namespace.value}-opacity-transition`)\n    el.style.opacity = ''\n  },\n\n  onBeforeLeave(el) {\n    if (!el.dataset) (el as any).dataset = {}\n\n    if (hasClass(el, ns.m('collapse'))) {\n      removeClass(el, ns.m('collapse'))\n      el.dataset.oldOverflow = el.style.overflow\n      el.dataset.scrollWidth = el.clientWidth.toString()\n      addClass(el, ns.m('collapse'))\n    } else {\n      addClass(el, ns.m('collapse'))\n      el.dataset.oldOverflow = el.style.overflow\n      el.dataset.scrollWidth = el.clientWidth.toString()\n      removeClass(el, ns.m('collapse'))\n    }\n\n    el.style.width = `${el.scrollWidth}px`\n    el.style.overflow = 'hidden'\n  },\n\n  onLeave(el: HTMLElement) {\n    addClass(el, 'horizontal-collapse-transition')\n    el.style.width = `${el.dataset.scrollWidth}px`\n  },\n} as BaseTransitionProps<HTMLElement> as TransitionProps\n</script>\n","<template>\n  <transition mode=\"out-in\" v-bind=\"listeners\">\n    <slot />\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { addClass, hasClass, removeClass } from '@pit-element-plus/utils'\n\nimport type { BaseTransitionProps, TransitionProps } from 'vue'\n\ndefineOptions({\n  name: 'ElMenuCollapseTransition',\n})\n\nconst ns = useNamespace('menu')\nconst listeners = {\n  onBeforeEnter: (el) => (el.style.opacity = '0.2'),\n  onEnter(el, done) {\n    addClass(el, `${ns.namespace.value}-opacity-transition`)\n    el.style.opacity = '1'\n    done()\n  },\n\n  onAfterEnter(el) {\n    removeClass(el, `${ns.namespace.value}-opacity-transition`)\n    el.style.opacity = ''\n  },\n\n  onBeforeLeave(el) {\n    if (!el.dataset) (el as any).dataset = {}\n\n    if (hasClass(el, ns.m('collapse'))) {\n      removeClass(el, ns.m('collapse'))\n      el.dataset.oldOverflow = el.style.overflow\n      el.dataset.scrollWidth = el.clientWidth.toString()\n      addClass(el, ns.m('collapse'))\n    } else {\n      addClass(el, ns.m('collapse'))\n      el.dataset.oldOverflow = el.style.overflow\n      el.dataset.scrollWidth = el.clientWidth.toString()\n      removeClass(el, ns.m('collapse'))\n    }\n\n    el.style.width = `${el.scrollWidth}px`\n    el.style.overflow = 'hidden'\n  },\n\n  onLeave(el: HTMLElement) {\n    addClass(el, 'horizontal-collapse-transition')\n    el.style.width = `${el.dataset.scrollWidth}px`\n  },\n} as BaseTransitionProps<HTMLElement> as TransitionProps\n</script>\n","import { computed } from 'vue'\n\nimport type { ComponentInternalInstance, Ref } from 'vue'\n\nexport default function useMenu(\n  instance: ComponentInternalInstance,\n  currentIndex: Ref<string>\n) {\n  const indexPath = computed(() => {\n    let parent = instance.parent!\n    const path = [currentIndex.value]\n    while (parent.type.name !== 'ElMenu') {\n      if (parent.props.index) {\n        path.unshift(parent.props.index as string)\n      }\n      parent = parent.parent!\n    }\n    return path\n  })\n\n  const parentMenu = computed(() => {\n    let parent = instance.parent\n    while (parent && !['ElMenu', 'ElSubMenu'].includes(parent.type.name!)) {\n      parent = parent.parent\n    }\n    return parent!\n  })\n\n  return {\n    parentMenu,\n    indexPath,\n  }\n}\n","import { computed } from 'vue'\nimport { TinyColor } from '@ctrl/tinycolor'\n\nimport type { MenuProps } from './menu'\n\nexport default function useMenuColor(props: MenuProps) {\n  const menuBarColor = computed(() => {\n    const color = props.backgroundColor\n    return color ? new TinyColor(color).shade(20).toString() : ''\n  })\n  return menuBarColor\n}\n","import { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport useMenuColor from './use-menu-color'\n\nimport type { MenuProps } from './menu'\n\nexport const useMenuCssVar = (props: MenuProps, level: number) => {\n  const ns = useNamespace('menu')\n  return computed(() =>\n    ns.cssVarBlock({\n      'text-color': props.textColor || '',\n      'hover-text-color': props.textColor || '',\n      'bg-color': props.backgroundColor || '',\n      'hover-bg-color': useMenuColor(props).value || '',\n      'active-color': props.activeTextColor || '',\n      level: `${level}`,\n    })\n  )\n}\n","export const MENU_INJECTION_KEY = 'rootMenu'\n\nexport const SUB_MENU_INJECTION_KEY = 'subMenu:'\n","import {\n  Fragment,\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  vShow,\n  watch,\n  withDirectives,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport ElCollapseTransition from '@pit-element-plus/components/collapse-transition'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport {\n  buildProps,\n  definePropType,\n  focusElement,\n  iconPropType,\n  isString,\n  isUndefined,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ArrowDown, ArrowRight } from 'pit-element-icons'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport useMenu from './use-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { Placement } from '@pit-element-plus/components/popper'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n  VNodeArrayChildren,\n} from 'vue'\nimport type { MenuProvider, SubMenuProvider } from './types'\n\nexport const subMenuProps = buildProps({\n  /**\n   * @description unique identification\n   */\n  index: {\n    type: String,\n    required: true,\n  },\n  /**\n   * @description timeout before showing a sub-menu(inherit `show-timeout` of the menu by default.)\n   */\n  showTimeout: Number,\n  /**\n   * @description timeout before hiding a sub-menu(inherit `hide-timeout` of the menu by default.)\n   */\n  hideTimeout: Number,\n  /**\n   * @description custom class name for the popup menu\n   */\n  popperClass: String,\n  /**\n   * @description custom style for the popup menu\n   */\n  popperStyle: {\n    type: definePropType<string | CSSProperties>([String, Object]),\n  },\n  /**\n   * @description whether the sub-menu is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description whether popup menu is teleported to the body\n   */\n  teleported: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description offset of the popper (overrides the `popper` of menu)\n   */\n  popperOffset: Number,\n  /**\n   * @description Icon when menu are expanded and submenu are closed, `expand-close-icon` and `expand-open-icon` need to be passed together to take effect\n   */\n  expandCloseIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description Icon when menu are expanded and submenu are opened, `expand-open-icon` and `expand-close-icon` need to be passed together to take effect\n   */\n  expandOpenIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description Icon when menu are collapsed and submenu are closed, `collapse-close-icon` and `collapse-open-icon` need to be passed together to take effect\n   */\n  collapseCloseIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description Icon when menu are collapsed and submenu are opened, `collapse-open-icon` and `collapse-close-icon` need to be passed together to take effect\n   */\n  collapseOpenIcon: {\n    type: iconPropType,\n  },\n} as const)\nexport type SubMenuProps = ExtractPropTypes<typeof subMenuProps>\nexport type SubMenuPropsPublic = ExtractPublicPropTypes<typeof subMenuProps>\n\nconst COMPONENT_NAME = 'ElSubMenu'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  props: subMenuProps,\n\n  setup(props, { slots, expose }) {\n    const instance = getCurrentInstance()!\n    const { indexPath, parentMenu } = useMenu(\n      instance,\n      computed(() => props.index)\n    )\n    const nsMenu = useNamespace('menu')\n    const nsSubMenu = useNamespace('sub-menu')\n\n    // inject\n    const rootMenu = inject<MenuProvider>(MENU_INJECTION_KEY)\n    if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\n    const subMenu = inject<SubMenuProvider>(\n      `${SUB_MENU_INJECTION_KEY}${parentMenu.value!.uid}`\n    )\n    if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\n    const items = ref<MenuProvider['items']>({})\n    const subMenus = ref<MenuProvider['subMenus']>({})\n\n    let timeout: (() => void) | undefined\n    const mouseInChild = ref(false)\n    const verticalTitleRef = ref<HTMLDivElement>()\n    const vPopper = ref<TooltipInstance>()\n\n    // computed\n    const isFirstLevel = computed(() => subMenu.level === 0)\n    const currentPlacement = computed<Placement>(() =>\n      mode.value === 'horizontal' && isFirstLevel.value\n        ? 'bottom-start'\n        : 'right-start'\n    )\n    const subMenuTitleIcon = computed(() => {\n      const isExpandedMode =\n        (mode.value === 'horizontal' && isFirstLevel.value) ||\n        (mode.value === 'vertical' && !rootMenu.props.collapse)\n\n      if (isExpandedMode) {\n        if (props.expandCloseIcon && props.expandOpenIcon) {\n          return opened.value ? props.expandOpenIcon : props.expandCloseIcon\n        }\n        return ArrowDown\n      } else {\n        if (props.collapseCloseIcon && props.collapseOpenIcon) {\n          return opened.value ? props.collapseOpenIcon : props.collapseCloseIcon\n        }\n        return ArrowRight\n      }\n    })\n\n    const appendToBody = computed(() => {\n      const value = props.teleported\n      return isUndefined(value) ? isFirstLevel.value : value\n    })\n    const menuTransitionName = computed(() =>\n      rootMenu.props.collapse\n        ? `${nsMenu.namespace.value}-zoom-in-left`\n        : `${nsMenu.namespace.value}-zoom-in-top`\n    )\n    const fallbackPlacements = computed<Placement[]>(() =>\n      mode.value === 'horizontal' && isFirstLevel.value\n        ? [\n            'bottom-start',\n            'bottom-end',\n            'top-start',\n            'top-end',\n            'right-start',\n            'left-start',\n          ]\n        : [\n            'right-start',\n            'right',\n            'right-end',\n            'left-start',\n            'bottom-start',\n            'bottom-end',\n            'top-start',\n            'top-end',\n          ]\n    )\n    const opened = computed(() => rootMenu.openedMenus.includes(props.index))\n    const active = computed(() =>\n      [...Object.values(items.value), ...Object.values(subMenus.value)].some(\n        ({ active }) => active\n      )\n    )\n\n    const mode = computed(() => rootMenu.props.mode)\n    const persistent = computed(() => rootMenu.props.persistent)\n    const item = reactive({\n      index: props.index,\n      indexPath,\n      active,\n    })\n\n    const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1)\n\n    const subMenuPopperOffset = computed(\n      () => props.popperOffset ?? rootMenu.props.popperOffset\n    )\n\n    const subMenuPopperClass = computed(\n      () => props.popperClass ?? rootMenu.props.popperClass\n    )\n\n    const subMenuPopperStyle = computed(\n      () => props.popperStyle ?? rootMenu.props.popperStyle\n    )\n\n    const subMenuShowTimeout = computed(\n      () => props.showTimeout ?? rootMenu.props.showTimeout\n    )\n\n    const subMenuHideTimeout = computed(\n      () => props.hideTimeout ?? rootMenu.props.hideTimeout\n    )\n\n    // methods\n    const doDestroy = () =>\n      vPopper.value?.popperRef?.popperInstanceRef?.destroy()\n\n    const handleCollapseToggle = (value: boolean) => {\n      if (!value) {\n        doDestroy()\n      }\n    }\n\n    const handleClick = () => {\n      if (\n        (rootMenu.props.menuTrigger === 'hover' &&\n          rootMenu.props.mode === 'horizontal') ||\n        (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n        props.disabled\n      )\n        return\n\n      rootMenu.handleSubMenuClick({\n        index: props.index,\n        indexPath: indexPath.value,\n        active: active.value,\n      })\n    }\n\n    const handleMouseenter = (\n      event: MouseEvent | FocusEvent,\n      showTimeout = subMenuShowTimeout.value\n    ) => {\n      if (event.type === 'focus') return\n\n      if (\n        (rootMenu.props.menuTrigger === 'click' &&\n          rootMenu.props.mode === 'horizontal') ||\n        (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n        props.disabled\n      ) {\n        subMenu.mouseInChild.value = true\n        return\n      }\n      subMenu.mouseInChild.value = true\n\n      timeout?.()\n      ;({ stop: timeout } = useTimeoutFn(() => {\n        rootMenu.openMenu(props.index, indexPath.value)\n      }, showTimeout))\n\n      if (appendToBody.value) {\n        parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'))\n      }\n\n      if (event.type === 'mouseenter' && event.target) {\n        nextTick(() => {\n          focusElement(event.target as HTMLElement, { preventScroll: true })\n        })\n      }\n    }\n\n    const handleMouseleave = (deepDispatch = false) => {\n      if (\n        (rootMenu.props.menuTrigger === 'click' &&\n          rootMenu.props.mode === 'horizontal') ||\n        (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')\n      ) {\n        subMenu.mouseInChild.value = false\n        return\n      }\n      timeout?.()\n      subMenu.mouseInChild.value = false\n      ;({ stop: timeout } = useTimeoutFn(\n        () =>\n          !mouseInChild.value &&\n          rootMenu.closeMenu(props.index, indexPath.value),\n        subMenuHideTimeout.value\n      ))\n\n      if (appendToBody.value && deepDispatch) {\n        subMenu.handleMouseleave?.(true)\n      }\n    }\n\n    watch(\n      () => rootMenu.props.collapse,\n      (value) => handleCollapseToggle(Boolean(value))\n    )\n\n    // provide\n    {\n      const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n        subMenus.value[item.index] = item\n      }\n      const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n        delete subMenus.value[item.index]\n      }\n      provide<SubMenuProvider>(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {\n        addSubMenu,\n        removeSubMenu,\n        handleMouseleave,\n        mouseInChild,\n        level: subMenu.level + 1,\n      })\n    }\n\n    // expose\n    expose({\n      opened,\n    })\n\n    // lifecycle\n    onMounted(() => {\n      rootMenu.addSubMenu(item)\n      subMenu.addSubMenu(item)\n    })\n\n    onBeforeUnmount(() => {\n      subMenu.removeSubMenu(item)\n      rootMenu.removeSubMenu(item)\n    })\n\n    return () => {\n      const titleTag: VNodeArrayChildren = [\n        slots.title?.(),\n        h(\n          ElIcon,\n          {\n            class: nsSubMenu.e('icon-arrow'),\n            style: {\n              transform: opened.value\n                ? (props.expandCloseIcon && props.expandOpenIcon) ||\n                  (props.collapseCloseIcon &&\n                    props.collapseOpenIcon &&\n                    rootMenu.props.collapse)\n                  ? 'none'\n                  : 'rotateZ(180deg)'\n                : 'none',\n            },\n          },\n          {\n            default: () =>\n              isString(subMenuTitleIcon.value)\n                ? h(instance.appContext.components[subMenuTitleIcon.value])\n                : h(subMenuTitleIcon.value),\n          }\n        ),\n      ]\n\n      // this render function is only used for bypass `Vue`'s compiler caused patching issue.\n      const child = rootMenu.isMenuPopup\n        ? h(\n            ElTooltip,\n            {\n              ref: vPopper,\n              visible: opened.value,\n              effect: 'light',\n              pure: true,\n              offset: subMenuPopperOffset.value,\n              showArrow: false,\n              persistent: persistent.value,\n              popperClass: subMenuPopperClass.value,\n              popperStyle: subMenuPopperStyle.value,\n              placement: currentPlacement.value,\n              teleported: appendToBody.value,\n              fallbackPlacements: fallbackPlacements.value,\n              transition: menuTransitionName.value,\n              gpuAcceleration: false,\n            },\n            {\n              content: () =>\n                h(\n                  'div',\n                  {\n                    class: [\n                      nsMenu.m(mode.value),\n                      nsMenu.m('popup-container'),\n                      subMenuPopperClass.value,\n                    ],\n                    onMouseenter: (evt: MouseEvent) =>\n                      handleMouseenter(evt, 100),\n                    onMouseleave: () => handleMouseleave(true),\n                    onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100),\n                  },\n                  [\n                    h(\n                      'ul',\n                      {\n                        class: [\n                          nsMenu.b(),\n                          nsMenu.m('popup'),\n                          nsMenu.m(`popup-${currentPlacement.value}`),\n                        ],\n                        style: ulStyle.value,\n                      },\n                      [slots.default?.()]\n                    ),\n                  ]\n                ),\n              default: () =>\n                h(\n                  'div',\n                  {\n                    class: nsSubMenu.e('title'),\n                    onClick: handleClick,\n                  },\n                  titleTag\n                ),\n            }\n          )\n        : h(Fragment, {}, [\n            h(\n              'div',\n              {\n                class: nsSubMenu.e('title'),\n                ref: verticalTitleRef,\n                onClick: handleClick,\n              },\n              titleTag\n            ),\n            h(\n              ElCollapseTransition,\n              {},\n              {\n                default: () =>\n                  withDirectives(\n                    h(\n                      'ul',\n                      {\n                        role: 'menu',\n                        class: [nsMenu.b(), nsMenu.m('inline')],\n                        style: ulStyle.value,\n                      },\n                      [slots.default?.()]\n                    ),\n                    [[vShow, opened.value]]\n                  ),\n              }\n            ),\n          ])\n\n      return h(\n        'li',\n        {\n          class: [\n            nsSubMenu.b(),\n            nsSubMenu.is('active', active.value),\n            nsSubMenu.is('opened', opened.value),\n            nsSubMenu.is('disabled', props.disabled),\n          ],\n          role: 'menuitem',\n          ariaHaspopup: true,\n          ariaExpanded: opened.value,\n          onMouseenter: handleMouseenter,\n          onMouseleave: () => handleMouseleave(),\n          onFocus: handleMouseenter,\n        },\n        [child]\n      )\n    }\n  },\n})\n","import {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  nextTick,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  watch,\n  watchEffect,\n  withDirectives,\n} from 'vue'\nimport { unrefElement, useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { More } from 'pit-element-icons'\nimport {\n  buildProps,\n  definePropType,\n  flattedChildren,\n  iconPropType,\n  isArray,\n  isObject,\n  isString,\n  isUndefined,\n  mutable,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ClickOutside as vClickoutside } from '@pit-element-plus/directives'\nimport Menubar from './utils/menu-bar'\nimport ElMenuCollapseTransition from './menu-collapse-transition.vue'\nimport ElSubMenu from './sub-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { PopperEffect } from '@pit-element-plus/components/popper'\nimport type { MenuItemClicked, MenuProvider, SubMenuProvider } from './types'\nimport type { NavigationFailure, Router } from 'vue-router'\nimport type {\n  CSSProperties,\n  Component,\n  DirectiveArguments,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n  VNode,\n  VNodeArrayChildren,\n} from 'vue'\nimport type { UseResizeObserverReturn } from '@vueuse/core'\n\nexport const menuProps = buildProps({\n  /**\n   * @description menu display mode\n   */\n  mode: {\n    type: String,\n    values: ['horizontal', 'vertical'],\n    default: 'vertical',\n  },\n  /**\n   * @description index of active menu on page load\n   */\n  defaultActive: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description array that contains indexes of currently active sub-menus\n   */\n  defaultOpeneds: {\n    type: definePropType<string[]>(Array),\n    default: () => mutable([] as const),\n  },\n  /**\n   * @description whether only one sub-menu can be active\n   */\n  uniqueOpened: Boolean,\n  /**\n   * @description whether `vue-router` mode is activated. If true, index will be used as 'path' to activate the route action. Use with `default-active` to set the active item on load.\n   */\n  router: Boolean,\n  /**\n   * @description how sub-menus are triggered, only works when `mode` is 'horizontal'\n   */\n  menuTrigger: {\n    type: String,\n    values: ['hover', 'click'],\n    default: 'hover',\n  },\n  /**\n   * @description whether the menu is collapsed (available only in vertical mode)\n   */\n  collapse: Boolean,\n  /**\n   * @description background color of Menu (hex format) (deprecated, use `--bg-color` instead)\n   * @deprecated use `--bg-color` instead\n   */\n  backgroundColor: String,\n  /**\n   * @description text color of Menu (hex format) (deprecated, use `--text-color` instead)\n   * @deprecated use `--text-color` instead\n   */\n  textColor: String,\n  /**\n   * @description text color of currently active menu item (hex format) (deprecated, use `--active-color` instead)\n   * @deprecated use `--active-color` instead\n   */\n  activeTextColor: String,\n  /**\n   * @description optional, whether menu is collapsed when clicking outside\n   */\n  closeOnClickOutside: Boolean,\n  /**\n   * @description whether to enable the collapse transition\n   */\n  collapseTransition: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether the menu is ellipsis (available only in horizontal mode)\n   */\n  ellipsis: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description offset of the popper (effective for all submenus)\n   */\n  popperOffset: {\n    type: Number,\n    default: 6,\n  },\n  /**\n   * @description custom ellipsis icon (available only in horizontal mode and ellipsis is true)\n   */\n  ellipsisIcon: {\n    type: iconPropType,\n    default: () => More,\n  },\n  /**\n   * @description Tooltip theme, built-in theme: `dark` / `light` when menu is collapsed\n   */\n  popperEffect: {\n    type: definePropType<PopperEffect>(String),\n    default: 'dark',\n  },\n  /**\n   * @description custom class name for all popup menus\n   */\n  popperClass: String,\n  /**\n   * @description custom style for all popup menus\n   */\n  popperStyle: {\n    type: definePropType<string | CSSProperties>([String, Object]),\n  },\n  /**\n   * @description control timeout for all menus before showing\n   */\n  showTimeout: {\n    type: Number,\n    default: 300,\n  },\n  /**\n   * @description control timeout for all menus before hiding\n   */\n  hideTimeout: {\n    type: Number,\n    default: 300,\n  },\n  /**\n   * @description when menu inactive and `persistent` is `false` , dropdown menu will be destroyed\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\nexport type MenuProps = ExtractPropTypes<typeof menuProps>\nexport type MenuPropsPublic = ExtractPublicPropTypes<typeof menuProps>\n\nconst checkIndexPath = (indexPath: unknown): indexPath is string[] =>\n  isArray(indexPath) && indexPath.every((path) => isString(path))\n\nexport const menuEmits = {\n  close: (index: string, indexPath: string[]) =>\n    isString(index) && checkIndexPath(indexPath),\n\n  open: (index: string, indexPath: string[]) =>\n    isString(index) && checkIndexPath(indexPath),\n\n  select: (\n    index: string,\n    indexPath: string[],\n    item: MenuItemClicked,\n    routerResult?: Promise<void | NavigationFailure>\n  ) =>\n    isString(index) &&\n    checkIndexPath(indexPath) &&\n    isObject(item) &&\n    (isUndefined(routerResult) || routerResult instanceof Promise),\n}\nexport type MenuEmits = typeof menuEmits\n\nconst DEFAULT_MORE_ITEM_WIDTH = 64\n\nexport default defineComponent({\n  name: 'ElMenu',\n\n  props: menuProps,\n  emits: menuEmits,\n\n  setup(props, { emit, slots, expose }) {\n    const instance = getCurrentInstance()!\n    const router = instance.appContext.config.globalProperties.$router as Router\n    const menu = ref<HTMLUListElement>()\n    const subMenu = ref<HTMLElement>()\n    const nsMenu = useNamespace('menu')\n    const nsSubMenu = useNamespace('sub-menu')\n    let moreItemWidth = DEFAULT_MORE_ITEM_WIDTH\n\n    // data\n    const sliceIndex = ref(-1)\n\n    const openedMenus = ref<MenuProvider['openedMenus']>(\n      props.defaultOpeneds && !props.collapse\n        ? props.defaultOpeneds.slice(0)\n        : []\n    )\n    const activeIndex = ref<MenuProvider['activeIndex']>(props.defaultActive)\n    const items = ref<MenuProvider['items']>({})\n    const subMenus = ref<MenuProvider['subMenus']>({})\n\n    // computed\n    const isMenuPopup = computed<MenuProvider['isMenuPopup']>(\n      () =>\n        props.mode === 'horizontal' ||\n        (props.mode === 'vertical' && props.collapse)\n    )\n\n    // methods\n    const initMenu = () => {\n      const activeItem = activeIndex.value && items.value[activeIndex.value]\n      if (!activeItem || props.mode === 'horizontal' || props.collapse) return\n\n      const indexPath = activeItem.indexPath\n\n      // 展开该菜单项的路径上所有子菜单\n      // expand all subMenus of the menu item\n      indexPath.forEach((index) => {\n        const subMenu = subMenus.value[index]\n        subMenu && openMenu(index, subMenu.indexPath)\n      })\n    }\n\n    const openMenu: MenuProvider['openMenu'] = (index, indexPath) => {\n      if (openedMenus.value.includes(index)) return\n      // 将不在该菜单路径下的其余菜单收起\n      // collapse all menu that are not under current menu item\n      if (props.uniqueOpened) {\n        openedMenus.value = openedMenus.value.filter((index: string) =>\n          indexPath.includes(index)\n        )\n      }\n      openedMenus.value.push(index)\n      emit('open', index, indexPath)\n    }\n\n    const close = (index: string) => {\n      const i = openedMenus.value.indexOf(index)\n      if (i !== -1) {\n        openedMenus.value.splice(i, 1)\n      }\n    }\n\n    const closeMenu: MenuProvider['closeMenu'] = (index, indexPath) => {\n      close(index)\n      emit('close', index, indexPath)\n    }\n\n    const handleSubMenuClick: MenuProvider['handleSubMenuClick'] = ({\n      index,\n      indexPath,\n    }) => {\n      const isOpened = openedMenus.value.includes(index)\n\n      isOpened ? closeMenu(index, indexPath) : openMenu(index, indexPath)\n    }\n\n    const handleMenuItemClick: MenuProvider['handleMenuItemClick'] = (\n      menuItem\n    ) => {\n      if (props.mode === 'horizontal' || props.collapse) {\n        openedMenus.value = []\n      }\n      const { index, indexPath } = menuItem\n      if (isNil(index) || isNil(indexPath)) return\n\n      if (props.router && router) {\n        const route = menuItem.route || index\n        const routerResult = router.push(route).then((res) => {\n          if (!res) activeIndex.value = index\n          return res\n        })\n        emit(\n          'select',\n          index,\n          indexPath,\n          { index, indexPath, route },\n          routerResult\n        )\n      } else {\n        activeIndex.value = index\n        emit('select', index, indexPath, { index, indexPath })\n      }\n    }\n\n    const updateActiveIndex = (val: string) => {\n      const itemsInData = items.value\n      const item =\n        itemsInData[val] ||\n        (activeIndex.value && itemsInData[activeIndex.value]) ||\n        itemsInData[props.defaultActive]\n\n      activeIndex.value = item?.index ?? val\n    }\n\n    const calcMenuItemWidth = (menuItem: HTMLElement) => {\n      const computedStyle = getComputedStyle(menuItem)\n      const marginLeft = Number.parseInt(computedStyle.marginLeft, 10)\n      const marginRight = Number.parseInt(computedStyle.marginRight, 10)\n      return menuItem.offsetWidth + marginLeft + marginRight || 0\n    }\n\n    const calcSliceIndex = () => {\n      if (!menu.value) return -1\n\n      const items = Array.from(menu.value.childNodes).filter(\n        (item) =>\n          item.nodeName !== '#comment' &&\n          (item.nodeName !== '#text' || item.nodeValue)\n      ) as HTMLElement[]\n\n      const computedMenuStyle = getComputedStyle(menu.value)\n      const paddingLeft = Number.parseInt(computedMenuStyle.paddingLeft, 10)\n      const paddingRight = Number.parseInt(computedMenuStyle.paddingRight, 10)\n      const menuWidth = menu.value.clientWidth - paddingLeft - paddingRight\n\n      let calcWidth = 0\n      let sliceIndex = 0\n      items.forEach((item, index) => {\n        calcWidth += calcMenuItemWidth(item)\n        if (calcWidth <= menuWidth - moreItemWidth) {\n          sliceIndex = index + 1\n        }\n      })\n      return sliceIndex === items.length ? -1 : sliceIndex\n    }\n\n    const getIndexPath = (index: string) => subMenus.value[index].indexPath\n\n    // Common computer monitor FPS is 60Hz, which means 60 redraws per second. Calculation formula: 1000ms/60 ≈ 16.67ms, In order to avoid a certain chance of repeated triggering when `resize`, set wait to 16.67 * 2 = 33.34\n    const debounce = (fn: () => void, wait = 33.34) => {\n      let timer: ReturnType<typeof setTimeout> | null\n      return () => {\n        timer && clearTimeout(timer)\n        timer = setTimeout(() => {\n          fn()\n        }, wait)\n      }\n    }\n\n    let isFirstTimeRender = true\n    const handleResize = () => {\n      const el = unrefElement(subMenu)\n      if (el) moreItemWidth = calcMenuItemWidth(el) || DEFAULT_MORE_ITEM_WIDTH\n      if (sliceIndex.value === calcSliceIndex()) return\n      const callback = () => {\n        sliceIndex.value = -1\n        nextTick(() => {\n          sliceIndex.value = calcSliceIndex()\n        })\n      }\n      // execute callback directly when first time resize to avoid shaking\n      isFirstTimeRender ? callback() : debounce(callback)()\n      isFirstTimeRender = false\n    }\n\n    watch(\n      () => props.defaultActive,\n      (currentActive) => {\n        if (!items.value[currentActive]) {\n          activeIndex.value = ''\n        }\n        updateActiveIndex(currentActive)\n      }\n    )\n\n    watch(\n      () => props.collapse,\n      (value) => {\n        if (value) openedMenus.value = []\n      }\n    )\n\n    watch(items.value, initMenu)\n\n    let resizeStopper: UseResizeObserverReturn['stop']\n    watchEffect(() => {\n      if (props.mode === 'horizontal' && props.ellipsis)\n        resizeStopper = useResizeObserver(menu, handleResize).stop\n      else resizeStopper?.()\n    })\n\n    const mouseInChild = ref(false)\n\n    // provide\n    {\n      const addSubMenu: MenuProvider['addSubMenu'] = (item) => {\n        subMenus.value[item.index] = item\n      }\n\n      const removeSubMenu: MenuProvider['removeSubMenu'] = (item) => {\n        delete subMenus.value[item.index]\n      }\n\n      const addMenuItem: MenuProvider['addMenuItem'] = (item) => {\n        items.value[item.index] = item\n      }\n\n      const removeMenuItem: MenuProvider['removeMenuItem'] = (item) => {\n        delete items.value[item.index]\n      }\n\n      provide<MenuProvider>(\n        MENU_INJECTION_KEY,\n        reactive({\n          props,\n          openedMenus,\n          items,\n          subMenus,\n          activeIndex,\n          isMenuPopup,\n\n          addMenuItem,\n          removeMenuItem,\n          addSubMenu,\n          removeSubMenu,\n          openMenu,\n          closeMenu,\n          handleMenuItemClick,\n          handleSubMenuClick,\n        })\n      )\n\n      provide<SubMenuProvider>(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {\n        addSubMenu,\n        removeSubMenu,\n        mouseInChild,\n        level: 0,\n      })\n    }\n\n    // lifecycle\n    onMounted(() => {\n      if (props.mode === 'horizontal') {\n        new Menubar(instance.vnode.el!, nsMenu.namespace.value)\n      }\n    })\n\n    {\n      const open = (index: string) => {\n        const { indexPath } = subMenus.value[index]\n        indexPath.forEach((i) => openMenu(i, indexPath))\n      }\n\n      expose({\n        open,\n        close,\n        updateActiveIndex,\n        handleResize,\n      })\n    }\n\n    const ulStyle = useMenuCssVar(props, 0)\n\n    return () => {\n      let slot: VNodeArrayChildren = slots.default?.() ?? []\n      const vShowMore: VNode[] = []\n\n      if (props.mode === 'horizontal' && menu.value) {\n        const originalSlot = (\n          flattedChildren(slot) as VNodeArrayChildren\n        ).filter((vnode) => {\n          // Filter text and comment nodes (https://github.com/vuejs/core/blob/c875019d49b4c36a88d929ccadc31ad414747c7b/packages/shared/src/shapeFlags.ts#L5)\n          return (vnode as VNode)?.shapeFlag !== 8\n        })\n        const slotDefault =\n          sliceIndex.value === -1\n            ? originalSlot\n            : originalSlot.slice(0, sliceIndex.value)\n\n        const slotMore =\n          sliceIndex.value === -1 ? [] : originalSlot.slice(sliceIndex.value)\n\n        if (slotMore?.length && props.ellipsis) {\n          slot = slotDefault\n          vShowMore.push(\n            h(\n              ElSubMenu,\n              {\n                ref: subMenu,\n                index: 'sub-menu-more',\n                class: nsSubMenu.e('hide-arrow'),\n                popperOffset: props.popperOffset,\n              },\n              {\n                title: () =>\n                  h(\n                    ElIcon,\n                    {\n                      class: nsSubMenu.e('icon-more'),\n                    },\n                    {\n                      default: () => h(props.ellipsisIcon as Component),\n                    }\n                  ),\n                default: () => slotMore,\n              }\n            )\n          )\n        }\n      }\n\n      const directives: DirectiveArguments = props.closeOnClickOutside\n        ? [\n            [\n              vClickoutside,\n              () => {\n                if (!openedMenus.value.length) return\n\n                if (!mouseInChild.value) {\n                  openedMenus.value.forEach((openedMenu) =>\n                    emit('close', openedMenu, getIndexPath(openedMenu))\n                  )\n\n                  openedMenus.value = []\n                }\n              },\n            ],\n          ]\n        : []\n\n      const vMenu = withDirectives(\n        h(\n          'ul',\n          {\n            key: String(props.collapse),\n            role: 'menubar',\n            ref: menu,\n            style: ulStyle.value,\n            class: {\n              [nsMenu.b()]: true,\n              [nsMenu.m(props.mode)]: true,\n              [nsMenu.m('collapse')]: props.collapse,\n            },\n          },\n          [...slot, ...vShowMore]\n        ),\n        directives\n      )\n\n      if (props.collapseTransition && props.mode === 'vertical') {\n        return h(ElMenuCollapseTransition, () => vMenu)\n      }\n\n      return vMenu\n    }\n  },\n})\n","import {\n  buildProps,\n  definePropType,\n  isArray,\n  isString,\n} from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { MenuItemRegistered } from './types'\n\nexport interface MenuItemProps {\n  /**\n   * @description unique identification\n   * - will be required in the next major version\n   * - required: true\n   */\n  index?: string | null\n  /**\n   * @description Vue Router object\n   */\n  route?: RouteLocationRaw\n  /**\n   * @description whether disabled\n   */\n  disabled?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `MenuItemProps` instead.\n */\nexport const menuItemProps = buildProps({\n  /**\n   * @description unique identification\n   */\n  index: {\n    type: definePropType<string | null>([String, null]),\n    // will be required in the next major version\n    // required: true,\n    default: null,\n  },\n  /**\n   * @description Vue Router object\n   */\n  route: {\n    type: definePropType<RouteLocationRaw>([String, Object]),\n  },\n  /**\n   * @description whether disabled\n   */\n  disabled: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `MenuItemProps` instead.\n */\nexport type MenuItemPropsPublic = ExtractPublicPropTypes<typeof menuItemProps>\n\nexport const menuItemEmits = {\n  click: (item: MenuItemRegistered) =>\n    isString(item.index) && isArray(item.indexPath),\n}\nexport type MenuItemEmits = typeof menuItemEmits\n","<template>\n  <li\n    :class=\"[\n      nsMenuItem.b(),\n      nsMenuItem.is('active', active),\n      nsMenuItem.is('disabled', disabled),\n    ]\"\n    role=\"menuitem\"\n    tabindex=\"-1\"\n    @click=\"handleClick\"\n  >\n    <el-tooltip\n      v-if=\"\n        parentMenu.type.name === 'ElMenu' &&\n        rootMenu.props.collapse &&\n        $slots.title\n      \"\n      :effect=\"rootMenu.props.popperEffect\"\n      placement=\"right\"\n      :fallback-placements=\"['left']\"\n      :popper-class=\"rootMenu.props.popperClass\"\n      :popper-style=\"rootMenu.props.popperStyle\"\n      :persistent=\"rootMenu.props.persistent\"\n      focus-on-target\n    >\n      <template #content>\n        <slot name=\"title\" />\n      </template>\n      <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n        <slot />\n      </div>\n    </el-tooltip>\n    <template v-else>\n      <slot />\n      <slot name=\"title\" />\n    </template>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\n// @ts-nocheck\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  reactive,\n  toRef,\n} from 'vue'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { debugWarn, isPropAbsent, throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport useMenu from './use-menu'\nimport { menuItemEmits } from './menu-item'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { MenuItemProps } from './menu-item'\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types'\n\nconst COMPONENT_NAME = 'ElMenuItem'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<MenuItemProps>(), {\n  index: null,\n})\nconst emit = defineEmits(menuItemEmits)\n\nisPropAbsent(props.index) &&\n  debugWarn(COMPONENT_NAME, 'Missing required prop: \"index\"')\n\nconst instance = getCurrentInstance()!\nconst rootMenu = inject<MenuProvider>(MENU_INJECTION_KEY)\nconst nsMenu = useNamespace('menu')\nconst nsMenuItem = useNamespace('menu-item')\nif (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\nconst { parentMenu, indexPath } = useMenu(instance, toRef(props, 'index'))\n\nconst subMenu = inject<SubMenuProvider>(\n  `${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`\n)\nif (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\nconst active = computed(() => props.index === rootMenu.activeIndex)\nconst item: MenuItemRegistered = reactive({\n  index: props.index,\n  indexPath,\n  active,\n})\n\nconst handleClick = () => {\n  if (!props.disabled) {\n    rootMenu.handleMenuItemClick({\n      index: props.index,\n      indexPath: indexPath.value,\n      route: props.route,\n    })\n    emit('click', item)\n  }\n}\n\nonMounted(() => {\n  subMenu.addSubMenu(item)\n  rootMenu.addMenuItem(item)\n})\n\nonBeforeUnmount(() => {\n  subMenu.removeSubMenu(item)\n  rootMenu.removeMenuItem(item)\n})\n\ndefineExpose({\n  parentMenu,\n  rootMenu,\n  active,\n  nsMenu,\n  nsMenuItem,\n  handleClick,\n})\n</script>\n","<template>\n  <li\n    :class=\"[\n      nsMenuItem.b(),\n      nsMenuItem.is('active', active),\n      nsMenuItem.is('disabled', disabled),\n    ]\"\n    role=\"menuitem\"\n    tabindex=\"-1\"\n    @click=\"handleClick\"\n  >\n    <el-tooltip\n      v-if=\"\n        parentMenu.type.name === 'ElMenu' &&\n        rootMenu.props.collapse &&\n        $slots.title\n      \"\n      :effect=\"rootMenu.props.popperEffect\"\n      placement=\"right\"\n      :fallback-placements=\"['left']\"\n      :popper-class=\"rootMenu.props.popperClass\"\n      :popper-style=\"rootMenu.props.popperStyle\"\n      :persistent=\"rootMenu.props.persistent\"\n      focus-on-target\n    >\n      <template #content>\n        <slot name=\"title\" />\n      </template>\n      <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n        <slot />\n      </div>\n    </el-tooltip>\n    <template v-else>\n      <slot />\n      <slot name=\"title\" />\n    </template>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\n// @ts-nocheck\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  reactive,\n  toRef,\n} from 'vue'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { debugWarn, isPropAbsent, throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport useMenu from './use-menu'\nimport { menuItemEmits } from './menu-item'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { MenuItemProps } from './menu-item'\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types'\n\nconst COMPONENT_NAME = 'ElMenuItem'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<MenuItemProps>(), {\n  index: null,\n})\nconst emit = defineEmits(menuItemEmits)\n\nisPropAbsent(props.index) &&\n  debugWarn(COMPONENT_NAME, 'Missing required prop: \"index\"')\n\nconst instance = getCurrentInstance()!\nconst rootMenu = inject<MenuProvider>(MENU_INJECTION_KEY)\nconst nsMenu = useNamespace('menu')\nconst nsMenuItem = useNamespace('menu-item')\nif (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\nconst { parentMenu, indexPath } = useMenu(instance, toRef(props, 'index'))\n\nconst subMenu = inject<SubMenuProvider>(\n  `${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`\n)\nif (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\nconst active = computed(() => props.index === rootMenu.activeIndex)\nconst item: MenuItemRegistered = reactive({\n  index: props.index,\n  indexPath,\n  active,\n})\n\nconst handleClick = () => {\n  if (!props.disabled) {\n    rootMenu.handleMenuItemClick({\n      index: props.index,\n      indexPath: indexPath.value,\n      route: props.route,\n    })\n    emit('click', item)\n  }\n}\n\nonMounted(() => {\n  subMenu.addSubMenu(item)\n  rootMenu.addMenuItem(item)\n})\n\nonBeforeUnmount(() => {\n  subMenu.removeSubMenu(item)\n  rootMenu.removeMenuItem(item)\n})\n\ndefineExpose({\n  parentMenu,\n  rootMenu,\n  active,\n  nsMenu,\n  nsMenuItem,\n  handleClick,\n})\n</script>\n","<template>\n  <li\n    :class=\"[\n      nsMenuItem.b(),\n      nsMenuItem.is('active', active),\n      nsMenuItem.is('disabled', disabled),\n    ]\"\n    role=\"menuitem\"\n    tabindex=\"-1\"\n    @click=\"handleClick\"\n  >\n    <el-tooltip\n      v-if=\"\n        parentMenu.type.name === 'ElMenu' &&\n        rootMenu.props.collapse &&\n        $slots.title\n      \"\n      :effect=\"rootMenu.props.popperEffect\"\n      placement=\"right\"\n      :fallback-placements=\"['left']\"\n      :popper-class=\"rootMenu.props.popperClass\"\n      :popper-style=\"rootMenu.props.popperStyle\"\n      :persistent=\"rootMenu.props.persistent\"\n      focus-on-target\n    >\n      <template #content>\n        <slot name=\"title\" />\n      </template>\n      <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n        <slot />\n      </div>\n    </el-tooltip>\n    <template v-else>\n      <slot />\n      <slot name=\"title\" />\n    </template>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\n// @ts-nocheck\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  reactive,\n  toRef,\n} from 'vue'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { debugWarn, isPropAbsent, throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport useMenu from './use-menu'\nimport { menuItemEmits } from './menu-item'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { MenuItemProps } from './menu-item'\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types'\n\nconst COMPONENT_NAME = 'ElMenuItem'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<MenuItemProps>(), {\n  index: null,\n})\nconst emit = defineEmits(menuItemEmits)\n\nisPropAbsent(props.index) &&\n  debugWarn(COMPONENT_NAME, 'Missing required prop: \"index\"')\n\nconst instance = getCurrentInstance()!\nconst rootMenu = inject<MenuProvider>(MENU_INJECTION_KEY)\nconst nsMenu = useNamespace('menu')\nconst nsMenuItem = useNamespace('menu-item')\nif (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\nconst { parentMenu, indexPath } = useMenu(instance, toRef(props, 'index'))\n\nconst subMenu = inject<SubMenuProvider>(\n  `${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`\n)\nif (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\nconst active = computed(() => props.index === rootMenu.activeIndex)\nconst item: MenuItemRegistered = reactive({\n  index: props.index,\n  indexPath,\n  active,\n})\n\nconst handleClick = () => {\n  if (!props.disabled) {\n    rootMenu.handleMenuItemClick({\n      index: props.index,\n      indexPath: indexPath.value,\n      route: props.route,\n    })\n    emit('click', item)\n  }\n}\n\nonMounted(() => {\n  subMenu.addSubMenu(item)\n  rootMenu.addMenuItem(item)\n})\n\nonBeforeUnmount(() => {\n  subMenu.removeSubMenu(item)\n  rootMenu.removeMenuItem(item)\n})\n\ndefineExpose({\n  parentMenu,\n  rootMenu,\n  active,\n  nsMenu,\n  nsMenuItem,\n  handleClick,\n})\n</script>\n","import type { ExtractPublicPropTypes } from 'vue'\n\nexport interface MenuItemGroupProps {\n  /**\n   * @description group title\n   */\n  title?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `MenuItemGroupProps` instead.\n */\nexport const menuItemGroupProps = {\n  /**\n   * @description group title\n   */\n  title: String,\n} as const\n\n/**\n * @deprecated Removed after 3.0.0, Use `MenuItemGroupProps` instead.\n */\nexport type MenuItemGroupPropsPublic = ExtractPublicPropTypes<\n  typeof menuItemGroupProps\n>\n","<template>\n  <li :class=\"ns.b()\">\n    <div :class=\"ns.e('title')\">\n      <template v-if=\"!$slots.title\">{{ title }}</template>\n      <slot v-else name=\"title\" />\n    </div>\n    <ul>\n      <slot />\n    </ul>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { MenuItemGroupProps } from './menu-item-group'\n\ndefineOptions({\n  name: 'ElMenuItemGroup',\n})\ndefineProps<MenuItemGroupProps>()\n\nconst ns = useNamespace('menu-item-group')\n</script>\n","<template>\n  <li :class=\"ns.b()\">\n    <div :class=\"ns.e('title')\">\n      <template v-if=\"!$slots.title\">{{ title }}</template>\n      <slot v-else name=\"title\" />\n    </div>\n    <ul>\n      <slot />\n    </ul>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { MenuItemGroupProps } from './menu-item-group'\n\ndefineOptions({\n  name: 'ElMenuItemGroup',\n})\ndefineProps<MenuItemGroupProps>()\n\nconst ns = useNamespace('menu-item-group')\n</script>\n","<template>\n  <li :class=\"ns.b()\">\n    <div :class=\"ns.e('title')\">\n      <template v-if=\"!$slots.title\">{{ title }}</template>\n      <slot v-else name=\"title\" />\n    </div>\n    <ul>\n      <slot />\n    </ul>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { MenuItemGroupProps } from './menu-item-group'\n\ndefineOptions({\n  name: 'ElMenuItemGroup',\n})\ndefineProps<MenuItemGroupProps>()\n\nconst ns = useNamespace('menu-item-group')\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Menu from './src/menu'\nimport MenuItem from './src/menu-item.vue'\nimport MenuItemGroup from './src/menu-item-group.vue'\nimport SubMenu from './src/sub-menu'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElMenu: SFCWithInstall<typeof Menu> & {\n  MenuItem: typeof MenuItem\n  MenuItemGroup: typeof MenuItemGroup\n  SubMenu: typeof SubMenu\n} = withInstall(Menu, {\n  MenuItem,\n  MenuItemGroup,\n  SubMenu,\n})\nexport default ElMenu\nexport const ElMenuItem: SFCWithInstall<typeof MenuItem> =\n  withNoopInstall(MenuItem)\nexport const ElMenuItemGroup: SFCWithInstall<typeof MenuItemGroup> =\n  withNoopInstall(MenuItemGroup)\nexport const ElSubMenu: SFCWithInstall<typeof SubMenu> =\n  withNoopInstall(SubMenu)\n\nexport * from './src/menu'\nexport * from './src/menu-item'\nexport * from './src/menu-item-group'\nexport * from './src/sub-menu'\nexport * from './src/types'\nexport * from './src/instance'\nexport * from './src/tokens'\n","import type { ComputedRef, InjectionKey, WritableComputedRef } from 'vue'\n\nexport interface ElPaginationContext {\n  currentPage?: WritableComputedRef<number>\n  pageCount?: ComputedRef<number>\n  disabled?: ComputedRef<boolean>\n  changeEvent?: (val: number) => void\n  handleSizeChange?: (val: number) => void\n}\n\nexport const elPaginationKey: InjectionKey<ElPaginationContext> =\n  Symbol('elPaginationKey')\n","import { buildProps, iconPropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type Prev from './prev.vue'\n\nexport const paginationPrevProps = buildProps({\n  disabled: Boolean,\n  currentPage: {\n    type: Number,\n    default: 1,\n  },\n  prevText: {\n    type: String,\n  },\n  prevIcon: {\n    type: iconPropType,\n  },\n} as const)\n\nexport const paginationPrevEmits = {\n  click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\n\nexport type PaginationPrevProps = ExtractPropTypes<typeof paginationPrevProps>\nexport type PaginationPrevPropsPublic = ExtractPublicPropTypes<\n  typeof paginationPrevProps\n>\n\nexport type PrevInstance = InstanceType<typeof Prev> & unknown\n","<template>\n  <button\n    type=\"button\"\n    class=\"btn-prev\"\n    :disabled=\"internalDisabled\"\n    :aria-label=\"prevText || t('el.pagination.prev')\"\n    :aria-disabled=\"internalDisabled\"\n    @click=\"$emit('click', $event)\"\n  >\n    <span v-if=\"prevText\">{{ prevText }}</span>\n    <el-icon v-else>\n      <component :is=\"prevIcon\" />\n    </el-icon>\n  </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { paginationPrevEmits, paginationPrevProps } from './prev'\n\ndefineOptions({\n  name: 'ElPaginationPrev',\n})\n\nconst props = defineProps(paginationPrevProps)\ndefineEmits(paginationPrevEmits)\n\nconst { t } = useLocale()\n\nconst internalDisabled = computed(\n  () => props.disabled || props.currentPage <= 1\n)\n</script>\n","<template>\n  <button\n    type=\"button\"\n    class=\"btn-prev\"\n    :disabled=\"internalDisabled\"\n    :aria-label=\"prevText || t('el.pagination.prev')\"\n    :aria-disabled=\"internalDisabled\"\n    @click=\"$emit('click', $event)\"\n  >\n    <span v-if=\"prevText\">{{ prevText }}</span>\n    <el-icon v-else>\n      <component :is=\"prevIcon\" />\n    </el-icon>\n  </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { paginationPrevEmits, paginationPrevProps } from './prev'\n\ndefineOptions({\n  name: 'ElPaginationPrev',\n})\n\nconst props = defineProps(paginationPrevProps)\ndefineEmits(paginationPrevEmits)\n\nconst { t } = useLocale()\n\nconst internalDisabled = computed(\n  () => props.disabled || props.currentPage <= 1\n)\n</script>\n","<template>\n  <button\n    type=\"button\"\n    class=\"btn-prev\"\n    :disabled=\"internalDisabled\"\n    :aria-label=\"prevText || t('el.pagination.prev')\"\n    :aria-disabled=\"internalDisabled\"\n    @click=\"$emit('click', $event)\"\n  >\n    <span v-if=\"prevText\">{{ prevText }}</span>\n    <el-icon v-else>\n      <component :is=\"prevIcon\" />\n    </el-icon>\n  </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { paginationPrevEmits, paginationPrevProps } from './prev'\n\ndefineOptions({\n  name: 'ElPaginationPrev',\n})\n\nconst props = defineProps(paginationPrevProps)\ndefineEmits(paginationPrevEmits)\n\nconst { t } = useLocale()\n\nconst internalDisabled = computed(\n  () => props.disabled || props.currentPage <= 1\n)\n</script>\n","import { buildProps, iconPropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type Next from './next.vue'\n\nexport const paginationNextProps = buildProps({\n  disabled: Boolean,\n  currentPage: {\n    type: Number,\n    default: 1,\n  },\n  pageCount: {\n    type: Number,\n    default: 50,\n  },\n  nextText: {\n    type: String,\n  },\n  nextIcon: {\n    type: iconPropType,\n  },\n} as const)\n\nexport type PaginationNextProps = ExtractPropTypes<typeof paginationNextProps>\nexport type PaginationNextPropsPublic = ExtractPublicPropTypes<\n  typeof paginationNextProps\n>\n\nexport type NextInstance = InstanceType<typeof Next> & unknown\n","<template>\n  <button\n    type=\"button\"\n    class=\"btn-next\"\n    :disabled=\"internalDisabled\"\n    :aria-label=\"nextText || t('el.pagination.next')\"\n    :aria-disabled=\"internalDisabled\"\n    @click=\"$emit('click', $event)\"\n  >\n    <span v-if=\"nextText\">{{ nextText }}</span>\n    <el-icon v-else>\n      <component :is=\"nextIcon\" />\n    </el-icon>\n  </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { paginationNextProps } from './next'\n\ndefineOptions({\n  name: 'ElPaginationNext',\n})\n\nconst props = defineProps(paginationNextProps)\n\ndefineEmits(['click'])\n\nconst { t } = useLocale()\n\nconst internalDisabled = computed(\n  () =>\n    props.disabled ||\n    props.currentPage === props.pageCount ||\n    props.pageCount === 0\n)\n</script>\n","<template>\n  <button\n    type=\"button\"\n    class=\"btn-next\"\n    :disabled=\"internalDisabled\"\n    :aria-label=\"nextText || t('el.pagination.next')\"\n    :aria-disabled=\"internalDisabled\"\n    @click=\"$emit('click', $event)\"\n  >\n    <span v-if=\"nextText\">{{ nextText }}</span>\n    <el-icon v-else>\n      <component :is=\"nextIcon\" />\n    </el-icon>\n  </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { paginationNextProps } from './next'\n\ndefineOptions({\n  name: 'ElPaginationNext',\n})\n\nconst props = defineProps(paginationNextProps)\n\ndefineEmits(['click'])\n\nconst { t } = useLocale()\n\nconst internalDisabled = computed(\n  () =>\n    props.disabled ||\n    props.currentPage === props.pageCount ||\n    props.pageCount === 0\n)\n</script>\n","<template>\n  <button\n    type=\"button\"\n    class=\"btn-next\"\n    :disabled=\"internalDisabled\"\n    :aria-label=\"nextText || t('el.pagination.next')\"\n    :aria-disabled=\"internalDisabled\"\n    @click=\"$emit('click', $event)\"\n  >\n    <span v-if=\"nextText\">{{ nextText }}</span>\n    <el-icon v-else>\n      <component :is=\"nextIcon\" />\n    </el-icon>\n  </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { paginationNextProps } from './next'\n\ndefineOptions({\n  name: 'ElPaginationNext',\n})\n\nconst props = defineProps(paginationNextProps)\n\ndefineEmits(['click'])\n\nconst { t } = useLocale()\n\nconst internalDisabled = computed(\n  () =>\n    props.disabled ||\n    props.currentPage === props.pageCount ||\n    props.pageCount === 0\n)\n</script>\n","import { inject } from 'vue'\nimport { elPaginationKey } from './constants'\n\nexport const usePagination = () => inject(elPaginationKey, {})\n","import { buildProps, definePropType, mutable } from '@pit-element-plus/utils'\nimport { componentSizes } from '@pit-element-plus/constants'\n\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\nimport type Sizes from './sizes.vue'\n\nexport const paginationSizesProps = buildProps({\n  pageSize: {\n    type: Number,\n    required: true,\n  },\n  pageSizes: {\n    type: definePropType<number[]>(Array),\n    default: () => mutable([10, 20, 30, 40, 50, 100] as const),\n  },\n  popperClass: {\n    type: String,\n  },\n  popperStyle: {\n    type: definePropType<string | CSSProperties>([String, Object]),\n  },\n  disabled: Boolean,\n  teleported: Boolean,\n  size: {\n    type: String,\n    values: componentSizes,\n  },\n  appendSizeTo: String,\n} as const)\n\nexport type PaginationSizesProps = ExtractPropTypes<typeof paginationSizesProps>\nexport type PaginationSizesPropsPublic = ExtractPublicPropTypes<\n  typeof paginationSizesProps\n>\n\nexport type SizesInstance = InstanceType<typeof Sizes> & unknown\n","<template>\n  <span :class=\"ns.e('sizes')\">\n    <el-select\n      :model-value=\"innerPageSize\"\n      :disabled=\"disabled\"\n      :popper-class=\"popperClass\"\n      :popper-style=\"popperStyle\"\n      :size=\"size\"\n      :teleported=\"teleported\"\n      :clearable=\"false\"\n      :filterable=\"false\"\n      :validate-event=\"false\"\n      :append-to=\"appendSizeTo\"\n      @change=\"handleChange\"\n    >\n      <el-option\n        v-for=\"item in innerPageSizes\"\n        :key=\"item\"\n        :value=\"item\"\n        :label=\"item + t('el.pagination.pagesize')\"\n      />\n    </el-select>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { ElOption, ElSelect } from '@pit-element-plus/components/select'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { isArray } from '@pit-element-plus/utils'\nimport { usePagination } from '../usePagination'\nimport { paginationSizesProps } from './sizes'\n\ndefineOptions({\n  name: 'ElPaginationSizes',\n})\n\nconst props = defineProps(paginationSizesProps)\nconst emit = defineEmits(['page-size-change'])\nconst { t } = useLocale()\nconst ns = useNamespace('pagination')\nconst pagination = usePagination()\nconst innerPageSize = ref<number>(props.pageSize!)\n\nwatch(\n  () => props.pageSizes,\n  (newVal, oldVal) => {\n    if (isEqual(newVal, oldVal)) return\n    if (isArray(newVal)) {\n      const pageSize = newVal.includes(props.pageSize!)\n        ? props.pageSize\n        : props.pageSizes[0]\n      emit('page-size-change', pageSize)\n    }\n  }\n)\n\nwatch(\n  () => props.pageSize,\n  (newVal) => {\n    innerPageSize.value = newVal!\n  }\n)\n\nconst innerPageSizes = computed(() => props.pageSizes)\nfunction handleChange(val: number) {\n  if (val !== innerPageSize.value) {\n    innerPageSize.value = val\n    pagination.handleSizeChange?.(Number(val))\n  }\n}\n</script>\n","<template>\n  <span :class=\"ns.e('sizes')\">\n    <el-select\n      :model-value=\"innerPageSize\"\n      :disabled=\"disabled\"\n      :popper-class=\"popperClass\"\n      :popper-style=\"popperStyle\"\n      :size=\"size\"\n      :teleported=\"teleported\"\n      :clearable=\"false\"\n      :filterable=\"false\"\n      :validate-event=\"false\"\n      :append-to=\"appendSizeTo\"\n      @change=\"handleChange\"\n    >\n      <el-option\n        v-for=\"item in innerPageSizes\"\n        :key=\"item\"\n        :value=\"item\"\n        :label=\"item + t('el.pagination.pagesize')\"\n      />\n    </el-select>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { ElOption, ElSelect } from '@pit-element-plus/components/select'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { isArray } from '@pit-element-plus/utils'\nimport { usePagination } from '../usePagination'\nimport { paginationSizesProps } from './sizes'\n\ndefineOptions({\n  name: 'ElPaginationSizes',\n})\n\nconst props = defineProps(paginationSizesProps)\nconst emit = defineEmits(['page-size-change'])\nconst { t } = useLocale()\nconst ns = useNamespace('pagination')\nconst pagination = usePagination()\nconst innerPageSize = ref<number>(props.pageSize!)\n\nwatch(\n  () => props.pageSizes,\n  (newVal, oldVal) => {\n    if (isEqual(newVal, oldVal)) return\n    if (isArray(newVal)) {\n      const pageSize = newVal.includes(props.pageSize!)\n        ? props.pageSize\n        : props.pageSizes[0]\n      emit('page-size-change', pageSize)\n    }\n  }\n)\n\nwatch(\n  () => props.pageSize,\n  (newVal) => {\n    innerPageSize.value = newVal!\n  }\n)\n\nconst innerPageSizes = computed(() => props.pageSizes)\nfunction handleChange(val: number) {\n  if (val !== innerPageSize.value) {\n    innerPageSize.value = val\n    pagination.handleSizeChange?.(Number(val))\n  }\n}\n</script>\n","<template>\n  <span :class=\"ns.e('sizes')\">\n    <el-select\n      :model-value=\"innerPageSize\"\n      :disabled=\"disabled\"\n      :popper-class=\"popperClass\"\n      :popper-style=\"popperStyle\"\n      :size=\"size\"\n      :teleported=\"teleported\"\n      :clearable=\"false\"\n      :filterable=\"false\"\n      :validate-event=\"false\"\n      :append-to=\"appendSizeTo\"\n      @change=\"handleChange\"\n    >\n      <el-option\n        v-for=\"item in innerPageSizes\"\n        :key=\"item\"\n        :value=\"item\"\n        :label=\"item + t('el.pagination.pagesize')\"\n      />\n    </el-select>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { ElOption, ElSelect } from '@pit-element-plus/components/select'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { isArray } from '@pit-element-plus/utils'\nimport { usePagination } from '../usePagination'\nimport { paginationSizesProps } from './sizes'\n\ndefineOptions({\n  name: 'ElPaginationSizes',\n})\n\nconst props = defineProps(paginationSizesProps)\nconst emit = defineEmits(['page-size-change'])\nconst { t } = useLocale()\nconst ns = useNamespace('pagination')\nconst pagination = usePagination()\nconst innerPageSize = ref<number>(props.pageSize!)\n\nwatch(\n  () => props.pageSizes,\n  (newVal, oldVal) => {\n    if (isEqual(newVal, oldVal)) return\n    if (isArray(newVal)) {\n      const pageSize = newVal.includes(props.pageSize!)\n        ? props.pageSize\n        : props.pageSizes[0]\n      emit('page-size-change', pageSize)\n    }\n  }\n)\n\nwatch(\n  () => props.pageSize,\n  (newVal) => {\n    innerPageSize.value = newVal!\n  }\n)\n\nconst innerPageSizes = computed(() => props.pageSizes)\nfunction handleChange(val: number) {\n  if (val !== innerPageSize.value) {\n    innerPageSize.value = val\n    pagination.handleSizeChange?.(Number(val))\n  }\n}\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\nimport { componentSizes } from '@pit-element-plus/constants'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type Jumper from './jumper.vue'\n\nexport const paginationJumperProps = buildProps({\n  size: {\n    type: String,\n    values: componentSizes,\n  },\n} as const)\n\nexport type PaginationJumperProps = ExtractPropTypes<\n  typeof paginationJumperProps\n>\nexport type PaginationJumperPropsPublic = ExtractPublicPropTypes<\n  typeof paginationJumperProps\n>\n\nexport type PaginationJumperInstance = InstanceType<typeof Jumper> & unknown\n","<template>\n  <span :class=\"ns.e('jump')\" :disabled=\"disabled\">\n    <span :class=\"[ns.e('goto')]\">{{ t('el.pagination.goto') }}</span>\n    <el-input\n      :size=\"size\"\n      :class=\"[ns.e('editor'), ns.is('in-pagination')]\"\n      :min=\"1\"\n      :max=\"pageCount\"\n      :disabled=\"disabled\"\n      :model-value=\"innerValue\"\n      :validate-event=\"false\"\n      :aria-label=\"t('el.pagination.page')\"\n      type=\"number\"\n      @update:model-value=\"handleInput\"\n      @change=\"handleChange\"\n    />\n    <span :class=\"[ns.e('classifier')]\">{{\n      t('el.pagination.pageClassifier')\n    }}</span>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElInput from '@pit-element-plus/components/input'\nimport { usePagination } from '../usePagination'\nimport { paginationJumperProps } from './jumper'\n\ndefineOptions({\n  name: 'ElPaginationJumper',\n})\n\ndefineProps(paginationJumperProps)\nconst { t } = useLocale()\nconst ns = useNamespace('pagination')\nconst { pageCount, disabled, currentPage, changeEvent } = usePagination()\nconst userInput = ref<number | string>()\nconst innerValue = computed(() => userInput.value ?? currentPage?.value)\n\nfunction handleInput(val: number | string) {\n  userInput.value = val ? +val : ''\n}\n\nfunction handleChange(val: number | string) {\n  val = Math.trunc(+val)\n  changeEvent?.(val)\n  userInput.value = undefined\n}\n</script>\n","<template>\n  <span :class=\"ns.e('jump')\" :disabled=\"disabled\">\n    <span :class=\"[ns.e('goto')]\">{{ t('el.pagination.goto') }}</span>\n    <el-input\n      :size=\"size\"\n      :class=\"[ns.e('editor'), ns.is('in-pagination')]\"\n      :min=\"1\"\n      :max=\"pageCount\"\n      :disabled=\"disabled\"\n      :model-value=\"innerValue\"\n      :validate-event=\"false\"\n      :aria-label=\"t('el.pagination.page')\"\n      type=\"number\"\n      @update:model-value=\"handleInput\"\n      @change=\"handleChange\"\n    />\n    <span :class=\"[ns.e('classifier')]\">{{\n      t('el.pagination.pageClassifier')\n    }}</span>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElInput from '@pit-element-plus/components/input'\nimport { usePagination } from '../usePagination'\nimport { paginationJumperProps } from './jumper'\n\ndefineOptions({\n  name: 'ElPaginationJumper',\n})\n\ndefineProps(paginationJumperProps)\nconst { t } = useLocale()\nconst ns = useNamespace('pagination')\nconst { pageCount, disabled, currentPage, changeEvent } = usePagination()\nconst userInput = ref<number | string>()\nconst innerValue = computed(() => userInput.value ?? currentPage?.value)\n\nfunction handleInput(val: number | string) {\n  userInput.value = val ? +val : ''\n}\n\nfunction handleChange(val: number | string) {\n  val = Math.trunc(+val)\n  changeEvent?.(val)\n  userInput.value = undefined\n}\n</script>\n","<template>\n  <span :class=\"ns.e('jump')\" :disabled=\"disabled\">\n    <span :class=\"[ns.e('goto')]\">{{ t('el.pagination.goto') }}</span>\n    <el-input\n      :size=\"size\"\n      :class=\"[ns.e('editor'), ns.is('in-pagination')]\"\n      :min=\"1\"\n      :max=\"pageCount\"\n      :disabled=\"disabled\"\n      :model-value=\"innerValue\"\n      :validate-event=\"false\"\n      :aria-label=\"t('el.pagination.page')\"\n      type=\"number\"\n      @update:model-value=\"handleInput\"\n      @change=\"handleChange\"\n    />\n    <span :class=\"[ns.e('classifier')]\">{{\n      t('el.pagination.pageClassifier')\n    }}</span>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElInput from '@pit-element-plus/components/input'\nimport { usePagination } from '../usePagination'\nimport { paginationJumperProps } from './jumper'\n\ndefineOptions({\n  name: 'ElPaginationJumper',\n})\n\ndefineProps(paginationJumperProps)\nconst { t } = useLocale()\nconst ns = useNamespace('pagination')\nconst { pageCount, disabled, currentPage, changeEvent } = usePagination()\nconst userInput = ref<number | string>()\nconst innerValue = computed(() => userInput.value ?? currentPage?.value)\n\nfunction handleInput(val: number | string) {\n  userInput.value = val ? +val : ''\n}\n\nfunction handleChange(val: number | string) {\n  val = Math.trunc(+val)\n  changeEvent?.(val)\n  userInput.value = undefined\n}\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type Total from './total.vue'\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const paginationTotalProps = buildProps({\n  total: {\n    type: Number,\n    default: 1000,\n  },\n} as const)\n\nexport type PaginationTotalProps = ExtractPropTypes<typeof paginationTotalProps>\nexport type PaginationTotalPropsPublic = ExtractPublicPropTypes<\n  typeof paginationTotalProps\n>\n\nexport type TotalInstance = InstanceType<typeof Total> & unknown\n","<template>\n  <span :class=\"ns.e('total')\" :disabled=\"disabled\">\n    {{\n      t('el.pagination.total', {\n        total,\n      })\n    }}\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { usePagination } from '../usePagination'\nimport { paginationTotalProps } from './total'\n\nconst { t } = useLocale()\nconst ns = useNamespace('pagination')\nconst { disabled } = usePagination()\n\ndefineOptions({\n  name: 'ElPaginationTotal',\n})\n\ndefineProps(paginationTotalProps)\n</script>\n","<template>\n  <span :class=\"ns.e('total')\" :disabled=\"disabled\">\n    {{\n      t('el.pagination.total', {\n        total,\n      })\n    }}\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { usePagination } from '../usePagination'\nimport { paginationTotalProps } from './total'\n\nconst { t } = useLocale()\nconst ns = useNamespace('pagination')\nconst { disabled } = usePagination()\n\ndefineOptions({\n  name: 'ElPaginationTotal',\n})\n\ndefineProps(paginationTotalProps)\n</script>\n","<template>\n  <span :class=\"ns.e('total')\" :disabled=\"disabled\">\n    {{\n      t('el.pagination.total', {\n        total,\n      })\n    }}\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { usePagination } from '../usePagination'\nimport { paginationTotalProps } from './total'\n\nconst { t } = useLocale()\nconst ns = useNamespace('pagination')\nconst { disabled } = usePagination()\n\ndefineOptions({\n  name: 'ElPaginationTotal',\n})\n\ndefineProps(paginationTotalProps)\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type Pager from './pager.vue'\n\nexport const paginationPagerProps = buildProps({\n  currentPage: {\n    type: Number,\n    default: 1,\n  },\n  pageCount: {\n    type: Number,\n    required: true,\n  },\n  pagerCount: {\n    type: Number,\n    default: 7,\n  },\n  disabled: Boolean,\n} as const)\n\nexport type PaginationPagerProps = ExtractPropTypes<typeof paginationPagerProps>\nexport type PaginationPagerPropsPublic = ExtractPublicPropTypes<\n  typeof paginationPagerProps\n>\n\nexport type PagerInstance = InstanceType<typeof Pager> & unknown\n","<template>\n  <ul :class=\"nsPager.b()\" @click=\"onPagerClick\" @keyup.enter=\"onEnter\">\n    <li\n      v-if=\"pageCount > 0\"\n      :class=\"[\n        nsPager.is('active', currentPage === 1),\n        nsPager.is('disabled', disabled),\n      ]\"\n      class=\"number\"\n      :aria-current=\"currentPage === 1\"\n      :aria-label=\"t('el.pagination.currentPage', { pager: 1 })\"\n      :tabindex=\"tabindex\"\n    >\n      1\n    </li>\n    <li\n      v-if=\"showPrevMore\"\n      :class=\"prevMoreKls\"\n      :tabindex=\"tabindex\"\n      :aria-label=\"t('el.pagination.prevPages', { pager: pagerCount - 2 })\"\n      @mouseenter=\"onMouseEnter(true)\"\n      @mouseleave=\"quickPrevHover = false\"\n      @focus=\"onFocus(true)\"\n      @blur=\"quickPrevFocus = false\"\n    >\n      <d-arrow-left v-if=\"(quickPrevHover || quickPrevFocus) && !disabled\" />\n      <more-filled v-else />\n    </li>\n    <li\n      v-for=\"pager in pagers\"\n      :key=\"pager\"\n      :class=\"[\n        nsPager.is('active', currentPage === pager),\n        nsPager.is('disabled', disabled),\n      ]\"\n      class=\"number\"\n      :aria-current=\"currentPage === pager\"\n      :aria-label=\"t('el.pagination.currentPage', { pager })\"\n      :tabindex=\"tabindex\"\n    >\n      {{ pager }}\n    </li>\n    <li\n      v-if=\"showNextMore\"\n      :class=\"nextMoreKls\"\n      :tabindex=\"tabindex\"\n      :aria-label=\"t('el.pagination.nextPages', { pager: pagerCount - 2 })\"\n      @mouseenter=\"onMouseEnter()\"\n      @mouseleave=\"quickNextHover = false\"\n      @focus=\"onFocus()\"\n      @blur=\"quickNextFocus = false\"\n    >\n      <d-arrow-right v-if=\"(quickNextHover || quickNextFocus) && !disabled\" />\n      <more-filled v-else />\n    </li>\n    <li\n      v-if=\"pageCount > 1\"\n      :class=\"[\n        nsPager.is('active', currentPage === pageCount),\n        nsPager.is('disabled', disabled),\n      ]\"\n      class=\"number\"\n      :aria-current=\"currentPage === pageCount\"\n      :aria-label=\"t('el.pagination.currentPage', { pager: pageCount })\"\n      :tabindex=\"tabindex\"\n    >\n      {{ pageCount }}\n    </li>\n  </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { DArrowLeft, DArrowRight, MoreFilled } from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { paginationPagerProps } from './pager'\n\ndefineOptions({\n  name: 'ElPaginationPager',\n})\nconst props = defineProps(paginationPagerProps)\nconst emit = defineEmits([CHANGE_EVENT])\nconst nsPager = useNamespace('pager')\nconst nsIcon = useNamespace('icon')\nconst { t } = useLocale()\n\nconst showPrevMore = ref(false)\nconst showNextMore = ref(false)\nconst quickPrevHover = ref(false)\nconst quickNextHover = ref(false)\nconst quickPrevFocus = ref(false)\nconst quickNextFocus = ref(false)\nconst pagers = computed(() => {\n  const pagerCount = props.pagerCount\n  const halfPagerCount = (pagerCount - 1) / 2\n  const currentPage = Number(props.currentPage)\n  const pageCount = Number(props.pageCount)\n  let showPrevMore = false\n  let showNextMore = false\n  if (pageCount > pagerCount) {\n    if (currentPage > pagerCount - halfPagerCount) {\n      showPrevMore = true\n    }\n    if (currentPage < pageCount - halfPagerCount) {\n      showNextMore = true\n    }\n  }\n  const array: number[] = []\n  if (showPrevMore && !showNextMore) {\n    const startPage = pageCount - (pagerCount - 2)\n    for (let i = startPage; i < pageCount; i++) {\n      array.push(i)\n    }\n  } else if (!showPrevMore && showNextMore) {\n    for (let i = 2; i < pagerCount; i++) {\n      array.push(i)\n    }\n  } else if (showPrevMore && showNextMore) {\n    const offset = Math.floor(pagerCount / 2) - 1\n    for (let i = currentPage - offset; i <= currentPage + offset; i++) {\n      array.push(i)\n    }\n  } else {\n    for (let i = 2; i < pageCount; i++) {\n      array.push(i)\n    }\n  }\n  return array\n})\n\nconst prevMoreKls = computed(() => [\n  'more',\n  'btn-quickprev',\n  nsIcon.b(),\n  nsPager.is('disabled', props.disabled),\n])\nconst nextMoreKls = computed(() => [\n  'more',\n  'btn-quicknext',\n  nsIcon.b(),\n  nsPager.is('disabled', props.disabled),\n])\n\nconst tabindex = computed(() => (props.disabled ? -1 : 0))\nwatch(\n  () => [props.pageCount, props.pagerCount, props.currentPage],\n  ([pageCount, pagerCount, currentPage]) => {\n    const halfPagerCount = (pagerCount - 1) / 2\n    let showPrev = false\n    let showNext = false\n\n    if (pageCount > pagerCount) {\n      showPrev = currentPage > pagerCount - halfPagerCount\n      showNext = currentPage < pageCount - halfPagerCount\n    }\n\n    quickPrevHover.value &&= showPrev\n    quickNextHover.value &&= showNext\n    showPrevMore.value = showPrev\n    showNextMore.value = showNext\n  },\n  { immediate: true }\n)\nfunction onMouseEnter(forward = false) {\n  if (props.disabled) return\n  if (forward) {\n    quickPrevHover.value = true\n  } else {\n    quickNextHover.value = true\n  }\n}\nfunction onFocus(forward = false) {\n  if (forward) {\n    quickPrevFocus.value = true\n  } else {\n    quickNextFocus.value = true\n  }\n}\nfunction onEnter(e: UIEvent) {\n  const target = e.target as HTMLElement\n  if (\n    target.tagName.toLowerCase() === 'li' &&\n    Array.from(target.classList).includes('number')\n  ) {\n    const newPage = Number(target.textContent)\n    if (newPage !== props.currentPage) {\n      emit(CHANGE_EVENT, newPage)\n    }\n  } else if (\n    target.tagName.toLowerCase() === 'li' &&\n    Array.from(target.classList).includes('more')\n  ) {\n    onPagerClick(e)\n  }\n}\nfunction onPagerClick(event: UIEvent) {\n  const target = event.target as HTMLElement\n  if (target.tagName.toLowerCase() === 'ul' || props.disabled) {\n    return\n  }\n  let newPage = Number(target.textContent)\n  const pageCount = props.pageCount!\n  const currentPage = props.currentPage\n  const pagerCountOffset = props.pagerCount - 2\n  if (target.className.includes('more')) {\n    if (target.className.includes('quickprev')) {\n      newPage = currentPage - pagerCountOffset\n    } else if (target.className.includes('quicknext')) {\n      newPage = currentPage + pagerCountOffset\n    }\n  }\n  if (!Number.isNaN(+newPage)) {\n    if (newPage < 1) {\n      newPage = 1\n    }\n    if (newPage > pageCount) {\n      newPage = pageCount\n    }\n  }\n  if (newPage !== currentPage) {\n    emit(CHANGE_EVENT, newPage)\n  }\n}\n</script>\n","<template>\n  <ul :class=\"nsPager.b()\" @click=\"onPagerClick\" @keyup.enter=\"onEnter\">\n    <li\n      v-if=\"pageCount > 0\"\n      :class=\"[\n        nsPager.is('active', currentPage === 1),\n        nsPager.is('disabled', disabled),\n      ]\"\n      class=\"number\"\n      :aria-current=\"currentPage === 1\"\n      :aria-label=\"t('el.pagination.currentPage', { pager: 1 })\"\n      :tabindex=\"tabindex\"\n    >\n      1\n    </li>\n    <li\n      v-if=\"showPrevMore\"\n      :class=\"prevMoreKls\"\n      :tabindex=\"tabindex\"\n      :aria-label=\"t('el.pagination.prevPages', { pager: pagerCount - 2 })\"\n      @mouseenter=\"onMouseEnter(true)\"\n      @mouseleave=\"quickPrevHover = false\"\n      @focus=\"onFocus(true)\"\n      @blur=\"quickPrevFocus = false\"\n    >\n      <d-arrow-left v-if=\"(quickPrevHover || quickPrevFocus) && !disabled\" />\n      <more-filled v-else />\n    </li>\n    <li\n      v-for=\"pager in pagers\"\n      :key=\"pager\"\n      :class=\"[\n        nsPager.is('active', currentPage === pager),\n        nsPager.is('disabled', disabled),\n      ]\"\n      class=\"number\"\n      :aria-current=\"currentPage === pager\"\n      :aria-label=\"t('el.pagination.currentPage', { pager })\"\n      :tabindex=\"tabindex\"\n    >\n      {{ pager }}\n    </li>\n    <li\n      v-if=\"showNextMore\"\n      :class=\"nextMoreKls\"\n      :tabindex=\"tabindex\"\n      :aria-label=\"t('el.pagination.nextPages', { pager: pagerCount - 2 })\"\n      @mouseenter=\"onMouseEnter()\"\n      @mouseleave=\"quickNextHover = false\"\n      @focus=\"onFocus()\"\n      @blur=\"quickNextFocus = false\"\n    >\n      <d-arrow-right v-if=\"(quickNextHover || quickNextFocus) && !disabled\" />\n      <more-filled v-else />\n    </li>\n    <li\n      v-if=\"pageCount > 1\"\n      :class=\"[\n        nsPager.is('active', currentPage === pageCount),\n        nsPager.is('disabled', disabled),\n      ]\"\n      class=\"number\"\n      :aria-current=\"currentPage === pageCount\"\n      :aria-label=\"t('el.pagination.currentPage', { pager: pageCount })\"\n      :tabindex=\"tabindex\"\n    >\n      {{ pageCount }}\n    </li>\n  </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { DArrowLeft, DArrowRight, MoreFilled } from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { paginationPagerProps } from './pager'\n\ndefineOptions({\n  name: 'ElPaginationPager',\n})\nconst props = defineProps(paginationPagerProps)\nconst emit = defineEmits([CHANGE_EVENT])\nconst nsPager = useNamespace('pager')\nconst nsIcon = useNamespace('icon')\nconst { t } = useLocale()\n\nconst showPrevMore = ref(false)\nconst showNextMore = ref(false)\nconst quickPrevHover = ref(false)\nconst quickNextHover = ref(false)\nconst quickPrevFocus = ref(false)\nconst quickNextFocus = ref(false)\nconst pagers = computed(() => {\n  const pagerCount = props.pagerCount\n  const halfPagerCount = (pagerCount - 1) / 2\n  const currentPage = Number(props.currentPage)\n  const pageCount = Number(props.pageCount)\n  let showPrevMore = false\n  let showNextMore = false\n  if (pageCount > pagerCount) {\n    if (currentPage > pagerCount - halfPagerCount) {\n      showPrevMore = true\n    }\n    if (currentPage < pageCount - halfPagerCount) {\n      showNextMore = true\n    }\n  }\n  const array: number[] = []\n  if (showPrevMore && !showNextMore) {\n    const startPage = pageCount - (pagerCount - 2)\n    for (let i = startPage; i < pageCount; i++) {\n      array.push(i)\n    }\n  } else if (!showPrevMore && showNextMore) {\n    for (let i = 2; i < pagerCount; i++) {\n      array.push(i)\n    }\n  } else if (showPrevMore && showNextMore) {\n    const offset = Math.floor(pagerCount / 2) - 1\n    for (let i = currentPage - offset; i <= currentPage + offset; i++) {\n      array.push(i)\n    }\n  } else {\n    for (let i = 2; i < pageCount; i++) {\n      array.push(i)\n    }\n  }\n  return array\n})\n\nconst prevMoreKls = computed(() => [\n  'more',\n  'btn-quickprev',\n  nsIcon.b(),\n  nsPager.is('disabled', props.disabled),\n])\nconst nextMoreKls = computed(() => [\n  'more',\n  'btn-quicknext',\n  nsIcon.b(),\n  nsPager.is('disabled', props.disabled),\n])\n\nconst tabindex = computed(() => (props.disabled ? -1 : 0))\nwatch(\n  () => [props.pageCount, props.pagerCount, props.currentPage],\n  ([pageCount, pagerCount, currentPage]) => {\n    const halfPagerCount = (pagerCount - 1) / 2\n    let showPrev = false\n    let showNext = false\n\n    if (pageCount > pagerCount) {\n      showPrev = currentPage > pagerCount - halfPagerCount\n      showNext = currentPage < pageCount - halfPagerCount\n    }\n\n    quickPrevHover.value &&= showPrev\n    quickNextHover.value &&= showNext\n    showPrevMore.value = showPrev\n    showNextMore.value = showNext\n  },\n  { immediate: true }\n)\nfunction onMouseEnter(forward = false) {\n  if (props.disabled) return\n  if (forward) {\n    quickPrevHover.value = true\n  } else {\n    quickNextHover.value = true\n  }\n}\nfunction onFocus(forward = false) {\n  if (forward) {\n    quickPrevFocus.value = true\n  } else {\n    quickNextFocus.value = true\n  }\n}\nfunction onEnter(e: UIEvent) {\n  const target = e.target as HTMLElement\n  if (\n    target.tagName.toLowerCase() === 'li' &&\n    Array.from(target.classList).includes('number')\n  ) {\n    const newPage = Number(target.textContent)\n    if (newPage !== props.currentPage) {\n      emit(CHANGE_EVENT, newPage)\n    }\n  } else if (\n    target.tagName.toLowerCase() === 'li' &&\n    Array.from(target.classList).includes('more')\n  ) {\n    onPagerClick(e)\n  }\n}\nfunction onPagerClick(event: UIEvent) {\n  const target = event.target as HTMLElement\n  if (target.tagName.toLowerCase() === 'ul' || props.disabled) {\n    return\n  }\n  let newPage = Number(target.textContent)\n  const pageCount = props.pageCount!\n  const currentPage = props.currentPage\n  const pagerCountOffset = props.pagerCount - 2\n  if (target.className.includes('more')) {\n    if (target.className.includes('quickprev')) {\n      newPage = currentPage - pagerCountOffset\n    } else if (target.className.includes('quicknext')) {\n      newPage = currentPage + pagerCountOffset\n    }\n  }\n  if (!Number.isNaN(+newPage)) {\n    if (newPage < 1) {\n      newPage = 1\n    }\n    if (newPage > pageCount) {\n      newPage = pageCount\n    }\n  }\n  if (newPage !== currentPage) {\n    emit(CHANGE_EVENT, newPage)\n  }\n}\n</script>\n","<template>\n  <ul :class=\"nsPager.b()\" @click=\"onPagerClick\" @keyup.enter=\"onEnter\">\n    <li\n      v-if=\"pageCount > 0\"\n      :class=\"[\n        nsPager.is('active', currentPage === 1),\n        nsPager.is('disabled', disabled),\n      ]\"\n      class=\"number\"\n      :aria-current=\"currentPage === 1\"\n      :aria-label=\"t('el.pagination.currentPage', { pager: 1 })\"\n      :tabindex=\"tabindex\"\n    >\n      1\n    </li>\n    <li\n      v-if=\"showPrevMore\"\n      :class=\"prevMoreKls\"\n      :tabindex=\"tabindex\"\n      :aria-label=\"t('el.pagination.prevPages', { pager: pagerCount - 2 })\"\n      @mouseenter=\"onMouseEnter(true)\"\n      @mouseleave=\"quickPrevHover = false\"\n      @focus=\"onFocus(true)\"\n      @blur=\"quickPrevFocus = false\"\n    >\n      <d-arrow-left v-if=\"(quickPrevHover || quickPrevFocus) && !disabled\" />\n      <more-filled v-else />\n    </li>\n    <li\n      v-for=\"pager in pagers\"\n      :key=\"pager\"\n      :class=\"[\n        nsPager.is('active', currentPage === pager),\n        nsPager.is('disabled', disabled),\n      ]\"\n      class=\"number\"\n      :aria-current=\"currentPage === pager\"\n      :aria-label=\"t('el.pagination.currentPage', { pager })\"\n      :tabindex=\"tabindex\"\n    >\n      {{ pager }}\n    </li>\n    <li\n      v-if=\"showNextMore\"\n      :class=\"nextMoreKls\"\n      :tabindex=\"tabindex\"\n      :aria-label=\"t('el.pagination.nextPages', { pager: pagerCount - 2 })\"\n      @mouseenter=\"onMouseEnter()\"\n      @mouseleave=\"quickNextHover = false\"\n      @focus=\"onFocus()\"\n      @blur=\"quickNextFocus = false\"\n    >\n      <d-arrow-right v-if=\"(quickNextHover || quickNextFocus) && !disabled\" />\n      <more-filled v-else />\n    </li>\n    <li\n      v-if=\"pageCount > 1\"\n      :class=\"[\n        nsPager.is('active', currentPage === pageCount),\n        nsPager.is('disabled', disabled),\n      ]\"\n      class=\"number\"\n      :aria-current=\"currentPage === pageCount\"\n      :aria-label=\"t('el.pagination.currentPage', { pager: pageCount })\"\n      :tabindex=\"tabindex\"\n    >\n      {{ pageCount }}\n    </li>\n  </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { DArrowLeft, DArrowRight, MoreFilled } from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { paginationPagerProps } from './pager'\n\ndefineOptions({\n  name: 'ElPaginationPager',\n})\nconst props = defineProps(paginationPagerProps)\nconst emit = defineEmits([CHANGE_EVENT])\nconst nsPager = useNamespace('pager')\nconst nsIcon = useNamespace('icon')\nconst { t } = useLocale()\n\nconst showPrevMore = ref(false)\nconst showNextMore = ref(false)\nconst quickPrevHover = ref(false)\nconst quickNextHover = ref(false)\nconst quickPrevFocus = ref(false)\nconst quickNextFocus = ref(false)\nconst pagers = computed(() => {\n  const pagerCount = props.pagerCount\n  const halfPagerCount = (pagerCount - 1) / 2\n  const currentPage = Number(props.currentPage)\n  const pageCount = Number(props.pageCount)\n  let showPrevMore = false\n  let showNextMore = false\n  if (pageCount > pagerCount) {\n    if (currentPage > pagerCount - halfPagerCount) {\n      showPrevMore = true\n    }\n    if (currentPage < pageCount - halfPagerCount) {\n      showNextMore = true\n    }\n  }\n  const array: number[] = []\n  if (showPrevMore && !showNextMore) {\n    const startPage = pageCount - (pagerCount - 2)\n    for (let i = startPage; i < pageCount; i++) {\n      array.push(i)\n    }\n  } else if (!showPrevMore && showNextMore) {\n    for (let i = 2; i < pagerCount; i++) {\n      array.push(i)\n    }\n  } else if (showPrevMore && showNextMore) {\n    const offset = Math.floor(pagerCount / 2) - 1\n    for (let i = currentPage - offset; i <= currentPage + offset; i++) {\n      array.push(i)\n    }\n  } else {\n    for (let i = 2; i < pageCount; i++) {\n      array.push(i)\n    }\n  }\n  return array\n})\n\nconst prevMoreKls = computed(() => [\n  'more',\n  'btn-quickprev',\n  nsIcon.b(),\n  nsPager.is('disabled', props.disabled),\n])\nconst nextMoreKls = computed(() => [\n  'more',\n  'btn-quicknext',\n  nsIcon.b(),\n  nsPager.is('disabled', props.disabled),\n])\n\nconst tabindex = computed(() => (props.disabled ? -1 : 0))\nwatch(\n  () => [props.pageCount, props.pagerCount, props.currentPage],\n  ([pageCount, pagerCount, currentPage]) => {\n    const halfPagerCount = (pagerCount - 1) / 2\n    let showPrev = false\n    let showNext = false\n\n    if (pageCount > pagerCount) {\n      showPrev = currentPage > pagerCount - halfPagerCount\n      showNext = currentPage < pageCount - halfPagerCount\n    }\n\n    quickPrevHover.value &&= showPrev\n    quickNextHover.value &&= showNext\n    showPrevMore.value = showPrev\n    showNextMore.value = showNext\n  },\n  { immediate: true }\n)\nfunction onMouseEnter(forward = false) {\n  if (props.disabled) return\n  if (forward) {\n    quickPrevHover.value = true\n  } else {\n    quickNextHover.value = true\n  }\n}\nfunction onFocus(forward = false) {\n  if (forward) {\n    quickPrevFocus.value = true\n  } else {\n    quickNextFocus.value = true\n  }\n}\nfunction onEnter(e: UIEvent) {\n  const target = e.target as HTMLElement\n  if (\n    target.tagName.toLowerCase() === 'li' &&\n    Array.from(target.classList).includes('number')\n  ) {\n    const newPage = Number(target.textContent)\n    if (newPage !== props.currentPage) {\n      emit(CHANGE_EVENT, newPage)\n    }\n  } else if (\n    target.tagName.toLowerCase() === 'li' &&\n    Array.from(target.classList).includes('more')\n  ) {\n    onPagerClick(e)\n  }\n}\nfunction onPagerClick(event: UIEvent) {\n  const target = event.target as HTMLElement\n  if (target.tagName.toLowerCase() === 'ul' || props.disabled) {\n    return\n  }\n  let newPage = Number(target.textContent)\n  const pageCount = props.pageCount!\n  const currentPage = props.currentPage\n  const pagerCountOffset = props.pagerCount - 2\n  if (target.className.includes('more')) {\n    if (target.className.includes('quickprev')) {\n      newPage = currentPage - pagerCountOffset\n    } else if (target.className.includes('quicknext')) {\n      newPage = currentPage + pagerCountOffset\n    }\n  }\n  if (!Number.isNaN(+newPage)) {\n    if (newPage < 1) {\n      newPage = 1\n    }\n    if (newPage > pageCount) {\n      newPage = pageCount\n    }\n  }\n  if (newPage !== currentPage) {\n    emit(CHANGE_EVENT, newPage)\n  }\n}\n</script>\n","import {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  provide,\n  ref,\n  watch,\n} from 'vue'\nimport { ArrowLeft, ArrowRight } from 'pit-element-icons'\nimport {\n  buildProps,\n  debugWarn,\n  definePropType,\n  iconPropType,\n  isNumber,\n  mutable,\n} from '@pit-element-plus/utils'\nimport {\n  useDeprecated,\n  useGlobalSize,\n  useLocale,\n  useNamespace,\n  useSizeProp,\n} from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { elPaginationKey } from './constants'\nimport Prev from './components/prev.vue'\nimport Next from './components/next.vue'\nimport Sizes from './components/sizes.vue'\nimport Jumper from './components/jumper.vue'\nimport Total from './components/total.vue'\nimport Pager from './components/pager.vue'\n\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n  VNode,\n} from 'vue'\n/**\n * It it user's responsibility to guarantee that the value of props.total... is number\n * (same as pageSize, defaultPageSize, currentPage, defaultCurrentPage, pageCount)\n * Otherwise we can reasonable infer that the corresponding field is absent\n */\nconst isAbsent = (v: unknown): v is undefined => typeof v !== 'number'\n\ntype LayoutKey =\n  | 'prev'\n  | 'pager'\n  | 'next'\n  | 'jumper'\n  | '->'\n  | 'total'\n  | 'sizes'\n  | 'slot'\n\nexport const paginationProps = buildProps({\n  /**\n   * @description options of item count per page\n   */\n  pageSize: Number,\n  /**\n   * @description default initial value of page size, not setting is the same as setting 10\n   */\n  defaultPageSize: Number,\n  /**\n   * @description total item count\n   */\n  total: Number,\n  /**\n   * @description total page count. Set either `total` or `page-count` and pages will be displayed; if you need `page-sizes`, `total` is required\n   */\n  pageCount: Number,\n  /**\n   * @description number of pagers. Pagination collapses when the total page count exceeds this value\n   */\n  pagerCount: {\n    type: Number,\n    validator: (value: unknown) => {\n      return (\n        isNumber(value) &&\n        Math.trunc(value) === value &&\n        value > 4 &&\n        value < 22 &&\n        value % 2 === 1\n      )\n    },\n    default: 7,\n  },\n  /**\n   * @description current page number\n   */\n  currentPage: Number,\n  /**\n   * @description default initial value of current-page, not setting is the same as setting 1\n   */\n  defaultCurrentPage: Number,\n  /**\n   * @description layout of Pagination, elements separated with a comma\n   */\n  layout: {\n    type: String,\n    default: (\n      ['prev', 'pager', 'next', 'jumper', '->', 'total'] as LayoutKey[]\n    ).join(', '),\n  },\n  /**\n   * @description item count of each page\n   */\n  pageSizes: {\n    type: definePropType<number[]>(Array),\n    default: () => mutable([10, 20, 30, 40, 50, 100] as const),\n  },\n  /**\n   * @description custom class name for the page size Select's dropdown\n   */\n  popperClass: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description custom style for the page size Select's dropdown\n   */\n  popperStyle: {\n    type: definePropType<string | CSSProperties>([String, Object]),\n  },\n  /**\n   * @description text for the prev button\n   */\n  prevText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description icon for the prev button, higher priority of `prev-text`\n   */\n  prevIcon: {\n    type: iconPropType,\n    default: () => ArrowLeft,\n  },\n  /**\n   * @description text for the next button\n   */\n  nextText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description icon for the next button, higher priority of `next-text`\n   */\n  nextIcon: {\n    type: iconPropType,\n    default: () => ArrowRight,\n  },\n  /**\n   * @description whether Pagination size is teleported to body\n   */\n  teleported: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to use small pagination\n   */\n  small: Boolean,\n  /**\n   * @description set page size\n   */\n  size: useSizeProp,\n  /**\n   * @description whether the buttons have a background color\n   */\n  background: Boolean,\n  /**\n   * @description whether Pagination is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description whether to hide when there's only one page\n   */\n  hideOnSinglePage: Boolean,\n  /**\n   * @description which element the size dropdown appends to.\n   */\n  appendSizeTo: String,\n} as const)\nexport type PaginationProps = ExtractPropTypes<typeof paginationProps>\nexport type PaginationPropsPublic = ExtractPublicPropTypes<\n  typeof paginationProps\n>\n\nexport const paginationEmits = {\n  'update:current-page': (val: number) => isNumber(val),\n  'update:page-size': (val: number) => isNumber(val),\n  'size-change': (val: number) => isNumber(val),\n  change: (currentPage: number, pageSize: number) =>\n    isNumber(currentPage) && isNumber(pageSize),\n  'current-change': (val: number) => isNumber(val),\n  'prev-click': (val: number) => isNumber(val),\n  'next-click': (val: number) => isNumber(val),\n}\nexport type PaginationEmits = typeof paginationEmits\n\nconst componentName = 'ElPagination'\nexport default defineComponent({\n  name: componentName,\n\n  props: paginationProps,\n  emits: paginationEmits,\n\n  setup(props, { emit, slots }) {\n    const { t } = useLocale()\n    const ns = useNamespace('pagination')\n    const vnodeProps = getCurrentInstance()!.vnode.props || {}\n    const _globalSize = useGlobalSize()\n    const _size = computed(() =>\n      props.small ? 'small' : (props.size ?? _globalSize.value)\n    )\n    useDeprecated(\n      {\n        from: 'small',\n        replacement: 'size',\n        version: '3.0.0',\n        scope: 'el-pagination',\n        ref: 'https://element-plus.org/zh-CN/component/pagination.html',\n      },\n      computed(() => !!props.small)\n    )\n    // we can find @xxx=\"xxx\" props on `vnodeProps` to check if user bind corresponding events\n    const hasCurrentPageListener =\n      'onUpdate:currentPage' in vnodeProps ||\n      'onUpdate:current-page' in vnodeProps ||\n      'onCurrentChange' in vnodeProps\n    const hasPageSizeListener =\n      'onUpdate:pageSize' in vnodeProps ||\n      'onUpdate:page-size' in vnodeProps ||\n      'onSizeChange' in vnodeProps\n    const assertValidUsage = computed(() => {\n      // Users have to set either one, otherwise count of pages cannot be determined\n      if (isAbsent(props.total) && isAbsent(props.pageCount)) return false\n      // <el-pagination ...otherProps :current-page=\"xxx\" /> without corresponding listener is forbidden now\n      // Users have to use two way binding of `currentPage`\n      // If users just want to provide a default value, `defaultCurrentPage` is here for you\n      if (!isAbsent(props.currentPage) && !hasCurrentPageListener) return false\n      // When you want to change sizes, things get more complex, detailed below\n      // Basically the most important value we need is page count\n      // either directly from props.pageCount\n      // or calculated from props.total\n      // we will take props.pageCount precedence over props.total\n      if (props.layout.includes('sizes')) {\n        if (!isAbsent(props.pageCount)) {\n          // if props.pageCount is assign by user, then user have to watch pageSize change\n          // and recalculate pageCount\n          if (!hasPageSizeListener) return false\n        } else if (!isAbsent(props.total)) {\n          // Otherwise, we will see if user have props.pageSize defined\n          // If so, meaning user want to have pageSize controlled himself/herself from component\n          // Thus page size listener is required\n          // users are account for page size change\n          if (!isAbsent(props.pageSize)) {\n            if (!hasPageSizeListener) {\n              return false\n            }\n          } else {\n            // (else block just for explaination)\n            // else page size is controlled by el-pagination internally\n          }\n        }\n      }\n      return true\n    })\n\n    const innerPageSize = ref(\n      isAbsent(props.defaultPageSize) ? 10 : props.defaultPageSize\n    )\n    const innerCurrentPage = ref(\n      isAbsent(props.defaultCurrentPage) ? 1 : props.defaultCurrentPage\n    )\n\n    const pageSizeBridge = computed({\n      get() {\n        return isAbsent(props.pageSize) ? innerPageSize.value : props.pageSize\n      },\n      set(v: number) {\n        if (isAbsent(props.pageSize)) {\n          innerPageSize.value = v\n        }\n        if (hasPageSizeListener) {\n          emit('update:page-size', v)\n          emit('size-change', v)\n        }\n      },\n    })\n\n    const pageCountBridge = computed<number>(() => {\n      let pageCount = 0\n      if (!isAbsent(props.pageCount)) {\n        pageCount = props.pageCount\n      } else if (!isAbsent(props.total)) {\n        pageCount = Math.max(1, Math.ceil(props.total / pageSizeBridge.value))\n      }\n      return pageCount\n    })\n\n    const currentPageBridge = computed<number>({\n      get() {\n        return isAbsent(props.currentPage)\n          ? innerCurrentPage.value\n          : props.currentPage\n      },\n      set(v) {\n        let newCurrentPage = v\n        if (v < 1) {\n          newCurrentPage = 1\n        } else if (v > pageCountBridge.value) {\n          newCurrentPage = pageCountBridge.value\n        }\n        if (isAbsent(props.currentPage)) {\n          innerCurrentPage.value = newCurrentPage\n        }\n        if (hasCurrentPageListener) {\n          emit('update:current-page', newCurrentPage)\n          emit('current-change', newCurrentPage)\n        }\n      },\n    })\n\n    watch(pageCountBridge, (val) => {\n      if (currentPageBridge.value > val) currentPageBridge.value = val\n    })\n\n    watch(\n      [currentPageBridge, pageSizeBridge],\n      (value) => {\n        emit(CHANGE_EVENT, ...value)\n      },\n      { flush: 'post' }\n    )\n\n    function handleCurrentChange(val: number) {\n      currentPageBridge.value = val\n    }\n\n    function handleSizeChange(val: number) {\n      pageSizeBridge.value = val\n      const newPageCount = pageCountBridge.value\n      if (currentPageBridge.value > newPageCount) {\n        currentPageBridge.value = newPageCount\n      }\n    }\n\n    function prev() {\n      if (props.disabled) return\n      currentPageBridge.value -= 1\n      emit('prev-click', currentPageBridge.value)\n    }\n\n    function next() {\n      if (props.disabled) return\n      currentPageBridge.value += 1\n      emit('next-click', currentPageBridge.value)\n    }\n\n    function addClass(element: any, cls: string) {\n      if (element) {\n        if (!element.props) {\n          element.props = {}\n        }\n        element.props.class = [element.props.class, cls].join(' ')\n      }\n    }\n\n    provide(elPaginationKey, {\n      pageCount: pageCountBridge,\n      disabled: computed(() => props.disabled),\n      currentPage: currentPageBridge,\n      changeEvent: handleCurrentChange,\n      handleSizeChange,\n    })\n\n    return () => {\n      if (!assertValidUsage.value) {\n        debugWarn(componentName, t('el.pagination.deprecationWarning'))\n        return null\n      }\n      if (!props.layout) return null\n      if (props.hideOnSinglePage && pageCountBridge.value <= 1) return null\n      const rootChildren: Array<VNode | VNode[] | null> = []\n      const rightWrapperChildren: Array<VNode | VNode[] | null> = []\n      const rightWrapperRoot = h(\n        'div',\n        { class: ns.e('rightwrapper') },\n        rightWrapperChildren\n      )\n      const TEMPLATE_MAP: Record<\n        Exclude<LayoutKey, '->'>,\n        VNode | VNode[] | null\n      > = {\n        prev: h(Prev, {\n          disabled: props.disabled,\n          currentPage: currentPageBridge.value,\n          prevText: props.prevText,\n          prevIcon: props.prevIcon,\n          onClick: prev,\n        }),\n        jumper: h(Jumper, {\n          size: _size.value,\n        }),\n        pager: h(Pager, {\n          currentPage: currentPageBridge.value,\n          pageCount: pageCountBridge.value,\n          pagerCount: props.pagerCount,\n          onChange: handleCurrentChange,\n          disabled: props.disabled,\n        }),\n        next: h(Next, {\n          disabled: props.disabled,\n          currentPage: currentPageBridge.value,\n          pageCount: pageCountBridge.value,\n          nextText: props.nextText,\n          nextIcon: props.nextIcon,\n          onClick: next,\n        }),\n        sizes: h(Sizes, {\n          pageSize: pageSizeBridge.value,\n          pageSizes: props.pageSizes,\n          popperClass: props.popperClass,\n          popperStyle: props.popperStyle,\n          disabled: props.disabled,\n          teleported: props.teleported,\n          size: _size.value,\n          appendSizeTo: props.appendSizeTo,\n        }),\n        slot: slots?.default?.() ?? null,\n        total: h(Total, { total: isAbsent(props.total) ? 0 : props.total }),\n      }\n\n      const components = props.layout\n        .split(',')\n        .map((item: string) => item.trim()) as LayoutKey[]\n\n      let haveRightWrapper = false\n\n      components.forEach((c) => {\n        if (c === '->') {\n          haveRightWrapper = true\n          return\n        }\n        if (!haveRightWrapper) {\n          rootChildren.push(TEMPLATE_MAP[c])\n        } else {\n          rightWrapperChildren.push(TEMPLATE_MAP[c])\n        }\n      })\n\n      addClass(rootChildren[0], ns.is('first'))\n      addClass(rootChildren[rootChildren.length - 1], ns.is('last'))\n\n      if (haveRightWrapper && rightWrapperChildren.length > 0) {\n        addClass(rightWrapperChildren[0], ns.is('first'))\n        addClass(\n          rightWrapperChildren[rightWrapperChildren.length - 1],\n          ns.is('last')\n        )\n        rootChildren.push(rightWrapperRoot)\n      }\n      return h(\n        'div',\n        {\n          class: [\n            ns.b(),\n            ns.is('background', props.background),\n            ns.m(_size.value),\n          ],\n        },\n        rootChildren\n      )\n    }\n  },\n})\n","import { withInstall } from '@pit-element-plus/utils'\nimport Pagination from './src/pagination'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElPagination: SFCWithInstall<typeof Pagination> =\n  withInstall(Pagination)\nexport default ElPagination\n\nexport * from './src/pagination'\nexport * from './src/constants'\n","import { buttonTypes } from '@pit-element-plus/components/button'\nimport { QuestionFilled } from 'pit-element-icons'\nimport { buildProps, iconPropType } from '@pit-element-plus/utils'\nimport {\n  useTooltipContentProps,\n  useTooltipTriggerProps,\n} from '@pit-element-plus/components/tooltip'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ButtonType } from '@pit-element-plus/components/button'\nimport type {\n  ElTooltipContentProps,\n  ElTooltipTriggerProps,\n} from '@pit-element-plus/components/tooltip'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type Popconfirm from './popconfirm.vue'\n\nexport interface PopconfirmProps {\n  /**\n   * @description Title\n   */\n  title?: string\n  /**\n   * @description Confirm button text\n   */\n  confirmButtonText?: string\n  /**\n   * @description Cancel button text\n   */\n  cancelButtonText?: string\n  /**\n   * @description Confirm button type\n   */\n  confirmButtonType?: ButtonType\n  /**\n   * @description Cancel button type\n   */\n  cancelButtonType?: ButtonType\n  /**\n   * @description Icon Component\n   */\n  icon?: IconPropType\n  /**\n   * @description Icon color\n   */\n  iconColor?: string\n  /**\n   * @description is hide Icon\n   */\n  hideIcon?: boolean\n  /**\n   * @description delay of disappear, in millisecond\n   */\n  hideAfter?: number\n  /**\n   * @description Tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect?: ElTooltipContentProps['effect']\n  /**\n   * @description whether popconfirm is teleported to the body\n   */\n  teleported?: ElTooltipContentProps['teleported']\n  /**\n   * @description when popconfirm inactive and `persistent` is `false` , popconfirm will be destroyed\n   */\n  persistent?: ElTooltipContentProps['persistent']\n  /**\n   * @description popconfirm width, min width 150px\n   */\n  width?: string | number\n  /**\n   * @description Indicates whether virtual triggering is enabled\n   */\n  virtualTriggering?: ElTooltipTriggerProps['virtualTriggering']\n  /**\n   * @description Indicates the reference element to which the popper is attached\n   */\n  virtualRef?: ElTooltipTriggerProps['virtualRef']\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopconfirmProps` instead.\n */\nexport const popconfirmProps = buildProps({\n  /**\n   * @description Title\n   */\n  title: String,\n  /**\n   * @description Confirm button text\n   */\n  confirmButtonText: String,\n  /**\n   * @description Cancel button text\n   */\n  cancelButtonText: String,\n  /**\n   * @description Confirm button type\n   */\n  confirmButtonType: {\n    type: String,\n    values: buttonTypes,\n    default: 'primary',\n  },\n  /**\n   * @description Cancel button type\n   */\n  cancelButtonType: {\n    type: String,\n    values: buttonTypes,\n    default: 'text',\n  },\n  /**\n   * @description Icon Component\n   */\n  icon: {\n    type: iconPropType,\n    default: () => QuestionFilled,\n  },\n  /**\n   * @description Icon color\n   */\n  iconColor: {\n    type: String,\n    default: '#f90',\n  },\n  /**\n   * @description is hide Icon\n   */\n  hideIcon: Boolean,\n  /**\n   * @description delay of disappear, in millisecond\n   */\n  hideAfter: {\n    type: Number,\n    default: 200,\n  },\n  /**\n   * @description Tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    ...useTooltipContentProps.effect,\n    default: 'light',\n  },\n  /**\n   * @description whether popconfirm is teleported to the body\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description when popconfirm inactive and `persistent` is `false` , popconfirm will be destroyed\n   */\n  persistent: useTooltipContentProps.persistent,\n  /**\n   * @description popconfirm width, min width 150px\n   */\n  width: {\n    type: [String, Number],\n    default: 150,\n  },\n  virtualTriggering: useTooltipTriggerProps.virtualTriggering,\n  virtualRef: useTooltipTriggerProps.virtualRef,\n} as const)\n\nexport const popconfirmEmits = {\n  /**\n   * @description triggers when click confirm button\n   */\n  confirm: (e: MouseEvent) => e instanceof MouseEvent,\n  /**\n   * @description triggers when click cancel button\n   */\n  cancel: (e: MouseEvent) => e instanceof MouseEvent,\n}\n\nexport type PopconfirmEmits = typeof popconfirmEmits\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopconfirmProps` instead.\n */\nexport type PopconfirmPropsPublic = ExtractPublicPropTypes<\n  typeof popconfirmProps\n>\n\nexport type PopconfirmInstance = InstanceType<typeof Popconfirm> & unknown\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    trigger=\"click\"\n    :effect=\"effect\"\n    v-bind=\"$attrs\"\n    :virtual-triggering=\"virtualTriggering\"\n    :virtual-ref=\"virtualRef\"\n    :popper-class=\"`${ns.namespace.value}-popover`\"\n    :popper-style=\"style\"\n    :teleported=\"teleported\"\n    :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n    :hide-after=\"hideAfter\"\n    :persistent=\"persistent\"\n    loop\n    @show=\"showPopper\"\n  >\n    <template #content>\n      <div ref=\"rootRef\" tabindex=\"-1\" :class=\"ns.b()\">\n        <div :class=\"ns.e('main')\">\n          <el-icon\n            v-if=\"!hideIcon && icon\"\n            :class=\"ns.e('icon')\"\n            :style=\"{ color: iconColor }\"\n          >\n            <component :is=\"icon\" />\n          </el-icon>\n          {{ title }}\n        </div>\n        <div :class=\"ns.e('action')\">\n          <slot name=\"actions\" :confirm=\"confirm\" :cancel=\"cancel\">\n            <el-button\n              size=\"small\"\n              :type=\"cancelButtonType === 'text' ? '' : cancelButtonType\"\n              :text=\"cancelButtonType === 'text'\"\n              @click=\"cancel\"\n            >\n              {{ finalCancelButtonText }}\n            </el-button>\n            <el-button\n              size=\"small\"\n              :type=\"confirmButtonType === 'text' ? '' : confirmButtonType\"\n              :text=\"confirmButtonType === 'text'\"\n              @click=\"confirm\"\n            >\n              {{ finalConfirmButtonText }}\n            </el-button>\n          </slot>\n        </div>\n      </div>\n    </template>\n    <template v-if=\"$slots.reference\">\n      <slot name=\"reference\" />\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, unref } from 'vue'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { QuestionFilled } from 'pit-element-icons'\nimport { popconfirmEmits } from './popconfirm'\n\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { PopconfirmProps } from './popconfirm'\n\ndefineOptions({\n  name: 'ElPopconfirm',\n})\n\nconst props = withDefaults(defineProps<PopconfirmProps>(), {\n  confirmButtonType: 'primary',\n  cancelButtonType: 'text',\n  icon: () => QuestionFilled,\n  iconColor: '#f90',\n  hideAfter: 200,\n  effect: 'light',\n  teleported: true,\n  width: 150,\n})\nconst emit = defineEmits(popconfirmEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('popconfirm')\nconst tooltipRef = ref<TooltipInstance>()\nconst rootRef = ref<HTMLElement>()\n\nconst popperRef = computed(() => {\n  return unref(tooltipRef)?.popperRef\n})\n\nconst showPopper = () => {\n  rootRef.value?.focus?.()\n}\n\nconst hidePopper = () => {\n  tooltipRef.value?.onClose?.()\n}\n\nconst style = computed(() => {\n  return {\n    width: addUnit(props.width),\n  }\n})\n\nconst confirm = (e: MouseEvent) => {\n  emit('confirm', e)\n  hidePopper()\n}\nconst cancel = (e: MouseEvent) => {\n  emit('cancel', e)\n  hidePopper()\n}\n\nconst finalConfirmButtonText = computed(\n  () => props.confirmButtonText || t('el.popconfirm.confirmButtonText')\n)\nconst finalCancelButtonText = computed(\n  () => props.cancelButtonText || t('el.popconfirm.cancelButtonText')\n)\n\ndefineExpose({\n  popperRef,\n  hide: hidePopper,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    trigger=\"click\"\n    :effect=\"effect\"\n    v-bind=\"$attrs\"\n    :virtual-triggering=\"virtualTriggering\"\n    :virtual-ref=\"virtualRef\"\n    :popper-class=\"`${ns.namespace.value}-popover`\"\n    :popper-style=\"style\"\n    :teleported=\"teleported\"\n    :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n    :hide-after=\"hideAfter\"\n    :persistent=\"persistent\"\n    loop\n    @show=\"showPopper\"\n  >\n    <template #content>\n      <div ref=\"rootRef\" tabindex=\"-1\" :class=\"ns.b()\">\n        <div :class=\"ns.e('main')\">\n          <el-icon\n            v-if=\"!hideIcon && icon\"\n            :class=\"ns.e('icon')\"\n            :style=\"{ color: iconColor }\"\n          >\n            <component :is=\"icon\" />\n          </el-icon>\n          {{ title }}\n        </div>\n        <div :class=\"ns.e('action')\">\n          <slot name=\"actions\" :confirm=\"confirm\" :cancel=\"cancel\">\n            <el-button\n              size=\"small\"\n              :type=\"cancelButtonType === 'text' ? '' : cancelButtonType\"\n              :text=\"cancelButtonType === 'text'\"\n              @click=\"cancel\"\n            >\n              {{ finalCancelButtonText }}\n            </el-button>\n            <el-button\n              size=\"small\"\n              :type=\"confirmButtonType === 'text' ? '' : confirmButtonType\"\n              :text=\"confirmButtonType === 'text'\"\n              @click=\"confirm\"\n            >\n              {{ finalConfirmButtonText }}\n            </el-button>\n          </slot>\n        </div>\n      </div>\n    </template>\n    <template v-if=\"$slots.reference\">\n      <slot name=\"reference\" />\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, unref } from 'vue'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { QuestionFilled } from 'pit-element-icons'\nimport { popconfirmEmits } from './popconfirm'\n\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { PopconfirmProps } from './popconfirm'\n\ndefineOptions({\n  name: 'ElPopconfirm',\n})\n\nconst props = withDefaults(defineProps<PopconfirmProps>(), {\n  confirmButtonType: 'primary',\n  cancelButtonType: 'text',\n  icon: () => QuestionFilled,\n  iconColor: '#f90',\n  hideAfter: 200,\n  effect: 'light',\n  teleported: true,\n  width: 150,\n})\nconst emit = defineEmits(popconfirmEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('popconfirm')\nconst tooltipRef = ref<TooltipInstance>()\nconst rootRef = ref<HTMLElement>()\n\nconst popperRef = computed(() => {\n  return unref(tooltipRef)?.popperRef\n})\n\nconst showPopper = () => {\n  rootRef.value?.focus?.()\n}\n\nconst hidePopper = () => {\n  tooltipRef.value?.onClose?.()\n}\n\nconst style = computed(() => {\n  return {\n    width: addUnit(props.width),\n  }\n})\n\nconst confirm = (e: MouseEvent) => {\n  emit('confirm', e)\n  hidePopper()\n}\nconst cancel = (e: MouseEvent) => {\n  emit('cancel', e)\n  hidePopper()\n}\n\nconst finalConfirmButtonText = computed(\n  () => props.confirmButtonText || t('el.popconfirm.confirmButtonText')\n)\nconst finalCancelButtonText = computed(\n  () => props.cancelButtonText || t('el.popconfirm.cancelButtonText')\n)\n\ndefineExpose({\n  popperRef,\n  hide: hidePopper,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    trigger=\"click\"\n    :effect=\"effect\"\n    v-bind=\"$attrs\"\n    :virtual-triggering=\"virtualTriggering\"\n    :virtual-ref=\"virtualRef\"\n    :popper-class=\"`${ns.namespace.value}-popover`\"\n    :popper-style=\"style\"\n    :teleported=\"teleported\"\n    :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n    :hide-after=\"hideAfter\"\n    :persistent=\"persistent\"\n    loop\n    @show=\"showPopper\"\n  >\n    <template #content>\n      <div ref=\"rootRef\" tabindex=\"-1\" :class=\"ns.b()\">\n        <div :class=\"ns.e('main')\">\n          <el-icon\n            v-if=\"!hideIcon && icon\"\n            :class=\"ns.e('icon')\"\n            :style=\"{ color: iconColor }\"\n          >\n            <component :is=\"icon\" />\n          </el-icon>\n          {{ title }}\n        </div>\n        <div :class=\"ns.e('action')\">\n          <slot name=\"actions\" :confirm=\"confirm\" :cancel=\"cancel\">\n            <el-button\n              size=\"small\"\n              :type=\"cancelButtonType === 'text' ? '' : cancelButtonType\"\n              :text=\"cancelButtonType === 'text'\"\n              @click=\"cancel\"\n            >\n              {{ finalCancelButtonText }}\n            </el-button>\n            <el-button\n              size=\"small\"\n              :type=\"confirmButtonType === 'text' ? '' : confirmButtonType\"\n              :text=\"confirmButtonType === 'text'\"\n              @click=\"confirm\"\n            >\n              {{ finalConfirmButtonText }}\n            </el-button>\n          </slot>\n        </div>\n      </div>\n    </template>\n    <template v-if=\"$slots.reference\">\n      <slot name=\"reference\" />\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, unref } from 'vue'\nimport ElButton from '@pit-element-plus/components/button'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { QuestionFilled } from 'pit-element-icons'\nimport { popconfirmEmits } from './popconfirm'\n\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { PopconfirmProps } from './popconfirm'\n\ndefineOptions({\n  name: 'ElPopconfirm',\n})\n\nconst props = withDefaults(defineProps<PopconfirmProps>(), {\n  confirmButtonType: 'primary',\n  cancelButtonType: 'text',\n  icon: () => QuestionFilled,\n  iconColor: '#f90',\n  hideAfter: 200,\n  effect: 'light',\n  teleported: true,\n  width: 150,\n})\nconst emit = defineEmits(popconfirmEmits)\n\nconst { t } = useLocale()\nconst ns = useNamespace('popconfirm')\nconst tooltipRef = ref<TooltipInstance>()\nconst rootRef = ref<HTMLElement>()\n\nconst popperRef = computed(() => {\n  return unref(tooltipRef)?.popperRef\n})\n\nconst showPopper = () => {\n  rootRef.value?.focus?.()\n}\n\nconst hidePopper = () => {\n  tooltipRef.value?.onClose?.()\n}\n\nconst style = computed(() => {\n  return {\n    width: addUnit(props.width),\n  }\n})\n\nconst confirm = (e: MouseEvent) => {\n  emit('confirm', e)\n  hidePopper()\n}\nconst cancel = (e: MouseEvent) => {\n  emit('cancel', e)\n  hidePopper()\n}\n\nconst finalConfirmButtonText = computed(\n  () => props.confirmButtonText || t('el.popconfirm.confirmButtonText')\n)\nconst finalCancelButtonText = computed(\n  () => props.cancelButtonText || t('el.popconfirm.cancelButtonText')\n)\n\ndefineExpose({\n  popperRef,\n  hide: hidePopper,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Popconfirm from './src/popconfirm.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElPopconfirm: SFCWithInstall<typeof Popconfirm> =\n  withInstall(Popconfirm)\nexport default ElPopconfirm\n\nexport * from './src/popconfirm'\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes, SVGAttributes } from 'vue'\nimport type Progress from './progress.vue'\n\nexport type ProgressColor = { color: string; percentage: number }\nexport type ProgressFn = (percentage: number) => string\n\nexport interface ProgressProps {\n  /**\n   * @description type of progress bar\n   */\n  type?: 'line' | 'circle' | 'dashboard'\n  /**\n   * @description percentage, required\n   */\n  percentage?: number\n  /**\n   * @description the current status of progress bar\n   */\n  status?: '' | 'success' | 'exception' | 'warning'\n  /**\n   * @description set indeterminate progress\n   */\n  indeterminate?: boolean\n  /**\n   * @description control the animation duration of indeterminate progress or striped flow progress\n   */\n  duration?: number\n  /**\n   * @description the width of progress bar\n   */\n  strokeWidth?: number\n  /**\n   * @description butt/circle/dashboard type shape at the end path\n   */\n  strokeLinecap?: NonNullable<SVGAttributes['stroke-linecap']>\n  /**\n   * @description whether to place the percentage inside progress bar, only works when `type` is 'line'\n   */\n  textInside?: boolean\n  /**\n   * @description the canvas width of circle progress bar\n   */\n  width?: number\n  /**\n   * @description whether to show percentage\n   */\n  showText?: boolean\n  /**\n   * @description background color of progress bar. Overrides `status` prop\n   */\n  color?: string | ProgressColor[] | ProgressFn\n  /**\n   * @description stripe over the progress bar's color\n   */\n  striped?: boolean\n  /**\n   * @description get the stripes to flow\n   */\n  stripedFlow?: boolean\n  /**\n   * @description custom text format\n   */\n  format?: ProgressFn\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ProgressProps` instead.\n */\nexport const progressProps = buildProps({\n  /**\n   * @description type of progress bar\n   */\n  type: {\n    type: String,\n    default: 'line',\n    values: ['line', 'circle', 'dashboard'],\n  },\n  /**\n   * @description percentage, required\n   */\n  percentage: {\n    type: Number,\n    default: 0,\n    validator: (val: number): boolean => val >= 0 && val <= 100,\n  },\n  /**\n   * @description the current status of progress bar\n   */\n  status: {\n    type: String,\n    default: '',\n    values: ['', 'success', 'exception', 'warning'],\n  },\n  /**\n   * @description set indeterminate progress\n   */\n  indeterminate: Boolean,\n  /**\n   * @description control the animation duration of indeterminate progress or striped flow progress\n   */\n  duration: {\n    type: Number,\n    default: 3,\n  },\n  /**\n   * @description the width of progress bar\n   */\n  strokeWidth: {\n    type: Number,\n    default: 6,\n  },\n  /**\n   * @description butt/circle/dashboard type shape at the end path\n   */\n  strokeLinecap: {\n    type: definePropType<NonNullable<SVGAttributes['stroke-linecap']>>(String),\n    default: 'round',\n  },\n  /**\n   * @description whether to place the percentage inside progress bar, only works when `type` is 'line'\n   */\n  textInside: Boolean,\n  /**\n   * @description the canvas width of circle progress bar\n   */\n  width: {\n    type: Number,\n    default: 126,\n  },\n  /**\n   * @description whether to show percentage\n   */\n  showText: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description background color of progress bar. Overrides `status` prop\n   */\n  color: {\n    type: definePropType<string | ProgressColor[] | ProgressFn>([\n      String,\n      Array,\n      Function,\n    ]),\n    default: '',\n  },\n  /**\n   * @description stripe over the progress bar's color\n   */\n  striped: Boolean,\n  /**\n   * @description get the stripes to flow\n   */\n  stripedFlow: Boolean,\n  /**\n   * @description custom text format\n   */\n  format: {\n    type: definePropType<ProgressFn>(Function),\n    default: (percentage: number): string => `${percentage}%`,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `ProgressProps` instead.\n */\nexport type ProgressPropsPublic = ExtractPublicPropTypes<typeof progressProps>\nexport type ProgressInstance = InstanceType<typeof Progress> & unknown\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(type),\n      ns.is(status),\n      {\n        [ns.m('without-text')]: !showText,\n        [ns.m('text-inside')]: textInside,\n      },\n    ]\"\n    role=\"progressbar\"\n    :aria-valuenow=\"percentage\"\n    aria-valuemin=\"0\"\n    aria-valuemax=\"100\"\n  >\n    <div v-if=\"type === 'line'\" :class=\"ns.b('bar')\">\n      <div\n        :class=\"ns.be('bar', 'outer')\"\n        :style=\"{ height: `${strokeWidth}px` }\"\n      >\n        <div\n          :class=\"[\n            ns.be('bar', 'inner'),\n            { [ns.bem('bar', 'inner', 'indeterminate')]: indeterminate },\n            { [ns.bem('bar', 'inner', 'striped')]: striped },\n            { [ns.bem('bar', 'inner', 'striped-flow')]: stripedFlow },\n          ]\"\n          :style=\"barStyle\"\n        >\n          <div\n            v-if=\"(showText || $slots.default) && textInside\"\n            :class=\"ns.be('bar', 'innerText')\"\n          >\n            <slot :percentage=\"percentage\">\n              <span>{{ content }}</span>\n            </slot>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div\n      v-else\n      :class=\"ns.b('circle')\"\n      :style=\"{ height: `${width}px`, width: `${width}px` }\"\n    >\n      <svg viewBox=\"0 0 100 100\">\n        <path\n          :class=\"ns.be('circle', 'track')\"\n          :d=\"trackPath\"\n          :stroke=\"`var(${ns.cssVarName('fill-color-light')}, #e5e9f2)`\"\n          :stroke-linecap=\"strokeLinecap\"\n          :stroke-width=\"relativeStrokeWidth\"\n          fill=\"none\"\n          :style=\"trailPathStyle\"\n        />\n        <path\n          :class=\"ns.be('circle', 'path')\"\n          :d=\"trackPath\"\n          :stroke=\"stroke\"\n          fill=\"none\"\n          :opacity=\"percentage ? 1 : 0\"\n          :stroke-linecap=\"strokeLinecap\"\n          :stroke-width=\"relativeStrokeWidth\"\n          :style=\"circlePathStyle\"\n        />\n      </svg>\n    </div>\n    <div\n      v-if=\"(showText || $slots.default) && !textInside\"\n      :class=\"ns.e('text')\"\n      :style=\"{ fontSize: `${progressTextSize}px` }\"\n    >\n      <slot :percentage=\"percentage\">\n        <span v-if=\"!status\">{{ content }}</span>\n        <el-icon v-else>\n          <component :is=\"statusIcon\" />\n        </el-icon>\n      </slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  Check,\n  CircleCheck,\n  CircleClose,\n  Close,\n  WarningFilled,\n} from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isString } from '@pit-element-plus/utils'\n\nimport type { CSSProperties } from 'vue'\nimport type { ProgressColor, ProgressProps } from './progress'\n\ndefineOptions({\n  name: 'ElProgress',\n})\n\nconst STATUS_COLOR_MAP: Record<string, string> = {\n  success: '#13ce66',\n  exception: '#ff4949',\n  warning: '#e6a23c',\n  default: '#20a0ff',\n}\n\nconst props = withDefaults(defineProps<ProgressProps>(), {\n  type: 'line',\n  percentage: 0,\n  status: '',\n  duration: 3,\n  strokeWidth: 6,\n  strokeLinecap: 'round',\n  width: 126,\n  showText: true,\n  color: '',\n  format: (percentage: number): string => `${percentage}%`,\n})\n\nconst ns = useNamespace('progress')\n\nconst barStyle = computed<CSSProperties>(() => {\n  const barStyle: CSSProperties = {\n    width: `${props.percentage}%`,\n    animationDuration: `${props.duration}s`,\n  }\n  const color = getCurrentColor(props.percentage)\n  if (color.includes('gradient')) {\n    barStyle.background = color\n  } else {\n    barStyle.backgroundColor = color\n  }\n  return barStyle\n})\n\nconst relativeStrokeWidth = computed(() =>\n  ((props.strokeWidth / props.width) * 100).toFixed(1)\n)\n\nconst radius = computed(() => {\n  if (['circle', 'dashboard'].includes(props.type)) {\n    return Number.parseInt(\n      `${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`,\n      10\n    )\n  }\n  return 0\n})\n\nconst trackPath = computed(() => {\n  const r = radius.value\n  const isDashboard = props.type === 'dashboard'\n  return `\n          M 50 50\n          m 0 ${isDashboard ? '' : '-'}${r}\n          a ${r} ${r} 0 1 1 0 ${isDashboard ? '-' : ''}${r * 2}\n          a ${r} ${r} 0 1 1 0 ${isDashboard ? '' : '-'}${r * 2}\n          `\n})\n\nconst perimeter = computed(() => 2 * Math.PI * radius.value)\n\nconst rate = computed(() => (props.type === 'dashboard' ? 0.75 : 1))\n\nconst strokeDashoffset = computed(() => {\n  const offset = (-1 * perimeter.value * (1 - rate.value)) / 2\n  return `${offset}px`\n})\n\nconst trailPathStyle = computed<CSSProperties>(() => ({\n  strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,\n  strokeDashoffset: strokeDashoffset.value,\n}))\n\nconst circlePathStyle = computed<CSSProperties>(() => ({\n  strokeDasharray: `${\n    perimeter.value * rate.value * (props.percentage / 100)\n  }px, ${perimeter.value}px`,\n  strokeDashoffset: strokeDashoffset.value,\n  transition:\n    'stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s',\n}))\n\nconst stroke = computed(() => {\n  let ret: string\n  if (props.color) {\n    ret = getCurrentColor(props.percentage)\n  } else {\n    ret = STATUS_COLOR_MAP[props.status] || STATUS_COLOR_MAP.default\n  }\n  return ret\n})\n\nconst statusIcon = computed(() => {\n  if (props.status === 'warning') {\n    return WarningFilled\n  }\n  if (props.type === 'line') {\n    return props.status === 'success' ? CircleCheck : CircleClose\n  } else {\n    return props.status === 'success' ? Check : Close\n  }\n})\n\nconst progressTextSize = computed(() => {\n  return props.type === 'line'\n    ? 12 + props.strokeWidth * 0.4\n    : props.width * 0.111111 + 2\n})\n\nconst content = computed(() => props.format(props.percentage))\n\nfunction getColors(color: ProgressColor[]) {\n  const span = 100 / color.length\n  const seriesColors = color.map((seriesColor, index) => {\n    if (isString(seriesColor)) {\n      return {\n        color: seriesColor,\n        percentage: (index + 1) * span,\n      }\n    }\n    return seriesColor\n  })\n  return seriesColors.sort((a, b) => a.percentage - b.percentage)\n}\n\nconst getCurrentColor = (percentage: number) => {\n  const { color } = props\n  if (isFunction(color)) {\n    return color(percentage)\n  } else if (isString(color)) {\n    return color\n  } else {\n    const colors = getColors(color)\n    for (const color of colors) {\n      if (color.percentage > percentage) return color.color\n    }\n    return colors[colors.length - 1]?.color\n  }\n}\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(type),\n      ns.is(status),\n      {\n        [ns.m('without-text')]: !showText,\n        [ns.m('text-inside')]: textInside,\n      },\n    ]\"\n    role=\"progressbar\"\n    :aria-valuenow=\"percentage\"\n    aria-valuemin=\"0\"\n    aria-valuemax=\"100\"\n  >\n    <div v-if=\"type === 'line'\" :class=\"ns.b('bar')\">\n      <div\n        :class=\"ns.be('bar', 'outer')\"\n        :style=\"{ height: `${strokeWidth}px` }\"\n      >\n        <div\n          :class=\"[\n            ns.be('bar', 'inner'),\n            { [ns.bem('bar', 'inner', 'indeterminate')]: indeterminate },\n            { [ns.bem('bar', 'inner', 'striped')]: striped },\n            { [ns.bem('bar', 'inner', 'striped-flow')]: stripedFlow },\n          ]\"\n          :style=\"barStyle\"\n        >\n          <div\n            v-if=\"(showText || $slots.default) && textInside\"\n            :class=\"ns.be('bar', 'innerText')\"\n          >\n            <slot :percentage=\"percentage\">\n              <span>{{ content }}</span>\n            </slot>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div\n      v-else\n      :class=\"ns.b('circle')\"\n      :style=\"{ height: `${width}px`, width: `${width}px` }\"\n    >\n      <svg viewBox=\"0 0 100 100\">\n        <path\n          :class=\"ns.be('circle', 'track')\"\n          :d=\"trackPath\"\n          :stroke=\"`var(${ns.cssVarName('fill-color-light')}, #e5e9f2)`\"\n          :stroke-linecap=\"strokeLinecap\"\n          :stroke-width=\"relativeStrokeWidth\"\n          fill=\"none\"\n          :style=\"trailPathStyle\"\n        />\n        <path\n          :class=\"ns.be('circle', 'path')\"\n          :d=\"trackPath\"\n          :stroke=\"stroke\"\n          fill=\"none\"\n          :opacity=\"percentage ? 1 : 0\"\n          :stroke-linecap=\"strokeLinecap\"\n          :stroke-width=\"relativeStrokeWidth\"\n          :style=\"circlePathStyle\"\n        />\n      </svg>\n    </div>\n    <div\n      v-if=\"(showText || $slots.default) && !textInside\"\n      :class=\"ns.e('text')\"\n      :style=\"{ fontSize: `${progressTextSize}px` }\"\n    >\n      <slot :percentage=\"percentage\">\n        <span v-if=\"!status\">{{ content }}</span>\n        <el-icon v-else>\n          <component :is=\"statusIcon\" />\n        </el-icon>\n      </slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  Check,\n  CircleCheck,\n  CircleClose,\n  Close,\n  WarningFilled,\n} from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isString } from '@pit-element-plus/utils'\n\nimport type { CSSProperties } from 'vue'\nimport type { ProgressColor, ProgressProps } from './progress'\n\ndefineOptions({\n  name: 'ElProgress',\n})\n\nconst STATUS_COLOR_MAP: Record<string, string> = {\n  success: '#13ce66',\n  exception: '#ff4949',\n  warning: '#e6a23c',\n  default: '#20a0ff',\n}\n\nconst props = withDefaults(defineProps<ProgressProps>(), {\n  type: 'line',\n  percentage: 0,\n  status: '',\n  duration: 3,\n  strokeWidth: 6,\n  strokeLinecap: 'round',\n  width: 126,\n  showText: true,\n  color: '',\n  format: (percentage: number): string => `${percentage}%`,\n})\n\nconst ns = useNamespace('progress')\n\nconst barStyle = computed<CSSProperties>(() => {\n  const barStyle: CSSProperties = {\n    width: `${props.percentage}%`,\n    animationDuration: `${props.duration}s`,\n  }\n  const color = getCurrentColor(props.percentage)\n  if (color.includes('gradient')) {\n    barStyle.background = color\n  } else {\n    barStyle.backgroundColor = color\n  }\n  return barStyle\n})\n\nconst relativeStrokeWidth = computed(() =>\n  ((props.strokeWidth / props.width) * 100).toFixed(1)\n)\n\nconst radius = computed(() => {\n  if (['circle', 'dashboard'].includes(props.type)) {\n    return Number.parseInt(\n      `${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`,\n      10\n    )\n  }\n  return 0\n})\n\nconst trackPath = computed(() => {\n  const r = radius.value\n  const isDashboard = props.type === 'dashboard'\n  return `\n          M 50 50\n          m 0 ${isDashboard ? '' : '-'}${r}\n          a ${r} ${r} 0 1 1 0 ${isDashboard ? '-' : ''}${r * 2}\n          a ${r} ${r} 0 1 1 0 ${isDashboard ? '' : '-'}${r * 2}\n          `\n})\n\nconst perimeter = computed(() => 2 * Math.PI * radius.value)\n\nconst rate = computed(() => (props.type === 'dashboard' ? 0.75 : 1))\n\nconst strokeDashoffset = computed(() => {\n  const offset = (-1 * perimeter.value * (1 - rate.value)) / 2\n  return `${offset}px`\n})\n\nconst trailPathStyle = computed<CSSProperties>(() => ({\n  strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,\n  strokeDashoffset: strokeDashoffset.value,\n}))\n\nconst circlePathStyle = computed<CSSProperties>(() => ({\n  strokeDasharray: `${\n    perimeter.value * rate.value * (props.percentage / 100)\n  }px, ${perimeter.value}px`,\n  strokeDashoffset: strokeDashoffset.value,\n  transition:\n    'stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s',\n}))\n\nconst stroke = computed(() => {\n  let ret: string\n  if (props.color) {\n    ret = getCurrentColor(props.percentage)\n  } else {\n    ret = STATUS_COLOR_MAP[props.status] || STATUS_COLOR_MAP.default\n  }\n  return ret\n})\n\nconst statusIcon = computed(() => {\n  if (props.status === 'warning') {\n    return WarningFilled\n  }\n  if (props.type === 'line') {\n    return props.status === 'success' ? CircleCheck : CircleClose\n  } else {\n    return props.status === 'success' ? Check : Close\n  }\n})\n\nconst progressTextSize = computed(() => {\n  return props.type === 'line'\n    ? 12 + props.strokeWidth * 0.4\n    : props.width * 0.111111 + 2\n})\n\nconst content = computed(() => props.format(props.percentage))\n\nfunction getColors(color: ProgressColor[]) {\n  const span = 100 / color.length\n  const seriesColors = color.map((seriesColor, index) => {\n    if (isString(seriesColor)) {\n      return {\n        color: seriesColor,\n        percentage: (index + 1) * span,\n      }\n    }\n    return seriesColor\n  })\n  return seriesColors.sort((a, b) => a.percentage - b.percentage)\n}\n\nconst getCurrentColor = (percentage: number) => {\n  const { color } = props\n  if (isFunction(color)) {\n    return color(percentage)\n  } else if (isString(color)) {\n    return color\n  } else {\n    const colors = getColors(color)\n    for (const color of colors) {\n      if (color.percentage > percentage) return color.color\n    }\n    return colors[colors.length - 1]?.color\n  }\n}\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(type),\n      ns.is(status),\n      {\n        [ns.m('without-text')]: !showText,\n        [ns.m('text-inside')]: textInside,\n      },\n    ]\"\n    role=\"progressbar\"\n    :aria-valuenow=\"percentage\"\n    aria-valuemin=\"0\"\n    aria-valuemax=\"100\"\n  >\n    <div v-if=\"type === 'line'\" :class=\"ns.b('bar')\">\n      <div\n        :class=\"ns.be('bar', 'outer')\"\n        :style=\"{ height: `${strokeWidth}px` }\"\n      >\n        <div\n          :class=\"[\n            ns.be('bar', 'inner'),\n            { [ns.bem('bar', 'inner', 'indeterminate')]: indeterminate },\n            { [ns.bem('bar', 'inner', 'striped')]: striped },\n            { [ns.bem('bar', 'inner', 'striped-flow')]: stripedFlow },\n          ]\"\n          :style=\"barStyle\"\n        >\n          <div\n            v-if=\"(showText || $slots.default) && textInside\"\n            :class=\"ns.be('bar', 'innerText')\"\n          >\n            <slot :percentage=\"percentage\">\n              <span>{{ content }}</span>\n            </slot>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div\n      v-else\n      :class=\"ns.b('circle')\"\n      :style=\"{ height: `${width}px`, width: `${width}px` }\"\n    >\n      <svg viewBox=\"0 0 100 100\">\n        <path\n          :class=\"ns.be('circle', 'track')\"\n          :d=\"trackPath\"\n          :stroke=\"`var(${ns.cssVarName('fill-color-light')}, #e5e9f2)`\"\n          :stroke-linecap=\"strokeLinecap\"\n          :stroke-width=\"relativeStrokeWidth\"\n          fill=\"none\"\n          :style=\"trailPathStyle\"\n        />\n        <path\n          :class=\"ns.be('circle', 'path')\"\n          :d=\"trackPath\"\n          :stroke=\"stroke\"\n          fill=\"none\"\n          :opacity=\"percentage ? 1 : 0\"\n          :stroke-linecap=\"strokeLinecap\"\n          :stroke-width=\"relativeStrokeWidth\"\n          :style=\"circlePathStyle\"\n        />\n      </svg>\n    </div>\n    <div\n      v-if=\"(showText || $slots.default) && !textInside\"\n      :class=\"ns.e('text')\"\n      :style=\"{ fontSize: `${progressTextSize}px` }\"\n    >\n      <slot :percentage=\"percentage\">\n        <span v-if=\"!status\">{{ content }}</span>\n        <el-icon v-else>\n          <component :is=\"statusIcon\" />\n        </el-icon>\n      </slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  Check,\n  CircleCheck,\n  CircleClose,\n  Close,\n  WarningFilled,\n} from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isString } from '@pit-element-plus/utils'\n\nimport type { CSSProperties } from 'vue'\nimport type { ProgressColor, ProgressProps } from './progress'\n\ndefineOptions({\n  name: 'ElProgress',\n})\n\nconst STATUS_COLOR_MAP: Record<string, string> = {\n  success: '#13ce66',\n  exception: '#ff4949',\n  warning: '#e6a23c',\n  default: '#20a0ff',\n}\n\nconst props = withDefaults(defineProps<ProgressProps>(), {\n  type: 'line',\n  percentage: 0,\n  status: '',\n  duration: 3,\n  strokeWidth: 6,\n  strokeLinecap: 'round',\n  width: 126,\n  showText: true,\n  color: '',\n  format: (percentage: number): string => `${percentage}%`,\n})\n\nconst ns = useNamespace('progress')\n\nconst barStyle = computed<CSSProperties>(() => {\n  const barStyle: CSSProperties = {\n    width: `${props.percentage}%`,\n    animationDuration: `${props.duration}s`,\n  }\n  const color = getCurrentColor(props.percentage)\n  if (color.includes('gradient')) {\n    barStyle.background = color\n  } else {\n    barStyle.backgroundColor = color\n  }\n  return barStyle\n})\n\nconst relativeStrokeWidth = computed(() =>\n  ((props.strokeWidth / props.width) * 100).toFixed(1)\n)\n\nconst radius = computed(() => {\n  if (['circle', 'dashboard'].includes(props.type)) {\n    return Number.parseInt(\n      `${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`,\n      10\n    )\n  }\n  return 0\n})\n\nconst trackPath = computed(() => {\n  const r = radius.value\n  const isDashboard = props.type === 'dashboard'\n  return `\n          M 50 50\n          m 0 ${isDashboard ? '' : '-'}${r}\n          a ${r} ${r} 0 1 1 0 ${isDashboard ? '-' : ''}${r * 2}\n          a ${r} ${r} 0 1 1 0 ${isDashboard ? '' : '-'}${r * 2}\n          `\n})\n\nconst perimeter = computed(() => 2 * Math.PI * radius.value)\n\nconst rate = computed(() => (props.type === 'dashboard' ? 0.75 : 1))\n\nconst strokeDashoffset = computed(() => {\n  const offset = (-1 * perimeter.value * (1 - rate.value)) / 2\n  return `${offset}px`\n})\n\nconst trailPathStyle = computed<CSSProperties>(() => ({\n  strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,\n  strokeDashoffset: strokeDashoffset.value,\n}))\n\nconst circlePathStyle = computed<CSSProperties>(() => ({\n  strokeDasharray: `${\n    perimeter.value * rate.value * (props.percentage / 100)\n  }px, ${perimeter.value}px`,\n  strokeDashoffset: strokeDashoffset.value,\n  transition:\n    'stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s',\n}))\n\nconst stroke = computed(() => {\n  let ret: string\n  if (props.color) {\n    ret = getCurrentColor(props.percentage)\n  } else {\n    ret = STATUS_COLOR_MAP[props.status] || STATUS_COLOR_MAP.default\n  }\n  return ret\n})\n\nconst statusIcon = computed(() => {\n  if (props.status === 'warning') {\n    return WarningFilled\n  }\n  if (props.type === 'line') {\n    return props.status === 'success' ? CircleCheck : CircleClose\n  } else {\n    return props.status === 'success' ? Check : Close\n  }\n})\n\nconst progressTextSize = computed(() => {\n  return props.type === 'line'\n    ? 12 + props.strokeWidth * 0.4\n    : props.width * 0.111111 + 2\n})\n\nconst content = computed(() => props.format(props.percentage))\n\nfunction getColors(color: ProgressColor[]) {\n  const span = 100 / color.length\n  const seriesColors = color.map((seriesColor, index) => {\n    if (isString(seriesColor)) {\n      return {\n        color: seriesColor,\n        percentage: (index + 1) * span,\n      }\n    }\n    return seriesColor\n  })\n  return seriesColors.sort((a, b) => a.percentage - b.percentage)\n}\n\nconst getCurrentColor = (percentage: number) => {\n  const { color } = props\n  if (isFunction(color)) {\n    return color(percentage)\n  } else if (isString(color)) {\n    return color\n  } else {\n    const colors = getColors(color)\n    for (const color of colors) {\n      if (color.percentage > percentage) return color.color\n    }\n    return colors[colors.length - 1]?.color\n  }\n}\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Progress from './src/progress.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElProgress: SFCWithInstall<typeof Progress> = withInstall(Progress)\nexport default ElProgress\n\nexport * from './src/progress'\n","import { Star, StarFilled } from 'pit-element-icons'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isNumber,\n  mutable,\n} from '@pit-element-plus/utils'\nimport { useAriaProps, useSizeProp } from '@pit-element-plus/hooks'\n\nimport type { Component, ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type Rate from './rate.vue'\n\nexport interface RateProps {\n  /**\n   * @description binding value\n   */\n  modelValue?: number\n  /**\n   * @description native `id` attribute\n   */\n  id?: string\n  /**\n   * @description threshold value between low and medium level. The value itself will be included in low level\n   */\n  lowThreshold?: number\n  /**\n   * @description threshold value between medium and high level. The value itself will be included in high level\n   */\n  highThreshold?: number\n  /**\n   * @description max rating score\n   */\n  max?: number\n  /**\n   * @description colors for icons. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding color\n   */\n  colors?: string[] | Record<number, string>\n  /**\n   * @description color of unselected icons\n   */\n  voidColor?: string\n  /**\n   * @description color of unselected read-only icons\n   */\n  disabledVoidColor?: string\n  /**\n   * @description icon components. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding icon component\n   */\n  icons?: Array<IconPropType> | Record<number, IconPropType>\n  /**\n   * @description component of unselected icons\n   */\n  voidIcon?: IconPropType\n  /**\n   * @description component of unselected read-only icons\n   */\n  disabledVoidIcon?: IconPropType\n  /**\n   * @description whether Rate is read-only\n   */\n  disabled?: boolean\n  /**\n   * @description whether picking half start is allowed\n   */\n  allowHalf?: boolean\n  /**\n   * @description whether to display texts\n   */\n  showText?: boolean\n  /**\n   * @description whether to display current score. show-score and show-text cannot be true at the same time\n   */\n  showScore?: boolean\n  /**\n   * @description color of texts\n   */\n  textColor?: string\n  /**\n   * @description text array\n   */\n  texts?: string[]\n  /**\n   * @description score template\n   */\n  scoreTemplate?: string\n  /**\n   * @description size of Rate\n   */\n  size?: ComponentSize\n  /**\n   * @description whether value can be reset to `0`\n   */\n  clearable?: boolean\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RateProps` instead.\n */\nexport const rateProps = buildProps({\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description native `id` attribute\n   */\n  id: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description threshold value between low and medium level. The value itself will be included in low level\n   */\n  lowThreshold: {\n    type: Number,\n    default: 2,\n  },\n  /**\n   * @description threshold value between medium and high level. The value itself will be included in high level\n   */\n  highThreshold: {\n    type: Number,\n    default: 4,\n  },\n  /**\n   * @description max rating score\n   */\n  max: {\n    type: Number,\n    default: 5,\n  },\n  /**\n   * @description colors for icons. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding color\n   */\n  colors: {\n    type: definePropType<string[] | Record<number, string>>([Array, Object]),\n    default: () => mutable(['', '', ''] as const),\n  },\n  /**\n   * @description color of unselected icons\n   */\n  voidColor: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description color of unselected read-only icons\n   */\n  disabledVoidColor: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description icon components. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding icon component\n   */\n  icons: {\n    type: definePropType<\n      Array<string | Component> | Record<number, string | Component>\n    >([Array, Object]),\n    default: () =>\n      [StarFilled, StarFilled, StarFilled] as [Component, Component, Component],\n  },\n  /**\n   * @description component of unselected icons\n   */\n  voidIcon: {\n    type: iconPropType,\n    default: () => Star as Component,\n  },\n  /**\n   * @description component of unselected read-only icons\n   */\n  disabledVoidIcon: {\n    type: iconPropType,\n    default: () => StarFilled as Component,\n  },\n  /**\n   * @description whether Rate is read-only\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether picking half start is allowed\n   */\n  allowHalf: Boolean,\n  /**\n   * @description whether to display texts\n   */\n  showText: Boolean,\n  /**\n   * @description whether to display current score. show-score and show-text cannot be true at the same time\n   */\n  showScore: Boolean,\n  /**\n   * @description color of texts\n   */\n  textColor: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description text array\n   */\n  texts: {\n    type: definePropType<string[]>(Array),\n    default: () =>\n      mutable([\n        'Extremely bad',\n        'Disappointed',\n        'Fair',\n        'Satisfied',\n        'Surprise',\n      ] as const),\n  },\n  /**\n   * @description score template\n   */\n  scoreTemplate: {\n    type: String,\n    default: '{value}',\n  },\n  /**\n   * @description size of Rate\n   */\n  size: useSizeProp,\n  /**\n   * @description whether value can be reset to `0`\n   */\n  clearable: Boolean,\n  ...useAriaProps(['ariaLabel']),\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `RateProps` instead.\n */\nexport type RatePropsPublic = ExtractPublicPropTypes<typeof rateProps>\n\nexport const rateEmits = {\n  [CHANGE_EVENT]: (value: number) => isNumber(value),\n  [UPDATE_MODEL_EVENT]: (value: number) => isNumber(value),\n}\nexport type RateEmits = typeof rateEmits\n\nexport type RateInstance = InstanceType<typeof Rate> & unknown\n","<template>\n  <div\n    :id=\"inputId\"\n    :class=\"[rateClasses, ns.is('disabled', rateDisabled)]\"\n    role=\"slider\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'rating' : undefined\"\n    :aria-labelledby=\"\n      isLabeledByFormItem ? formItemContext?.labelId : undefined\n    \"\n    :aria-valuenow=\"currentValue\"\n    :aria-valuetext=\"text || undefined\"\n    aria-valuemin=\"0\"\n    :aria-valuemax=\"max\"\n    :style=\"rateStyles\"\n    :tabindex=\"rateDisabled ? undefined : 0\"\n    :aria-disabled=\"rateDisabled\"\n    @keydown=\"handleKey\"\n  >\n    <span\n      v-for=\"(item, key) in max\"\n      :key=\"key\"\n      :class=\"ns.e('item')\"\n      @mousemove=\"setCurrentValue(item, $event)\"\n      @mouseleave=\"resetCurrentValue\"\n      @click=\"selectValue(item)\"\n    >\n      <el-icon\n        ref=\"iconRefs\"\n        :class=\"[\n          ns.e('icon'),\n          { hover: hoverIndex === item },\n          ns.is('active', item <= currentValue),\n          ns.is('focus-visible', item === Math.ceil(currentValue || 1)),\n        ]\"\n      >\n        <component\n          :is=\"activeComponent\"\n          v-show=\"!showDecimalIcon(item) && item <= currentValue\"\n        />\n        <component\n          :is=\"voidComponent\"\n          v-show=\"!showDecimalIcon(item) && item > currentValue\"\n        />\n        <component\n          :is=\"voidComponent\"\n          v-show=\"showDecimalIcon(item)\"\n          :class=\"[ns.em('decimal', 'box')]\"\n        />\n        <el-icon\n          v-show=\"showDecimalIcon(item)\"\n          :style=\"decimalStyle\"\n          :class=\"[ns.e('icon'), ns.e('decimal')]\"\n        >\n          <component :is=\"decimalIconComponent\" />\n        </el-icon>\n      </el-icon>\n    </span>\n    <span\n      v-if=\"showText || showScore\"\n      :class=\"ns.e('text')\"\n      :style=\"{ color: textColor }\"\n    >\n      {{ text }}\n    </span>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, markRaw, ref, watch } from 'vue'\nimport { clamp } from 'lodash-unified'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport {\n  getEventCode,\n  isArray,\n  isObject,\n  isString,\n} from '@pit-element-plus/utils'\nimport {\n  formItemContextKey,\n  useFormDisabled,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Star, StarFilled } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { rateEmits } from './rate'\n\nimport type { CSSProperties, Component } from 'vue'\nimport type { IconInstance } from '@pit-element-plus/components/icon'\nimport type { RateProps } from './rate'\n\nfunction getValueFromMap<T>(\n  value: number,\n  map: Record<string, T | { excluded?: boolean; value: T }>\n) {\n  const isExcludedObject = (\n    val: unknown\n  ): val is { excluded?: boolean } & Record<any, unknown> => isObject(val)\n\n  const matchedKeys = Object.keys(map)\n    .map((key) => +key)\n    .filter((key) => {\n      const val = map[key]\n      const excluded = isExcludedObject(val) ? val.excluded : false\n      return excluded ? value < key : value <= key\n    })\n    .sort((a, b) => a - b)\n  const matchedValue = map[matchedKeys[0]]\n  return (isExcludedObject(matchedValue) && matchedValue.value) || matchedValue\n}\n\ndefineOptions({\n  name: 'ElRate',\n})\n\nconst props = withDefaults(defineProps<RateProps>(), {\n  modelValue: 0,\n  id: undefined,\n  lowThreshold: 2,\n  highThreshold: 4,\n  max: 5,\n  colors: () => ['', '', ''],\n  voidColor: '',\n  disabledVoidColor: '',\n  icons: () => [StarFilled, StarFilled, StarFilled],\n  voidIcon: () => Star,\n  disabledVoidIcon: () => StarFilled,\n  disabled: undefined,\n  textColor: '',\n  texts: () => [\n    'Extremely bad',\n    'Disappointed',\n    'Fair',\n    'Satisfied',\n    'Surprise',\n  ],\n  scoreTemplate: '{value}',\n})\nconst emit = defineEmits(rateEmits)\n\nconst formItemContext = inject(formItemContextKey, undefined)\nconst rateSize = useFormSize()\nconst ns = useNamespace('rate')\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext,\n})\n\nconst currentValue = ref(clamp(props.modelValue, 0, props.max))\nconst hoverIndex = ref(-1)\nconst pointerAtLeftHalf = ref(true)\n\nconst iconRefs = ref<IconInstance[]>([])\nconst iconClientWidths = computed<number[]>(() =>\n  iconRefs.value.map((icon) => icon.$el.clientWidth)\n)\nconst rateClasses = computed(() => [ns.b(), ns.m(rateSize.value)])\nconst rateDisabled = useFormDisabled()\nconst rateStyles = computed(() => {\n  return ns.cssVarBlock({\n    'void-color': props.voidColor,\n    'disabled-void-color': props.disabledVoidColor,\n    'fill-color': activeColor.value,\n  }) as CSSProperties\n})\n\nconst text = computed(() => {\n  let result = ''\n  if (props.showScore) {\n    result = props.scoreTemplate.replace(\n      /\\{\\s*value\\s*\\}/,\n      rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n    )\n  } else if (props.showText) {\n    result = props.texts[Math.ceil(currentValue.value) - 1]\n  }\n  return result\n})\nconst valueDecimal = computed(\n  () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n)\nconst colorMap = computed(() =>\n  isArray(props.colors)\n    ? {\n        [props.lowThreshold]: props.colors[0],\n        [props.highThreshold]: { value: props.colors[1], excluded: true },\n        [props.max]: props.colors[2],\n      }\n    : props.colors\n)\nconst activeColor = computed(() => {\n  const color = getValueFromMap(currentValue.value, colorMap.value)\n  // {value: '', excluded: true} returned\n  return isObject(color) ? '' : color\n})\nconst decimalStyle = computed(() => {\n  let width = ''\n  if (rateDisabled.value) {\n    width = `${valueDecimal.value}%`\n  } else if (props.allowHalf) {\n    width = '50%'\n  }\n  return {\n    color: activeColor.value,\n    width,\n  }\n})\nconst componentMap = computed(() => {\n  let icons = isArray(props.icons) ? [...props.icons] : { ...props.icons }\n  icons = markRaw(icons) as\n    | Array<string | Component>\n    | Record<number, string | Component>\n  return isArray(icons)\n    ? {\n        [props.lowThreshold]: icons[0],\n        [props.highThreshold]: {\n          value: icons[1],\n          excluded: true,\n        },\n        [props.max]: icons[2],\n      }\n    : icons\n})\nconst decimalIconComponent = computed(() =>\n  getValueFromMap(props.modelValue, componentMap.value)\n)\nconst voidComponent = computed(() =>\n  rateDisabled.value\n    ? isString(props.disabledVoidIcon)\n      ? props.disabledVoidIcon\n      : (markRaw(props.disabledVoidIcon) as Component)\n    : isString(props.voidIcon)\n      ? props.voidIcon\n      : (markRaw(props.voidIcon) as Component)\n)\nconst activeComponent = computed(() =>\n  getValueFromMap(currentValue.value, componentMap.value)\n)\n\nfunction showDecimalIcon(item: number) {\n  const showWhenDisabled =\n    rateDisabled.value &&\n    valueDecimal.value > 0 &&\n    item - 1 < props.modelValue &&\n    item > props.modelValue\n  const showWhenAllowHalf =\n    props.allowHalf &&\n    pointerAtLeftHalf.value &&\n    item - 0.5 <= currentValue.value &&\n    item > currentValue.value\n  return showWhenDisabled || showWhenAllowHalf\n}\n\nfunction emitValue(value: number) {\n  // if allow clear, and selected value is same as modelValue, reset value to 0\n  if (props.clearable && value === props.modelValue) {\n    value = 0\n  }\n\n  emit(UPDATE_MODEL_EVENT, value)\n  if (props.modelValue !== value) {\n    emit(CHANGE_EVENT, value)\n  }\n}\n\nfunction selectValue(value: number) {\n  if (rateDisabled.value) {\n    return\n  }\n  if (props.allowHalf && pointerAtLeftHalf.value) {\n    emitValue(currentValue.value)\n  } else {\n    emitValue(value)\n  }\n}\n\nfunction handleKey(e: KeyboardEvent) {\n  if (rateDisabled.value) {\n    return\n  }\n  const code = getEventCode(e)\n  const step = props.allowHalf ? 0.5 : 1\n  let _currentValue = currentValue.value\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.right:\n      _currentValue += step\n      break\n    case EVENT_CODE.left:\n    case EVENT_CODE.down:\n      _currentValue -= step\n      break\n  }\n\n  _currentValue = clamp(_currentValue, 0, props.max)\n\n  if (_currentValue === currentValue.value) {\n    return\n  }\n\n  e.stopPropagation()\n  e.preventDefault()\n  emit(UPDATE_MODEL_EVENT, _currentValue)\n  emit(CHANGE_EVENT, _currentValue)\n  return _currentValue\n}\n\nfunction setCurrentValue(value: number, event?: MouseEvent) {\n  if (rateDisabled.value) {\n    return\n  }\n  if (props.allowHalf && event) {\n    pointerAtLeftHalf.value =\n      event.offsetX * 2 <= iconClientWidths.value[value - 1]\n    currentValue.value = pointerAtLeftHalf.value ? value - 0.5 : value\n  } else {\n    currentValue.value = value\n  }\n  hoverIndex.value = value\n}\n\nfunction resetCurrentValue() {\n  if (rateDisabled.value) {\n    return\n  }\n  if (props.allowHalf) {\n    pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue)\n  }\n  currentValue.value = clamp(props.modelValue, 0, props.max)\n  hoverIndex.value = -1\n}\n\nwatch(\n  () => props.modelValue,\n  (val) => {\n    currentValue.value = clamp(val, 0, props.max)\n    pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue)\n  }\n)\n\nif (!props.modelValue) {\n  emit(UPDATE_MODEL_EVENT, 0)\n}\n\ndefineExpose({\n  /** @description set current value */\n  setCurrentValue,\n  /** @description reset current value */\n  resetCurrentValue,\n})\n</script>\n","<template>\n  <div\n    :id=\"inputId\"\n    :class=\"[rateClasses, ns.is('disabled', rateDisabled)]\"\n    role=\"slider\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'rating' : undefined\"\n    :aria-labelledby=\"\n      isLabeledByFormItem ? formItemContext?.labelId : undefined\n    \"\n    :aria-valuenow=\"currentValue\"\n    :aria-valuetext=\"text || undefined\"\n    aria-valuemin=\"0\"\n    :aria-valuemax=\"max\"\n    :style=\"rateStyles\"\n    :tabindex=\"rateDisabled ? undefined : 0\"\n    :aria-disabled=\"rateDisabled\"\n    @keydown=\"handleKey\"\n  >\n    <span\n      v-for=\"(item, key) in max\"\n      :key=\"key\"\n      :class=\"ns.e('item')\"\n      @mousemove=\"setCurrentValue(item, $event)\"\n      @mouseleave=\"resetCurrentValue\"\n      @click=\"selectValue(item)\"\n    >\n      <el-icon\n        ref=\"iconRefs\"\n        :class=\"[\n          ns.e('icon'),\n          { hover: hoverIndex === item },\n          ns.is('active', item <= currentValue),\n          ns.is('focus-visible', item === Math.ceil(currentValue || 1)),\n        ]\"\n      >\n        <component\n          :is=\"activeComponent\"\n          v-show=\"!showDecimalIcon(item) && item <= currentValue\"\n        />\n        <component\n          :is=\"voidComponent\"\n          v-show=\"!showDecimalIcon(item) && item > currentValue\"\n        />\n        <component\n          :is=\"voidComponent\"\n          v-show=\"showDecimalIcon(item)\"\n          :class=\"[ns.em('decimal', 'box')]\"\n        />\n        <el-icon\n          v-show=\"showDecimalIcon(item)\"\n          :style=\"decimalStyle\"\n          :class=\"[ns.e('icon'), ns.e('decimal')]\"\n        >\n          <component :is=\"decimalIconComponent\" />\n        </el-icon>\n      </el-icon>\n    </span>\n    <span\n      v-if=\"showText || showScore\"\n      :class=\"ns.e('text')\"\n      :style=\"{ color: textColor }\"\n    >\n      {{ text }}\n    </span>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, markRaw, ref, watch } from 'vue'\nimport { clamp } from 'lodash-unified'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport {\n  getEventCode,\n  isArray,\n  isObject,\n  isString,\n} from '@pit-element-plus/utils'\nimport {\n  formItemContextKey,\n  useFormDisabled,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Star, StarFilled } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { rateEmits } from './rate'\n\nimport type { CSSProperties, Component } from 'vue'\nimport type { IconInstance } from '@pit-element-plus/components/icon'\nimport type { RateProps } from './rate'\n\nfunction getValueFromMap<T>(\n  value: number,\n  map: Record<string, T | { excluded?: boolean; value: T }>\n) {\n  const isExcludedObject = (\n    val: unknown\n  ): val is { excluded?: boolean } & Record<any, unknown> => isObject(val)\n\n  const matchedKeys = Object.keys(map)\n    .map((key) => +key)\n    .filter((key) => {\n      const val = map[key]\n      const excluded = isExcludedObject(val) ? val.excluded : false\n      return excluded ? value < key : value <= key\n    })\n    .sort((a, b) => a - b)\n  const matchedValue = map[matchedKeys[0]]\n  return (isExcludedObject(matchedValue) && matchedValue.value) || matchedValue\n}\n\ndefineOptions({\n  name: 'ElRate',\n})\n\nconst props = withDefaults(defineProps<RateProps>(), {\n  modelValue: 0,\n  id: undefined,\n  lowThreshold: 2,\n  highThreshold: 4,\n  max: 5,\n  colors: () => ['', '', ''],\n  voidColor: '',\n  disabledVoidColor: '',\n  icons: () => [StarFilled, StarFilled, StarFilled],\n  voidIcon: () => Star,\n  disabledVoidIcon: () => StarFilled,\n  disabled: undefined,\n  textColor: '',\n  texts: () => [\n    'Extremely bad',\n    'Disappointed',\n    'Fair',\n    'Satisfied',\n    'Surprise',\n  ],\n  scoreTemplate: '{value}',\n})\nconst emit = defineEmits(rateEmits)\n\nconst formItemContext = inject(formItemContextKey, undefined)\nconst rateSize = useFormSize()\nconst ns = useNamespace('rate')\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext,\n})\n\nconst currentValue = ref(clamp(props.modelValue, 0, props.max))\nconst hoverIndex = ref(-1)\nconst pointerAtLeftHalf = ref(true)\n\nconst iconRefs = ref<IconInstance[]>([])\nconst iconClientWidths = computed<number[]>(() =>\n  iconRefs.value.map((icon) => icon.$el.clientWidth)\n)\nconst rateClasses = computed(() => [ns.b(), ns.m(rateSize.value)])\nconst rateDisabled = useFormDisabled()\nconst rateStyles = computed(() => {\n  return ns.cssVarBlock({\n    'void-color': props.voidColor,\n    'disabled-void-color': props.disabledVoidColor,\n    'fill-color': activeColor.value,\n  }) as CSSProperties\n})\n\nconst text = computed(() => {\n  let result = ''\n  if (props.showScore) {\n    result = props.scoreTemplate.replace(\n      /\\{\\s*value\\s*\\}/,\n      rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n    )\n  } else if (props.showText) {\n    result = props.texts[Math.ceil(currentValue.value) - 1]\n  }\n  return result\n})\nconst valueDecimal = computed(\n  () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n)\nconst colorMap = computed(() =>\n  isArray(props.colors)\n    ? {\n        [props.lowThreshold]: props.colors[0],\n        [props.highThreshold]: { value: props.colors[1], excluded: true },\n        [props.max]: props.colors[2],\n      }\n    : props.colors\n)\nconst activeColor = computed(() => {\n  const color = getValueFromMap(currentValue.value, colorMap.value)\n  // {value: '', excluded: true} returned\n  return isObject(color) ? '' : color\n})\nconst decimalStyle = computed(() => {\n  let width = ''\n  if (rateDisabled.value) {\n    width = `${valueDecimal.value}%`\n  } else if (props.allowHalf) {\n    width = '50%'\n  }\n  return {\n    color: activeColor.value,\n    width,\n  }\n})\nconst componentMap = computed(() => {\n  let icons = isArray(props.icons) ? [...props.icons] : { ...props.icons }\n  icons = markRaw(icons) as\n    | Array<string | Component>\n    | Record<number, string | Component>\n  return isArray(icons)\n    ? {\n        [props.lowThreshold]: icons[0],\n        [props.highThreshold]: {\n          value: icons[1],\n          excluded: true,\n        },\n        [props.max]: icons[2],\n      }\n    : icons\n})\nconst decimalIconComponent = computed(() =>\n  getValueFromMap(props.modelValue, componentMap.value)\n)\nconst voidComponent = computed(() =>\n  rateDisabled.value\n    ? isString(props.disabledVoidIcon)\n      ? props.disabledVoidIcon\n      : (markRaw(props.disabledVoidIcon) as Component)\n    : isString(props.voidIcon)\n      ? props.voidIcon\n      : (markRaw(props.voidIcon) as Component)\n)\nconst activeComponent = computed(() =>\n  getValueFromMap(currentValue.value, componentMap.value)\n)\n\nfunction showDecimalIcon(item: number) {\n  const showWhenDisabled =\n    rateDisabled.value &&\n    valueDecimal.value > 0 &&\n    item - 1 < props.modelValue &&\n    item > props.modelValue\n  const showWhenAllowHalf =\n    props.allowHalf &&\n    pointerAtLeftHalf.value &&\n    item - 0.5 <= currentValue.value &&\n    item > currentValue.value\n  return showWhenDisabled || showWhenAllowHalf\n}\n\nfunction emitValue(value: number) {\n  // if allow clear, and selected value is same as modelValue, reset value to 0\n  if (props.clearable && value === props.modelValue) {\n    value = 0\n  }\n\n  emit(UPDATE_MODEL_EVENT, value)\n  if (props.modelValue !== value) {\n    emit(CHANGE_EVENT, value)\n  }\n}\n\nfunction selectValue(value: number) {\n  if (rateDisabled.value) {\n    return\n  }\n  if (props.allowHalf && pointerAtLeftHalf.value) {\n    emitValue(currentValue.value)\n  } else {\n    emitValue(value)\n  }\n}\n\nfunction handleKey(e: KeyboardEvent) {\n  if (rateDisabled.value) {\n    return\n  }\n  const code = getEventCode(e)\n  const step = props.allowHalf ? 0.5 : 1\n  let _currentValue = currentValue.value\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.right:\n      _currentValue += step\n      break\n    case EVENT_CODE.left:\n    case EVENT_CODE.down:\n      _currentValue -= step\n      break\n  }\n\n  _currentValue = clamp(_currentValue, 0, props.max)\n\n  if (_currentValue === currentValue.value) {\n    return\n  }\n\n  e.stopPropagation()\n  e.preventDefault()\n  emit(UPDATE_MODEL_EVENT, _currentValue)\n  emit(CHANGE_EVENT, _currentValue)\n  return _currentValue\n}\n\nfunction setCurrentValue(value: number, event?: MouseEvent) {\n  if (rateDisabled.value) {\n    return\n  }\n  if (props.allowHalf && event) {\n    pointerAtLeftHalf.value =\n      event.offsetX * 2 <= iconClientWidths.value[value - 1]\n    currentValue.value = pointerAtLeftHalf.value ? value - 0.5 : value\n  } else {\n    currentValue.value = value\n  }\n  hoverIndex.value = value\n}\n\nfunction resetCurrentValue() {\n  if (rateDisabled.value) {\n    return\n  }\n  if (props.allowHalf) {\n    pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue)\n  }\n  currentValue.value = clamp(props.modelValue, 0, props.max)\n  hoverIndex.value = -1\n}\n\nwatch(\n  () => props.modelValue,\n  (val) => {\n    currentValue.value = clamp(val, 0, props.max)\n    pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue)\n  }\n)\n\nif (!props.modelValue) {\n  emit(UPDATE_MODEL_EVENT, 0)\n}\n\ndefineExpose({\n  /** @description set current value */\n  setCurrentValue,\n  /** @description reset current value */\n  resetCurrentValue,\n})\n</script>\n","<template>\n  <div\n    :id=\"inputId\"\n    :class=\"[rateClasses, ns.is('disabled', rateDisabled)]\"\n    role=\"slider\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'rating' : undefined\"\n    :aria-labelledby=\"\n      isLabeledByFormItem ? formItemContext?.labelId : undefined\n    \"\n    :aria-valuenow=\"currentValue\"\n    :aria-valuetext=\"text || undefined\"\n    aria-valuemin=\"0\"\n    :aria-valuemax=\"max\"\n    :style=\"rateStyles\"\n    :tabindex=\"rateDisabled ? undefined : 0\"\n    :aria-disabled=\"rateDisabled\"\n    @keydown=\"handleKey\"\n  >\n    <span\n      v-for=\"(item, key) in max\"\n      :key=\"key\"\n      :class=\"ns.e('item')\"\n      @mousemove=\"setCurrentValue(item, $event)\"\n      @mouseleave=\"resetCurrentValue\"\n      @click=\"selectValue(item)\"\n    >\n      <el-icon\n        ref=\"iconRefs\"\n        :class=\"[\n          ns.e('icon'),\n          { hover: hoverIndex === item },\n          ns.is('active', item <= currentValue),\n          ns.is('focus-visible', item === Math.ceil(currentValue || 1)),\n        ]\"\n      >\n        <component\n          :is=\"activeComponent\"\n          v-show=\"!showDecimalIcon(item) && item <= currentValue\"\n        />\n        <component\n          :is=\"voidComponent\"\n          v-show=\"!showDecimalIcon(item) && item > currentValue\"\n        />\n        <component\n          :is=\"voidComponent\"\n          v-show=\"showDecimalIcon(item)\"\n          :class=\"[ns.em('decimal', 'box')]\"\n        />\n        <el-icon\n          v-show=\"showDecimalIcon(item)\"\n          :style=\"decimalStyle\"\n          :class=\"[ns.e('icon'), ns.e('decimal')]\"\n        >\n          <component :is=\"decimalIconComponent\" />\n        </el-icon>\n      </el-icon>\n    </span>\n    <span\n      v-if=\"showText || showScore\"\n      :class=\"ns.e('text')\"\n      :style=\"{ color: textColor }\"\n    >\n      {{ text }}\n    </span>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, markRaw, ref, watch } from 'vue'\nimport { clamp } from 'lodash-unified'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport {\n  getEventCode,\n  isArray,\n  isObject,\n  isString,\n} from '@pit-element-plus/utils'\nimport {\n  formItemContextKey,\n  useFormDisabled,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Star, StarFilled } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { rateEmits } from './rate'\n\nimport type { CSSProperties, Component } from 'vue'\nimport type { IconInstance } from '@pit-element-plus/components/icon'\nimport type { RateProps } from './rate'\n\nfunction getValueFromMap<T>(\n  value: number,\n  map: Record<string, T | { excluded?: boolean; value: T }>\n) {\n  const isExcludedObject = (\n    val: unknown\n  ): val is { excluded?: boolean } & Record<any, unknown> => isObject(val)\n\n  const matchedKeys = Object.keys(map)\n    .map((key) => +key)\n    .filter((key) => {\n      const val = map[key]\n      const excluded = isExcludedObject(val) ? val.excluded : false\n      return excluded ? value < key : value <= key\n    })\n    .sort((a, b) => a - b)\n  const matchedValue = map[matchedKeys[0]]\n  return (isExcludedObject(matchedValue) && matchedValue.value) || matchedValue\n}\n\ndefineOptions({\n  name: 'ElRate',\n})\n\nconst props = withDefaults(defineProps<RateProps>(), {\n  modelValue: 0,\n  id: undefined,\n  lowThreshold: 2,\n  highThreshold: 4,\n  max: 5,\n  colors: () => ['', '', ''],\n  voidColor: '',\n  disabledVoidColor: '',\n  icons: () => [StarFilled, StarFilled, StarFilled],\n  voidIcon: () => Star,\n  disabledVoidIcon: () => StarFilled,\n  disabled: undefined,\n  textColor: '',\n  texts: () => [\n    'Extremely bad',\n    'Disappointed',\n    'Fair',\n    'Satisfied',\n    'Surprise',\n  ],\n  scoreTemplate: '{value}',\n})\nconst emit = defineEmits(rateEmits)\n\nconst formItemContext = inject(formItemContextKey, undefined)\nconst rateSize = useFormSize()\nconst ns = useNamespace('rate')\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext,\n})\n\nconst currentValue = ref(clamp(props.modelValue, 0, props.max))\nconst hoverIndex = ref(-1)\nconst pointerAtLeftHalf = ref(true)\n\nconst iconRefs = ref<IconInstance[]>([])\nconst iconClientWidths = computed<number[]>(() =>\n  iconRefs.value.map((icon) => icon.$el.clientWidth)\n)\nconst rateClasses = computed(() => [ns.b(), ns.m(rateSize.value)])\nconst rateDisabled = useFormDisabled()\nconst rateStyles = computed(() => {\n  return ns.cssVarBlock({\n    'void-color': props.voidColor,\n    'disabled-void-color': props.disabledVoidColor,\n    'fill-color': activeColor.value,\n  }) as CSSProperties\n})\n\nconst text = computed(() => {\n  let result = ''\n  if (props.showScore) {\n    result = props.scoreTemplate.replace(\n      /\\{\\s*value\\s*\\}/,\n      rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n    )\n  } else if (props.showText) {\n    result = props.texts[Math.ceil(currentValue.value) - 1]\n  }\n  return result\n})\nconst valueDecimal = computed(\n  () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n)\nconst colorMap = computed(() =>\n  isArray(props.colors)\n    ? {\n        [props.lowThreshold]: props.colors[0],\n        [props.highThreshold]: { value: props.colors[1], excluded: true },\n        [props.max]: props.colors[2],\n      }\n    : props.colors\n)\nconst activeColor = computed(() => {\n  const color = getValueFromMap(currentValue.value, colorMap.value)\n  // {value: '', excluded: true} returned\n  return isObject(color) ? '' : color\n})\nconst decimalStyle = computed(() => {\n  let width = ''\n  if (rateDisabled.value) {\n    width = `${valueDecimal.value}%`\n  } else if (props.allowHalf) {\n    width = '50%'\n  }\n  return {\n    color: activeColor.value,\n    width,\n  }\n})\nconst componentMap = computed(() => {\n  let icons = isArray(props.icons) ? [...props.icons] : { ...props.icons }\n  icons = markRaw(icons) as\n    | Array<string | Component>\n    | Record<number, string | Component>\n  return isArray(icons)\n    ? {\n        [props.lowThreshold]: icons[0],\n        [props.highThreshold]: {\n          value: icons[1],\n          excluded: true,\n        },\n        [props.max]: icons[2],\n      }\n    : icons\n})\nconst decimalIconComponent = computed(() =>\n  getValueFromMap(props.modelValue, componentMap.value)\n)\nconst voidComponent = computed(() =>\n  rateDisabled.value\n    ? isString(props.disabledVoidIcon)\n      ? props.disabledVoidIcon\n      : (markRaw(props.disabledVoidIcon) as Component)\n    : isString(props.voidIcon)\n      ? props.voidIcon\n      : (markRaw(props.voidIcon) as Component)\n)\nconst activeComponent = computed(() =>\n  getValueFromMap(currentValue.value, componentMap.value)\n)\n\nfunction showDecimalIcon(item: number) {\n  const showWhenDisabled =\n    rateDisabled.value &&\n    valueDecimal.value > 0 &&\n    item - 1 < props.modelValue &&\n    item > props.modelValue\n  const showWhenAllowHalf =\n    props.allowHalf &&\n    pointerAtLeftHalf.value &&\n    item - 0.5 <= currentValue.value &&\n    item > currentValue.value\n  return showWhenDisabled || showWhenAllowHalf\n}\n\nfunction emitValue(value: number) {\n  // if allow clear, and selected value is same as modelValue, reset value to 0\n  if (props.clearable && value === props.modelValue) {\n    value = 0\n  }\n\n  emit(UPDATE_MODEL_EVENT, value)\n  if (props.modelValue !== value) {\n    emit(CHANGE_EVENT, value)\n  }\n}\n\nfunction selectValue(value: number) {\n  if (rateDisabled.value) {\n    return\n  }\n  if (props.allowHalf && pointerAtLeftHalf.value) {\n    emitValue(currentValue.value)\n  } else {\n    emitValue(value)\n  }\n}\n\nfunction handleKey(e: KeyboardEvent) {\n  if (rateDisabled.value) {\n    return\n  }\n  const code = getEventCode(e)\n  const step = props.allowHalf ? 0.5 : 1\n  let _currentValue = currentValue.value\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.right:\n      _currentValue += step\n      break\n    case EVENT_CODE.left:\n    case EVENT_CODE.down:\n      _currentValue -= step\n      break\n  }\n\n  _currentValue = clamp(_currentValue, 0, props.max)\n\n  if (_currentValue === currentValue.value) {\n    return\n  }\n\n  e.stopPropagation()\n  e.preventDefault()\n  emit(UPDATE_MODEL_EVENT, _currentValue)\n  emit(CHANGE_EVENT, _currentValue)\n  return _currentValue\n}\n\nfunction setCurrentValue(value: number, event?: MouseEvent) {\n  if (rateDisabled.value) {\n    return\n  }\n  if (props.allowHalf && event) {\n    pointerAtLeftHalf.value =\n      event.offsetX * 2 <= iconClientWidths.value[value - 1]\n    currentValue.value = pointerAtLeftHalf.value ? value - 0.5 : value\n  } else {\n    currentValue.value = value\n  }\n  hoverIndex.value = value\n}\n\nfunction resetCurrentValue() {\n  if (rateDisabled.value) {\n    return\n  }\n  if (props.allowHalf) {\n    pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue)\n  }\n  currentValue.value = clamp(props.modelValue, 0, props.max)\n  hoverIndex.value = -1\n}\n\nwatch(\n  () => props.modelValue,\n  (val) => {\n    currentValue.value = clamp(val, 0, props.max)\n    pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue)\n  }\n)\n\nif (!props.modelValue) {\n  emit(UPDATE_MODEL_EVENT, 0)\n}\n\ndefineExpose({\n  /** @description set current value */\n  setCurrentValue,\n  /** @description reset current value */\n  resetCurrentValue,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Rate from './src/rate.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElRate: SFCWithInstall<typeof Rate> = withInstall(Rate)\nexport default ElRate\n\nexport * from './src/rate'\n","import { buildProps } from '@pit-element-plus/utils'\nimport {\n  CircleCheckFilled,\n  CircleCloseFilled,\n  InfoFilled,\n  WarningFilled,\n} from 'pit-element-icons'\n\nimport type { Component, ExtractPublicPropTypes } from 'vue'\nimport type Result from './result.vue'\n\nexport const IconMap = {\n  primary: 'icon-primary',\n  success: 'icon-success',\n  warning: 'icon-warning',\n  error: 'icon-error',\n  info: 'icon-info',\n} as const\n\nexport const IconComponentMap: Record<\n  (typeof IconMap)[keyof typeof IconMap],\n  Component\n> = {\n  [IconMap.primary]: InfoFilled,\n  [IconMap.success]: CircleCheckFilled,\n  [IconMap.warning]: WarningFilled,\n  [IconMap.error]: CircleCloseFilled,\n  [IconMap.info]: InfoFilled,\n}\n\nexport interface ResultProps {\n  /**\n   * @description title of result\n   */\n  title?: string\n  /**\n   * @description sub title of result\n   */\n  subTitle?: string\n  /**\n   * @description icon type of result\n   */\n  icon?: 'primary' | 'success' | 'warning' | 'info' | 'error'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ResultProps` instead.\n */\nexport const resultProps = buildProps({\n  /**\n   * @description title of result\n   */\n  title: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description sub title of result\n   */\n  subTitle: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description icon type of result\n   */\n  icon: {\n    type: String,\n    values: ['primary', 'success', 'warning', 'info', 'error'],\n    default: 'info',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `ResultProps` instead.\n */\nexport type ResultPropsPublic = ExtractPublicPropTypes<typeof resultProps>\n\nexport type ResultInstance = InstanceType<typeof Result> & unknown\n","<template>\n  <div :class=\"ns.b()\">\n    <div :class=\"ns.e('icon')\">\n      <slot name=\"icon\">\n        <component\n          :is=\"resultIcon.component\"\n          v-if=\"resultIcon.component\"\n          :class=\"resultIcon.class\"\n        />\n      </slot>\n    </div>\n    <div v-if=\"title || $slots.title\" :class=\"ns.e('title')\">\n      <slot name=\"title\">\n        <p>{{ title }}</p>\n      </slot>\n    </div>\n    <div v-if=\"subTitle || $slots['sub-title']\" :class=\"ns.e('subtitle')\">\n      <slot name=\"sub-title\">\n        <p>{{ subTitle }}</p>\n      </slot>\n    </div>\n    <div v-if=\"$slots.extra\" :class=\"ns.e('extra')\">\n      <slot name=\"extra\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { IconComponentMap, IconMap } from './result'\n\nimport type { ResultProps } from './result'\n\ndefineOptions({\n  name: 'ElResult',\n})\n\nconst props = withDefaults(defineProps<ResultProps>(), {\n  title: '',\n  subTitle: '',\n  icon: 'info',\n})\n\nconst ns = useNamespace('result')\n\nconst resultIcon = computed(() => {\n  const icon = props.icon\n  const iconClass = icon && IconMap[icon] ? IconMap[icon] : 'icon-info'\n  const iconComponent =\n    IconComponentMap[iconClass] || IconComponentMap['icon-info']\n\n  return {\n    class: iconClass,\n    component: iconComponent,\n  }\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div :class=\"ns.e('icon')\">\n      <slot name=\"icon\">\n        <component\n          :is=\"resultIcon.component\"\n          v-if=\"resultIcon.component\"\n          :class=\"resultIcon.class\"\n        />\n      </slot>\n    </div>\n    <div v-if=\"title || $slots.title\" :class=\"ns.e('title')\">\n      <slot name=\"title\">\n        <p>{{ title }}</p>\n      </slot>\n    </div>\n    <div v-if=\"subTitle || $slots['sub-title']\" :class=\"ns.e('subtitle')\">\n      <slot name=\"sub-title\">\n        <p>{{ subTitle }}</p>\n      </slot>\n    </div>\n    <div v-if=\"$slots.extra\" :class=\"ns.e('extra')\">\n      <slot name=\"extra\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { IconComponentMap, IconMap } from './result'\n\nimport type { ResultProps } from './result'\n\ndefineOptions({\n  name: 'ElResult',\n})\n\nconst props = withDefaults(defineProps<ResultProps>(), {\n  title: '',\n  subTitle: '',\n  icon: 'info',\n})\n\nconst ns = useNamespace('result')\n\nconst resultIcon = computed(() => {\n  const icon = props.icon\n  const iconClass = icon && IconMap[icon] ? IconMap[icon] : 'icon-info'\n  const iconComponent =\n    IconComponentMap[iconClass] || IconComponentMap['icon-info']\n\n  return {\n    class: iconClass,\n    component: iconComponent,\n  }\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <div :class=\"ns.e('icon')\">\n      <slot name=\"icon\">\n        <component\n          :is=\"resultIcon.component\"\n          v-if=\"resultIcon.component\"\n          :class=\"resultIcon.class\"\n        />\n      </slot>\n    </div>\n    <div v-if=\"title || $slots.title\" :class=\"ns.e('title')\">\n      <slot name=\"title\">\n        <p>{{ title }}</p>\n      </slot>\n    </div>\n    <div v-if=\"subTitle || $slots['sub-title']\" :class=\"ns.e('subtitle')\">\n      <slot name=\"sub-title\">\n        <p>{{ subTitle }}</p>\n      </slot>\n    </div>\n    <div v-if=\"$slots.extra\" :class=\"ns.e('extra')\">\n      <slot name=\"extra\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { IconComponentMap, IconMap } from './result'\n\nimport type { ResultProps } from './result'\n\ndefineOptions({\n  name: 'ElResult',\n})\n\nconst props = withDefaults(defineProps<ResultProps>(), {\n  title: '',\n  subTitle: '',\n  icon: 'info',\n})\n\nconst ns = useNamespace('result')\n\nconst resultIcon = computed(() => {\n  const icon = props.icon\n  const iconClass = icon && IconMap[icon] ? IconMap[icon] : 'icon-info'\n  const iconComponent =\n    IconComponentMap[iconClass] || IconComponentMap['icon-info']\n\n  return {\n    class: iconClass,\n    component: iconComponent,\n  }\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Result from './src/result.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElResult: SFCWithInstall<typeof Result> = withInstall(Result)\n\nexport default ElResult\n\nexport * from './src/result'\n","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var cache = null;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n            return cache.lastResult;\n        }\n        var lastResult = resultFn.apply(this, newArgs);\n        cache = {\n            lastResult: lastResult,\n            lastArgs: newArgs,\n            lastThis: this,\n        };\n        return lastResult;\n    }\n    memoized.clear = function clear() {\n        cache = null;\n    };\n    return memoized;\n}\n\nexport { memoizeOne as default };\n","import { computed, getCurrentInstance } from 'vue'\nimport { memoize } from 'lodash-unified'\nimport memoOne from 'memoize-one'\n\nimport type { VirtualizedProps } from '../props'\n\nexport const useCache = <T>() => {\n  const vm = getCurrentInstance()!\n\n  const props = vm.proxy!.$props as VirtualizedProps\n\n  return computed(() => {\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const _getItemStyleCache = (_: any, __: any, ___: any) =>\n      ({}) as Record<string, T>\n    return props.perfMode\n      ? memoize(_getItemStyleCache)\n      : memoOne(_getItemStyleCache)\n  })\n}\n","export const DEFAULT_DYNAMIC_LIST_ITEM_SIZE = 50\n\nexport const ITEM_RENDER_EVT = 'itemRendered'\nexport const SCROLL_EVT = 'scroll'\n\nexport const FORWARD = 'forward'\nexport const BACKWARD = 'backward'\n\nexport const AUTO_ALIGNMENT = 'auto'\nexport const SMART_ALIGNMENT = 'smart'\nexport const START_ALIGNMENT = 'start'\nexport const CENTERED_ALIGNMENT = 'center'\nexport const END_ALIGNMENT = 'end'\n\nexport const HORIZONTAL = 'horizontal'\nexport const VERTICAL = 'vertical'\n\nexport const LTR = 'ltr'\nexport const RTL = 'rtl'\n\nexport const RTL_OFFSET_NAG = 'negative'\nexport const RTL_OFFSET_POS_ASC = 'positive-ascending'\nexport const RTL_OFFSET_POS_DESC = 'positive-descending'\n\nexport const ScrollbarSizeKey = {\n  [HORIZONTAL]: 'height',\n  [VERTICAL]: 'width',\n}\n\nexport const ScrollbarDirKey = {\n  [HORIZONTAL]: 'left',\n  [VERTICAL]: 'top',\n}\n\nexport const SCROLLBAR_MIN_SIZE = 20\n","import { cAF, isFirefox, rAF } from '@pit-element-plus/utils'\nimport { HORIZONTAL } from '../defaults'\n\nimport type { ComputedRef } from 'vue'\nimport type { LayoutDirection } from '../types'\n\ninterface ListWheelState {\n  atStartEdge: ComputedRef<boolean> // exclusive to reachEnd\n  atEndEdge: ComputedRef<boolean>\n  layout: ComputedRef<LayoutDirection>\n}\n\ntype ListWheelHandler = (offset: number) => void\n\nconst useWheel = (\n  { atEndEdge, atStartEdge, layout }: ListWheelState,\n  onWheelDelta: ListWheelHandler\n) => {\n  let frameHandle: number\n  let offset = 0\n\n  const hasReachedEdge = (offset: number) => {\n    const edgeReached =\n      (offset < 0 && atStartEdge.value) || (offset > 0 && atEndEdge.value)\n\n    return edgeReached\n  }\n\n  const onWheel = (e: WheelEvent) => {\n    cAF(frameHandle)\n\n    let { deltaX, deltaY } = e\n    // Special case for windows machine with shift key + wheel scrolling\n    if (e.shiftKey && deltaY !== 0) {\n      deltaX = deltaY\n      deltaY = 0\n    }\n\n    const newOffset = layout.value === HORIZONTAL ? deltaX : deltaY\n\n    if (hasReachedEdge(newOffset)) return\n\n    offset += newOffset\n\n    if (!isFirefox() && newOffset !== 0) {\n      e.preventDefault()\n    }\n\n    frameHandle = rAF(() => {\n      onWheelDelta(offset)\n      offset = 0\n    })\n  }\n\n  return {\n    hasReachedEdge,\n    onWheel,\n  }\n}\n\nexport default useWheel\n","import {\n  buildProp,\n  buildProps,\n  definePropType,\n  mutable,\n} from '@pit-element-plus/utils'\nimport { VERTICAL } from './defaults'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes, StyleValue } from 'vue'\nimport type { GridItemKeyGetter, ItemSize } from './types'\n\nconst itemSize = buildProp({\n  type: definePropType<number | ItemSize>([Number, Function]),\n  required: true,\n} as const)\n\nconst estimatedItemSize = buildProp({\n  type: Number,\n} as const)\n\nconst cache = buildProp({\n  type: Number,\n  default: 2,\n} as const)\n\nconst direction = buildProp({\n  type: String,\n  values: ['ltr', 'rtl'],\n  default: 'ltr',\n} as const)\n\nconst initScrollOffset = buildProp({\n  type: Number,\n  default: 0,\n} as const)\n\nconst total = buildProp({\n  type: Number,\n  required: true,\n} as const)\n\nconst layout = buildProp({\n  type: String,\n  values: ['horizontal', 'vertical'],\n  default: VERTICAL,\n} as const)\n\nexport const virtualizedProps = buildProps({\n  className: {\n    type: String,\n    default: '',\n  },\n\n  containerElement: {\n    type: definePropType<string | Element>([String, Object]),\n    default: 'div',\n  },\n\n  data: {\n    type: definePropType<any[]>(Array),\n    default: () => mutable([] as const),\n  },\n\n  /**\n   * @description controls the horizontal direction.\n   */\n  direction,\n\n  height: {\n    type: [String, Number],\n    required: true,\n  },\n\n  innerElement: {\n    type: [String, Object],\n    default: 'div',\n  },\n\n  innerProps: {\n    type: definePropType<Record<string, unknown>>(Object),\n    default: () => ({}),\n  },\n\n  style: {\n    type: definePropType<StyleValue>([Object, String, Array]),\n  },\n\n  useIsScrolling: Boolean,\n\n  width: {\n    type: [Number, String],\n    required: false,\n  },\n\n  perfMode: {\n    type: Boolean,\n    default: true,\n  },\n  scrollbarAlwaysOn: Boolean,\n} as const)\n\nexport const virtualizedListProps = buildProps({\n  /**\n   * @description describes how many items should be pre rendered to the head\n   * and the tail of the window\n   */\n  cache,\n\n  estimatedItemSize,\n\n  /**\n   * @description controls the list's orientation\n   */\n  layout,\n\n  initScrollOffset,\n\n  /**\n   * @description describes the total number of the list.\n   */\n  total,\n\n  itemSize,\n  ...virtualizedProps,\n} as const)\n\nconst scrollbarSize = {\n  type: Number,\n  default: 6,\n} as const\n\nconst startGap = { type: Number, default: 0 } as const\nconst endGap = { type: Number, default: 2 } as const\n\nexport const virtualizedGridProps = buildProps({\n  columnCache: cache,\n  columnWidth: itemSize,\n  estimatedColumnWidth: estimatedItemSize,\n  estimatedRowHeight: estimatedItemSize,\n  initScrollLeft: initScrollOffset,\n  initScrollTop: initScrollOffset,\n  itemKey: {\n    type: definePropType<GridItemKeyGetter>(Function),\n    default: ({\n      columnIndex,\n      rowIndex,\n    }: {\n      columnIndex: number\n      rowIndex: number\n    }) => `${rowIndex}:${columnIndex}`,\n  },\n  rowCache: cache,\n  rowHeight: itemSize,\n  totalColumn: total,\n  totalRow: total,\n  hScrollbarSize: scrollbarSize,\n  vScrollbarSize: scrollbarSize,\n  scrollbarStartGap: startGap,\n  scrollbarEndGap: endGap,\n  role: String,\n  ...virtualizedProps,\n} as const)\n\nexport const virtualizedScrollbarProps = buildProps({\n  alwaysOn: Boolean,\n  class: String,\n  layout,\n  total,\n  ratio: {\n    type: Number,\n    required: true,\n  },\n  clientSize: {\n    type: Number,\n    required: true,\n  },\n  scrollFrom: {\n    type: Number,\n    required: true,\n  },\n  scrollbarSize,\n  startGap,\n  endGap,\n\n  visible: Boolean,\n} as const)\n\nexport type VirtualizedProps = ExtractPropTypes<typeof virtualizedProps>\nexport type VirtualizedPropsPublic = ExtractPublicPropTypes<\n  typeof virtualizedProps\n>\nexport type VirtualizedListProps = ExtractPropTypes<typeof virtualizedListProps>\nexport type VirtualizedListPropsPublic = ExtractPublicPropTypes<\n  typeof virtualizedListProps\n>\nexport type VirtualizedGridProps = ExtractPropTypes<typeof virtualizedGridProps>\nexport type VirtualizedGridPropsPublic = ExtractPublicPropTypes<\n  typeof virtualizedGridProps\n>\n\nexport type VirtualizedScrollbarProps = ExtractPropTypes<\n  typeof virtualizedScrollbarProps\n>\nexport type VirtualizedScrollbarPropsPublic = ExtractPublicPropTypes<\n  typeof virtualizedScrollbarProps\n>\n","import {\n  BACKWARD,\n  FORWARD,\n  HORIZONTAL,\n  LTR,\n  RTL,\n  RTL_OFFSET_NAG,\n  RTL_OFFSET_POS_ASC,\n  RTL_OFFSET_POS_DESC,\n} from './defaults'\n\nimport type { CSSProperties } from 'vue'\nimport type { Direction, RTLOffsetType } from './types'\n\nexport const getScrollDir = (prev: number, cur: number) =>\n  prev < cur ? FORWARD : BACKWARD\n\nexport const isHorizontal = (dir: string) =>\n  dir === LTR || dir === RTL || dir === HORIZONTAL\n\nexport const isRTL = (dir: Direction) => dir === RTL\n\nlet cachedRTLResult: RTLOffsetType | null = null\n\nexport function getRTLOffsetType(recalculate = false): RTLOffsetType {\n  if (cachedRTLResult === null || recalculate) {\n    const outerDiv = document.createElement('div')\n    const outerStyle = outerDiv.style\n    outerStyle.width = '50px'\n    outerStyle.height = '50px'\n    outerStyle.overflow = 'scroll'\n    outerStyle.direction = 'rtl'\n\n    const innerDiv = document.createElement('div')\n    const innerStyle = innerDiv.style\n    innerStyle.width = '100px'\n    innerStyle.height = '100px'\n\n    outerDiv.appendChild(innerDiv)\n\n    document.body.appendChild(outerDiv)\n\n    if (outerDiv.scrollLeft > 0) {\n      cachedRTLResult = RTL_OFFSET_POS_DESC\n    } else {\n      outerDiv.scrollLeft = 1\n      if (outerDiv.scrollLeft === 0) {\n        cachedRTLResult = RTL_OFFSET_NAG\n      } else {\n        cachedRTLResult = RTL_OFFSET_POS_ASC\n      }\n    }\n\n    document.body.removeChild(outerDiv)\n\n    return cachedRTLResult\n  }\n\n  return cachedRTLResult\n}\n\ntype RenderThumbStyleParams = {\n  bar: {\n    size: 'height' | 'width'\n    axis: 'X' | 'Y'\n  }\n  size: string\n  move: number\n}\n\nexport function renderThumbStyle(\n  { move, size, bar }: RenderThumbStyleParams,\n  layout: string\n) {\n  const style: CSSProperties = {}\n  const translate = `translate${bar.axis}(${move}px)`\n\n  style[bar.size] = size\n  style.transform = translate\n\n  if (layout === 'horizontal') {\n    style.height = '100%'\n  } else {\n    style.width = '100%'\n  }\n\n  return style\n}\n","import {\n  computed,\n  defineComponent,\n  h,\n  onBeforeUnmount,\n  reactive,\n  ref,\n  unref,\n  watch,\n  withModifiers,\n} from 'vue'\nimport { BAR_MAP } from '@pit-element-plus/components/scrollbar'\nimport { cAF, rAF } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { HORIZONTAL, SCROLLBAR_MIN_SIZE, ScrollbarDirKey } from '../defaults'\nimport { virtualizedScrollbarProps } from '../props'\nimport { renderThumbStyle } from '../utils'\n\nimport type { CSSProperties } from 'vue'\n\ninterface ScrollState {\n  isDragging: boolean\n  traveled: number\n  [key: string]: unknown\n}\n\nconst ScrollBar = defineComponent({\n  name: 'ElVirtualScrollBar',\n  props: virtualizedScrollbarProps,\n  emits: ['scroll', 'start-move', 'stop-move'],\n  setup(props, { emit }) {\n    const GAP = computed(() => props.startGap + props.endGap) // top 2 + bottom 2 | left 2 + right 2\n\n    const nsVirtualScrollbar = useNamespace('virtual-scrollbar')\n    const nsScrollbar = useNamespace('scrollbar')\n    // DOM refs\n    const trackRef = ref<HTMLElement>()\n    const thumbRef = ref<HTMLElement>()\n\n    // local variables\n    let frameHandle: null | number = null\n    let onselectstartStore: null | typeof document.onselectstart = null\n\n    // data\n    const state = reactive<ScrollState>({\n      isDragging: false,\n      traveled: 0,\n    })\n\n    const bar = computed(() => BAR_MAP[props.layout])\n\n    const trackSize = computed(() => props.clientSize! - unref(GAP))\n\n    const trackStyle = computed<CSSProperties>(() => ({\n      position: 'absolute',\n      width: `${\n        HORIZONTAL === props.layout ? trackSize.value : props.scrollbarSize\n      }px`,\n      height: `${\n        HORIZONTAL === props.layout ? props.scrollbarSize : trackSize.value\n      }px`,\n      [ScrollbarDirKey[props.layout]]: '2px',\n      right: '2px',\n      bottom: '2px',\n      borderRadius: '4px',\n    }))\n\n    const thumbSize = computed(() => {\n      const ratio = props.ratio!\n      if (ratio >= 100) {\n        return Number.POSITIVE_INFINITY\n      }\n\n      if (ratio >= 50) {\n        return (ratio * trackSize.value) / 100\n      }\n\n      const SCROLLBAR_MAX_SIZE = trackSize.value / 3\n      return Math.floor(\n        Math.min(\n          Math.max((ratio * trackSize.value) / 100, SCROLLBAR_MIN_SIZE),\n          SCROLLBAR_MAX_SIZE\n        )\n      )\n    })\n\n    const thumbStyle = computed<CSSProperties>(() => {\n      if (!Number.isFinite(thumbSize.value)) {\n        return {\n          display: 'none',\n        }\n      }\n\n      const thumb = `${thumbSize.value}px`\n\n      const style = renderThumbStyle(\n        {\n          bar: bar.value,\n          size: thumb,\n          move: state.traveled,\n        },\n        props.layout\n      )\n\n      return style\n    })\n\n    const totalSteps = computed(() =>\n      Math.ceil(props.clientSize! - thumbSize.value - unref(GAP))\n    )\n\n    const attachEvents = () => {\n      window.addEventListener('mousemove', onMouseMove)\n      window.addEventListener('mouseup', onMouseUp)\n\n      const thumbEl = unref(thumbRef)\n\n      if (!thumbEl) return\n\n      onselectstartStore = document.onselectstart\n      document.onselectstart = () => false\n\n      thumbEl.addEventListener('touchmove', onMouseMove, { passive: true })\n      thumbEl.addEventListener('touchend', onMouseUp)\n    }\n\n    const detachEvents = () => {\n      window.removeEventListener('mousemove', onMouseMove)\n      window.removeEventListener('mouseup', onMouseUp)\n\n      document.onselectstart = onselectstartStore\n      onselectstartStore = null\n\n      const thumbEl = unref(thumbRef)\n      if (!thumbEl) return\n\n      thumbEl.removeEventListener('touchmove', onMouseMove)\n      thumbEl.removeEventListener('touchend', onMouseUp)\n    }\n\n    const onThumbMouseDown = (e: Event | KeyboardEvent | MouseEvent) => {\n      e.stopImmediatePropagation()\n      if (\n        (e as KeyboardEvent).ctrlKey ||\n        [1, 2].includes((e as MouseEvent).button)\n      ) {\n        return\n      }\n\n      state.isDragging = true\n      state[bar.value.axis] =\n        (e.currentTarget as HTMLElement)[bar.value.offset] -\n        ((e as MouseEvent)[bar.value.client] -\n          (e.currentTarget as HTMLElement).getBoundingClientRect()[\n            bar.value.direction\n          ])\n\n      emit('start-move')\n      attachEvents()\n    }\n\n    const onMouseUp = () => {\n      state.isDragging = false\n      state[bar.value.axis] = 0\n      emit('stop-move')\n      detachEvents()\n    }\n\n    const onMouseMove = (e: MouseEvent | TouchEvent) => {\n      const { isDragging } = state\n      if (!isDragging) return\n      if (!thumbRef.value || !trackRef.value) return\n\n      const prevPage = state[bar.value.axis]\n      if (!prevPage) return\n\n      cAF(frameHandle!)\n      // using the current track's offset top/left - the current pointer's clientY/clientX\n      // to get the relative position of the pointer to the track.\n      const offset =\n        (trackRef.value.getBoundingClientRect()[bar.value.direction] -\n          (e as MouseEvent)[bar.value.client]) *\n        -1\n\n      // find where the thumb was clicked on.\n      const thumbClickPosition =\n        thumbRef.value[bar.value.offset] - (prevPage as number)\n      /**\n       *  +--------------+                                   +--------------+\n       *  |              -  <--------- thumb.offsetTop       |              |\n       *  |             |+|             <--+                 |              |\n       *  |              -                 |                 |              |\n       *  |   Content    |                 |                 |              |\n       *  |              |                 |                 |              |\n       *  |              |                 |                 |              |\n       *  |              |                 |                 |              -\n       *  |              |                 +-->              |             |+|\n       *  |              |                                   |              -\n       *  +--------------+                                   +--------------+\n       */\n\n      // using the current position - prev position to\n\n      const distance = offset - thumbClickPosition\n      // get how many steps in total.\n      // gap of 2 on top, 2 on bottom, in total 4.\n      // using totalSteps ÷ totalSize getting each step's size * distance to get the new\n      // scroll offset to scrollTo\n      frameHandle = rAF(() => {\n        state.traveled = Math.max(0, Math.min(distance, totalSteps.value))\n        emit('scroll', distance, totalSteps.value)\n      })\n    }\n\n    const clickTrackHandler = (e: MouseEvent) => {\n      const offset = Math.abs(\n        (e.target as HTMLElement).getBoundingClientRect()[bar.value.direction] -\n          e[bar.value.client]\n      )\n      const thumbHalf = thumbRef.value![bar.value.offset] / 2\n      const distance = offset - thumbHalf\n\n      state.traveled = Math.max(0, Math.min(distance, totalSteps.value))\n      emit('scroll', distance, totalSteps.value)\n    }\n\n    watch(\n      () => props.scrollFrom,\n      (v) => {\n        if (state.isDragging) return\n        /**\n         *  this is simply mapping the current scrollbar offset\n         *\n         *  formula 1:\n         *    v = scrollOffset / (estimatedTotalSize - clientSize)\n         *    traveled = v * (clientSize - thumbSize - GAP) --> v * totalSteps\n         *\n         *  formula 2:\n         *    traveled = (v * clientSize) / (clientSize / totalSteps) --> (v * clientSize) * (totalSteps / clientSize) --> v * totalSteps\n         */\n        state.traveled = Math.ceil(v! * totalSteps.value)\n      }\n    )\n\n    onBeforeUnmount(() => {\n      detachEvents()\n    })\n\n    return () => {\n      return h(\n        'div',\n        {\n          role: 'presentation',\n          ref: trackRef,\n          class: [\n            nsVirtualScrollbar.b(),\n            props.class,\n            (props.alwaysOn || state.isDragging) && 'always-on',\n          ],\n          style: trackStyle.value,\n          onMousedown: withModifiers(clickTrackHandler as (e: Event) => void, [\n            'stop',\n            'prevent',\n          ]),\n          onTouchstartPrevent: onThumbMouseDown,\n        },\n        h(\n          'div',\n          {\n            ref: thumbRef,\n            class: nsScrollbar.e('thumb'),\n            style: thumbStyle.value,\n            onMousedown: onThumbMouseDown,\n          },\n          []\n        )\n      )\n    }\n  },\n})\n\nexport default ScrollBar\n","import {\n  Fragment,\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  mergeProps,\n  nextTick,\n  onActivated,\n  onMounted,\n  onUpdated,\n  ref,\n  resolveDynamicComponent,\n  unref,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { hasOwn, isClient, isNumber, isString } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useCache } from '../hooks/use-cache'\nimport useWheel from '../hooks/use-wheel'\nimport Scrollbar from '../components/scrollbar'\nimport { getRTLOffsetType, getScrollDir, isHorizontal } from '../utils'\nimport { virtualizedListProps } from '../props'\nimport {\n  AUTO_ALIGNMENT,\n  BACKWARD,\n  FORWARD,\n  HORIZONTAL,\n  ITEM_RENDER_EVT,\n  RTL,\n  RTL_OFFSET_NAG,\n  RTL_OFFSET_POS_ASC,\n  RTL_OFFSET_POS_DESC,\n  SCROLL_EVT,\n} from '../defaults'\n\nimport type { CSSProperties, Slot, VNode, VNodeChild } from 'vue'\nimport type { Alignment, ListConstructorProps } from '../types'\nimport type { VirtualizedListProps } from '../props'\n\nconst createList = ({\n  name,\n  getOffset,\n  getItemSize,\n  getItemOffset,\n  getEstimatedTotalSize,\n  getStartIndexForOffset,\n  getStopIndexForStartIndex,\n  initCache,\n  clearCache,\n  validateProps,\n}: ListConstructorProps<VirtualizedListProps>) => {\n  return defineComponent({\n    name: name ?? 'ElVirtualList',\n    props: virtualizedListProps,\n    emits: [ITEM_RENDER_EVT, SCROLL_EVT],\n    setup(props, { emit, expose }) {\n      validateProps(props)\n      const instance = getCurrentInstance()!\n\n      const ns = useNamespace('vl')\n\n      const dynamicSizeCache = ref(initCache(props, instance))\n\n      const getItemStyleCache = useCache<CSSProperties>()\n      // refs\n      // here windowRef and innerRef can be type of HTMLElement\n      // or user defined component type, depends on the type passed\n      // by user\n      const windowRef = ref<HTMLElement>()\n      const innerRef = ref<HTMLElement>()\n      const scrollbarRef = ref()\n      const states = ref({\n        isScrolling: false,\n        scrollDir: 'forward',\n        scrollOffset: isNumber(props.initScrollOffset)\n          ? props.initScrollOffset\n          : 0,\n        updateRequested: false,\n        isScrollbarDragging: false,\n        scrollbarAlwaysOn: props.scrollbarAlwaysOn,\n      })\n\n      // computed\n      const itemsToRender = computed(() => {\n        const { total, cache } = props\n        const { isScrolling, scrollDir, scrollOffset } = unref(states)\n\n        if (total === 0) {\n          return [0, 0, 0, 0]\n        }\n\n        const startIndex = getStartIndexForOffset(\n          props,\n          scrollOffset,\n          unref(dynamicSizeCache)\n        )\n        const stopIndex = getStopIndexForStartIndex(\n          props,\n          startIndex,\n          scrollOffset,\n          unref(dynamicSizeCache)\n        )\n\n        const cacheBackward =\n          !isScrolling || scrollDir === BACKWARD ? Math.max(1, cache) : 1\n        const cacheForward =\n          !isScrolling || scrollDir === FORWARD ? Math.max(1, cache) : 1\n\n        return [\n          Math.max(0, startIndex - cacheBackward),\n          Math.max(0, Math.min(total! - 1, stopIndex + cacheForward)),\n          startIndex,\n          stopIndex,\n        ]\n      })\n\n      const estimatedTotalSize = computed(() =>\n        getEstimatedTotalSize(props, unref(dynamicSizeCache))\n      )\n\n      const _isHorizontal = computed(() => isHorizontal(props.layout))\n\n      const windowStyle = computed(() => [\n        {\n          position: 'relative',\n          [`overflow-${_isHorizontal.value ? 'x' : 'y'}`]: 'scroll',\n          WebkitOverflowScrolling: 'touch',\n          willChange: 'transform',\n        },\n        {\n          direction: props.direction,\n          height: isNumber(props.height) ? `${props.height}px` : props.height,\n          width: isNumber(props.width) ? `${props.width}px` : props.width,\n        },\n        props.style,\n      ])\n\n      const innerStyle = computed(() => {\n        const size = unref(estimatedTotalSize)\n        const horizontal = unref(_isHorizontal)\n        return {\n          height: horizontal ? '100%' : `${size}px`,\n          pointerEvents: unref(states).isScrolling ? 'none' : undefined,\n          width: horizontal ? `${size}px` : '100%',\n\n          // fix scrolling issues in Firefox.\n          margin: 0,\n          boxSizing: 'border-box',\n        }\n      })\n\n      const clientSize = computed(() =>\n        _isHorizontal.value ? props.width : props.height\n      )\n\n      // methods\n      const { onWheel } = useWheel(\n        {\n          atStartEdge: computed(() => states.value.scrollOffset <= 0),\n          atEndEdge: computed(\n            () => states.value.scrollOffset >= estimatedTotalSize.value\n          ),\n          layout: computed(() => props.layout),\n        },\n        (offset) => {\n          ;(\n            scrollbarRef.value as {\n              onMouseUp: () => void\n            }\n          ).onMouseUp?.()\n          scrollTo(\n            Math.min(\n              states.value.scrollOffset + offset,\n              estimatedTotalSize.value - (clientSize.value as number)\n            )\n          )\n        }\n      )\n\n      useEventListener(windowRef, 'wheel', onWheel, {\n        passive: false,\n      })\n\n      const emitEvents = () => {\n        const { total } = props\n\n        if (total! > 0) {\n          const [cacheStart, cacheEnd, visibleStart, visibleEnd] =\n            unref(itemsToRender)\n          emit(ITEM_RENDER_EVT, cacheStart, cacheEnd, visibleStart, visibleEnd)\n        }\n\n        const { scrollDir, scrollOffset, updateRequested } = unref(states)\n        emit(SCROLL_EVT, scrollDir, scrollOffset, updateRequested)\n      }\n\n      const scrollVertically = (e: Event) => {\n        const { clientHeight, scrollHeight, scrollTop } =\n          e.currentTarget as HTMLElement\n        const _states = unref(states)\n        if (_states.scrollOffset === scrollTop) {\n          return\n        }\n\n        const scrollOffset = Math.max(\n          0,\n          Math.min(scrollTop, scrollHeight - clientHeight)\n        )\n\n        states.value = {\n          ..._states,\n          isScrolling: true,\n          scrollDir: getScrollDir(_states.scrollOffset, scrollOffset),\n          scrollOffset,\n          updateRequested: false,\n        }\n\n        nextTick(resetIsScrolling)\n      }\n\n      const scrollHorizontally = (e: Event) => {\n        const { clientWidth, scrollLeft, scrollWidth } =\n          e.currentTarget as HTMLElement\n        const _states = unref(states)\n\n        if (_states.scrollOffset === scrollLeft) {\n          return\n        }\n\n        const { direction } = props\n\n        let scrollOffset = scrollLeft\n\n        if (direction === RTL) {\n          // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n          // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n          // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n          // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n          switch (getRTLOffsetType()) {\n            case RTL_OFFSET_NAG: {\n              scrollOffset = -scrollLeft\n              break\n            }\n            case RTL_OFFSET_POS_DESC: {\n              scrollOffset = scrollWidth - clientWidth - scrollLeft\n              break\n            }\n          }\n        }\n\n        scrollOffset = Math.max(\n          0,\n          Math.min(scrollOffset, scrollWidth - clientWidth)\n        )\n\n        states.value = {\n          ..._states,\n          isScrolling: true,\n          scrollDir: getScrollDir(_states.scrollOffset, scrollOffset),\n          scrollOffset,\n          updateRequested: false,\n        }\n\n        nextTick(resetIsScrolling)\n      }\n\n      const onScroll = (e: Event) => {\n        unref(_isHorizontal) ? scrollHorizontally(e) : scrollVertically(e)\n        emitEvents()\n      }\n\n      const onScrollbarScroll = (distanceToGo: number, totalSteps: number) => {\n        const offset =\n          ((estimatedTotalSize.value - (clientSize.value as number)) /\n            totalSteps) *\n          distanceToGo\n        scrollTo(\n          Math.min(\n            estimatedTotalSize.value - (clientSize.value as number),\n            offset\n          )\n        )\n      }\n\n      const scrollTo = (offset: number) => {\n        offset = Math.max(offset, 0)\n\n        if (offset === unref(states).scrollOffset) {\n          return\n        }\n\n        states.value = {\n          ...unref(states),\n          scrollOffset: offset,\n          scrollDir: getScrollDir(unref(states).scrollOffset, offset),\n          updateRequested: true,\n        }\n\n        nextTick(resetIsScrolling)\n      }\n\n      const scrollToItem = (\n        idx: number,\n        alignment: Alignment = AUTO_ALIGNMENT\n      ) => {\n        const { scrollOffset } = unref(states)\n\n        idx = Math.max(0, Math.min(idx, props.total! - 1))\n        scrollTo(\n          getOffset(\n            props,\n            idx,\n            alignment,\n            scrollOffset,\n            unref(dynamicSizeCache)\n          )\n        )\n      }\n\n      const getItemStyle = (idx: number) => {\n        const { direction, itemSize, layout } = props\n\n        const itemStyleCache = getItemStyleCache.value(\n          clearCache && itemSize,\n          clearCache && layout,\n          clearCache && direction\n        )\n\n        let style: CSSProperties\n        if (hasOwn(itemStyleCache, String(idx))) {\n          style = itemStyleCache[idx]\n        } else {\n          const offset = getItemOffset(props, idx, unref(dynamicSizeCache))\n          const size = getItemSize(props, idx, unref(dynamicSizeCache))\n          const horizontal = unref(_isHorizontal)\n\n          const isRtl = direction === RTL\n          const offsetHorizontal = horizontal ? offset : 0\n          itemStyleCache[idx] = style = {\n            position: 'absolute',\n            left: isRtl ? undefined : `${offsetHorizontal}px`,\n            right: isRtl ? `${offsetHorizontal}px` : undefined,\n            top: !horizontal ? `${offset}px` : 0,\n            height: !horizontal ? `${size}px` : '100%',\n            width: horizontal ? `${size}px` : '100%',\n          }\n        }\n\n        return style\n      }\n\n      // TODO: perf optimization here, reset isScrolling with debounce.\n\n      const resetIsScrolling = () => {\n        states.value.isScrolling = false\n        nextTick(() => {\n          getItemStyleCache.value(-1, null, null)\n        })\n      }\n\n      const resetScrollTop = () => {\n        const window = windowRef.value\n        if (window) {\n          window.scrollTop = 0\n        }\n      }\n\n      // life cycles\n      onMounted(() => {\n        if (!isClient) return\n        const { initScrollOffset } = props\n        const windowElement = unref(windowRef)\n        if (isNumber(initScrollOffset) && windowElement) {\n          if (unref(_isHorizontal)) {\n            windowElement.scrollLeft = initScrollOffset\n          } else {\n            windowElement.scrollTop = initScrollOffset\n          }\n        }\n\n        emitEvents()\n      })\n\n      onUpdated(() => {\n        const { direction, layout } = props\n        const { scrollOffset, updateRequested } = unref(states)\n        const windowElement = unref(windowRef)\n\n        if (updateRequested && windowElement) {\n          if (layout === HORIZONTAL) {\n            if (direction === RTL) {\n              // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n              // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n              // So we need to determine which browser behavior we're dealing with, and mimic it.\n              switch (getRTLOffsetType()) {\n                case RTL_OFFSET_NAG: {\n                  windowElement.scrollLeft = -scrollOffset\n                  break\n                }\n                case RTL_OFFSET_POS_ASC: {\n                  windowElement.scrollLeft = scrollOffset\n                  break\n                }\n                default: {\n                  const { clientWidth, scrollWidth } = windowElement\n                  windowElement.scrollLeft =\n                    scrollWidth - clientWidth - scrollOffset\n                  break\n                }\n              }\n            } else {\n              windowElement.scrollLeft = scrollOffset\n            }\n          } else {\n            windowElement.scrollTop = scrollOffset\n          }\n        }\n      })\n\n      onActivated(() => {\n        unref(windowRef)!.scrollTop = unref(states).scrollOffset\n      })\n\n      const api = {\n        ns,\n        clientSize,\n        estimatedTotalSize,\n        windowStyle,\n        windowRef,\n        innerRef,\n        innerStyle,\n        itemsToRender,\n        scrollbarRef,\n        states,\n        getItemStyle,\n        onScroll,\n        onScrollbarScroll,\n        onWheel,\n        scrollTo,\n        scrollToItem,\n        resetScrollTop,\n      }\n\n      expose({\n        windowRef,\n        innerRef,\n        getItemStyleCache,\n        scrollTo,\n        scrollToItem,\n        resetScrollTop,\n        states,\n      })\n\n      return api\n    },\n\n    render(ctx: any) {\n      const {\n        $slots,\n        className,\n        clientSize,\n        containerElement,\n        data,\n        getItemStyle,\n        innerElement,\n        itemsToRender,\n        innerStyle,\n        layout,\n        total,\n        onScroll,\n        onScrollbarScroll,\n        states,\n        useIsScrolling,\n        windowStyle,\n        ns,\n      } = ctx\n\n      const [start, end] = itemsToRender\n\n      const Container = resolveDynamicComponent(containerElement)\n      const Inner = resolveDynamicComponent(innerElement)\n\n      const children = [] as VNodeChild[]\n\n      if (total > 0) {\n        for (let i = start; i <= end; i++) {\n          children.push(\n            h(\n              Fragment,\n              { key: i },\n              ($slots.default as Slot)?.({\n                data,\n                index: i,\n                isScrolling: useIsScrolling ? states.isScrolling : undefined,\n                style: getItemStyle(i),\n              })\n            )\n          )\n        }\n      }\n\n      const InnerNode = [\n        h(\n          Inner as VNode,\n          mergeProps(ctx.innerProps, {\n            style: innerStyle,\n            ref: 'innerRef',\n          }),\n          !isString(Inner)\n            ? {\n                default: () => children,\n              }\n            : children\n        ),\n      ]\n\n      const scrollbar = h(Scrollbar, {\n        ref: 'scrollbarRef',\n        clientSize,\n        layout,\n        onScroll: onScrollbarScroll,\n        ratio: (clientSize * 100) / this.estimatedTotalSize,\n        scrollFrom:\n          states.scrollOffset / (this.estimatedTotalSize - clientSize),\n        total,\n        alwaysOn: states.scrollbarAlwaysOn,\n      })\n\n      const listContainer = h(\n        Container as VNode,\n        {\n          class: [ns.e('window'), className],\n          style: windowStyle,\n          onScroll,\n          ref: 'windowRef',\n          key: 0,\n        },\n        !isString(Container) ? { default: () => [InnerNode] } : [InnerNode]\n      )\n\n      return h(\n        'div',\n        {\n          key: 0,\n          class: [ns.e('wrapper'), states.scrollbarAlwaysOn ? 'always-on' : ''],\n        },\n        [listContainer, scrollbar]\n      )\n    },\n  })\n}\n\nexport default createList\n","import { isString, throwError } from '@pit-element-plus/utils'\nimport buildList from '../builders/build-list'\nimport { isHorizontal } from '../utils'\nimport {\n  AUTO_ALIGNMENT,\n  CENTERED_ALIGNMENT,\n  END_ALIGNMENT,\n  SMART_ALIGNMENT,\n  START_ALIGNMENT,\n} from '../defaults'\n\nimport type { VirtualizedListProps } from '../props'\n\ntype Props = VirtualizedListProps\n\nconst FixedSizeList = buildList({\n  name: 'ElFixedSizeList',\n  getItemOffset: ({ itemSize }, index) => index * (itemSize as number),\n\n  getItemSize: ({ itemSize }) => itemSize as number,\n\n  getEstimatedTotalSize: ({ total, itemSize }) => (itemSize as number) * total,\n\n  getOffset: (\n    { height, total, itemSize, layout, width },\n    index,\n    alignment,\n    scrollOffset\n  ) => {\n    const size = (isHorizontal(layout) ? width : height) as number\n    if (process.env.NODE_ENV !== 'production' && isString(size)) {\n      throwError(\n        '[ElVirtualList]',\n        `\n        You should set\n          width/height\n        to number when your layout is\n          horizontal/vertical\n      `\n      )\n    }\n    const lastItemOffset = Math.max(0, total * (itemSize as number) - size)\n    const maxOffset = Math.min(lastItemOffset, index * (itemSize as number))\n    const minOffset = Math.max(0, (index + 1) * (itemSize as number) - size)\n\n    if (alignment === SMART_ALIGNMENT) {\n      if (\n        scrollOffset >= minOffset - size &&\n        scrollOffset <= maxOffset + size\n      ) {\n        alignment = AUTO_ALIGNMENT\n      } else {\n        alignment = CENTERED_ALIGNMENT\n      }\n    }\n\n    switch (alignment) {\n      case START_ALIGNMENT: {\n        return maxOffset\n      }\n      case END_ALIGNMENT: {\n        return minOffset\n      }\n      case CENTERED_ALIGNMENT: {\n        // \"Centered\" offset is usually the average of the min and max.\n        // But near the edges of the list, this doesn't hold true.\n        const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2)\n        if (middleOffset < Math.ceil(size / 2)) {\n          return 0 // near the beginning\n        } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n          return lastItemOffset // near the end\n        } else {\n          return middleOffset\n        }\n      }\n      case AUTO_ALIGNMENT:\n      default: {\n        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n          return scrollOffset\n        } else if (scrollOffset < minOffset) {\n          return minOffset\n        } else {\n          return maxOffset\n        }\n      }\n    }\n  },\n\n  getStartIndexForOffset: ({ total, itemSize }, offset) =>\n    Math.max(0, Math.min(total - 1, Math.floor(offset / (itemSize as number)))),\n\n  getStopIndexForStartIndex: (\n    { height, total, itemSize, layout, width }: Props,\n    startIndex: number,\n    scrollOffset: number\n  ) => {\n    const offset = startIndex * (itemSize as number)\n    const size = isHorizontal(layout) ? width : height\n    const numVisibleItems = Math.ceil(\n      ((size as number) + scrollOffset - offset) / (itemSize as number)\n    )\n    return Math.max(\n      0,\n      Math.min(\n        total - 1,\n        // because startIndex is inclusive, so in order to prevent array outbound indexing\n        // we need to - 1 to prevent outbound behavior\n        startIndex + numVisibleItems - 1\n      )\n    )\n  },\n\n  /**\n   * Fixed size list does not need this cache\n   * Using any to bypass it, TODO: Using type inference to fix this.\n   */\n  initCache() {\n    return undefined as any\n  },\n\n  clearCache: true,\n\n  validateProps() {},\n})\n\nexport type FixedSizeListInstance = InstanceType<typeof FixedSizeList> & unknown\nexport default FixedSizeList\n","import { throwError } from '@pit-element-plus/utils'\nimport createList from '../builders/build-list'\nimport { isHorizontal } from '../utils'\nimport {\n  AUTO_ALIGNMENT,\n  CENTERED_ALIGNMENT,\n  DEFAULT_DYNAMIC_LIST_ITEM_SIZE,\n  END_ALIGNMENT,\n  SMART_ALIGNMENT,\n  START_ALIGNMENT,\n} from '../defaults'\n\nimport type { VirtualizedListProps } from '../props'\nimport type { ItemSize, ListCache, ListItem } from '../types'\n\ntype Props = VirtualizedListProps\n\nconst SCOPE = 'ElDynamicSizeList'\nconst getItemFromCache = (\n  props: Props,\n  index: number,\n  listCache: ListCache\n): ListItem => {\n  const { itemSize } = props\n  const { items, lastVisitedIndex } = listCache\n\n  if (index > lastVisitedIndex) {\n    let offset = 0\n    if (lastVisitedIndex >= 0) {\n      const item = items[lastVisitedIndex]\n      offset = item.offset + item.size\n    }\n\n    for (let i = lastVisitedIndex + 1; i <= index; i++) {\n      const size = (itemSize as ItemSize)(i)\n\n      items[i] = {\n        offset,\n        size,\n      }\n\n      offset += size\n    }\n\n    listCache.lastVisitedIndex = index\n  }\n\n  return items[index]\n}\n\nconst findItem = (props: Props, listCache: ListCache, offset: number) => {\n  const { items, lastVisitedIndex } = listCache\n\n  const lastVisitedOffset =\n    lastVisitedIndex > 0 ? items[lastVisitedIndex].offset : 0\n\n  if (lastVisitedOffset >= offset) {\n    return bs(props, listCache, 0, lastVisitedIndex, offset)\n  }\n  return es(props, listCache, Math.max(0, lastVisitedIndex), offset)\n}\n\n// bs stands for binary search which has approximately time complexity of O(Log n)\n// space complexity of O(1)\n// in this case we use it for search the offset of each item, since\n// the cached items' offset is monotonically increasing\nconst bs = (\n  props: Props,\n  listCache: ListCache,\n  low: number,\n  high: number,\n  offset: number\n) => {\n  while (low <= high) {\n    const mid = low + Math.floor((high - low) / 2)\n    const currentOffset = getItemFromCache(props, mid, listCache).offset\n\n    if (currentOffset === offset) {\n      return mid\n    } else if (currentOffset < offset) {\n      low = mid + 1\n    } else if (currentOffset > offset) {\n      high = mid - 1\n    }\n  }\n\n  return Math.max(0, low - 1)\n}\n\n// es stands for exponential search which has time complexity of O(Log n) and\n// space complexity of O(1) in the case of finding the boundary element.\n// the exponential indicator in this case is 2.\n// for more detail about exponential search click this link\n// https://www.freecodecamp.org/news/search-algorithms-exponential-search-explained/\n\nconst es = (\n  props: Props,\n  listCache: ListCache,\n  index: number,\n  offset: number\n) => {\n  const { total } = props\n  let exponent = 1\n\n  while (\n    index < total &&\n    getItemFromCache(props, index, listCache).offset < offset\n  ) {\n    index += exponent\n    exponent *= 2\n  }\n\n  return bs(\n    props,\n    listCache,\n    Math.floor(index / 2),\n    Math.min(index, total - 1),\n    offset\n  )\n}\n\nconst getEstimatedTotalSize = (\n  { total }: Props,\n  { items, estimatedItemSize, lastVisitedIndex }: ListCache\n) => {\n  let totalSizeOfMeasuredItems = 0\n\n  if (lastVisitedIndex >= total) {\n    lastVisitedIndex = total - 1\n  }\n\n  if (lastVisitedIndex >= 0) {\n    const item = items[lastVisitedIndex]\n    totalSizeOfMeasuredItems = item.offset + item.size\n  }\n\n  const numUnmeasuredItems = total - lastVisitedIndex - 1\n  const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize\n  return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems\n}\n\nconst DynamicSizeList = createList({\n  name: 'ElDynamicSizeList',\n  getItemOffset: (props, index, listCache) =>\n    getItemFromCache(props, index, listCache).offset,\n\n  getItemSize: (_, index, { items }) => items[index].size,\n\n  getEstimatedTotalSize,\n\n  getOffset: (props, index, alignment, scrollOffset, listCache) => {\n    const { height, layout, width } = props\n\n    const size = (isHorizontal(layout) ? width : height) as number\n    const item = getItemFromCache(props, index, listCache)\n\n    const estimatedTotalSize = getEstimatedTotalSize(props, listCache)\n\n    const maxOffset = Math.max(\n      0,\n      Math.min(estimatedTotalSize - size, item.offset)\n    )\n    const minOffset = Math.max(0, item.offset - size + item.size)\n\n    if (alignment === SMART_ALIGNMENT) {\n      if (\n        scrollOffset >= minOffset - size &&\n        scrollOffset <= maxOffset + size\n      ) {\n        alignment = AUTO_ALIGNMENT\n      } else {\n        alignment = CENTERED_ALIGNMENT\n      }\n    }\n\n    switch (alignment) {\n      case START_ALIGNMENT: {\n        return maxOffset\n      }\n      case END_ALIGNMENT: {\n        return minOffset\n      }\n      case CENTERED_ALIGNMENT: {\n        return Math.round(minOffset + (maxOffset - minOffset) / 2)\n      }\n      case AUTO_ALIGNMENT:\n      default: {\n        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n          return scrollOffset\n        } else if (scrollOffset < minOffset) {\n          return minOffset\n        } else {\n          return maxOffset\n        }\n      }\n    }\n  },\n\n  getStartIndexForOffset: (props, offset, listCache) =>\n    findItem(props, listCache, offset),\n\n  getStopIndexForStartIndex: (props, startIndex, scrollOffset, listCache) => {\n    const { height, total, layout, width } = props\n\n    const size = (isHorizontal(layout) ? width : height) as number\n    const item = getItemFromCache(props, startIndex, listCache)\n    const maxOffset = scrollOffset + size\n\n    let offset = item.offset + item.size\n    let stopIndex = startIndex\n\n    while (stopIndex < total - 1 && offset < maxOffset) {\n      stopIndex++\n      offset += getItemFromCache(props, stopIndex, listCache).size\n    }\n\n    return stopIndex\n  },\n\n  initCache({ estimatedItemSize = DEFAULT_DYNAMIC_LIST_ITEM_SIZE }, instance) {\n    const cache = {\n      items: {},\n      estimatedItemSize,\n      lastVisitedIndex: -1,\n    } as ListCache\n\n    cache.clearCacheAfterIndex = (index: number, forceUpdate = true) => {\n      cache.lastVisitedIndex = Math.min(cache.lastVisitedIndex, index - 1)\n      instance.exposed?.getItemStyleCache(-1)\n\n      if (forceUpdate) {\n        instance.proxy?.$forceUpdate()\n      }\n    }\n\n    return cache\n  },\n\n  clearCache: false,\n\n  validateProps: ({ itemSize }) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof itemSize !== 'function') {\n        throwError(\n          SCOPE,\n          `\n          itemSize is required as function, but the given value was ${typeof itemSize}\n        `\n        )\n      }\n    }\n  },\n})\n\nexport type DynamicSizeListInstance = InstanceType<typeof DynamicSizeList> &\n  unknown\nexport default DynamicSizeList\n","import { cAF, rAF } from '@pit-element-plus/utils'\n\nimport type { ComputedRef } from 'vue'\n\ninterface GridWheelState {\n  atXStartEdge: ComputedRef<boolean>\n  atXEndEdge: ComputedRef<boolean>\n  atYStartEdge: ComputedRef<boolean>\n  atYEndEdge: ComputedRef<boolean>\n}\n\ntype GridWheelHandler = (x: number, y: number) => void\n\nexport const useGridWheel = (\n  { atXEndEdge, atXStartEdge, atYEndEdge, atYStartEdge }: GridWheelState,\n  onWheelDelta: GridWheelHandler\n) => {\n  let frameHandle: number | null = null\n  let xOffset = 0\n  let yOffset = 0\n\n  const hasReachedEdge = (x: number, y: number) => {\n    const xEdgeReached =\n      (x < 0 && atXStartEdge.value) || (x > 0 && atXEndEdge.value)\n    const yEdgeReached =\n      (y < 0 && atYStartEdge.value) || (y > 0 && atYEndEdge.value)\n    return xEdgeReached || yEdgeReached\n  }\n\n  const onWheel = (e: WheelEvent) => {\n    cAF(frameHandle!)\n\n    let x = e.deltaX\n    let y = e.deltaY\n    // Simulate native behavior when using touch pad/track pad for wheeling.\n    if (Math.abs(x) > Math.abs(y)) {\n      y = 0\n    } else {\n      x = 0\n    }\n\n    // Special case for windows machine with shift key + wheel scrolling\n    if (e.shiftKey && y !== 0) {\n      x = y\n      y = 0\n    }\n\n    if (hasReachedEdge(x, y)) {\n      // #23524\n      // Prevent browser back navigation when the table can still scroll\n      // horizontally but the Y-axis normalization dropped the X delta and the Y edge was hit instead.\n      if (e.deltaX !== 0 && x === 0) {\n        e.preventDefault()\n      }\n      return\n    }\n\n    xOffset += x\n    yOffset += y\n\n    e.preventDefault()\n\n    frameHandle = rAF(() => {\n      onWheelDelta(xOffset, yOffset)\n      xOffset = 0\n      yOffset = 0\n    })\n  }\n\n  return {\n    hasReachedEdge,\n    onWheel,\n  }\n}\n","import { ref, unref } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { cAF, rAF } from '@pit-element-plus/utils'\n\nimport type { ComputedRef, Ref } from 'vue'\nimport type { GridScrollOptions, GridStates } from '../types'\n\nexport const useGridTouch = (\n  windowRef: Ref<HTMLElement | undefined>,\n  states: Ref<GridStates>,\n  scrollTo: (scrollOptions: GridScrollOptions) => void,\n  estimatedTotalWidth: ComputedRef<number>,\n  estimatedTotalHeight: ComputedRef<number>,\n  parsedWidth: ComputedRef<number>,\n  parsedHeight: ComputedRef<number>\n) => {\n  const touchStartX = ref(0)\n  const touchStartY = ref(0)\n  let frameHandle: number | undefined\n  let deltaX = 0\n  let deltaY = 0\n\n  const handleTouchStart = (event: TouchEvent) => {\n    cAF(frameHandle!)\n    touchStartX.value = event.touches[0].clientX\n    touchStartY.value = event.touches[0].clientY\n    deltaX = 0\n    deltaY = 0\n  }\n\n  const handleTouchMove = (event: TouchEvent) => {\n    event.preventDefault()\n    cAF(frameHandle!)\n\n    deltaX += touchStartX.value - event.touches[0].clientX\n    deltaY += touchStartY.value - event.touches[0].clientY\n    touchStartX.value = event.touches[0].clientX\n    touchStartY.value = event.touches[0].clientY\n\n    frameHandle = rAF(() => {\n      const maxScrollLeft = estimatedTotalWidth.value - unref(parsedWidth)\n      const maxScrollTop = estimatedTotalHeight.value - unref(parsedHeight)\n\n      const safeScrollLeft = Math.min(\n        states.value.scrollLeft + deltaX,\n        maxScrollLeft\n      )\n      const safeScrollTop = Math.min(\n        states.value.scrollTop + deltaY,\n        maxScrollTop\n      )\n\n      scrollTo({\n        scrollLeft: safeScrollLeft,\n        scrollTop: safeScrollTop,\n      })\n\n      deltaX = 0\n      deltaY = 0\n    })\n  }\n\n  useEventListener(windowRef, 'touchstart', handleTouchStart, {\n    passive: true,\n  })\n  useEventListener(windowRef, 'touchmove', handleTouchMove, {\n    passive: false,\n  })\n\n  return {\n    touchStartX,\n    touchStartY,\n    handleTouchStart,\n    handleTouchMove,\n  }\n}\n","import {\n  Fragment,\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  mergeProps,\n  nextTick,\n  onMounted,\n  ref,\n  resolveDynamicComponent,\n  unref,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport {\n  getScrollBarWidth,\n  hasOwn,\n  isClient,\n  isNumber,\n  isString,\n} from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport Scrollbar from '../components/scrollbar'\nimport { useGridWheel } from '../hooks/use-grid-wheel'\nimport { useCache } from '../hooks/use-cache'\nimport { useGridTouch } from '../hooks/use-grid-touch'\nimport { virtualizedGridProps } from '../props'\nimport { getRTLOffsetType, getScrollDir, isRTL } from '../utils'\nimport {\n  AUTO_ALIGNMENT,\n  BACKWARD,\n  FORWARD,\n  ITEM_RENDER_EVT,\n  RTL,\n  RTL_OFFSET_NAG,\n  RTL_OFFSET_POS_ASC,\n  RTL_OFFSET_POS_DESC,\n  SCROLL_EVT,\n} from '../defaults'\n\nimport type {\n  CSSProperties,\n  Ref,\n  StyleValue,\n  UnwrapRef,\n  VNode,\n  VNodeChild,\n} from 'vue'\nimport type {\n  Alignment,\n  GridConstructorProps,\n  GridScrollOptions,\n  GridStates,\n  ScrollbarExpose,\n} from '../types'\nimport type { VirtualizedGridProps } from '../props'\nimport type { DynamicSizeGridInstance } from '../components/dynamic-size-grid.ts'\n\nconst createGrid = ({\n  name,\n  clearCache,\n  getColumnPosition,\n  getColumnStartIndexForOffset,\n  getColumnStopIndexForStartIndex,\n  getEstimatedTotalHeight,\n  getEstimatedTotalWidth,\n  getColumnOffset,\n  getRowOffset,\n  getRowPosition,\n  getRowStartIndexForOffset,\n  getRowStopIndexForStartIndex,\n\n  initCache,\n  injectToInstance,\n  validateProps,\n}: GridConstructorProps<VirtualizedGridProps>) => {\n  return defineComponent({\n    name: name ?? 'ElVirtualList',\n    props: virtualizedGridProps,\n    emits: [ITEM_RENDER_EVT, SCROLL_EVT],\n    setup(props, { emit, expose, slots }) {\n      const ns = useNamespace('vl')\n\n      validateProps(props)\n      const instance = getCurrentInstance()!\n      const cache = ref(initCache(props, instance))\n      injectToInstance?.(instance, cache)\n      // refs\n      // here windowRef and innerRef can be type of HTMLElement\n      // or user defined component type, depends on the type passed\n      // by user\n      const windowRef = ref<HTMLElement>()\n      const hScrollbar = ref<ScrollbarExpose>()\n      const vScrollbar = ref<ScrollbarExpose>()\n      // innerRef is the actual container element which contains all the elements\n      const innerRef = ref<HTMLElement>()\n      const states = ref<GridStates>({\n        isScrolling: false,\n        scrollLeft: isNumber(props.initScrollLeft) ? props.initScrollLeft : 0,\n        scrollTop: isNumber(props.initScrollTop) ? props.initScrollTop : 0,\n        updateRequested: false,\n        xAxisScrollDir: FORWARD,\n        yAxisScrollDir: FORWARD,\n      })\n\n      const getItemStyleCache = useCache()\n\n      // computed\n      const parsedHeight = computed(() =>\n        Number.parseInt(`${props.height}`, 10)\n      )\n      const parsedWidth = computed(() => Number.parseInt(`${props.width}`, 10))\n      const columnsToRender = computed(() => {\n        const { totalColumn, totalRow, columnCache } = props\n        const { isScrolling, xAxisScrollDir, scrollLeft } = unref(states)\n\n        if (totalColumn === 0 || totalRow === 0) {\n          return [0, 0, 0, 0]\n        }\n\n        const startIndex = getColumnStartIndexForOffset(\n          props,\n          scrollLeft,\n          unref(cache)\n        )\n        const stopIndex = getColumnStopIndexForStartIndex(\n          props,\n          startIndex,\n          scrollLeft,\n          unref(cache)\n        )\n\n        const cacheBackward =\n          !isScrolling || xAxisScrollDir === BACKWARD\n            ? Math.max(1, columnCache)\n            : 1\n        const cacheForward =\n          !isScrolling || xAxisScrollDir === FORWARD\n            ? Math.max(1, columnCache)\n            : 1\n\n        return [\n          Math.max(0, startIndex - cacheBackward),\n          Math.max(0, Math.min(totalColumn! - 1, stopIndex + cacheForward)),\n          startIndex,\n          stopIndex,\n        ]\n      })\n\n      const rowsToRender = computed(() => {\n        const { totalColumn, totalRow, rowCache } = props\n        const { isScrolling, yAxisScrollDir, scrollTop } = unref(states)\n\n        if (totalColumn === 0 || totalRow === 0) {\n          return [0, 0, 0, 0]\n        }\n\n        const startIndex = getRowStartIndexForOffset(\n          props,\n          scrollTop,\n          unref(cache)\n        )\n        const stopIndex = getRowStopIndexForStartIndex(\n          props,\n          startIndex,\n          scrollTop,\n          unref(cache)\n        )\n\n        const cacheBackward =\n          !isScrolling || yAxisScrollDir === BACKWARD\n            ? Math.max(1, rowCache)\n            : 1\n        const cacheForward =\n          !isScrolling || yAxisScrollDir === FORWARD ? Math.max(1, rowCache) : 1\n\n        return [\n          Math.max(0, startIndex - cacheBackward),\n          Math.max(0, Math.min(totalRow! - 1, stopIndex + cacheForward)),\n          startIndex,\n          stopIndex,\n        ]\n      })\n\n      const estimatedTotalHeight = computed(() =>\n        getEstimatedTotalHeight(props, unref(cache))\n      )\n      const estimatedTotalWidth = computed(() =>\n        getEstimatedTotalWidth(props, unref(cache))\n      )\n\n      const windowStyle = computed<StyleValue>(() => [\n        {\n          position: 'relative',\n          overflow: 'hidden',\n          WebkitOverflowScrolling: 'touch',\n          willChange: 'transform',\n        },\n        {\n          direction: props.direction,\n          height: isNumber(props.height) ? `${props.height}px` : props.height,\n          width: isNumber(props.width) ? `${props.width}px` : props.width,\n        },\n        props.style ?? {},\n      ])\n\n      const innerStyle = computed(() => {\n        const width = `${unref(estimatedTotalWidth)}px`\n        const height = `${unref(estimatedTotalHeight)}px`\n\n        return {\n          height,\n          pointerEvents: unref(states).isScrolling ? 'none' : undefined,\n          width,\n\n          // fix scrolling issues in Firefox.\n          margin: 0,\n          boxSizing: 'border-box',\n        }\n      })\n\n      // methods\n      const emitEvents = () => {\n        const { totalColumn, totalRow } = props\n\n        if (totalColumn! > 0 && totalRow! > 0) {\n          const [\n            columnCacheStart,\n            columnCacheEnd,\n            columnVisibleStart,\n            columnVisibleEnd,\n          ] = unref(columnsToRender)\n          const [rowCacheStart, rowCacheEnd, rowVisibleStart, rowVisibleEnd] =\n            unref(rowsToRender)\n          // emit the render item event with\n          // [xAxisInvisibleStart, xAxisInvisibleEnd, xAxisVisibleStart, xAxisVisibleEnd]\n          // [yAxisInvisibleStart, yAxisInvisibleEnd, yAxisVisibleStart, yAxisVisibleEnd]\n          emit(ITEM_RENDER_EVT, {\n            columnCacheStart,\n            columnCacheEnd,\n            rowCacheStart,\n            rowCacheEnd,\n            columnVisibleStart,\n            columnVisibleEnd,\n            rowVisibleStart,\n            rowVisibleEnd,\n          })\n        }\n\n        const {\n          scrollLeft,\n          scrollTop,\n          updateRequested,\n          xAxisScrollDir,\n          yAxisScrollDir,\n        } = unref(states)\n        emit(SCROLL_EVT, {\n          xAxisScrollDir,\n          scrollLeft,\n          yAxisScrollDir,\n          scrollTop,\n          updateRequested,\n        })\n      }\n\n      const onScroll = (e: Event) => {\n        const {\n          clientHeight,\n          clientWidth,\n          scrollHeight,\n          scrollLeft,\n          scrollTop,\n          scrollWidth,\n        } = e.currentTarget as HTMLElement\n\n        const _states = unref(states)\n\n        if (\n          _states.scrollTop === scrollTop &&\n          _states.scrollLeft === scrollLeft\n        ) {\n          return\n        }\n\n        let _scrollLeft = scrollLeft\n\n        if (isRTL(props.direction)) {\n          switch (getRTLOffsetType()) {\n            case RTL_OFFSET_NAG:\n              _scrollLeft = -scrollLeft\n              break\n            case RTL_OFFSET_POS_DESC:\n              _scrollLeft = scrollWidth - clientWidth - scrollLeft\n              break\n          }\n        }\n\n        states.value = {\n          ..._states,\n          isScrolling: true,\n          scrollLeft: _scrollLeft,\n          scrollTop: Math.max(\n            0,\n            Math.min(scrollTop, scrollHeight - clientHeight)\n          ),\n          updateRequested: true,\n          xAxisScrollDir: getScrollDir(_states.scrollLeft, _scrollLeft),\n          yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop),\n        }\n\n        nextTick(() => resetIsScrolling())\n\n        onUpdated()\n        emitEvents()\n      }\n\n      const onVerticalScroll = (distance: number, totalSteps: number) => {\n        const height = unref(parsedHeight)\n        const offset =\n          ((estimatedTotalHeight.value - height) / totalSteps) * distance\n        scrollTo({\n          scrollTop: Math.min(estimatedTotalHeight.value - height, offset),\n        })\n      }\n\n      const onHorizontalScroll = (distance: number, totalSteps: number) => {\n        const width = unref(parsedWidth)\n        const offset =\n          ((estimatedTotalWidth.value - width) / totalSteps) * distance\n        scrollTo({\n          scrollLeft: Math.min(estimatedTotalWidth.value - width, offset),\n        })\n      }\n\n      const { onWheel } = useGridWheel(\n        {\n          atXStartEdge: computed(() => states.value.scrollLeft <= 0),\n          atXEndEdge: computed(\n            () =>\n              states.value.scrollLeft >=\n              estimatedTotalWidth.value - unref(parsedWidth)\n          ),\n          atYStartEdge: computed(() => states.value.scrollTop <= 0),\n          atYEndEdge: computed(\n            () =>\n              states.value.scrollTop >=\n              estimatedTotalHeight.value - unref(parsedHeight)\n          ),\n        },\n        (x: number, y: number) => {\n          hScrollbar.value?.onMouseUp?.()\n          vScrollbar.value?.onMouseUp?.()\n          const width = unref(parsedWidth)\n          const height = unref(parsedHeight)\n          scrollTo({\n            scrollLeft: Math.min(\n              states.value.scrollLeft + x,\n              estimatedTotalWidth.value - width\n            ),\n            scrollTop: Math.min(\n              states.value.scrollTop + y,\n              estimatedTotalHeight.value - height\n            ),\n          })\n        }\n      )\n\n      useEventListener(windowRef, 'wheel', onWheel, {\n        passive: false,\n      })\n\n      const scrollTo = ({\n        scrollLeft = states.value.scrollLeft,\n        scrollTop = states.value.scrollTop,\n      }: GridScrollOptions) => {\n        scrollLeft = Math.max(scrollLeft, 0)\n        scrollTop = Math.max(scrollTop, 0)\n        const _states = unref(states)\n        if (\n          scrollTop === _states.scrollTop &&\n          scrollLeft === _states.scrollLeft\n        ) {\n          return\n        }\n\n        states.value = {\n          ..._states,\n          xAxisScrollDir: getScrollDir(_states.scrollLeft, scrollLeft),\n          yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop),\n          scrollLeft,\n          scrollTop,\n          updateRequested: true,\n        }\n\n        nextTick(() => resetIsScrolling())\n\n        onUpdated()\n        emitEvents()\n      }\n\n      const { touchStartX, touchStartY, handleTouchStart, handleTouchMove } =\n        useGridTouch(\n          windowRef,\n          states,\n          scrollTo,\n          estimatedTotalWidth,\n          estimatedTotalHeight,\n          parsedWidth,\n          parsedHeight\n        )\n\n      const scrollToItem = (\n        rowIndex = 0,\n        columnIdx = 0,\n        alignment: Alignment = AUTO_ALIGNMENT\n      ) => {\n        const _states = unref(states)\n        columnIdx = Math.max(0, Math.min(columnIdx, props.totalColumn! - 1))\n        rowIndex = Math.max(0, Math.min(rowIndex, props.totalRow! - 1))\n        const scrollBarWidth = getScrollBarWidth(ns.namespace.value)\n\n        const _cache = unref(cache)\n        const estimatedHeight = getEstimatedTotalHeight(props, _cache)\n        const estimatedWidth = getEstimatedTotalWidth(props, _cache)\n\n        scrollTo({\n          scrollLeft: getColumnOffset(\n            props,\n            columnIdx,\n            alignment,\n            _states.scrollLeft,\n            _cache,\n            estimatedWidth > (props.width as number) ? scrollBarWidth : 0\n          ),\n          scrollTop: getRowOffset(\n            props,\n            rowIndex,\n            alignment,\n            _states.scrollTop,\n            _cache,\n            estimatedHeight > (props.height as number) ? scrollBarWidth : 0\n          ),\n        })\n      }\n\n      const getItemStyle = (rowIndex: number, columnIndex: number) => {\n        const { columnWidth, direction, rowHeight } = props\n        const itemStyleCache = getItemStyleCache.value(\n          clearCache && columnWidth,\n          clearCache && rowHeight,\n          clearCache && direction\n        )\n        // since there was no need to introduce an nested array into cache object\n        // we use row,column to construct the key for indexing the map.\n        const key = `${rowIndex},${columnIndex}`\n\n        if (hasOwn(itemStyleCache, key)) {\n          return itemStyleCache[key] as CSSProperties\n        } else {\n          const [, left] = getColumnPosition(props, columnIndex, unref(cache))\n          const _cache = unref(cache)\n\n          const rtl = isRTL(direction)\n          const [height, top] = getRowPosition(props, rowIndex, _cache)\n          const [width] = getColumnPosition(props, columnIndex, _cache)\n\n          itemStyleCache[key] = {\n            position: 'absolute',\n            left: rtl ? undefined : `${left}px`,\n            right: rtl ? `${left}px` : undefined,\n            top: `${top}px`,\n            height: `${height}px`,\n            width: `${width}px`,\n          }\n\n          return itemStyleCache[key] as CSSProperties\n        }\n      }\n\n      // TODO: debounce setting is scrolling.\n\n      const resetIsScrolling = () => {\n        states.value.isScrolling = false\n        nextTick(() => {\n          getItemStyleCache.value(-1, null, null)\n        })\n      }\n\n      // life cycles\n      onMounted(() => {\n        // for SSR\n        if (!isClient) return\n        const { initScrollLeft, initScrollTop } = props\n        const windowElement = unref(windowRef)\n        if (windowElement) {\n          if (isNumber(initScrollLeft)) {\n            windowElement.scrollLeft = initScrollLeft\n          }\n          if (isNumber(initScrollTop)) {\n            windowElement.scrollTop = initScrollTop\n          }\n        }\n        emitEvents()\n      })\n\n      const onUpdated = () => {\n        const { direction } = props\n        const { scrollLeft, scrollTop, updateRequested } = unref(states)\n\n        const windowElement = unref(windowRef)\n        if (updateRequested && windowElement) {\n          if (direction === RTL) {\n            switch (getRTLOffsetType()) {\n              case RTL_OFFSET_NAG: {\n                windowElement.scrollLeft = -scrollLeft\n                break\n              }\n              case RTL_OFFSET_POS_ASC: {\n                windowElement.scrollLeft = scrollLeft\n                break\n              }\n              default: {\n                const { clientWidth, scrollWidth } = windowElement\n                windowElement.scrollLeft =\n                  scrollWidth - clientWidth - scrollLeft\n                break\n              }\n            }\n          } else {\n            windowElement.scrollLeft = Math.max(0, scrollLeft)\n          }\n\n          windowElement.scrollTop = Math.max(0, scrollTop)\n        }\n      }\n\n      const { resetAfterColumnIndex, resetAfterRowIndex, resetAfter } =\n        instance.proxy as DynamicSizeGridInstance\n\n      expose({\n        windowRef,\n        innerRef,\n        getItemStyleCache,\n        touchStartX,\n        touchStartY,\n        handleTouchStart,\n        handleTouchMove,\n        scrollTo,\n        scrollToItem,\n        states,\n        resetAfterColumnIndex,\n        resetAfterRowIndex,\n        resetAfter,\n      })\n\n      // rendering part\n\n      const renderScrollbars = () => {\n        const {\n          scrollbarAlwaysOn,\n          scrollbarStartGap,\n          scrollbarEndGap,\n          totalColumn,\n          totalRow,\n        } = props\n\n        const width = unref(parsedWidth)\n        const height = unref(parsedHeight)\n        const estimatedWidth = unref(estimatedTotalWidth)\n        const estimatedHeight = unref(estimatedTotalHeight)\n        const { scrollLeft, scrollTop } = unref(states)\n        const horizontalScrollbar = h(Scrollbar, {\n          ref: hScrollbar,\n          alwaysOn: scrollbarAlwaysOn,\n          startGap: scrollbarStartGap,\n          endGap: scrollbarEndGap,\n          class: ns.e('horizontal'),\n          clientSize: width,\n          layout: 'horizontal',\n          onScroll: onHorizontalScroll,\n          ratio: (width * 100) / estimatedWidth,\n          scrollFrom: scrollLeft / (estimatedWidth - width),\n          total: totalRow,\n          visible: true,\n        })\n\n        const verticalScrollbar = h(Scrollbar, {\n          ref: vScrollbar,\n          alwaysOn: scrollbarAlwaysOn,\n          startGap: scrollbarStartGap,\n          endGap: scrollbarEndGap,\n          class: ns.e('vertical'),\n          clientSize: height,\n          layout: 'vertical',\n          onScroll: onVerticalScroll,\n          ratio: (height * 100) / estimatedHeight,\n          scrollFrom: scrollTop / (estimatedHeight - height),\n\n          total: totalColumn,\n          visible: true,\n        })\n\n        return {\n          horizontalScrollbar,\n          verticalScrollbar,\n        }\n      }\n\n      const renderItems = () => {\n        const [columnStart, columnEnd] = unref(columnsToRender)\n        const [rowStart, rowEnd] = unref(rowsToRender)\n        const { data, totalColumn, totalRow, useIsScrolling, itemKey } = props\n        const children: VNodeChild[] = []\n        if (totalRow > 0 && totalColumn > 0) {\n          for (let row = rowStart; row <= rowEnd; row++) {\n            for (let column = columnStart; column <= columnEnd; column++) {\n              const key = itemKey({ columnIndex: column, data, rowIndex: row })\n              children.push(\n                h(\n                  Fragment,\n                  { key },\n                  slots.default?.({\n                    columnIndex: column,\n                    data,\n                    isScrolling: useIsScrolling\n                      ? unref(states).isScrolling\n                      : undefined,\n                    style: getItemStyle(row, column),\n                    rowIndex: row,\n                  })\n                )\n              )\n            }\n          }\n        }\n        return children\n      }\n\n      const renderInner = () => {\n        const Inner = resolveDynamicComponent(props.innerElement) as VNode\n        const children = renderItems()\n        return [\n          h(\n            Inner,\n            mergeProps(props.innerProps, {\n              style: unref(innerStyle),\n              ref: innerRef,\n            }),\n            !isString(Inner)\n              ? {\n                  default: () => children,\n                }\n              : children\n          ),\n        ]\n      }\n\n      const renderWindow = () => {\n        const Container = resolveDynamicComponent(\n          props.containerElement\n        ) as VNode\n        const { horizontalScrollbar, verticalScrollbar } = renderScrollbars()\n        const Inner = renderInner()\n\n        return h(\n          'div',\n          {\n            key: 0,\n            class: ns.e('wrapper'),\n            role: props.role,\n          },\n          [\n            h(\n              Container,\n              {\n                class: props.className,\n                style: unref(windowStyle),\n                onScroll,\n                ref: windowRef,\n              },\n              !isString(Container) ? { default: () => Inner } : Inner\n            ),\n            horizontalScrollbar,\n            verticalScrollbar,\n          ]\n        )\n      }\n\n      return renderWindow\n    },\n  })\n}\n\nexport default createGrid\n\nexport type GridInstance = InstanceType<ReturnType<typeof createGrid>> &\n  UnwrapRef<{\n    windowRef: Ref<HTMLElement>\n    innerRef: Ref<HTMLElement>\n    getItemStyleCache: ReturnType<typeof useCache>\n    scrollTo: (scrollOptions: GridScrollOptions) => void\n    scrollToItem: (\n      rowIndex: number,\n      columnIndex: number,\n      alignment: Alignment\n    ) => void\n    states: Ref<GridStates>\n  }>\n","import { isNumber, throwError } from '@pit-element-plus/utils'\nimport createGrid from '../builders/build-grid'\nimport {\n  AUTO_ALIGNMENT,\n  CENTERED_ALIGNMENT,\n  END_ALIGNMENT,\n  SMART_ALIGNMENT,\n  START_ALIGNMENT,\n} from '../defaults'\n\nconst SCOPE = 'ElFixedSizeGrid'\n\nconst FixedSizeGrid = createGrid({\n  name: 'ElFixedSizeGrid',\n  getColumnPosition: ({ columnWidth }, index) => [\n    columnWidth as number,\n    index * (columnWidth as number),\n  ],\n\n  getRowPosition: ({ rowHeight }, index) => [\n    rowHeight as number,\n    index * (rowHeight as number),\n  ],\n\n  getEstimatedTotalHeight: ({ totalRow, rowHeight }) =>\n    (rowHeight as number) * totalRow,\n\n  getEstimatedTotalWidth: ({ totalColumn, columnWidth }) =>\n    (columnWidth as number) * totalColumn,\n\n  getColumnOffset: (\n    { totalColumn, columnWidth, width },\n    columnIndex,\n    alignment,\n    scrollLeft,\n    _,\n    scrollBarWidth\n  ) => {\n    width = Number(width)\n    const lastColumnOffset = Math.max(\n      0,\n      totalColumn * (columnWidth as number) - width\n    )\n    const maxOffset = Math.min(\n      lastColumnOffset,\n      columnIndex * (columnWidth as number)\n    )\n    const minOffset = Math.max(\n      0,\n      columnIndex * (columnWidth as number) -\n        width +\n        scrollBarWidth +\n        (columnWidth as number)\n    )\n\n    if (alignment === 'smart') {\n      if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n        alignment = AUTO_ALIGNMENT\n      } else {\n        alignment = CENTERED_ALIGNMENT\n      }\n    }\n\n    switch (alignment) {\n      case START_ALIGNMENT:\n        return maxOffset\n      case END_ALIGNMENT:\n        return minOffset\n      case CENTERED_ALIGNMENT: {\n        const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2)\n        if (middleOffset < Math.ceil(width / 2)) {\n          return 0\n        } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n          return lastColumnOffset\n        } else {\n          return middleOffset\n        }\n      }\n      case AUTO_ALIGNMENT:\n      default:\n        if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n          return scrollLeft\n        } else if (minOffset > maxOffset) {\n          return minOffset\n        } else if (scrollLeft < minOffset) {\n          return minOffset\n        } else {\n          return maxOffset\n        }\n    }\n  },\n\n  getRowOffset: (\n    { rowHeight, height, totalRow },\n    rowIndex,\n    align,\n    scrollTop,\n    _,\n    scrollBarWidth\n  ): number => {\n    height = Number(height)\n    const lastRowOffset = Math.max(0, totalRow * (rowHeight as number) - height)\n    const maxOffset = Math.min(lastRowOffset, rowIndex * (rowHeight as number))\n    const minOffset = Math.max(\n      0,\n      rowIndex * (rowHeight as number) -\n        height +\n        scrollBarWidth +\n        (rowHeight as number)\n    )\n\n    if (align === SMART_ALIGNMENT) {\n      if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n        align = AUTO_ALIGNMENT\n      } else {\n        align = CENTERED_ALIGNMENT\n      }\n    }\n\n    switch (align) {\n      case START_ALIGNMENT:\n        return maxOffset\n      case END_ALIGNMENT:\n        return minOffset\n      case CENTERED_ALIGNMENT: {\n        const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2)\n        if (middleOffset < Math.ceil(height / 2)) {\n          return 0\n        } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n          return lastRowOffset\n        } else {\n          return middleOffset\n        }\n      }\n      case AUTO_ALIGNMENT:\n      default:\n        if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n          return scrollTop\n        } else if (minOffset > maxOffset) {\n          return minOffset\n        } else if (scrollTop < minOffset) {\n          return minOffset\n        } else {\n          return maxOffset\n        }\n    }\n  },\n\n  getColumnStartIndexForOffset: ({ columnWidth, totalColumn }, scrollLeft) =>\n    Math.max(\n      0,\n      Math.min(\n        totalColumn - 1,\n        Math.floor(scrollLeft / (columnWidth as number))\n      )\n    ),\n\n  getColumnStopIndexForStartIndex: (\n    { columnWidth, totalColumn, width },\n    startIndex: number,\n    scrollLeft: number\n  ): number => {\n    const left = startIndex * (columnWidth as number)\n    const visibleColumnsCount = Math.ceil(\n      ((width as number) + scrollLeft - left) / (columnWidth as number)\n    )\n    return Math.max(\n      0,\n      Math.min(totalColumn - 1, startIndex + visibleColumnsCount - 1)\n    )\n  },\n\n  getRowStartIndexForOffset: (\n    { rowHeight, totalRow },\n    scrollTop: number\n  ): number =>\n    Math.max(\n      0,\n      Math.min(totalRow - 1, Math.floor(scrollTop / (rowHeight as number)))\n    ),\n\n  getRowStopIndexForStartIndex: (\n    { rowHeight, totalRow, height },\n    startIndex: number,\n    scrollTop: number\n  ): number => {\n    const top = startIndex * (rowHeight as number)\n    const numVisibleRows = Math.ceil(\n      ((height as number) + scrollTop - top) / (rowHeight as number)\n    )\n    return Math.max(\n      0,\n      Math.min(\n        totalRow - 1,\n        startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n      )\n    )\n  },\n  /**\n   * Fixed size grid does not need this cache\n   * Using any to bypass it, TODO: Using type inference to fix this.\n   */\n  initCache: () => undefined as any,\n\n  clearCache: true,\n\n  validateProps: ({ columnWidth, rowHeight }) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!isNumber(columnWidth)) {\n        throwError(\n          SCOPE,\n          `\n          \"columnWidth\" must be passed as number,\n            instead ${typeof columnWidth} was given.\n        `\n        )\n      }\n\n      if (!isNumber(rowHeight)) {\n        throwError(\n          SCOPE,\n          `\n          \"columnWidth\" must be passed as number,\n            instead ${typeof rowHeight} was given.\n        `\n        )\n      }\n    }\n  },\n})\n\nexport default FixedSizeGrid\n","import {\n  isFunction,\n  isNumber,\n  isUndefined,\n  throwError,\n} from '@pit-element-plus/utils'\nimport createGrid from '../builders/build-grid'\nimport {\n  AUTO_ALIGNMENT,\n  CENTERED_ALIGNMENT,\n  DEFAULT_DYNAMIC_LIST_ITEM_SIZE,\n  END_ALIGNMENT,\n  SMART_ALIGNMENT,\n  START_ALIGNMENT,\n} from '../defaults'\n\nimport type { GridInstance } from '../builders/build-grid'\nimport type { VirtualizedGridProps } from '../props'\nimport type { Alignment, GridCache, ItemSize } from '../types'\n\nconst { max, min, floor } = Math\nconst SCOPE = 'ElDynamicSizeGrid'\n\ntype Props = VirtualizedGridProps\ntype CacheItemType = 'column' | 'row'\ntype Indices = {\n  columnIndex?: number\n  rowIndex?: number\n}\n\n// generates props access key via type\nconst ACCESS_SIZER_KEY_MAP = {\n  column: 'columnWidth',\n  row: 'rowHeight',\n} as const\n\n// generates cache access key via type\nconst ACCESS_LAST_VISITED_KEY_MAP = {\n  column: 'lastVisitedColumnIndex',\n  row: 'lastVisitedRowIndex',\n} as const\n\nconst getItemFromCache = (\n  props: Props,\n  index: number,\n  gridCache: GridCache,\n  type: CacheItemType\n) => {\n  const [cachedItems, sizer, lastVisited] = [\n    gridCache[type],\n    props[ACCESS_SIZER_KEY_MAP[type]] as ItemSize,\n    gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]],\n  ]\n\n  if (index > lastVisited) {\n    let offset = 0\n    if (lastVisited >= 0) {\n      const item = cachedItems[lastVisited]\n      offset = item.offset + item.size\n    }\n\n    for (let i = lastVisited + 1; i <= index; i++) {\n      const size = sizer(i)\n\n      cachedItems[i] = {\n        offset,\n        size,\n      }\n\n      offset += size\n    }\n\n    gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]] = index\n  }\n\n  return cachedItems[index]\n}\n\nconst bs = (\n  props: Props,\n  gridCache: GridCache,\n  low: number,\n  high: number,\n  offset: number,\n  type: CacheItemType\n) => {\n  while (low <= high) {\n    const mid = low + floor((high - low) / 2)\n    const currentOffset = getItemFromCache(props, mid, gridCache, type).offset\n\n    if (currentOffset === offset) {\n      return mid\n    } else if (currentOffset < offset) {\n      low = mid + 1\n    } else {\n      high = mid - 1\n    }\n  }\n\n  return max(0, low - 1)\n}\n\nconst es = (\n  props: Props,\n  gridCache: GridCache,\n  idx: number,\n  offset: number,\n  type: CacheItemType\n) => {\n  const total = type === 'column' ? props.totalColumn : props.totalRow\n  let exponent = 1\n\n  while (\n    idx < total &&\n    getItemFromCache(props, idx, gridCache, type).offset < offset\n  ) {\n    idx += exponent\n    exponent *= 2\n  }\n\n  return bs(props, gridCache, floor(idx / 2), min(idx, total - 1), offset, type)\n}\n\nconst findItem = (\n  props: Props,\n  gridCache: GridCache,\n  offset: number,\n  type: CacheItemType\n) => {\n  const [cache, lastVisitedIndex] = [\n    gridCache[type],\n    gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]],\n  ]\n\n  const lastVisitedItemOffset =\n    lastVisitedIndex > 0 ? cache[lastVisitedIndex].offset : 0\n\n  if (lastVisitedItemOffset >= offset) {\n    return bs(props, gridCache, 0, lastVisitedIndex, offset, type)\n  }\n\n  return es(props, gridCache, max(0, lastVisitedIndex), offset, type)\n}\n\nconst getEstimatedTotalHeight = (\n  { totalRow }: Props,\n  { estimatedRowHeight, lastVisitedRowIndex, row }: GridCache\n) => {\n  let sizeOfVisitedRows = 0\n\n  if (lastVisitedRowIndex >= totalRow) {\n    lastVisitedRowIndex = totalRow - 1\n  }\n\n  if (lastVisitedRowIndex >= 0) {\n    const item = row[lastVisitedRowIndex]\n    sizeOfVisitedRows = item.offset + item.size\n  }\n\n  const unvisitedItems = totalRow - lastVisitedRowIndex - 1\n  const sizeOfUnvisitedItems = unvisitedItems * estimatedRowHeight\n\n  return sizeOfVisitedRows + sizeOfUnvisitedItems\n}\nconst getEstimatedTotalWidth = (\n  { totalColumn }: Props,\n  { column, estimatedColumnWidth, lastVisitedColumnIndex }: GridCache\n) => {\n  let sizeOfVisitedColumns = 0\n\n  if (lastVisitedColumnIndex > totalColumn) {\n    lastVisitedColumnIndex = totalColumn - 1\n  }\n\n  if (lastVisitedColumnIndex >= 0) {\n    const item = column[lastVisitedColumnIndex]\n    sizeOfVisitedColumns = item.offset + item.size\n  }\n\n  const unvisitedItems = totalColumn - lastVisitedColumnIndex - 1\n  const sizeOfUnvisitedItems = unvisitedItems * estimatedColumnWidth\n\n  return sizeOfVisitedColumns + sizeOfUnvisitedItems\n}\n\nconst ACCESS_ESTIMATED_SIZE_KEY_MAP = {\n  column: getEstimatedTotalWidth,\n  row: getEstimatedTotalHeight,\n}\n\nconst getOffset = (\n  props: Props,\n  index: number,\n  alignment: Alignment,\n  scrollOffset: number,\n  cache: GridCache,\n  type: CacheItemType,\n  scrollBarWidth: number\n) => {\n  const [size, estimatedSizeAssociates] = [\n    type === 'row' ? props.height : props.width,\n    ACCESS_ESTIMATED_SIZE_KEY_MAP[type],\n  ] as [number, (props: Props, cache: GridCache) => number]\n  const item = getItemFromCache(props, index, cache, type)\n\n  const estimatedSize = estimatedSizeAssociates(props, cache)\n\n  const maxOffset = max(0, min(estimatedSize - size, item.offset))\n  const minOffset = max(0, item.offset - size + scrollBarWidth + item.size)\n\n  if (alignment === SMART_ALIGNMENT) {\n    if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n      alignment = AUTO_ALIGNMENT\n    } else {\n      alignment = CENTERED_ALIGNMENT\n    }\n  }\n\n  switch (alignment) {\n    case START_ALIGNMENT: {\n      return maxOffset\n    }\n    case END_ALIGNMENT: {\n      return minOffset\n    }\n    case CENTERED_ALIGNMENT: {\n      return Math.round(minOffset + (maxOffset - minOffset) / 2)\n    }\n    case AUTO_ALIGNMENT:\n    default: {\n      if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n        return scrollOffset\n      } else if (minOffset > maxOffset) {\n        return minOffset\n      } else if (scrollOffset < minOffset) {\n        return minOffset\n      } else {\n        return maxOffset\n      }\n    }\n  }\n}\n\nconst DynamicSizeGrid = createGrid({\n  name: 'ElDynamicSizeGrid',\n  getColumnPosition: (props, idx, cache) => {\n    const item = getItemFromCache(props, idx, cache, 'column')\n    return [item.size, item.offset]\n  },\n\n  getRowPosition: (props, idx, cache) => {\n    const item = getItemFromCache(props, idx, cache, 'row')\n    return [item.size, item.offset]\n  },\n\n  getColumnOffset: (\n    props,\n    columnIndex,\n    alignment,\n    scrollLeft,\n    cache,\n    scrollBarWidth\n  ) =>\n    getOffset(\n      props,\n      columnIndex,\n      alignment,\n      scrollLeft,\n      cache,\n      'column',\n      scrollBarWidth\n    ),\n\n  getRowOffset: (\n    props,\n    rowIndex,\n    alignment,\n    scrollTop,\n    cache,\n    scrollBarWidth: number\n  ) =>\n    getOffset(\n      props,\n      rowIndex,\n      alignment,\n      scrollTop,\n      cache,\n      'row',\n      scrollBarWidth\n    ),\n\n  getColumnStartIndexForOffset: (props, scrollLeft, cache) =>\n    findItem(props, cache, scrollLeft, 'column'),\n\n  getColumnStopIndexForStartIndex: (props, startIndex, scrollLeft, cache) => {\n    const item = getItemFromCache(props, startIndex, cache, 'column')\n\n    const maxOffset = scrollLeft + (props.width as number)\n\n    let offset = item.offset + item.size\n    let stopIndex = startIndex\n    while (stopIndex < props.totalColumn - 1 && offset < maxOffset) {\n      stopIndex++\n      offset += getItemFromCache(props, startIndex, cache, 'column').size\n    }\n    return stopIndex\n  },\n\n  getEstimatedTotalHeight,\n  getEstimatedTotalWidth,\n\n  getRowStartIndexForOffset: (props, scrollTop, cache) =>\n    findItem(props, cache, scrollTop, 'row'),\n\n  getRowStopIndexForStartIndex: (props, startIndex, scrollTop, cache) => {\n    const { totalRow, height } = props\n    const item = getItemFromCache(props, startIndex, cache, 'row')\n    const maxOffset = scrollTop + (height as number)\n\n    let offset = item.size + item.offset\n    let stopIndex = startIndex\n\n    while (stopIndex < totalRow - 1 && offset < maxOffset) {\n      stopIndex++\n      offset += getItemFromCache(props, stopIndex, cache, 'row').size\n    }\n\n    return stopIndex\n  },\n  injectToInstance: (instance, cache) => {\n    const resetAfter = (\n      { columnIndex, rowIndex }: Indices,\n      forceUpdate?: boolean\n    ) => {\n      forceUpdate = isUndefined(forceUpdate) ? true : forceUpdate\n\n      if (isNumber(columnIndex)) {\n        cache.value.lastVisitedColumnIndex = Math.min(\n          cache.value.lastVisitedColumnIndex,\n          columnIndex - 1\n        )\n      }\n\n      if (isNumber(rowIndex)) {\n        cache.value.lastVisitedRowIndex = Math.min(\n          cache.value.lastVisitedRowIndex,\n          rowIndex - 1\n        )\n      }\n\n      instance.exposed?.getItemStyleCache.value(-1, null, null)\n\n      if (forceUpdate) instance.proxy?.$forceUpdate()\n    }\n\n    const resetAfterColumnIndex = (\n      columnIndex: number,\n      forceUpdate: boolean\n    ) => {\n      resetAfter(\n        {\n          columnIndex,\n        },\n        forceUpdate\n      )\n    }\n\n    const resetAfterRowIndex = (rowIndex: number, forceUpdate: boolean) => {\n      resetAfter(\n        {\n          rowIndex,\n        },\n        forceUpdate\n      )\n    }\n\n    Object.assign(instance.proxy!, {\n      resetAfterColumnIndex,\n      resetAfterRowIndex,\n      resetAfter,\n    })\n  },\n  initCache: ({\n    estimatedColumnWidth = DEFAULT_DYNAMIC_LIST_ITEM_SIZE,\n    estimatedRowHeight = DEFAULT_DYNAMIC_LIST_ITEM_SIZE,\n  }) => {\n    const cache = {\n      column: {},\n      estimatedColumnWidth,\n      estimatedRowHeight,\n      lastVisitedColumnIndex: -1,\n      lastVisitedRowIndex: -1,\n      row: {},\n    } as GridCache\n\n    // TODO: expose methods.\n    return cache\n  },\n\n  clearCache: false,\n\n  validateProps: ({ columnWidth, rowHeight }) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!isFunction(columnWidth)) {\n        throwError(\n          SCOPE,\n          `\n          \"columnWidth\" must be passed as function,\n            instead ${typeof columnWidth} was given.\n        `\n        )\n      }\n\n      if (!isFunction(rowHeight)) {\n        throwError(\n          SCOPE,\n          `\n          \"rowHeight\" must be passed as function,\n            instead ${typeof rowHeight} was given.\n        `\n        )\n      }\n    }\n  },\n})\n\nexport default DynamicSizeGrid\n\nexport type ResetAfterIndex = (idx: number, forceUpdate: boolean) => void\nexport type ResetAfterIndices = (indices: Indices, forceUpdate: boolean) => void\n\nexport type DynamicSizeGridInstance = GridInstance & {\n  resetAfterColumnIndex: ResetAfterIndex\n  resetAfterRowIndex: ResetAfterIndex\n  resetAfter: ResetAfterIndices\n}\n","<template>\n  <div\n    :class=\"ns.be('group', 'title')\"\n    :style=\"{ ...style, lineHeight: `${height}px` }\"\n  >\n    {{ item.label }}\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties, PropType } from 'vue'\n\nexport default defineComponent({\n  props: {\n    item: {\n      type: Object,\n      required: true,\n    },\n    style: {\n      type: Object as PropType<CSSProperties>,\n    },\n    height: Number,\n  },\n  setup() {\n    const ns = useNamespace('select')\n    return {\n      ns,\n    }\n  },\n})\n</script>\n","<template>\n  <div\n    :class=\"ns.be('group', 'title')\"\n    :style=\"{ ...style, lineHeight: `${height}px` }\"\n  >\n    {{ item.label }}\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { CSSProperties, PropType } from 'vue'\n\nexport default defineComponent({\n  props: {\n    item: {\n      type: Object,\n      required: true,\n    },\n    style: {\n      type: Object as PropType<CSSProperties>,\n    },\n    height: Number,\n  },\n  setup() {\n    const ns = useNamespace('select')\n    return {\n      ns,\n    }\n  },\n})\n</script>\n","import type { OptionV2EmitFn, OptionV2Props } from './defaults'\n\nexport function useOption(\n  props: OptionV2Props,\n  { emit }: { emit: OptionV2EmitFn }\n) {\n  return {\n    hoverItem: () => {\n      if (!props.disabled) {\n        emit('hover', props.index)\n      }\n    },\n    selectOptionClick: () => {\n      if (!props.disabled) {\n        emit('select', props.item, props.index)\n      }\n    },\n  }\n}\n","import { placements } from '@popperjs/core'\nimport {\n  useAriaProps,\n  useEmptyValuesProps,\n  useSizeProp,\n} from '@pit-element-plus/hooks'\nimport {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isBoolean,\n  isNumber,\n} from '@pit-element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { useTooltipContentProps } from '@pit-element-plus/components/tooltip'\nimport { ArrowDown, CircleClose } from 'pit-element-icons'\nimport { tagProps } from '../../tag'\nimport { defaultProps } from './useProps'\n\nimport type SelectV2 from './select.vue'\nimport type { Option, OptionType } from './select.types'\nimport type { Props } from './useProps'\nimport type { EmitFn } from '@pit-element-plus/utils/vue/typescript'\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\nimport type {\n  Options,\n  Placement,\n  PopperEffect,\n} from '@pit-element-plus/components/popper'\n\n/**\n * @description Tag tooltip configuration interface\n */\nexport interface TagTooltipProps {\n  appendTo?: string | HTMLElement\n  placement?: Placement\n  fallbackPlacements?: Placement[]\n  effect?: PopperEffect\n  popperClass?: string\n  popperStyle?: string | CSSProperties\n  transition?: string\n  teleported?: boolean\n  popperOptions?: Partial<Options>\n  showAfter?: number\n  hideAfter?: number\n  autoClose?: number\n  offset?: number\n}\n\nexport const selectV2Props = buildProps({\n  /**\n   * @description whether creating new items is allowed. To use this, `filterable` must be true\n   */\n  allowCreate: Boolean,\n  /**\n   * @description autocomplete of select input\n   */\n  autocomplete: {\n    type: definePropType<'none' | 'both' | 'list' | 'inline'>(String),\n    default: 'none',\n  },\n  /**\n   * @description for non-filterable Select, this prop decides if the option menu pops up when the input is focused\n   */\n  automaticDropdown: Boolean,\n  /**\n   * @description whether select can be cleared\n   */\n  clearable: Boolean,\n  /**\n   * @description custom clear icon\n   */\n  clearIcon: {\n    type: iconPropType,\n    default: CircleClose,\n  },\n  /**\n   * @description tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    type: definePropType<PopperEffect>(String),\n    default: 'light',\n  },\n  /**\n   * @description whether to collapse tags to a text when multiple selecting\n   */\n  collapseTags: Boolean,\n  /**\n   * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true\n   */\n  collapseTagsTooltip: Boolean,\n  /**\n   * @description configuration object for the collapse-tags tooltip. To use this, `collapse-tags` and `collapse-tags-tooltip` must be true\n   */\n  tagTooltip: {\n    type: definePropType<TagTooltipProps>(Object),\n    default: () => ({}),\n  },\n  /**\n   * @description The max tags number to be shown. To use this, `collapse-tags` must be true\n   */\n  maxCollapseTags: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description\n   */\n  defaultFirstOption: Boolean,\n  /**\n   * @description is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description\n   */\n  estimatedOptionHeight: {\n    type: Number,\n    default: undefined,\n  },\n  /**\n   * @description whether Select is filterable\n   */\n  filterable: Boolean,\n  /**\n   * @description custom filter method, the first parameter is the current input value. To use this, `filterable` must be true\n   */\n  filterMethod: {\n    type: definePropType<(query: string) => void>(Function),\n  },\n  /**\n   * @description The height of the dropdown panel, 34px for each item\n   */\n  height: {\n    type: Number,\n    default: 274, // same as select dropdown menu\n  },\n  /**\n   * @description The height of the dropdown item\n   */\n  itemHeight: {\n    type: Number,\n    default: 34,\n  },\n  /**\n   * @description native input id\n   */\n  id: String,\n  /**\n   * @description whether Select is loading data from server\n   */\n  loading: Boolean,\n  /**\n   * @description displayed text while loading data from server, default is 'Loading'\n   */\n  loadingText: String,\n  /**\n   * @description biding value\n   */\n  modelValue: {\n    type: definePropType<\n      any[] | string | number | boolean | Record<string, any> | any\n    >([Array, String, Number, Boolean, Object]),\n    default: undefined,\n  },\n  /**\n   * @description is multiple\n   */\n  multiple: Boolean,\n  /**\n   * @description maximum number of options user can select when multiple is true. No limit when set to 0\n   */\n  multipleLimit: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description the name attribute of select input\n   */\n  name: String,\n  /**\n   * @description displayed text when there is no options, you can also use slot empty, the default is 'No Data'\n   */\n  noDataText: String,\n  /**\n   * @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data'\n   */\n  noMatchText: String,\n  /**\n   * @description function that gets called when the input value changes. Its parameter is the current input value. To use this, `filterable` must be true\n   */\n  remoteMethod: {\n    type: definePropType<(query: string) => void>(Function),\n  },\n  /**\n   * @description whether reserve the keyword after select filtered option.\n   */\n  reserveKeyword: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description data of the options, the key of `value` and `label` can be customize by `props`\n   */\n  options: {\n    type: definePropType<OptionType[]>(Array),\n    required: true,\n  },\n  /**\n   * @description placeholder, the default is 'Please select'\n   */\n  placeholder: {\n    type: String,\n  },\n  /**\n   * @description whether select dropdown is teleported, if `true` it will be teleported to where `append-to` sets\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description when select dropdown is inactive and `persistent` is `false`, select dropdown will be destroyed\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description custom class name for Select's dropdown\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  /**\n   * @description custom style for Select's dropdown\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions: {\n    type: definePropType<Partial<Options>>(Object),\n    default: () => ({}) as Partial<Options>,\n  },\n  /**\n   * @description whether search data from server\n   */\n  remote: Boolean,\n  /**\n   * @description debounce delay during remote search, in milliseconds\n   */\n  debounce: {\n    type: Number,\n    default: 300,\n  },\n  /**\n   * @description size of component\n   */\n  size: useSizeProp,\n  /**\n   * @description configuration options, see the following table\n   */\n  props: {\n    type: definePropType<Props>(Object),\n    default: () => defaultProps,\n  },\n  /**\n   * @description unique identity key name for value, required when value is an object\n   */\n  valueKey: {\n    type: String,\n    default: 'value',\n  },\n  /**\n   * @description Controls whether the scrollbar is always displayed\n   */\n  scrollbarAlwaysOn: Boolean,\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description offset of the dropdown\n   */\n  offset: {\n    type: Number,\n    default: 12,\n  },\n  /**\n   * @description in remote search method show suffix icon\n   */\n  remoteShowSuffix: Boolean,\n  /**\n   * @description Determines whether the arrow is displayed\n   */\n  showArrow: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description position of dropdown\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    values: placements,\n    default: 'bottom-start',\n  },\n  /**\n   * @description list of possible positions for dropdown\n   */\n  fallbackPlacements: {\n    type: definePropType<Placement[]>(Array),\n    default: ['bottom-start', 'top-start', 'right', 'left'],\n  },\n  /**\n   * @description tag type\n   */\n  tagType: { ...tagProps.type, default: 'info' },\n  /**\n   * @description tag effect\n   */\n  tagEffect: { ...tagProps.effect, default: 'light' },\n  /**\n   * @description tabindex for input\n   */\n  tabindex: {\n    type: [String, Number],\n    default: 0,\n  },\n  /**\n   * @description which element the select dropdown appends to\n   */\n  appendTo: useTooltipContentProps.appendTo,\n  /**\n   * @description if it is `true`, the width of the dropdown panel is the same as the input box.\n   * if it is `false`, the width is automatically calculated based on the value of `label`,\n   * or it can be set to a number to make it a fixed width\n   */\n  fitInputWidth: {\n    type: [Boolean, Number],\n    default: true,\n    validator(val) {\n      return isBoolean(val) || isNumber(val)\n    },\n  },\n  suffixIcon: {\n    type: iconPropType,\n    default: ArrowDown,\n  },\n  ...useEmptyValuesProps,\n  ...useAriaProps(['ariaLabel']),\n} as const)\n\nexport const optionV2Props = buildProps({\n  data: Array,\n  disabled: Boolean,\n  hovering: Boolean,\n  item: {\n    type: definePropType<Option>(Object),\n    required: true,\n  },\n  index: Number,\n  style: Object,\n  selected: Boolean,\n  created: Boolean,\n} as const)\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const selectV2Emits = {\n  [UPDATE_MODEL_EVENT]: (val: SelectV2Props['modelValue']) => true,\n  [CHANGE_EVENT]: (val: SelectV2Props['modelValue']) => true,\n  'remove-tag': (val: unknown) => true,\n  'visible-change': (visible: boolean) => true,\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n}\nexport const optionV2Emits = {\n  hover: (index?: number) => isNumber(index),\n  select: (val: Option, index?: number) => true,\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nexport type SelectV2Props = ExtractPropTypes<typeof selectV2Props>\nexport type SelectV2PropsPublic = ExtractPublicPropTypes<typeof selectV2Props>\nexport type OptionV2Props = ExtractPropTypes<typeof optionV2Props>\nexport type OptionV2PropsPublic = ExtractPublicPropTypes<typeof optionV2Props>\nexport type SelectV2EmitFn = EmitFn<typeof selectV2Emits>\nexport type OptionV2EmitFn = EmitFn<typeof optionV2Emits>\n\nexport type SelectV2Instance = InstanceType<typeof SelectV2> & unknown\n","import type { OptionV2Props, SelectV2Instance, SelectV2Props } from './defaults'\nimport type { InjectionKey, Ref } from 'vue'\nimport type { Option } from './select.types'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\n\nexport interface SelectV2Context {\n  props: SelectV2Props\n  expanded: Ref<boolean>\n  tooltipRef: Ref<TooltipInstance | undefined>\n  contentId: Ref<string>\n  onSelect: (option: Option) => void\n  onHover: (idx?: number) => void\n  onKeyboardNavigate: (direction: 'forward' | 'backward') => void\n  onKeyboardSelect: () => void\n}\n\nexport const selectV2InjectionKey: InjectionKey<SelectV2Context> = Symbol(\n  'ElSelectV2Injection'\n)\nexport type { SelectV2Instance, OptionV2Props, SelectV2Props }\n","<template>\n  <li\n    :id=\"`${contentId}-${index}`\"\n    role=\"option\"\n    :aria-selected=\"selected\"\n    :aria-disabled=\"disabled || undefined\"\n    :style=\"style\"\n    :class=\"[\n      ns.be('dropdown', 'item'),\n      ns.is('selected', selected),\n      ns.is('disabled', disabled),\n      ns.is('created', created),\n      ns.is('hovering', hovering),\n    ]\"\n    @mousemove=\"hoverItem\"\n    @click.stop=\"selectOptionClick\"\n  >\n    <slot :item=\"item\" :index=\"index\" :disabled=\"disabled\">\n      <span>{{ getLabel(item) }}</span>\n    </slot>\n  </li>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useOption } from './useOption'\nimport { useProps } from './useProps'\nimport { optionV2Emits, optionV2Props } from './defaults'\nimport { selectV2InjectionKey } from './token'\n\nexport default defineComponent({\n  props: optionV2Props,\n  emits: optionV2Emits,\n  setup(props, { emit }) {\n    const select = inject(selectV2InjectionKey)!\n    const ns = useNamespace('select')\n    const { hoverItem, selectOptionClick } = useOption(props, { emit })\n    const { getLabel } = useProps(select.props)\n    const contentId = select.contentId\n\n    return {\n      ns,\n      contentId,\n      hoverItem,\n      selectOptionClick,\n      getLabel,\n    }\n  },\n})\n</script>\n","<template>\n  <li\n    :id=\"`${contentId}-${index}`\"\n    role=\"option\"\n    :aria-selected=\"selected\"\n    :aria-disabled=\"disabled || undefined\"\n    :style=\"style\"\n    :class=\"[\n      ns.be('dropdown', 'item'),\n      ns.is('selected', selected),\n      ns.is('disabled', disabled),\n      ns.is('created', created),\n      ns.is('hovering', hovering),\n    ]\"\n    @mousemove=\"hoverItem\"\n    @click.stop=\"selectOptionClick\"\n  >\n    <slot :item=\"item\" :index=\"index\" :disabled=\"disabled\">\n      <span>{{ getLabel(item) }}</span>\n    </slot>\n  </li>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useOption } from './useOption'\nimport { useProps } from './useProps'\nimport { optionV2Emits, optionV2Props } from './defaults'\nimport { selectV2InjectionKey } from './token'\n\nexport default defineComponent({\n  props: optionV2Props,\n  emits: optionV2Emits,\n  setup(props, { emit }) {\n    const select = inject(selectV2InjectionKey)!\n    const ns = useNamespace('select')\n    const { hoverItem, selectOptionClick } = useOption(props, { emit })\n    const { getLabel } = useProps(select.props)\n    const contentId = select.contentId\n\n    return {\n      ns,\n      contentId,\n      hoverItem,\n      selectOptionClick,\n      getLabel,\n    }\n  },\n})\n</script>\n","import {\n  computed,\n  defineComponent,\n  inject,\n  ref,\n  toRaw,\n  unref,\n  watch,\n} from 'vue'\nimport { get } from 'lodash-unified'\nimport {\n  getEventCode,\n  isIOS,\n  isObject,\n  isUndefined,\n} from '@pit-element-plus/utils'\nimport {\n  DynamicSizeList,\n  FixedSizeList,\n} from '@pit-element-plus/components/virtual-list'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport GroupItem from './group-item.vue'\nimport OptionItem from './option-item.vue'\nimport { useProps } from './useProps'\nimport { selectV2InjectionKey } from './token'\n\nimport type {\n  DynamicSizeListInstance,\n  FixedSizeListInstance,\n  ItemProps,\n} from '@pit-element-plus/components/virtual-list'\nimport type { Option, OptionItemProps } from './select.types'\nimport type {\n  ComponentPublicInstance,\n  ComputedRef,\n  ExtractPropTypes,\n  Ref,\n} from 'vue'\n\nconst props = {\n  loading: Boolean,\n  data: {\n    type: Array,\n    required: true as const,\n  },\n  hoveringIndex: Number,\n  width: Number,\n  id: String,\n  ariaLabel: String,\n}\ninterface SelectDropdownExposed {\n  listRef: Ref<FixedSizeListInstance | DynamicSizeListInstance | undefined>\n  isSized: ComputedRef<boolean>\n  isItemDisabled: (modelValue: any[] | any, selected: boolean) => boolean\n  isItemHovering: (target: number) => boolean\n  isItemSelected: (modelValue: any[] | any, target: Option) => boolean\n  scrollToItem: (index: number) => void\n  resetScrollTop: () => void\n}\nexport type SelectDropdownInstance = ComponentPublicInstance<\n  ExtractPropTypes<typeof props>,\n  SelectDropdownExposed\n>\nexport default defineComponent({\n  name: 'ElSelectDropdown',\n  props,\n  setup(props, { slots, expose }) {\n    const select = inject(selectV2InjectionKey)!\n    const ns = useNamespace('select')\n    const { getLabel, getValue, getDisabled } = useProps(select.props)\n\n    const cachedHeights = ref<Array<number>>([])\n\n    const listRef = ref<FixedSizeListInstance | DynamicSizeListInstance>()\n\n    const size = computed(() => props.data.length)\n    watch(\n      () => size.value,\n      () => {\n        select.tooltipRef.value?.updatePopper?.()\n      }\n    )\n\n    const isSized = computed(() =>\n      isUndefined(select.props.estimatedOptionHeight)\n    )\n    const listProps = computed(() => {\n      if (isSized.value) {\n        return {\n          itemSize: select.props.itemHeight,\n        }\n      }\n\n      return {\n        estimatedSize: select.props.estimatedOptionHeight,\n        itemSize: (idx: number) => cachedHeights.value[idx],\n      }\n    })\n\n    const contains = (arr: Array<any> = [], target: any) => {\n      const {\n        props: { valueKey },\n      } = select\n\n      if (!isObject(target)) {\n        return arr.includes(target)\n      }\n\n      return (\n        arr &&\n        arr.some((item) => {\n          return toRaw(get(item, valueKey)) === get(target, valueKey)\n        })\n      )\n    }\n    const isEqual = (selected: unknown, target: unknown) => {\n      if (!isObject(target)) {\n        return selected === target\n      } else {\n        const { valueKey } = select.props\n        return get(selected, valueKey) === get(target, valueKey)\n      }\n    }\n\n    const isItemSelected: SelectDropdownExposed['isItemSelected'] = (\n      modelValue,\n      target\n    ) => {\n      if (select.props.multiple) {\n        return contains(modelValue, getValue(target))\n      }\n      return isEqual(modelValue, getValue(target))\n    }\n\n    const isItemDisabled: SelectDropdownExposed['isItemDisabled'] = (\n      modelValue,\n      selected\n    ) => {\n      const { disabled, multiple, multipleLimit } = select.props\n      return (\n        disabled ||\n        (!selected &&\n          (multiple\n            ? multipleLimit > 0 && modelValue.length >= multipleLimit\n            : false))\n      )\n    }\n\n    const isItemHovering: SelectDropdownExposed['isItemHovering'] = (target) =>\n      props.hoveringIndex === target\n\n    const scrollToItem: SelectDropdownExposed['scrollToItem'] = (index) => {\n      const list = listRef.value\n      if (list) {\n        list.scrollToItem(index)\n      }\n    }\n\n    const resetScrollTop: SelectDropdownExposed['resetScrollTop'] = () => {\n      const list = listRef.value\n      if (list) {\n        list.resetScrollTop()\n      }\n    }\n    const exposed: SelectDropdownExposed = {\n      listRef,\n      isSized,\n\n      isItemDisabled,\n      isItemHovering,\n      isItemSelected,\n      scrollToItem,\n      resetScrollTop,\n    }\n    expose(exposed)\n\n    const Item = (itemProps: ItemProps<any>) => {\n      const { index, data, style } = itemProps\n      const sized = unref(isSized)\n      const { itemSize, estimatedSize } = unref(listProps)\n      const { modelValue } = select.props\n      const { onSelect, onHover } = select\n      const item = data[index]\n      if (item.type === 'Group') {\n        return (\n          <GroupItem\n            item={item}\n            style={style}\n            height={sized ? (itemSize as number) : estimatedSize}\n          />\n        )\n      }\n\n      const isSelected = isItemSelected(modelValue, item)\n      const isDisabled = isItemDisabled(modelValue, isSelected)\n      const isHovering = isItemHovering(index)\n      return (\n        <OptionItem\n          {...itemProps}\n          selected={isSelected}\n          disabled={getDisabled(item) || isDisabled}\n          created={!!item.created}\n          hovering={isHovering}\n          item={item}\n          onSelect={onSelect}\n          onHover={onHover}\n        >\n          {{\n            default: (props: OptionItemProps) =>\n              slots.default?.(props) || <span>{getLabel(item)}</span>,\n          }}\n        </OptionItem>\n      )\n    }\n\n    // computed\n    const { onKeyboardNavigate, onKeyboardSelect } = select\n\n    const onForward = () => {\n      onKeyboardNavigate('forward')\n    }\n\n    const onBackward = () => {\n      onKeyboardNavigate('backward')\n    }\n\n    const onEscOrTab = () => {\n      // The following line actually doesn't work. Fixing it may introduce a small breaking change for some users, so just comment it out for now.\n      // select.expanded = false\n    }\n\n    const onKeydown = (e: KeyboardEvent) => {\n      const code = getEventCode(e)\n      const { tab, esc, down, up, enter, numpadEnter } = EVENT_CODE\n      if ([esc, down, up, enter, numpadEnter].includes(code)) {\n        e.preventDefault()\n        e.stopPropagation()\n      }\n\n      switch (code) {\n        case tab:\n        case esc:\n          onEscOrTab()\n          break\n        case down:\n          onForward()\n          break\n        case up:\n          onBackward()\n          break\n        case enter:\n        case numpadEnter:\n          onKeyboardSelect()\n          break\n      }\n    }\n\n    return () => {\n      const { data, width } = props\n      const { height, multiple, scrollbarAlwaysOn } = select.props\n      const isScrollbarAlwaysOn = computed(() => {\n        // fix https://github.com/element-plus/element-plus/issues/19127\n        return isIOS ? true : scrollbarAlwaysOn\n      })\n\n      const List = unref(isSized) ? FixedSizeList : DynamicSizeList\n\n      return (\n        <div\n          class={[ns.b('dropdown'), ns.is('multiple', multiple)]}\n          style={{\n            width: `${width}px`,\n          }}\n        >\n          {slots.header?.()}\n          {slots.loading?.() || slots.empty?.() || (\n            <List\n              ref={listRef}\n              {...unref(listProps)}\n              className={ns.be('dropdown', 'list')}\n              scrollbarAlwaysOn={isScrollbarAlwaysOn.value}\n              data={data}\n              height={height}\n              width={width}\n              total={data.length}\n              innerElement=\"ul\"\n              innerProps={{\n                id: props.id,\n                role: 'listbox',\n                'aria-label': props.ariaLabel,\n                'aria-orientation': 'vertical',\n              }}\n              // @ts-ignore - dts problem\n              onKeydown={onKeydown}\n            >\n              {{\n                default: (props: ItemProps<any>) => <Item {...props} />,\n              }}\n            </List>\n          )}\n          {slots.footer?.()}\n        </div>\n      )\n    }\n  },\n})\n","import { computed, ref, watch } from 'vue'\nimport { useProps } from './useProps'\n\nimport type { SelectV2Props } from './token'\nimport type { Option, SelectStates } from './select.types'\n\nexport function useAllowCreate(props: SelectV2Props, states: SelectStates) {\n  const { aliasProps, getLabel, getValue } = useProps(props)\n\n  const createOptionCount = ref(0)\n  const cachedSelectedOption = ref<Option>()\n\n  const enableAllowCreateMode = computed(() => {\n    return props.allowCreate && props.filterable\n  })\n\n  watch(\n    () => props.options,\n    (options) => {\n      const optionLabelsSet = new Set(options.map((option) => getLabel(option)))\n      states.createdOptions = states.createdOptions.filter(\n        (createdOption) => !optionLabelsSet.has(getLabel(createdOption))\n      )\n    }\n  )\n\n  function hasExistingOption(query: string) {\n    const hasOption = (option: Option) => getLabel(option) === query\n    return (\n      (props.options && props.options.some(hasOption)) ||\n      states.createdOptions.some(hasOption)\n    )\n  }\n\n  function selectNewOption(option: Option) {\n    if (!enableAllowCreateMode.value) {\n      return\n    }\n    if (props.multiple && option.created) {\n      createOptionCount.value++\n    } else {\n      cachedSelectedOption.value = option\n    }\n  }\n\n  function createNewOption(query: string) {\n    if (enableAllowCreateMode.value) {\n      if (query && query.length > 0) {\n        if (hasExistingOption(query)) {\n          states.createdOptions = states.createdOptions.filter(\n            (createdOption) => getLabel(createdOption) !== states.previousQuery\n          )\n          return\n        }\n        const newOption = {\n          [aliasProps.value.value]: query,\n          [aliasProps.value.label]: query,\n          created: true,\n          [aliasProps.value.disabled]: false,\n        }\n        if (states.createdOptions.length >= createOptionCount.value) {\n          states.createdOptions[createOptionCount.value] = newOption\n        } else {\n          states.createdOptions.push(newOption)\n        }\n      } else {\n        if (props.multiple) {\n          states.createdOptions.length = createOptionCount.value\n        } else {\n          const selectedOption = cachedSelectedOption.value\n          states.createdOptions.length = 0\n          if (selectedOption && selectedOption.created) {\n            states.createdOptions.push(selectedOption)\n          }\n        }\n      }\n    }\n  }\n\n  function removeNewOption(option: Option) {\n    if (\n      !enableAllowCreateMode.value ||\n      !option ||\n      !option.created ||\n      (option.created &&\n        props.reserveKeyword &&\n        states.inputValue === getLabel(option))\n    ) {\n      return\n    }\n    const idx = states.createdOptions.findIndex(\n      (it) => getValue(it) === getValue(option)\n    )\n    if (~idx) {\n      states.createdOptions.splice(idx, 1)\n      createOptionCount.value--\n    }\n  }\n\n  function clearAllNewOption() {\n    if (enableAllowCreateMode.value) {\n      states.createdOptions.length = 0\n      createOptionCount.value = 0\n    }\n  }\n\n  return {\n    createNewOption,\n    removeNewOption,\n    selectNewOption,\n    clearAllNewOption,\n  }\n}\n","import {\n  computed,\n  nextTick,\n  onMounted,\n  reactive,\n  ref,\n  useSlots,\n  watch,\n  watchEffect,\n} from 'vue'\nimport { findLastIndex, get, isEqual } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n  ValidateComponentsMap,\n  debugWarn,\n  escapeStringRegexp,\n  getEventCode,\n  isArray,\n  isEmpty,\n  isFunction,\n  isNumber,\n  isObject,\n  isUndefined,\n} from '@pit-element-plus/utils'\nimport {\n  useComposition,\n  useEmptyValues,\n  useFocusController,\n  useLocale,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  MINIMUM_INPUT_WIDTH,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { useAllowCreate } from './useAllowCreate'\nimport { useProps } from './useProps'\n\nimport type { Option, OptionType, SelectStates } from './select.types'\nimport type { SelectV2Props } from './token'\nimport type { SelectV2EmitFn } from './defaults'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { SelectDropdownInstance } from './select-dropdown'\n\nconst useSelect = (props: SelectV2Props, emit: SelectV2EmitFn) => {\n  // inject\n  const { t } = useLocale()\n  const slots = useSlots()\n  const nsSelect = useNamespace('select')\n  const nsInput = useNamespace('input')\n  const { form: elForm, formItem: elFormItem } = useFormItem()\n  const { inputId } = useFormItemInputId(props, {\n    formItemContext: elFormItem,\n  })\n  const { aliasProps, getLabel, getValue, getDisabled, getOptions } =\n    useProps(props)\n  const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n  const states: SelectStates = reactive({\n    inputValue: '',\n    cachedOptions: [],\n    createdOptions: [],\n    hoveringIndex: -1,\n    inputHovering: false,\n    selectionWidth: 0,\n    collapseItemWidth: 0,\n    previousQuery: null,\n    previousValue: undefined,\n    selectedLabel: '',\n    menuVisibleOnFocus: false,\n    isBeforeHide: false,\n  })\n\n  // data refs\n  const popperSize = ref(-1)\n  const debouncing = ref(false)\n\n  // DOM & Component refs\n  const selectRef = ref<HTMLElement>()\n  const selectionRef = ref<HTMLElement>()\n  const tooltipRef = ref<TooltipInstance>()\n  const tagTooltipRef = ref<TooltipInstance>()\n  const inputRef = ref<HTMLElement>()\n  const prefixRef = ref<HTMLElement>()\n  const suffixRef = ref<HTMLElement>()\n  const menuRef = ref<SelectDropdownInstance>()\n  const tagMenuRef = ref<HTMLElement>()\n  const collapseItemRef = ref<HTMLElement>()\n\n  const {\n    isComposing,\n    handleCompositionStart,\n    handleCompositionEnd,\n    handleCompositionUpdate,\n  } = useComposition({\n    afterComposition: (e) => onInput(e),\n  })\n\n  const selectDisabled = useFormDisabled()\n\n  const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n    disabled: selectDisabled,\n    afterFocus() {\n      if (props.automaticDropdown && !expanded.value) {\n        expanded.value = true\n        states.menuVisibleOnFocus = true\n      }\n    },\n    beforeBlur(event) {\n      return (\n        tooltipRef.value?.isFocusInsideContent(event) ||\n        tagTooltipRef.value?.isFocusInsideContent(event)\n      )\n    },\n    afterBlur() {\n      expanded.value = false\n      states.menuVisibleOnFocus = false\n      if (props.validateEvent) {\n        elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n      }\n    },\n  })\n\n  const allOptions = computed(() => filterOptions(''))\n\n  const hasOptions = computed(() => {\n    if (props.loading) return false\n    return props.options.length > 0 || states.createdOptions.length > 0\n  })\n\n  const filteredOptions = ref<OptionType[]>([])\n  // the controller of the expanded popup\n  const expanded = ref(false)\n\n  const needStatusIcon = computed(() => elForm?.statusIcon ?? false)\n\n  const popupHeight = computed(() => {\n    const totalHeight = filteredOptions.value.length * props.itemHeight\n    return totalHeight > props.height ? props.height : totalHeight\n  })\n\n  const hasModelValue = computed(() => {\n    return props.multiple\n      ? isArray(props.modelValue) && props.modelValue.length > 0\n      : !isEmptyValue(props.modelValue)\n  })\n\n  const showClearBtn = computed(() => {\n    return (\n      props.clearable &&\n      !selectDisabled.value &&\n      hasModelValue.value &&\n      (isFocused.value || states.inputHovering)\n    )\n  })\n\n  const iconComponent = computed(() =>\n    props.remote && props.filterable && !props.remoteShowSuffix\n      ? ''\n      : props.suffixIcon\n  )\n\n  const iconReverse = computed(\n    () => iconComponent.value && nsSelect.is('reverse', expanded.value)\n  )\n\n  const validateState = computed(() => elFormItem?.validateState || '')\n  const validateIcon = computed(() => {\n    // When we use indexed access to get the type of an undeclared property,\n    // the unsafe type `any` will be inferred, which TypeScript throws an error to emphasize it.\n    // To avoid TypeScript complaining about it, we use truthiness narrowing to narrow the type of validateState.\n    if (!validateState.value) return\n    return ValidateComponentsMap[validateState.value]\n  })\n\n  const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n  const isRemoteSearchEmpty = computed(\n    () => props.remote && !states.inputValue && !hasOptions.value\n  )\n\n  // filteredOptions includes flatten the data into one dimensional array.\n  const emptyText = computed(() => {\n    if (props.loading) {\n      return props.loadingText || t('el.select.loading')\n    } else {\n      if (\n        props.filterable &&\n        states.inputValue &&\n        hasOptions.value &&\n        filteredOptions.value.length === 0\n      ) {\n        return props.noMatchText || t('el.select.noMatch')\n      }\n      if (!hasOptions.value) {\n        return props.noDataText || t('el.select.noData')\n      }\n    }\n    return null\n  })\n\n  const isFilterMethodValid = computed(\n    () => props.filterable && isFunction(props.filterMethod)\n  )\n  const isRemoteMethodValid = computed(\n    () => props.filterable && props.remote && isFunction(props.remoteMethod)\n  )\n\n  const filterOptions = (query: string) => {\n    const regexp = new RegExp(escapeStringRegexp(query), 'i')\n\n    const isValidOption = (o: Option): boolean => {\n      if (isFilterMethodValid.value || isRemoteMethodValid.value) return true\n      // when query was given, we should test on the label see whether the label contains the given query\n      return query ? regexp.test(getLabel(o) || '') : true\n    }\n    if (props.loading) {\n      return []\n    }\n\n    return [...states.createdOptions, ...props.options].reduce((all, item) => {\n      const options = getOptions(item)\n\n      if (isArray(options)) {\n        const filtered = options.filter(isValidOption)\n\n        if (filtered.length > 0) {\n          all.push(\n            {\n              label: getLabel(item),\n              type: 'Group',\n            },\n            ...filtered\n          )\n        }\n      } else if (props.remote || isValidOption(item)) {\n        all.push(item)\n      }\n\n      return all\n    }, []) as OptionType[]\n  }\n\n  const updateOptions = () => {\n    filteredOptions.value = filterOptions(states.inputValue)\n  }\n\n  const allOptionsValueMap = computed(() => {\n    const valueMap = new Map()\n\n    allOptions.value.forEach((option, index) => {\n      valueMap.set(getValueKey(getValue(option)), { option, index })\n    })\n    return valueMap\n  })\n\n  const filteredOptionsValueMap = computed(() => {\n    const valueMap = new Map()\n\n    filteredOptions.value.forEach((option, index) => {\n      valueMap.set(getValueKey(getValue(option)), { option, index })\n    })\n    return valueMap\n  })\n\n  const optionsAllDisabled = computed(() =>\n    filteredOptions.value.every((option) => getDisabled(option))\n  )\n\n  const selectSize = useFormSize()\n\n  const collapseTagSize = computed(() =>\n    'small' === selectSize.value ? 'small' : 'default'\n  )\n\n  const calculatePopperSize = () => {\n    if (isNumber(props.fitInputWidth)) {\n      popperSize.value = props.fitInputWidth\n      return\n    }\n    const width = selectRef.value?.offsetWidth || 200\n    if (!props.fitInputWidth && hasOptions.value) {\n      nextTick(() => {\n        popperSize.value = Math.max(width, calculateLabelMaxWidth())\n      })\n    } else {\n      popperSize.value = width\n    }\n  }\n\n  // TODO Caching implementation\n  // 1. There is no need to calculate options that have already been calculated\n  // 2. Repeatedly expand and close when persistent is set to false, no need for repeated calculations\n  const calculateLabelMaxWidth = () => {\n    const canvas = document.createElement('canvas')\n    const ctx = canvas.getContext('2d')\n    const selector = nsSelect.be('dropdown', 'item')\n    const dom = menuRef.value?.listRef?.innerRef || document\n    const dropdownItemEl = dom.querySelector(`.${selector}`)\n    if (dropdownItemEl === null || ctx === null) return 0\n    const style = getComputedStyle(dropdownItemEl)\n    const padding =\n      Number.parseFloat(style.paddingLeft) +\n      Number.parseFloat(style.paddingRight)\n    ctx.font = `bold ${style.font.replace(\n      new RegExp(`\\\\b${style.fontWeight}\\\\b`),\n      ''\n    )}`\n    const maxWidth = filteredOptions.value.reduce((max, option) => {\n      const metrics = ctx.measureText(getLabel(option))\n      return Math.max(metrics.width, max)\n    }, 0)\n    return maxWidth + padding\n  }\n\n  const getGapWidth = () => {\n    if (!selectionRef.value) return 0\n    const style = window.getComputedStyle(selectionRef.value)\n    return Number.parseFloat(style.gap || '6px')\n  }\n\n  // computed style\n  const tagStyle = computed(() => {\n    const gapWidth = getGapWidth()\n    const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n    const maxWidth =\n      collapseItemRef.value && props.maxCollapseTags === 1\n        ? states.selectionWidth -\n          states.collapseItemWidth -\n          gapWidth -\n          inputSlotWidth\n        : states.selectionWidth - inputSlotWidth\n    return { maxWidth: `${maxWidth}px` }\n  })\n\n  const collapseTagStyle = computed(() => {\n    return { maxWidth: `${states.selectionWidth}px` }\n  })\n\n  const shouldShowPlaceholder = computed(() => {\n    if (isArray(props.modelValue)) {\n      return props.modelValue.length === 0 && !states.inputValue\n    }\n\n    // when it's not multiple mode, we only determine this flag based on filterable and expanded\n    // when filterable flag is true, which means we have input box on the screen\n    return props.filterable ? !states.inputValue : true\n  })\n\n  const currentPlaceholder = computed(() => {\n    const _placeholder = props.placeholder ?? t('el.select.placeholder')\n    return props.multiple || !hasModelValue.value\n      ? _placeholder\n      : states.selectedLabel\n  })\n\n  // this obtains the actual popper DOM element.\n  const popperRef = computed(() => tooltipRef.value?.popperRef?.contentRef)\n\n  // the index with current value in options\n  const indexRef = computed<number>(() => {\n    if (props.multiple) {\n      const len = (props.modelValue as []).length\n      if (\n        len > 0 &&\n        filteredOptionsValueMap.value.has(props.modelValue[len - 1])\n      ) {\n        const { index } = filteredOptionsValueMap.value.get(\n          props.modelValue[len - 1]\n        )\n        return index\n      }\n    } else {\n      if (\n        !isEmptyValue(props.modelValue) &&\n        filteredOptionsValueMap.value.has(props.modelValue)\n      ) {\n        const { index } = filteredOptionsValueMap.value.get(props.modelValue)\n        return index\n      }\n    }\n    return -1\n  })\n\n  const dropdownMenuVisible = computed({\n    get() {\n      return (\n        expanded.value &&\n        (props.loading ||\n          !isRemoteSearchEmpty.value ||\n          (props.remote && !!slots.empty)) &&\n        (!debouncing.value || !isEmpty(states.previousQuery))\n      )\n    },\n    set(val: boolean) {\n      expanded.value = val\n    },\n  })\n\n  const showTagList = computed(() => {\n    if (!props.multiple) {\n      return []\n    }\n    return props.collapseTags\n      ? states.cachedOptions.slice(0, props.maxCollapseTags)\n      : states.cachedOptions\n  })\n\n  const collapseTagList = computed(() => {\n    if (!props.multiple) {\n      return []\n    }\n    return props.collapseTags\n      ? states.cachedOptions.slice(props.maxCollapseTags)\n      : []\n  })\n\n  // hooks\n  const {\n    createNewOption,\n    removeNewOption,\n    selectNewOption,\n    clearAllNewOption,\n  } = useAllowCreate(props, states)\n\n  // methods\n  const toggleMenu = (event?: Event) => {\n    if (\n      selectDisabled.value ||\n      (props.filterable &&\n        expanded.value &&\n        event &&\n        !suffixRef.value?.contains(event.target as Node))\n    )\n      return\n\n    if (states.menuVisibleOnFocus) {\n      // controlled by automaticDropdown\n      states.menuVisibleOnFocus = false\n    } else {\n      expanded.value = !expanded.value\n    }\n  }\n\n  const onInputChange = () => {\n    if (states.inputValue.length > 0 && !expanded.value) {\n      expanded.value = true\n    }\n    createNewOption(states.inputValue)\n    nextTick(() => {\n      handleQueryChange(states.inputValue)\n    })\n  }\n\n  const debouncedOnInputChange = useDebounceFn(() => {\n    onInputChange()\n    debouncing.value = false\n  }, debounce)\n\n  const handleQueryChange = (val: string) => {\n    if (states.previousQuery === val || isComposing.value) {\n      return\n    }\n    states.previousQuery = val\n    if (props.filterable && isFunction(props.filterMethod)) {\n      props.filterMethod(val)\n    } else if (\n      props.filterable &&\n      props.remote &&\n      isFunction(props.remoteMethod)\n    ) {\n      props.remoteMethod(val)\n    }\n    if (\n      props.defaultFirstOption &&\n      (props.filterable || props.remote) &&\n      filteredOptions.value.length\n    ) {\n      nextTick(checkDefaultFirstOption)\n    } else {\n      nextTick(updateHoveringIndex)\n    }\n  }\n\n  /**\n   * find and highlight first option as default selected\n   * @remark\n   * - if the first option in dropdown list is user-created,\n   *   it would be at the end of the optionsArray\n   *   so find it and set hover.\n   *   (NOTE: there must be only one user-created option in dropdown list with query)\n   * - if there's no user-created option in list, just find the first one as usual\n   *   (NOTE: exclude options that are disabled or in disabled-group)\n   */\n  const checkDefaultFirstOption = () => {\n    const optionsInDropdown = filteredOptions.value.filter(\n      (n) => !n.disabled && n.type !== 'Group'\n    )\n    const userCreatedOption = optionsInDropdown.find((n) => n.created)\n    const firstOriginOption = optionsInDropdown[0]\n    states.hoveringIndex = getValueIndex(\n      filteredOptions.value,\n      userCreatedOption || firstOriginOption\n    )\n  }\n\n  const emitChange = (val: any | any[]) => {\n    if (!isEqual(props.modelValue, val)) {\n      emit(CHANGE_EVENT, val)\n    }\n  }\n\n  const update = (val: any) => {\n    emit(UPDATE_MODEL_EVENT, val)\n    emitChange(val)\n    states.previousValue = props.multiple ? String(val) : val\n\n    nextTick(() => {\n      if (props.multiple && isArray(props.modelValue)) {\n        const cachedOptions = states.cachedOptions.slice()\n        const selectedOptions = props.modelValue.map((value) =>\n          getOption(value, cachedOptions)\n        )\n\n        if (!isEqual(states.cachedOptions, selectedOptions)) {\n          states.cachedOptions = selectedOptions\n        }\n      } else {\n        initStates(true)\n      }\n    })\n  }\n\n  const getValueIndex = (arr: unknown[] = [], value: unknown) => {\n    if (!isObject(value)) {\n      return arr.indexOf(value)\n    }\n    const valueKey = props.valueKey\n    let index = -1\n    arr.some((item, i) => {\n      if (get(item, valueKey) === get(value, valueKey)) {\n        index = i\n        return true\n      }\n      return false\n    })\n    return index\n  }\n\n  const getValueKey = (item: unknown) => {\n    return isObject(item) ? get(item, props.valueKey) : item\n  }\n\n  const handleResize = () => {\n    calculatePopperSize()\n  }\n\n  const resetSelectionWidth = () => {\n    states.selectionWidth = Number.parseFloat(\n      window.getComputedStyle(selectionRef.value!).width\n    )\n  }\n\n  const resetCollapseItemWidth = () => {\n    states.collapseItemWidth =\n      collapseItemRef.value!.getBoundingClientRect().width\n  }\n\n  const updateTooltip = () => {\n    tooltipRef.value?.updatePopper?.()\n  }\n\n  const updateTagTooltip = () => {\n    tagTooltipRef.value?.updatePopper?.()\n  }\n\n  const onSelect = (option: Option) => {\n    const optionValue = getValue(option)\n\n    if (props.multiple) {\n      let selectedOptions = (props.modelValue as any[]).slice()\n\n      const index = getValueIndex(selectedOptions, optionValue)\n      if (index > -1) {\n        selectedOptions = [\n          ...selectedOptions.slice(0, index),\n          ...selectedOptions.slice(index + 1),\n        ]\n        states.cachedOptions.splice(index, 1)\n        removeNewOption(option)\n      } else if (\n        props.multipleLimit <= 0 ||\n        selectedOptions.length < props.multipleLimit\n      ) {\n        selectedOptions = [...selectedOptions, optionValue]\n        states.cachedOptions.push(option)\n        selectNewOption(option)\n      }\n      update(selectedOptions)\n      if (option.created) {\n        handleQueryChange('')\n      }\n      if (props.filterable && (option.created || !props.reserveKeyword)) {\n        states.inputValue = ''\n      }\n    } else {\n      states.selectedLabel = getLabel(option)\n      !isEqual(props.modelValue, optionValue) && update(optionValue)\n      expanded.value = false\n      selectNewOption(option)\n      if (!option.created) {\n        clearAllNewOption()\n      }\n    }\n    focus()\n  }\n\n  const deleteTag = (event: MouseEvent, option: Option) => {\n    let selectedOptions = (props.modelValue as any[]).slice()\n\n    const index = getValueIndex(selectedOptions, getValue(option))\n\n    if (index > -1 && !selectDisabled.value) {\n      selectedOptions = [\n        ...(props.modelValue as Array<unknown>).slice(0, index),\n        ...(props.modelValue as Array<unknown>).slice(index + 1),\n      ]\n      states.cachedOptions.splice(index, 1)\n      update(selectedOptions)\n      emit('remove-tag', getValue(option))\n      removeNewOption(option)\n    }\n    event.stopPropagation()\n    focus()\n  }\n\n  const focus = () => {\n    inputRef.value?.focus()\n  }\n\n  const blur = () => {\n    if (expanded.value) {\n      expanded.value = false\n      nextTick(() => inputRef.value?.blur())\n      return\n    }\n    inputRef.value?.blur()\n  }\n\n  // keyboard handlers\n  const handleEsc = () => {\n    if (states.inputValue.length > 0) {\n      states.inputValue = ''\n    } else {\n      expanded.value = false\n    }\n  }\n\n  const getLastNotDisabledIndex = (value: unknown[]) =>\n    findLastIndex(\n      value,\n      (it) =>\n        !states.cachedOptions.some(\n          (option) => getValue(option) === it && getDisabled(option)\n        )\n    )\n\n  const handleDel = (e: KeyboardEvent) => {\n    const code = getEventCode(e)\n    if (!props.multiple) return\n    if (code === EVENT_CODE.delete) return\n    if (states.inputValue.length === 0) {\n      e.preventDefault()\n      const selected = (props.modelValue as Array<any>).slice()\n      const lastNotDisabledIndex = getLastNotDisabledIndex(selected)\n      if (lastNotDisabledIndex < 0) return\n      const removeTagValue = selected[lastNotDisabledIndex]\n      selected.splice(lastNotDisabledIndex, 1)\n      const option = states.cachedOptions[lastNotDisabledIndex]\n      states.cachedOptions.splice(lastNotDisabledIndex, 1)\n      removeNewOption(option)\n      update(selected)\n      emit('remove-tag', removeTagValue)\n    }\n  }\n\n  const handleClear = () => {\n    let emptyValue: string | any[]\n    if (isArray(props.modelValue)) {\n      emptyValue = []\n    } else {\n      emptyValue = valueOnClear.value\n    }\n\n    states.selectedLabel = ''\n\n    expanded.value = false\n    update(emptyValue)\n    emit('clear')\n    clearAllNewOption()\n    focus()\n  }\n\n  const onKeyboardNavigate = (\n    direction: 'forward' | 'backward',\n    hoveringIndex: number | undefined = undefined\n  ): void => {\n    const options = filteredOptions.value\n    if (\n      !['forward', 'backward'].includes(direction) ||\n      selectDisabled.value ||\n      options.length <= 0 ||\n      optionsAllDisabled.value ||\n      isComposing.value\n    ) {\n      return\n    }\n    if (!expanded.value) {\n      return toggleMenu()\n    }\n    if (isUndefined(hoveringIndex)) {\n      hoveringIndex = states.hoveringIndex\n    }\n    let newIndex = -1\n    if (direction === 'forward') {\n      newIndex = hoveringIndex + 1\n      if (newIndex >= options.length) {\n        // return to the first option\n        newIndex = 0\n      }\n    } else if (direction === 'backward') {\n      newIndex = hoveringIndex - 1\n      if (newIndex < 0 || newIndex >= options.length) {\n        // navigate to the last one\n        newIndex = options.length - 1\n      }\n    }\n    const option = options[newIndex]\n    if (getDisabled(option) || option.type === 'Group') {\n      // prevent dispatching multiple nextTick callbacks.\n      return onKeyboardNavigate(direction, newIndex)\n    } else {\n      states.hoveringIndex = newIndex\n      scrollToItem(newIndex)\n    }\n  }\n\n  const onKeyboardSelect = () => {\n    if (!expanded.value) {\n      return toggleMenu()\n    } else if (\n      ~states.hoveringIndex &&\n      filteredOptions.value[states.hoveringIndex]\n    ) {\n      onSelect(filteredOptions.value[states.hoveringIndex])\n    }\n  }\n\n  const onHoverOption = (idx?: number) => {\n    states.hoveringIndex = idx ?? -1\n  }\n\n  const updateHoveringIndex = () => {\n    if (!props.multiple) {\n      states.hoveringIndex = filteredOptions.value.findIndex((item) => {\n        return getValueKey(getValue(item)) === getValueKey(props.modelValue)\n      })\n    } else {\n      const length = props.modelValue.length\n      if (length > 0) {\n        const lastValue = props.modelValue[length - 1]\n        states.hoveringIndex = filteredOptions.value.findIndex(\n          (item) => getValueKey(lastValue) === getValueKey(getValue(item))\n        )\n      } else {\n        states.hoveringIndex = -1\n      }\n    }\n  }\n\n  const onInput = (event: Event) => {\n    states.inputValue = (event.target as HTMLInputElement).value\n    if (props.remote) {\n      debouncing.value = true\n      debouncedOnInputChange()\n    } else {\n      return onInputChange()\n    }\n  }\n\n  const handleClickOutside = (event: Event) => {\n    expanded.value = false\n\n    if (isFocused.value) {\n      const _event = new FocusEvent('blur', event)\n      handleBlur(_event)\n    }\n  }\n\n  const handleMenuEnter = () => {\n    states.isBeforeHide = false\n    return nextTick(() => {\n      if (~indexRef.value) {\n        scrollToItem(indexRef.value)\n      }\n    })\n  }\n\n  const scrollToItem = (index: number) => {\n    menuRef.value!.scrollToItem(index)\n  }\n\n  const getOption = (value: unknown, cachedOptions?: Option[]) => {\n    // match the option with the given value, if not found, create a new option\n    const selectValue = getValueKey(value)\n\n    if (allOptionsValueMap.value.has(selectValue)) {\n      const { option } = allOptionsValueMap.value.get(selectValue)\n\n      return option\n    }\n    if (cachedOptions && cachedOptions.length) {\n      const option = cachedOptions.find(\n        (option) => getValueKey(getValue(option)) === selectValue\n      )\n      if (option) {\n        return option\n      }\n    }\n\n    return {\n      [aliasProps.value.value]: value,\n      [aliasProps.value.label]: value,\n    }\n  }\n\n  const getIndex = (option: Option) =>\n    allOptionsValueMap.value.get(getValue(option))?.index ?? -1\n\n  const initStates = (needUpdateSelectedLabel = false) => {\n    if (props.multiple) {\n      if ((props.modelValue as Array<any>).length > 0) {\n        const cachedOptions = states.cachedOptions.slice()\n        states.cachedOptions.length = 0\n        states.previousValue = props.modelValue.toString()\n\n        for (const value of props.modelValue) {\n          const option = getOption(value, cachedOptions)\n          states.cachedOptions.push(option)\n        }\n      } else {\n        states.cachedOptions = []\n        states.previousValue = undefined\n      }\n    } else {\n      if (hasModelValue.value) {\n        states.previousValue = props.modelValue\n        const options = filteredOptions.value\n        const selectedItemIndex = options.findIndex(\n          (option) =>\n            getValueKey(getValue(option)) === getValueKey(props.modelValue)\n        )\n        if (~selectedItemIndex) {\n          states.selectedLabel = getLabel(options[selectedItemIndex])\n        } else {\n          if (!states.selectedLabel || needUpdateSelectedLabel) {\n            states.selectedLabel = getValueKey(props.modelValue)\n          }\n        }\n      } else {\n        states.selectedLabel = ''\n        states.previousValue = undefined\n      }\n    }\n    clearAllNewOption()\n    calculatePopperSize()\n  }\n\n  watch(\n    () => props.fitInputWidth,\n    () => {\n      calculatePopperSize()\n    }\n  )\n\n  // in order to track these individually, we need to turn them into refs instead of watching the entire\n  // reactive object which could cause perf penalty when unnecessary field gets changed the watch method will\n  // be invoked.\n\n  watch(expanded, (val) => {\n    if (val) {\n      if (!props.persistent) {\n        calculatePopperSize()\n      }\n      handleQueryChange('')\n    } else {\n      states.inputValue = ''\n      states.previousQuery = null\n      states.isBeforeHide = true\n      states.menuVisibleOnFocus = false\n      createNewOption('')\n    }\n  })\n\n  watch(\n    () => props.modelValue,\n    (val, oldVal) => {\n      const isValEmpty = !val || (isArray(val) && val.length === 0)\n\n      if (\n        isValEmpty ||\n        (props.multiple && !isEqual(val.toString(), states.previousValue)) ||\n        (!props.multiple &&\n          getValueKey(val) !== getValueKey(states.previousValue))\n      ) {\n        initStates(true)\n      }\n      if (!isEqual(val, oldVal) && props.validateEvent) {\n        elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n      }\n    },\n    {\n      deep: true,\n    }\n  )\n\n  watch(\n    () => props.options,\n    () => {\n      const input = inputRef.value\n      // filter or remote-search scenarios are not initialized\n      if (!input || (input && document.activeElement !== input)) {\n        initStates()\n      }\n    },\n    {\n      deep: true,\n      flush: 'post',\n    }\n  )\n\n  // fix the problem that scrollTop is not reset in filterable mode\n  watch(\n    () => filteredOptions.value,\n    () => {\n      calculatePopperSize()\n      return menuRef.value && nextTick(menuRef.value.resetScrollTop)\n    }\n  )\n\n  watchEffect(() => {\n    // Anything could cause options changed, then update options\n    // If you want to control it by condition, write here\n    if (states.isBeforeHide) return\n    updateOptions()\n  })\n\n  watchEffect(() => {\n    const { valueKey, options } = props\n    const duplicateValue = new Map()\n    for (const item of options) {\n      const optionValue = getValue(item)\n      let v = optionValue\n      if (isObject(v)) {\n        v = get(optionValue, valueKey)\n      }\n      if (duplicateValue.get(v)) {\n        debugWarn(\n          'ElSelectV2',\n          `The option values you provided seem to be duplicated, which may cause some problems, please check.`\n        )\n        break\n      } else {\n        duplicateValue.set(v, true)\n      }\n    }\n  })\n\n  onMounted(() => {\n    initStates()\n  })\n  useResizeObserver(selectRef, handleResize)\n  useResizeObserver(selectionRef, resetSelectionWidth)\n  useResizeObserver(wrapperRef, updateTooltip)\n  useResizeObserver(tagMenuRef, updateTagTooltip)\n  useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n  // #21498\n  let stop: (() => void) | undefined\n  watch(\n    () => dropdownMenuVisible.value,\n    (newVal) => {\n      if (newVal) {\n        stop = useResizeObserver(menuRef, updateTooltip).stop\n      } else {\n        stop?.()\n        stop = undefined\n      }\n      emit('visible-change', newVal)\n    }\n  )\n\n  return {\n    // data exports\n    inputId,\n    collapseTagSize,\n    currentPlaceholder,\n    expanded,\n    emptyText,\n    popupHeight,\n    debounce,\n    allOptions,\n    allOptionsValueMap,\n    filteredOptions,\n    iconComponent,\n    iconReverse,\n    tagStyle,\n    collapseTagStyle,\n    popperSize,\n    dropdownMenuVisible,\n    hasModelValue,\n    shouldShowPlaceholder,\n    selectDisabled,\n    selectSize,\n    needStatusIcon,\n    showClearBtn,\n    states,\n    isFocused,\n    nsSelect,\n    nsInput,\n\n    // refs items exports\n    inputRef,\n    menuRef,\n    tagMenuRef,\n    tooltipRef,\n    tagTooltipRef,\n    selectRef,\n    wrapperRef,\n    selectionRef,\n    prefixRef,\n    suffixRef,\n    collapseItemRef,\n\n    popperRef,\n\n    validateState,\n    validateIcon,\n    showTagList,\n    collapseTagList,\n\n    // methods exports\n    debouncedOnInputChange,\n    deleteTag,\n    getLabel,\n    getValue,\n    getDisabled,\n    getValueKey,\n    getIndex,\n    handleClear,\n    handleClickOutside,\n    handleDel,\n    handleEsc,\n    focus,\n    blur,\n    handleMenuEnter,\n    handleResize,\n    resetSelectionWidth,\n    updateTooltip,\n    updateTagTooltip,\n    updateOptions,\n    toggleMenu,\n    scrollTo: scrollToItem,\n    onInput,\n    onKeyboardNavigate,\n    onKeyboardSelect,\n    onSelect,\n    onHover: onHoverOption,\n    handleCompositionStart,\n    handleCompositionEnd,\n    handleCompositionUpdate,\n  }\n}\n\nexport default useSelect\n","<template>\n  <div\n    ref=\"selectRef\"\n    v-click-outside:[popperRef]=\"handleClickOutside\"\n    :class=\"[nsSelect.b(), nsSelect.m(selectSize)]\"\n    @mouseenter=\"states.inputHovering = true\"\n    @mouseleave=\"states.inputHovering = false\"\n  >\n    <el-tooltip\n      ref=\"tooltipRef\"\n      :visible=\"dropdownMenuVisible\"\n      :teleported=\"teleported\"\n      :popper-class=\"[nsSelect.e('popper'), popperClass!]\"\n      :popper-style=\"popperStyle\"\n      :gpu-acceleration=\"false\"\n      :stop-popper-mouse-event=\"false\"\n      :popper-options=\"popperOptions\"\n      :fallback-placements=\"fallbackPlacements\"\n      :effect=\"effect\"\n      :placement=\"placement\"\n      pure\n      :transition=\"`${nsSelect.namespace.value}-zoom-in-top`\"\n      trigger=\"click\"\n      :persistent=\"persistent\"\n      :append-to=\"appendTo\"\n      :show-arrow=\"showArrow\"\n      :offset=\"offset\"\n      @before-show=\"handleMenuEnter\"\n      @hide=\"states.isBeforeHide = false\"\n    >\n      <template #default>\n        <div\n          ref=\"wrapperRef\"\n          :class=\"[\n            nsSelect.e('wrapper'),\n            nsSelect.is('focused', isFocused),\n            nsSelect.is('hovering', states.inputHovering),\n            nsSelect.is('filterable', filterable),\n            nsSelect.is('disabled', selectDisabled),\n          ]\"\n          @click.prevent=\"toggleMenu\"\n        >\n          <div\n            v-if=\"$slots.prefix\"\n            ref=\"prefixRef\"\n            :class=\"nsSelect.e('prefix')\"\n          >\n            <slot name=\"prefix\" />\n          </div>\n          <div\n            ref=\"selectionRef\"\n            :class=\"[\n              nsSelect.e('selection'),\n              nsSelect.is(\n                'near',\n                multiple && !$slots.prefix && !!modelValue.length\n              ),\n            ]\"\n          >\n            <slot\n              v-if=\"multiple\"\n              name=\"tag\"\n              :data=\"states.cachedOptions\"\n              :delete-tag=\"deleteTag\"\n              :select-disabled=\"selectDisabled\"\n            >\n              <div\n                v-for=\"item in showTagList\"\n                :key=\"getValueKey(getValue(item))\"\n                :class=\"nsSelect.e('selected-item')\"\n              >\n                <el-tag\n                  :closable=\"!selectDisabled && !getDisabled(item)\"\n                  :size=\"collapseTagSize\"\n                  :type=\"tagType\"\n                  :effect=\"tagEffect\"\n                  disable-transitions\n                  :style=\"tagStyle\"\n                  @close=\"deleteTag($event, item)\"\n                >\n                  <span :class=\"nsSelect.e('tags-text')\">\n                    <slot\n                      name=\"label\"\n                      :index=\"getIndex(item)\"\n                      :label=\"getLabel(item)\"\n                      :value=\"getValue(item)\"\n                    >\n                      {{ getLabel(item) }}\n                    </slot>\n                  </span>\n                </el-tag>\n              </div>\n\n              <el-tooltip\n                v-if=\"\n                  collapseTags && states.cachedOptions.length > maxCollapseTags\n                \"\n                ref=\"tagTooltipRef\"\n                :disabled=\"dropdownMenuVisible || !collapseTagsTooltip\"\n                :fallback-placements=\"\n                  tagTooltip?.fallbackPlacements ?? [\n                    'bottom',\n                    'top',\n                    'right',\n                    'left',\n                  ]\n                \"\n                :effect=\"tagTooltip?.effect ?? effect\"\n                :placement=\"tagTooltip?.placement ?? 'bottom'\"\n                :popper-class=\"tagTooltip?.popperClass ?? popperClass\"\n                :popper-style=\"tagTooltip?.popperStyle ?? popperStyle\"\n                :teleported=\"tagTooltip?.teleported ?? teleported\"\n                :append-to=\"tagTooltip?.appendTo ?? appendTo\"\n                :popper-options=\"tagTooltip?.popperOptions ?? popperOptions\"\n                :transition=\"tagTooltip?.transition\"\n                :show-after=\"tagTooltip?.showAfter\"\n                :hide-after=\"tagTooltip?.hideAfter\"\n                :auto-close=\"tagTooltip?.autoClose\"\n                :offset=\"tagTooltip?.offset\"\n              >\n                <template #default>\n                  <div\n                    ref=\"collapseItemRef\"\n                    :class=\"nsSelect.e('selected-item')\"\n                  >\n                    <el-tag\n                      :closable=\"false\"\n                      :size=\"collapseTagSize\"\n                      :type=\"tagType\"\n                      :effect=\"tagEffect\"\n                      :style=\"collapseTagStyle\"\n                      disable-transitions\n                    >\n                      <span :class=\"nsSelect.e('tags-text')\">\n                        + {{ states.cachedOptions.length - maxCollapseTags }}\n                      </span>\n                    </el-tag>\n                  </div>\n                </template>\n                <template #content>\n                  <div ref=\"tagMenuRef\" :class=\"nsSelect.e('selection')\">\n                    <div\n                      v-for=\"selected in collapseTagList\"\n                      :key=\"getValueKey(getValue(selected))\"\n                      :class=\"nsSelect.e('selected-item')\"\n                    >\n                      <el-tag\n                        class=\"in-tooltip\"\n                        :closable=\"!selectDisabled && !getDisabled(selected)\"\n                        :size=\"collapseTagSize\"\n                        :type=\"tagType\"\n                        :effect=\"tagEffect\"\n                        disable-transitions\n                        @close=\"deleteTag($event, selected)\"\n                      >\n                        <span :class=\"nsSelect.e('tags-text')\">\n                          <slot\n                            name=\"label\"\n                            :index=\"getIndex(selected)\"\n                            :label=\"getLabel(selected)\"\n                            :value=\"getValue(selected)\"\n                          >\n                            {{ getLabel(selected) }}\n                          </slot>\n                        </span>\n                      </el-tag>\n                    </div>\n                  </div>\n                </template>\n              </el-tooltip>\n            </slot>\n            <div\n              :class=\"[\n                nsSelect.e('selected-item'),\n                nsSelect.e('input-wrapper'),\n                nsSelect.is(\n                  'hidden',\n                  !filterable ||\n                    selectDisabled ||\n                    (!states.inputValue && !isFocused)\n                ),\n              ]\"\n            >\n              <input\n                :id=\"inputId\"\n                ref=\"inputRef\"\n                :value=\"states.inputValue\"\n                :style=\"inputStyle\"\n                :autocomplete=\"autocomplete\"\n                :tabindex=\"tabindex\"\n                aria-autocomplete=\"none\"\n                aria-haspopup=\"listbox\"\n                autocapitalize=\"off\"\n                :aria-expanded=\"expanded\"\n                :aria-label=\"ariaLabel\"\n                :class=\"[nsSelect.e('input'), nsSelect.is(selectSize)]\"\n                :disabled=\"selectDisabled\"\n                role=\"combobox\"\n                :aria-controls=\"contentId\"\n                :aria-activedescendant=\"\n                  states.hoveringIndex >= 0\n                    ? `${contentId}-${states.hoveringIndex}`\n                    : ''\n                \"\n                :readonly=\"!filterable\"\n                spellcheck=\"false\"\n                type=\"text\"\n                :name=\"name\"\n                @input=\"onInput\"\n                @change.stop\n                @compositionstart=\"handleCompositionStart\"\n                @compositionupdate=\"handleCompositionUpdate\"\n                @compositionend=\"handleCompositionEnd\"\n                @keydown.up.stop.prevent=\"onKeyboardNavigate('backward')\"\n                @keydown.down.stop.prevent=\"onKeyboardNavigate('forward')\"\n                @keydown.enter.stop.prevent=\"onKeyboardSelect\"\n                @keydown.esc.stop.prevent=\"handleEsc\"\n                @keydown.delete.stop=\"handleDel\"\n                @click.stop=\"toggleMenu\"\n              />\n              <span\n                v-if=\"filterable\"\n                ref=\"calculatorRef\"\n                aria-hidden=\"true\"\n                :class=\"nsSelect.e('input-calculator')\"\n                v-text=\"states.inputValue\"\n              />\n            </div>\n            <div\n              v-if=\"shouldShowPlaceholder\"\n              :class=\"[\n                nsSelect.e('selected-item'),\n                nsSelect.e('placeholder'),\n                nsSelect.is(\n                  'transparent',\n                  !hasModelValue || (expanded && !states.inputValue)\n                ),\n              ]\"\n            >\n              <slot\n                v-if=\"hasModelValue\"\n                name=\"label\"\n                :index=\"allOptionsValueMap.get(modelValue)?.index ?? -1\"\n                :label=\"currentPlaceholder\"\n                :value=\"modelValue\"\n              >\n                <span>{{ currentPlaceholder }}</span>\n              </slot>\n              <span v-else>{{ currentPlaceholder }}</span>\n            </div>\n          </div>\n          <div ref=\"suffixRef\" :class=\"nsSelect.e('suffix')\">\n            <el-icon\n              v-if=\"iconComponent\"\n              v-show=\"!showClearBtn\"\n              :class=\"[nsSelect.e('caret'), nsInput.e('icon'), iconReverse]\"\n            >\n              <component :is=\"iconComponent\" />\n            </el-icon>\n            <el-icon\n              v-if=\"showClearBtn && clearIcon\"\n              :class=\"[\n                nsSelect.e('caret'),\n                nsInput.e('icon'),\n                nsSelect.e('clear'),\n              ]\"\n              @click.prevent.stop=\"handleClear\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-if=\"validateState && validateIcon && needStatusIcon\"\n              :class=\"[\n                nsInput.e('icon'),\n                nsInput.e('validateIcon'),\n                nsInput.is('loading', validateState === 'validating'),\n              ]\"\n            >\n              <component :is=\"validateIcon\" />\n            </el-icon>\n          </div>\n        </div>\n      </template>\n      <template #content>\n        <el-select-menu\n          :id=\"contentId\"\n          ref=\"menuRef\"\n          :data=\"filteredOptions\"\n          :width=\"popperSize - BORDER_HORIZONTAL_WIDTH\"\n          :hovering-index=\"states.hoveringIndex\"\n          :scrollbar-always-on=\"scrollbarAlwaysOn\"\n          :aria-label=\"ariaLabel\"\n        >\n          <template v-if=\"$slots.header\" #header>\n            <div :class=\"nsSelect.be('dropdown', 'header')\" @click.stop>\n              <slot name=\"header\" />\n            </div>\n          </template>\n          <template #default=\"scope\">\n            <slot v-bind=\"scope\" />\n          </template>\n          <template v-if=\"$slots.loading && loading\" #loading>\n            <div :class=\"nsSelect.be('dropdown', 'loading')\">\n              <slot name=\"loading\" />\n            </div>\n          </template>\n          <template v-else-if=\"loading || filteredOptions.length === 0\" #empty>\n            <div :class=\"nsSelect.be('dropdown', 'empty')\">\n              <slot name=\"empty\">\n                <span>{{ emptyText }}</span>\n              </slot>\n            </div>\n          </template>\n          <template v-if=\"$slots.footer\" #footer>\n            <div :class=\"nsSelect.be('dropdown', 'footer')\" @click.stop>\n              <slot name=\"footer\" />\n            </div>\n          </template>\n        </el-select-menu>\n      </template>\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, provide, reactive, toRefs } from 'vue'\nimport { isArray } from '@pit-element-plus/utils'\nimport { ClickOutside } from '@pit-element-plus/directives'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElTag from '@pit-element-plus/components/tag'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useCalcInputWidth, useId } from '@pit-element-plus/hooks'\nimport ElSelectMenu from './select-dropdown'\nimport useSelect from './useSelect'\nimport { selectV2Emits, selectV2Props } from './defaults'\nimport { selectV2InjectionKey } from './token'\nimport { BORDER_HORIZONTAL_WIDTH } from '@pit-element-plus/constants'\n\nexport default defineComponent({\n  name: 'ElSelectV2',\n  components: {\n    ElSelectMenu,\n    ElTag,\n    ElTooltip,\n    ElIcon,\n  },\n  directives: { ClickOutside },\n  props: selectV2Props,\n  emits: selectV2Emits,\n  setup(props, { emit }) {\n    const modelValue = computed(() => {\n      const { modelValue: rawModelValue, multiple } = props\n      const fallback = multiple ? [] : undefined\n      // When it is array, we check if this is multi-select.\n      // Based on the result we get\n      if (isArray(rawModelValue)) {\n        return multiple ? rawModelValue : fallback\n      }\n      return multiple ? fallback : rawModelValue\n    })\n\n    const API = useSelect(\n      reactive({\n        ...toRefs(props),\n        modelValue,\n      }),\n      emit\n    )\n    const { calculatorRef, inputStyle } = useCalcInputWidth()\n    const contentId = useId()\n\n    provide(selectV2InjectionKey, {\n      props: reactive({\n        ...toRefs(props),\n        height: API.popupHeight,\n        modelValue,\n      }),\n      expanded: API.expanded,\n      tooltipRef: API.tooltipRef,\n      contentId,\n      onSelect: API.onSelect,\n      onHover: API.onHover,\n      onKeyboardNavigate: API.onKeyboardNavigate,\n      onKeyboardSelect: API.onKeyboardSelect,\n    })\n\n    const selectedLabel = computed(() => {\n      if (!props.multiple) {\n        return API.states.selectedLabel\n      }\n      return API.states.cachedOptions.map((i) => API.getLabel(i) as string)\n    })\n\n    return {\n      ...API,\n      modelValue,\n      selectedLabel,\n      calculatorRef,\n      inputStyle,\n      contentId,\n      BORDER_HORIZONTAL_WIDTH,\n    }\n  },\n})\n</script>\n","<template>\n  <div\n    ref=\"selectRef\"\n    v-click-outside:[popperRef]=\"handleClickOutside\"\n    :class=\"[nsSelect.b(), nsSelect.m(selectSize)]\"\n    @mouseenter=\"states.inputHovering = true\"\n    @mouseleave=\"states.inputHovering = false\"\n  >\n    <el-tooltip\n      ref=\"tooltipRef\"\n      :visible=\"dropdownMenuVisible\"\n      :teleported=\"teleported\"\n      :popper-class=\"[nsSelect.e('popper'), popperClass!]\"\n      :popper-style=\"popperStyle\"\n      :gpu-acceleration=\"false\"\n      :stop-popper-mouse-event=\"false\"\n      :popper-options=\"popperOptions\"\n      :fallback-placements=\"fallbackPlacements\"\n      :effect=\"effect\"\n      :placement=\"placement\"\n      pure\n      :transition=\"`${nsSelect.namespace.value}-zoom-in-top`\"\n      trigger=\"click\"\n      :persistent=\"persistent\"\n      :append-to=\"appendTo\"\n      :show-arrow=\"showArrow\"\n      :offset=\"offset\"\n      @before-show=\"handleMenuEnter\"\n      @hide=\"states.isBeforeHide = false\"\n    >\n      <template #default>\n        <div\n          ref=\"wrapperRef\"\n          :class=\"[\n            nsSelect.e('wrapper'),\n            nsSelect.is('focused', isFocused),\n            nsSelect.is('hovering', states.inputHovering),\n            nsSelect.is('filterable', filterable),\n            nsSelect.is('disabled', selectDisabled),\n          ]\"\n          @click.prevent=\"toggleMenu\"\n        >\n          <div\n            v-if=\"$slots.prefix\"\n            ref=\"prefixRef\"\n            :class=\"nsSelect.e('prefix')\"\n          >\n            <slot name=\"prefix\" />\n          </div>\n          <div\n            ref=\"selectionRef\"\n            :class=\"[\n              nsSelect.e('selection'),\n              nsSelect.is(\n                'near',\n                multiple && !$slots.prefix && !!modelValue.length\n              ),\n            ]\"\n          >\n            <slot\n              v-if=\"multiple\"\n              name=\"tag\"\n              :data=\"states.cachedOptions\"\n              :delete-tag=\"deleteTag\"\n              :select-disabled=\"selectDisabled\"\n            >\n              <div\n                v-for=\"item in showTagList\"\n                :key=\"getValueKey(getValue(item))\"\n                :class=\"nsSelect.e('selected-item')\"\n              >\n                <el-tag\n                  :closable=\"!selectDisabled && !getDisabled(item)\"\n                  :size=\"collapseTagSize\"\n                  :type=\"tagType\"\n                  :effect=\"tagEffect\"\n                  disable-transitions\n                  :style=\"tagStyle\"\n                  @close=\"deleteTag($event, item)\"\n                >\n                  <span :class=\"nsSelect.e('tags-text')\">\n                    <slot\n                      name=\"label\"\n                      :index=\"getIndex(item)\"\n                      :label=\"getLabel(item)\"\n                      :value=\"getValue(item)\"\n                    >\n                      {{ getLabel(item) }}\n                    </slot>\n                  </span>\n                </el-tag>\n              </div>\n\n              <el-tooltip\n                v-if=\"\n                  collapseTags && states.cachedOptions.length > maxCollapseTags\n                \"\n                ref=\"tagTooltipRef\"\n                :disabled=\"dropdownMenuVisible || !collapseTagsTooltip\"\n                :fallback-placements=\"\n                  tagTooltip?.fallbackPlacements ?? [\n                    'bottom',\n                    'top',\n                    'right',\n                    'left',\n                  ]\n                \"\n                :effect=\"tagTooltip?.effect ?? effect\"\n                :placement=\"tagTooltip?.placement ?? 'bottom'\"\n                :popper-class=\"tagTooltip?.popperClass ?? popperClass\"\n                :popper-style=\"tagTooltip?.popperStyle ?? popperStyle\"\n                :teleported=\"tagTooltip?.teleported ?? teleported\"\n                :append-to=\"tagTooltip?.appendTo ?? appendTo\"\n                :popper-options=\"tagTooltip?.popperOptions ?? popperOptions\"\n                :transition=\"tagTooltip?.transition\"\n                :show-after=\"tagTooltip?.showAfter\"\n                :hide-after=\"tagTooltip?.hideAfter\"\n                :auto-close=\"tagTooltip?.autoClose\"\n                :offset=\"tagTooltip?.offset\"\n              >\n                <template #default>\n                  <div\n                    ref=\"collapseItemRef\"\n                    :class=\"nsSelect.e('selected-item')\"\n                  >\n                    <el-tag\n                      :closable=\"false\"\n                      :size=\"collapseTagSize\"\n                      :type=\"tagType\"\n                      :effect=\"tagEffect\"\n                      :style=\"collapseTagStyle\"\n                      disable-transitions\n                    >\n                      <span :class=\"nsSelect.e('tags-text')\">\n                        + {{ states.cachedOptions.length - maxCollapseTags }}\n                      </span>\n                    </el-tag>\n                  </div>\n                </template>\n                <template #content>\n                  <div ref=\"tagMenuRef\" :class=\"nsSelect.e('selection')\">\n                    <div\n                      v-for=\"selected in collapseTagList\"\n                      :key=\"getValueKey(getValue(selected))\"\n                      :class=\"nsSelect.e('selected-item')\"\n                    >\n                      <el-tag\n                        class=\"in-tooltip\"\n                        :closable=\"!selectDisabled && !getDisabled(selected)\"\n                        :size=\"collapseTagSize\"\n                        :type=\"tagType\"\n                        :effect=\"tagEffect\"\n                        disable-transitions\n                        @close=\"deleteTag($event, selected)\"\n                      >\n                        <span :class=\"nsSelect.e('tags-text')\">\n                          <slot\n                            name=\"label\"\n                            :index=\"getIndex(selected)\"\n                            :label=\"getLabel(selected)\"\n                            :value=\"getValue(selected)\"\n                          >\n                            {{ getLabel(selected) }}\n                          </slot>\n                        </span>\n                      </el-tag>\n                    </div>\n                  </div>\n                </template>\n              </el-tooltip>\n            </slot>\n            <div\n              :class=\"[\n                nsSelect.e('selected-item'),\n                nsSelect.e('input-wrapper'),\n                nsSelect.is(\n                  'hidden',\n                  !filterable ||\n                    selectDisabled ||\n                    (!states.inputValue && !isFocused)\n                ),\n              ]\"\n            >\n              <input\n                :id=\"inputId\"\n                ref=\"inputRef\"\n                :value=\"states.inputValue\"\n                :style=\"inputStyle\"\n                :autocomplete=\"autocomplete\"\n                :tabindex=\"tabindex\"\n                aria-autocomplete=\"none\"\n                aria-haspopup=\"listbox\"\n                autocapitalize=\"off\"\n                :aria-expanded=\"expanded\"\n                :aria-label=\"ariaLabel\"\n                :class=\"[nsSelect.e('input'), nsSelect.is(selectSize)]\"\n                :disabled=\"selectDisabled\"\n                role=\"combobox\"\n                :aria-controls=\"contentId\"\n                :aria-activedescendant=\"\n                  states.hoveringIndex >= 0\n                    ? `${contentId}-${states.hoveringIndex}`\n                    : ''\n                \"\n                :readonly=\"!filterable\"\n                spellcheck=\"false\"\n                type=\"text\"\n                :name=\"name\"\n                @input=\"onInput\"\n                @change.stop\n                @compositionstart=\"handleCompositionStart\"\n                @compositionupdate=\"handleCompositionUpdate\"\n                @compositionend=\"handleCompositionEnd\"\n                @keydown.up.stop.prevent=\"onKeyboardNavigate('backward')\"\n                @keydown.down.stop.prevent=\"onKeyboardNavigate('forward')\"\n                @keydown.enter.stop.prevent=\"onKeyboardSelect\"\n                @keydown.esc.stop.prevent=\"handleEsc\"\n                @keydown.delete.stop=\"handleDel\"\n                @click.stop=\"toggleMenu\"\n              />\n              <span\n                v-if=\"filterable\"\n                ref=\"calculatorRef\"\n                aria-hidden=\"true\"\n                :class=\"nsSelect.e('input-calculator')\"\n                v-text=\"states.inputValue\"\n              />\n            </div>\n            <div\n              v-if=\"shouldShowPlaceholder\"\n              :class=\"[\n                nsSelect.e('selected-item'),\n                nsSelect.e('placeholder'),\n                nsSelect.is(\n                  'transparent',\n                  !hasModelValue || (expanded && !states.inputValue)\n                ),\n              ]\"\n            >\n              <slot\n                v-if=\"hasModelValue\"\n                name=\"label\"\n                :index=\"allOptionsValueMap.get(modelValue)?.index ?? -1\"\n                :label=\"currentPlaceholder\"\n                :value=\"modelValue\"\n              >\n                <span>{{ currentPlaceholder }}</span>\n              </slot>\n              <span v-else>{{ currentPlaceholder }}</span>\n            </div>\n          </div>\n          <div ref=\"suffixRef\" :class=\"nsSelect.e('suffix')\">\n            <el-icon\n              v-if=\"iconComponent\"\n              v-show=\"!showClearBtn\"\n              :class=\"[nsSelect.e('caret'), nsInput.e('icon'), iconReverse]\"\n            >\n              <component :is=\"iconComponent\" />\n            </el-icon>\n            <el-icon\n              v-if=\"showClearBtn && clearIcon\"\n              :class=\"[\n                nsSelect.e('caret'),\n                nsInput.e('icon'),\n                nsSelect.e('clear'),\n              ]\"\n              @click.prevent.stop=\"handleClear\"\n            >\n              <component :is=\"clearIcon\" />\n            </el-icon>\n            <el-icon\n              v-if=\"validateState && validateIcon && needStatusIcon\"\n              :class=\"[\n                nsInput.e('icon'),\n                nsInput.e('validateIcon'),\n                nsInput.is('loading', validateState === 'validating'),\n              ]\"\n            >\n              <component :is=\"validateIcon\" />\n            </el-icon>\n          </div>\n        </div>\n      </template>\n      <template #content>\n        <el-select-menu\n          :id=\"contentId\"\n          ref=\"menuRef\"\n          :data=\"filteredOptions\"\n          :width=\"popperSize - BORDER_HORIZONTAL_WIDTH\"\n          :hovering-index=\"states.hoveringIndex\"\n          :scrollbar-always-on=\"scrollbarAlwaysOn\"\n          :aria-label=\"ariaLabel\"\n        >\n          <template v-if=\"$slots.header\" #header>\n            <div :class=\"nsSelect.be('dropdown', 'header')\" @click.stop>\n              <slot name=\"header\" />\n            </div>\n          </template>\n          <template #default=\"scope\">\n            <slot v-bind=\"scope\" />\n          </template>\n          <template v-if=\"$slots.loading && loading\" #loading>\n            <div :class=\"nsSelect.be('dropdown', 'loading')\">\n              <slot name=\"loading\" />\n            </div>\n          </template>\n          <template v-else-if=\"loading || filteredOptions.length === 0\" #empty>\n            <div :class=\"nsSelect.be('dropdown', 'empty')\">\n              <slot name=\"empty\">\n                <span>{{ emptyText }}</span>\n              </slot>\n            </div>\n          </template>\n          <template v-if=\"$slots.footer\" #footer>\n            <div :class=\"nsSelect.be('dropdown', 'footer')\" @click.stop>\n              <slot name=\"footer\" />\n            </div>\n          </template>\n        </el-select-menu>\n      </template>\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, provide, reactive, toRefs } from 'vue'\nimport { isArray } from '@pit-element-plus/utils'\nimport { ClickOutside } from '@pit-element-plus/directives'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport ElTag from '@pit-element-plus/components/tag'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useCalcInputWidth, useId } from '@pit-element-plus/hooks'\nimport ElSelectMenu from './select-dropdown'\nimport useSelect from './useSelect'\nimport { selectV2Emits, selectV2Props } from './defaults'\nimport { selectV2InjectionKey } from './token'\nimport { BORDER_HORIZONTAL_WIDTH } from '@pit-element-plus/constants'\n\nexport default defineComponent({\n  name: 'ElSelectV2',\n  components: {\n    ElSelectMenu,\n    ElTag,\n    ElTooltip,\n    ElIcon,\n  },\n  directives: { ClickOutside },\n  props: selectV2Props,\n  emits: selectV2Emits,\n  setup(props, { emit }) {\n    const modelValue = computed(() => {\n      const { modelValue: rawModelValue, multiple } = props\n      const fallback = multiple ? [] : undefined\n      // When it is array, we check if this is multi-select.\n      // Based on the result we get\n      if (isArray(rawModelValue)) {\n        return multiple ? rawModelValue : fallback\n      }\n      return multiple ? fallback : rawModelValue\n    })\n\n    const API = useSelect(\n      reactive({\n        ...toRefs(props),\n        modelValue,\n      }),\n      emit\n    )\n    const { calculatorRef, inputStyle } = useCalcInputWidth()\n    const contentId = useId()\n\n    provide(selectV2InjectionKey, {\n      props: reactive({\n        ...toRefs(props),\n        height: API.popupHeight,\n        modelValue,\n      }),\n      expanded: API.expanded,\n      tooltipRef: API.tooltipRef,\n      contentId,\n      onSelect: API.onSelect,\n      onHover: API.onHover,\n      onKeyboardNavigate: API.onKeyboardNavigate,\n      onKeyboardSelect: API.onKeyboardSelect,\n    })\n\n    const selectedLabel = computed(() => {\n      if (!props.multiple) {\n        return API.states.selectedLabel\n      }\n      return API.states.cachedOptions.map((i) => API.getLabel(i) as string)\n    })\n\n    return {\n      ...API,\n      modelValue,\n      selectedLabel,\n      calculatorRef,\n      inputStyle,\n      contentId,\n      BORDER_HORIZONTAL_WIDTH,\n    }\n  },\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Select from './src/select.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElSelectV2: SFCWithInstall<typeof Select> = withInstall(Select)\nexport default ElSelectV2\n\nexport * from './src/token'\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type Skeleton from './skeleton.vue'\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ThrottleType } from '@pit-element-plus/hooks'\n\nexport interface SkeletonProps {\n  /**\n   * @description whether showing the animation\n   */\n  animated?: boolean\n  /**\n   * @description how many fake items to render to the DOM\n   */\n  count?: number\n  /**\n   * @description numbers of the row, only useful when no template slot were given\n   */\n  rows?: number\n  /**\n   * @description whether showing the real DOM\n   */\n  loading?: boolean\n  /**\n   * @description rendering delay in milliseconds\n   */\n  throttle?: ThrottleType\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `SkeletonProps` instead.\n */\nexport const skeletonProps = buildProps({\n  /**\n   * @description whether showing the animation\n   */\n  animated: Boolean,\n  /**\n   * @description how many fake items to render to the DOM\n   */\n  count: {\n    type: Number,\n    default: 1,\n  },\n  /**\n   * @description numbers of the row, only useful when no template slot were given\n   */\n  rows: {\n    type: Number,\n    default: 3,\n  },\n  /**\n   * @description whether showing the real DOM\n   */\n  loading: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description rendering delay in milliseconds\n   */\n  throttle: {\n    type: definePropType<ThrottleType>([Number, Object]),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `SkeletonProps` instead.\n */\nexport type SkeletonPropsPublic = ExtractPublicPropTypes<typeof skeletonProps>\n\nexport type SkeletonInstance = InstanceType<typeof Skeleton> & unknown\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type SkeletonItem from './skeleton-item.vue'\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport interface SkeletonItemProps {\n  /**\n   * @description the current rendering skeleton type\n   */\n  variant?:\n    | 'circle'\n    | 'rect'\n    | 'h1'\n    | 'h3'\n    | 'text'\n    | 'caption'\n    | 'p'\n    | 'image'\n    | 'button'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `SkeletonItemProps` instead.\n */\nexport const skeletonItemProps = buildProps({\n  /**\n   * @description the current rendering skeleton type\n   */\n  variant: {\n    type: String,\n    values: [\n      'circle',\n      'rect',\n      'h1',\n      'h3',\n      'text',\n      'caption',\n      'p',\n      'image',\n      'button',\n    ],\n    default: 'text',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `SkeletonItemProps` instead.\n */\nexport type SkeletonItemPropsPublic = ExtractPublicPropTypes<\n  typeof skeletonItemProps\n>\n\nexport type SkeletonItemInstance = InstanceType<typeof SkeletonItem> & unknown\n","<template>\n  <div :class=\"[ns.e('item'), ns.e(variant)]\">\n    <picture-filled v-if=\"variant === 'image'\" />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { PictureFilled } from 'pit-element-icons'\n\nimport type { SkeletonItemProps } from './skeleton-item.ts'\n\ndefineOptions({\n  name: 'ElSkeletonItem',\n})\nwithDefaults(defineProps<SkeletonItemProps>(), {\n  variant: 'text',\n})\nconst ns = useNamespace('skeleton')\n</script>\n","<template>\n  <div :class=\"[ns.e('item'), ns.e(variant)]\">\n    <picture-filled v-if=\"variant === 'image'\" />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { PictureFilled } from 'pit-element-icons'\n\nimport type { SkeletonItemProps } from './skeleton-item.ts'\n\ndefineOptions({\n  name: 'ElSkeletonItem',\n})\nwithDefaults(defineProps<SkeletonItemProps>(), {\n  variant: 'text',\n})\nconst ns = useNamespace('skeleton')\n</script>\n","<template>\n  <div :class=\"[ns.e('item'), ns.e(variant)]\">\n    <picture-filled v-if=\"variant === 'image'\" />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { PictureFilled } from 'pit-element-icons'\n\nimport type { SkeletonItemProps } from './skeleton-item.ts'\n\ndefineOptions({\n  name: 'ElSkeletonItem',\n})\nwithDefaults(defineProps<SkeletonItemProps>(), {\n  variant: 'text',\n})\nconst ns = useNamespace('skeleton')\n</script>\n","<template>\n  <template v-if=\"uiLoading\">\n    <div :class=\"[ns.b(), ns.is('animated', animated)]\" v-bind=\"$attrs\">\n      <template v-for=\"i in count\" :key=\"i\">\n        <slot v-if=\"uiLoading\" :key=\"i\" name=\"template\">\n          <el-skeleton-item :class=\"ns.is('first')\" variant=\"p\" />\n          <el-skeleton-item\n            v-for=\"item in rows\"\n            :key=\"item\"\n            :class=\"[\n              ns.e('paragraph'),\n              ns.is('last', item === rows && rows > 1),\n            ]\"\n            variant=\"p\"\n          />\n        </slot>\n      </template>\n    </div>\n  </template>\n  <template v-else>\n    <slot v-bind=\"$attrs\" />\n  </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { toRef } from 'vue'\nimport { useNamespace, useThrottleRender } from '@pit-element-plus/hooks'\nimport ElSkeletonItem from './skeleton-item.vue'\n\nimport type { SkeletonProps } from './skeleton.ts'\n\ndefineOptions({\n  name: 'ElSkeleton',\n})\nconst props = withDefaults(defineProps<SkeletonProps>(), {\n  loading: true,\n  count: 1,\n  rows: 3,\n})\n\nconst ns = useNamespace('skeleton')\nconst uiLoading = useThrottleRender(toRef(props, 'loading'), props.throttle)\n\ndefineExpose({\n  /** @description loading state */\n  uiLoading,\n})\n</script>\n","<template>\n  <template v-if=\"uiLoading\">\n    <div :class=\"[ns.b(), ns.is('animated', animated)]\" v-bind=\"$attrs\">\n      <template v-for=\"i in count\" :key=\"i\">\n        <slot v-if=\"uiLoading\" :key=\"i\" name=\"template\">\n          <el-skeleton-item :class=\"ns.is('first')\" variant=\"p\" />\n          <el-skeleton-item\n            v-for=\"item in rows\"\n            :key=\"item\"\n            :class=\"[\n              ns.e('paragraph'),\n              ns.is('last', item === rows && rows > 1),\n            ]\"\n            variant=\"p\"\n          />\n        </slot>\n      </template>\n    </div>\n  </template>\n  <template v-else>\n    <slot v-bind=\"$attrs\" />\n  </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { toRef } from 'vue'\nimport { useNamespace, useThrottleRender } from '@pit-element-plus/hooks'\nimport ElSkeletonItem from './skeleton-item.vue'\n\nimport type { SkeletonProps } from './skeleton.ts'\n\ndefineOptions({\n  name: 'ElSkeleton',\n})\nconst props = withDefaults(defineProps<SkeletonProps>(), {\n  loading: true,\n  count: 1,\n  rows: 3,\n})\n\nconst ns = useNamespace('skeleton')\nconst uiLoading = useThrottleRender(toRef(props, 'loading'), props.throttle)\n\ndefineExpose({\n  /** @description loading state */\n  uiLoading,\n})\n</script>\n","<template>\n  <template v-if=\"uiLoading\">\n    <div :class=\"[ns.b(), ns.is('animated', animated)]\" v-bind=\"$attrs\">\n      <template v-for=\"i in count\" :key=\"i\">\n        <slot v-if=\"uiLoading\" :key=\"i\" name=\"template\">\n          <el-skeleton-item :class=\"ns.is('first')\" variant=\"p\" />\n          <el-skeleton-item\n            v-for=\"item in rows\"\n            :key=\"item\"\n            :class=\"[\n              ns.e('paragraph'),\n              ns.is('last', item === rows && rows > 1),\n            ]\"\n            variant=\"p\"\n          />\n        </slot>\n      </template>\n    </div>\n  </template>\n  <template v-else>\n    <slot v-bind=\"$attrs\" />\n  </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { toRef } from 'vue'\nimport { useNamespace, useThrottleRender } from '@pit-element-plus/hooks'\nimport ElSkeletonItem from './skeleton-item.vue'\n\nimport type { SkeletonProps } from './skeleton.ts'\n\ndefineOptions({\n  name: 'ElSkeleton',\n})\nconst props = withDefaults(defineProps<SkeletonProps>(), {\n  loading: true,\n  count: 1,\n  rows: 3,\n})\n\nconst ns = useNamespace('skeleton')\nconst uiLoading = useThrottleRender(toRef(props, 'loading'), props.throttle)\n\ndefineExpose({\n  /** @description loading state */\n  uiLoading,\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Skeleton from './src/skeleton.vue'\nimport SkeletonItem from './src/skeleton-item.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElSkeleton: SFCWithInstall<typeof Skeleton> & {\n  SkeletonItem: typeof SkeletonItem\n} = withInstall(Skeleton, {\n  SkeletonItem,\n})\nexport const ElSkeletonItem: SFCWithInstall<typeof SkeletonItem> =\n  withNoopInstall(SkeletonItem)\nexport default ElSkeleton\n\nexport * from './src/skeleton'\nexport * from './src/skeleton-item'\n","import type { ComputedRef, InjectionKey, Ref, ToRefs } from 'vue'\nimport type { SliderProps } from './slider'\nimport type { Mark } from './composables/use-marks'\n\nexport interface SliderContext extends ToRefs<SliderProps> {\n  precision: ComputedRef<number>\n  sliderSize: Ref<number>\n  emitChange: () => void\n  resetSize: () => void\n  updateDragging: (val: boolean) => void\n  disabled: ComputedRef<boolean>\n  markList: ComputedRef<Mark[]>\n}\n\nexport const sliderContextKey: InjectionKey<SliderContext> =\n  Symbol('sliderContextKey')\n","import { placements } from '@popperjs/core'\nimport {\n  buildProps,\n  definePropType,\n  isArray,\n  isNumber,\n} from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useAriaProps, useSizeProp } from '@pit-element-plus/hooks'\n\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { SliderMarkerProps } from './marker'\nimport type Slider from './slider.vue'\n\ntype SliderMarks = Record<number, string | SliderMarkerProps['mark']>\n\nexport interface SliderInitData {\n  firstValue: number\n  secondValue: number\n  oldValue?: Arrayable<number>\n  dragging: boolean\n  sliderSize: number\n}\n\nexport const sliderProps = buildProps({\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<Arrayable<number>>([Number, Array]),\n    default: 0,\n  },\n  id: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description minimum value\n   */\n  min: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description maximum value\n   */\n  max: {\n    type: Number,\n    default: 100,\n  },\n  /**\n   * @description step size, can be a number or `'mark'` to restrict values to marks. When set to `'mark'`, the `marks` attribute must be set\n   */\n  step: {\n    type: definePropType<number | 'mark'>([Number, String]),\n    default: 1,\n  },\n  /**\n   * @description whether to display an input box, works when `range` is false and `step` is not `'mark'`\n   */\n  showInput: Boolean,\n  /**\n   * @description whether to display control buttons when `show-input` is true\n   */\n  showInputControls: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description size of the slider wrapper, will not work in vertical mode\n   */\n  size: useSizeProp,\n  /**\n   * @description size of the input box, when set `size`, the default is the value of `size`\n   */\n  inputSize: useSizeProp,\n  /**\n   * @description whether to display breakpoints\n   */\n  showStops: Boolean,\n  /**\n   * @description whether to display tooltip value\n   */\n  showTooltip: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description format to display tooltip value\n   */\n  formatTooltip: {\n    type: definePropType<(val: number) => number | string>(Function),\n    default: undefined,\n  },\n  /**\n   * @description whether Slider is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether to select a range\n   */\n  range: Boolean,\n  /**\n   * @description vertical mode\n   */\n  vertical: Boolean,\n  /**\n   * @description slider height, required in vertical mode\n   */\n  height: String,\n  /**\n   * @description when `range` is true, screen reader label for the start of the range\n   */\n  rangeStartLabel: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description when `range` is true, screen reader label for the end of the range\n   */\n  rangeEndLabel: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description format to display the `aria-valuenow` attribute for screen readers\n   */\n  formatValueText: {\n    type: definePropType<(val: number) => string>(Function),\n    default: undefined,\n  },\n  /**\n   * @description custom class name for the tooltip\n   */\n  tooltipClass: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description position of Tooltip\n   */\n  placement: {\n    type: String,\n    values: placements,\n    default: 'top',\n  },\n  /**\n   * @description marks, type of key must be `number` and must in closed interval `[min, max]`, each mark can custom style\n   */\n  marks: {\n    type: definePropType<SliderMarks>(Object),\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description when slider tooltip inactive and `persistent` is `false` , popconfirm will be destroyed. `persistent` always be `false` when `show-tooltip ` is `false`\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n  ...useAriaProps(['ariaLabel']),\n} as const)\nexport type SliderProps = ExtractPropTypes<typeof sliderProps>\nexport type SliderPropsPublic = ExtractPublicPropTypes<typeof sliderProps>\n\nconst isValidValue = (value: Arrayable<number>) =>\n  isNumber(value) || (isArray(value) && value.every(isNumber))\nexport const sliderEmits = {\n  [UPDATE_MODEL_EVENT]: isValidValue,\n  [INPUT_EVENT]: isValidValue,\n  [CHANGE_EVENT]: isValidValue,\n}\nexport type SliderEmits = typeof sliderEmits\n\nexport type SliderInstance = InstanceType<typeof Slider> & unknown\n","import { nextTick, onMounted, ref } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { isArray, isNumber } from '@pit-element-plus/utils'\n\nimport type { SliderInitData, SliderProps } from '../slider'\n\nexport const useLifecycle = (\n  props: SliderProps,\n  initData: SliderInitData,\n  resetSize: () => void\n) => {\n  const sliderWrapper = ref<HTMLElement>()\n\n  onMounted(async () => {\n    if (props.range) {\n      if (isArray(props.modelValue)) {\n        initData.firstValue = Math.max(props.min, props.modelValue[0])\n        initData.secondValue = Math.min(props.max, props.modelValue[1])\n      } else {\n        initData.firstValue = props.min\n        initData.secondValue = props.max\n      }\n      initData.oldValue = [initData.firstValue, initData.secondValue]\n    } else {\n      if (!isNumber(props.modelValue) || Number.isNaN(props.modelValue)) {\n        initData.firstValue = props.min\n      } else {\n        initData.firstValue = Math.min(\n          props.max,\n          Math.max(props.min, props.modelValue)\n        )\n      }\n      initData.oldValue = initData.firstValue\n    }\n\n    useEventListener(window, 'resize', resetSize)\n\n    await nextTick()\n    resetSize()\n  })\n\n  return {\n    sliderWrapper,\n  }\n}\n","import { computed, watchEffect } from 'vue'\nimport { debugWarn } from '@pit-element-plus/utils'\n\nimport type { SliderProps } from '../slider'\nimport type { SliderMarkerProps } from '../marker'\n\nexport interface Mark extends SliderMarkerProps {\n  point: number\n  position: number\n}\n\nexport const useMarks = (props: SliderProps) => {\n  const markList = computed(() => {\n    if (!props.marks) {\n      return []\n    }\n    const marksKeys = Object.keys(props.marks)\n    return marksKeys\n      .map(Number.parseFloat)\n      .sort((a, b) => a - b)\n      .filter((point) => point <= props.max && point >= props.min)\n      .map(\n        (point): Mark => ({\n          point,\n          position: ((point - props.min) * 100) / (props.max - props.min),\n          mark: props.marks![point],\n        })\n      )\n  })\n\n  watchEffect(() => {\n    if (props.step === 'mark' && !props.marks) {\n      debugWarn('ElSlider', 'marks prop must be provided when step is mark')\n    }\n    if (props.marks) {\n      const keys = Object.keys(props.marks)\n      const validPoints = markList.value.map((m) => m.point)\n      const invalidKeys = keys.filter((key) => {\n        const parsed = Number.parseFloat(key)\n        return Number.isNaN(parsed) || !validPoints.includes(parsed)\n      })\n      if (invalidKeys.length > 0) {\n        debugWarn(\n          'ElSlider',\n          `Some marks keys are invalid (not a number or out of [min, max]): [${invalidKeys.map((k) => `'${k}'`).join(', ')}] and will be ignored.`\n        )\n      }\n    }\n  })\n\n  return markList\n}\n","import { computed, nextTick, ref, shallowRef } from 'vue'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useFormDisabled, useFormItem } from '@pit-element-plus/components/form'\n\nimport type { CSSProperties, Ref, SetupContext } from 'vue'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { SliderEmits, SliderInitData, SliderProps } from '../slider'\nimport type { ButtonRefs, SliderButtonInstance } from '../button'\n\nexport const useSlide = (\n  props: SliderProps,\n  initData: SliderInitData,\n  emit: SetupContext<SliderEmits>['emit']\n) => {\n  const { formItem: elFormItem } = useFormItem()\n\n  const slider = shallowRef<HTMLElement>()\n\n  const firstButton = ref<SliderButtonInstance>()\n\n  const secondButton = ref<SliderButtonInstance>()\n\n  const buttonRefs: ButtonRefs = {\n    firstButton,\n    secondButton,\n  }\n\n  const sliderDisabled = useFormDisabled()\n\n  const minValue = computed(() => {\n    return Math.min(initData.firstValue, initData.secondValue)\n  })\n\n  const maxValue = computed(() => {\n    return Math.max(initData.firstValue, initData.secondValue)\n  })\n\n  const barSize = computed(() => {\n    return props.range\n      ? `${\n          (100 * (maxValue.value - minValue.value)) / (props.max - props.min)\n        }%`\n      : `${\n          (100 * (initData.firstValue - props.min)) / (props.max - props.min)\n        }%`\n  })\n\n  const barStart = computed(() => {\n    return props.range\n      ? `${(100 * (minValue.value - props.min)) / (props.max - props.min)}%`\n      : '0%'\n  })\n\n  const runwayStyle = computed<CSSProperties>(() => {\n    return props.vertical ? { height: props.height } : {}\n  })\n\n  const barStyle = computed<CSSProperties>(() => {\n    return props.vertical\n      ? {\n          height: barSize.value,\n          bottom: barStart.value,\n        }\n      : {\n          width: barSize.value,\n          left: barStart.value,\n        }\n  })\n\n  const resetSize = () => {\n    if (slider.value) {\n      const rect = slider.value.getBoundingClientRect()\n      initData.sliderSize = rect[props.vertical ? 'height' : 'width']\n    }\n  }\n\n  const getButtonRefByPercent = (\n    percent: number\n  ): Ref<SliderButtonInstance | undefined> => {\n    const targetValue = props.min + (percent * (props.max - props.min)) / 100\n    if (!props.range) {\n      return firstButton\n    }\n    let buttonRefName: 'firstButton' | 'secondButton'\n    if (\n      Math.abs(minValue.value - targetValue) <\n      Math.abs(maxValue.value - targetValue)\n    ) {\n      buttonRefName =\n        initData.firstValue < initData.secondValue\n          ? 'firstButton'\n          : 'secondButton'\n    } else {\n      buttonRefName =\n        initData.firstValue > initData.secondValue\n          ? 'firstButton'\n          : 'secondButton'\n    }\n    return buttonRefs[buttonRefName]\n  }\n\n  const setPosition = (\n    percent: number\n  ): Ref<SliderButtonInstance | undefined> => {\n    const buttonRef = getButtonRefByPercent(percent)\n    buttonRef.value!.setPosition(percent)\n    return buttonRef\n  }\n\n  const setFirstValue = (firstValue: number | undefined) => {\n    initData.firstValue = firstValue ?? props.min\n    _emit(\n      props.range ? [minValue.value, maxValue.value] : (firstValue ?? props.min)\n    )\n  }\n\n  const setSecondValue = (secondValue: number) => {\n    initData.secondValue = secondValue\n\n    if (props.range) {\n      _emit([minValue.value, maxValue.value])\n    }\n  }\n\n  const _emit = (val: Arrayable<number>) => {\n    emit(UPDATE_MODEL_EVENT, val)\n    emit(INPUT_EVENT, val)\n  }\n\n  const emitChange = async () => {\n    await nextTick()\n    emit(\n      CHANGE_EVENT,\n      props.range ? [minValue.value, maxValue.value] : props.modelValue\n    )\n  }\n\n  const handleSliderPointerEvent = (\n    event: MouseEvent | TouchEvent\n  ): Ref<SliderButtonInstance | undefined> | undefined => {\n    if (sliderDisabled.value || initData.dragging) return\n    resetSize()\n    let newPercent = 0\n    if (props.vertical) {\n      const clientY =\n        (event as TouchEvent).touches?.item(0)?.clientY ??\n        (event as MouseEvent).clientY\n      const sliderOffsetBottom = slider.value!.getBoundingClientRect().bottom\n      newPercent = ((sliderOffsetBottom - clientY) / initData.sliderSize) * 100\n    } else {\n      const clientX =\n        (event as TouchEvent).touches?.item(0)?.clientX ??\n        (event as MouseEvent).clientX\n      const sliderOffsetLeft = slider.value!.getBoundingClientRect().left\n      newPercent = ((clientX - sliderOffsetLeft) / initData.sliderSize) * 100\n    }\n    if (newPercent < 0 || newPercent > 100) return\n    return setPosition(newPercent)\n  }\n\n  const onSliderWrapperPrevent = (event: TouchEvent) => {\n    if (\n      buttonRefs['firstButton'].value?.dragging ||\n      buttonRefs['secondButton'].value?.dragging\n    ) {\n      event.preventDefault()\n    }\n  }\n\n  const onSliderDown = async (event: MouseEvent | TouchEvent) => {\n    const buttonRef = handleSliderPointerEvent(event)\n    if (buttonRef) {\n      await nextTick()\n      buttonRef.value!.onButtonDown(event)\n    }\n  }\n\n  const onSliderClick = (event: MouseEvent | TouchEvent) => {\n    const buttonRef = handleSliderPointerEvent(event)\n    if (buttonRef) {\n      emitChange()\n    }\n  }\n\n  const onSliderMarkerDown = (position: number) => {\n    if (sliderDisabled.value || initData.dragging) return\n    const buttonRef = setPosition(position)\n    if (buttonRef) {\n      emitChange()\n    }\n  }\n\n  return {\n    elFormItem,\n    slider,\n    firstButton,\n    secondButton,\n    sliderDisabled,\n    minValue,\n    maxValue,\n    runwayStyle,\n    barStyle,\n    resetSize,\n    setPosition,\n    emitChange,\n    onSliderWrapperPrevent,\n    onSliderClick,\n    onSliderDown,\n    onSliderMarkerDown,\n    setFirstValue,\n    setSecondValue,\n  }\n}\n","import { computed, inject, nextTick, ref, watch } from 'vue'\nimport { clamp, debounce } from 'lodash-unified'\nimport { useEventListener } from '@vueuse/core'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { getEventCode, isNumber } from '@pit-element-plus/utils'\nimport { sliderContextKey } from '../constants'\n\nimport type { CSSProperties, ComputedRef, Ref, SetupContext } from 'vue'\nimport type { SliderProps } from '../slider'\nimport type {\n  SliderButtonEmits,\n  SliderButtonInitData,\n  SliderButtonProps,\n} from '../button'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\n\nconst useTooltip = (\n  props: SliderButtonProps,\n  formatTooltip: Ref<SliderProps['formatTooltip']>,\n  showTooltip: Ref<SliderProps['showTooltip']>\n) => {\n  const tooltip = ref<TooltipInstance>()\n\n  const tooltipVisible = ref(false)\n\n  const enableFormat = computed(() => {\n    return formatTooltip.value instanceof Function\n  })\n\n  const formatValue = computed(() => {\n    return (\n      (enableFormat.value && formatTooltip.value!(props.modelValue)) ||\n      props.modelValue\n    )\n  })\n\n  const displayTooltip = debounce(() => {\n    showTooltip.value && (tooltipVisible.value = true)\n  }, 50)\n\n  const hideTooltip = debounce(() => {\n    showTooltip.value && (tooltipVisible.value = false)\n  }, 50)\n\n  return {\n    tooltip,\n    tooltipVisible,\n    formatValue,\n    displayTooltip,\n    hideTooltip,\n  }\n}\n\nexport const useSliderButton = (\n  props: SliderButtonProps,\n  initData: SliderButtonInitData,\n  emit: SetupContext<SliderButtonEmits>['emit']\n) => {\n  const {\n    disabled,\n    min,\n    max,\n    step,\n    showTooltip,\n    persistent,\n    precision,\n    sliderSize,\n    formatTooltip,\n    emitChange,\n    resetSize,\n    updateDragging,\n    markList,\n  } = inject(sliderContextKey)!\n\n  const { tooltip, tooltipVisible, formatValue, displayTooltip, hideTooltip } =\n    useTooltip(props, formatTooltip!, showTooltip)\n\n  const button = ref<HTMLDivElement>()\n\n  const currentPosition = computed(() => {\n    return `${\n      ((props.modelValue - min.value) / (max.value - min.value)) * 100\n    }%`\n  })\n\n  const wrapperStyle: ComputedRef<CSSProperties> = computed(() => {\n    return props.vertical\n      ? { bottom: currentPosition.value }\n      : { left: currentPosition.value }\n  })\n\n  const shouldMoveToMark = computed(() => {\n    return step.value === 'mark' && markList.value.length > 0\n  })\n\n  const handleMouseEnter = () => {\n    initData.hovering = true\n    displayTooltip()\n  }\n\n  const handleMouseLeave = () => {\n    initData.hovering = false\n    if (!initData.dragging) {\n      hideTooltip()\n    }\n  }\n\n  const onButtonDown = (event: MouseEvent | TouchEvent) => {\n    if (disabled.value) return\n    event.preventDefault()\n    onDragStart(event)\n    window.addEventListener('mousemove', onDragging)\n    window.addEventListener('touchmove', onDragging)\n    window.addEventListener('mouseup', onDragEnd)\n    window.addEventListener('touchend', onDragEnd)\n    window.addEventListener('contextmenu', onDragEnd)\n    button.value!.focus()\n  }\n\n  const incrementPosition = (amount: number) => {\n    if (disabled.value) return\n    initData.newPosition =\n      Number.parseFloat(currentPosition.value) +\n      (amount / (max.value - min.value)) * 100\n    setPosition(initData.newPosition)\n    emitChange()\n  }\n\n  const moveToMark = (amount: number) => {\n    if (disabled.value || !markList.value.length) return\n\n    const current = props.modelValue\n    const epsilon = Number.EPSILON\n    const stride = Math.abs(amount)\n    let target: number | undefined\n\n    if (amount > 0) {\n      const startIndex = markList.value.findIndex(\n        (m) => m.point > current + epsilon\n      )\n      if (startIndex !== -1) {\n        const targetIndex = Math.min(\n          startIndex + stride - 1,\n          markList.value.length - 1\n        )\n        target = markList.value[targetIndex].point\n      }\n    } else {\n      let startIndex = -1\n      for (let i = markList.value.length - 1; i >= 0; i--) {\n        if (markList.value[i].point < current - epsilon) {\n          startIndex = i\n          break\n        }\n      }\n\n      if (startIndex !== -1) {\n        const targetIndex = Math.max(startIndex - (stride - 1), 0)\n        target = markList.value[targetIndex].point\n      }\n    }\n\n    if (target !== undefined && target !== current) {\n      const newPos = ((target - min.value) / (max.value - min.value)) * 100\n      setPosition(newPos)\n      emitChange()\n    }\n  }\n\n  const onLeftKeyDown = () => {\n    if (shouldMoveToMark.value) {\n      moveToMark(-1)\n    } else if (isNumber(step.value)) {\n      incrementPosition(-step.value)\n    }\n  }\n\n  const onRightKeyDown = () => {\n    if (shouldMoveToMark.value) {\n      moveToMark(1)\n    } else if (isNumber(step.value)) {\n      incrementPosition(step.value)\n    }\n  }\n\n  const onPageDownKeyDown = () => {\n    if (shouldMoveToMark.value) {\n      moveToMark(-4)\n    } else if (isNumber(step.value)) {\n      incrementPosition(-step.value * 4)\n    }\n  }\n\n  const onPageUpKeyDown = () => {\n    if (shouldMoveToMark.value) {\n      moveToMark(4)\n    } else if (isNumber(step.value)) {\n      incrementPosition(step.value * 4)\n    }\n  }\n\n  const onHomeKeyDown = () => {\n    if (disabled.value) return\n    setPosition(0)\n    emitChange()\n  }\n\n  const onEndKeyDown = () => {\n    if (disabled.value) return\n    setPosition(100)\n    emitChange()\n  }\n\n  const onKeyDown = (event: KeyboardEvent) => {\n    const code = getEventCode(event)\n    let isPreventDefault = true\n\n    switch (code) {\n      case EVENT_CODE.left:\n      case EVENT_CODE.down:\n        onLeftKeyDown()\n        break\n      case EVENT_CODE.right:\n      case EVENT_CODE.up:\n        onRightKeyDown()\n        break\n      case EVENT_CODE.home:\n        onHomeKeyDown()\n        break\n      case EVENT_CODE.end:\n        onEndKeyDown()\n        break\n      case EVENT_CODE.pageDown:\n        onPageDownKeyDown()\n        break\n      case EVENT_CODE.pageUp:\n        onPageUpKeyDown()\n        break\n      default:\n        isPreventDefault = false\n        break\n    }\n\n    isPreventDefault && event.preventDefault()\n  }\n\n  const getClientXY = (event: MouseEvent | TouchEvent) => {\n    let clientX: number\n    let clientY: number\n    if (event.type.startsWith('touch')) {\n      clientY = (event as TouchEvent).touches[0].clientY\n      clientX = (event as TouchEvent).touches[0].clientX\n    } else {\n      clientY = (event as MouseEvent).clientY\n      clientX = (event as MouseEvent).clientX\n    }\n    return {\n      clientX,\n      clientY,\n    }\n  }\n\n  const onDragStart = (event: MouseEvent | TouchEvent) => {\n    initData.dragging = true\n    initData.isClick = true\n    const { clientX, clientY } = getClientXY(event)\n    if (props.vertical) {\n      initData.startY = clientY\n    } else {\n      initData.startX = clientX\n    }\n    initData.startPosition = Number.parseFloat(currentPosition.value)\n    initData.newPosition = initData.startPosition\n  }\n\n  const onDragging = (event: MouseEvent | TouchEvent) => {\n    if (initData.dragging) {\n      initData.isClick = false\n      displayTooltip()\n      resetSize()\n      let diff: number\n      const { clientX, clientY } = getClientXY(event)\n      if (props.vertical) {\n        initData.currentY = clientY\n        diff = ((initData.startY - initData.currentY) / sliderSize.value) * 100\n      } else {\n        initData.currentX = clientX\n        diff = ((initData.currentX - initData.startX) / sliderSize.value) * 100\n      }\n      initData.newPosition = initData.startPosition + diff\n      setPosition(initData.newPosition)\n    }\n  }\n\n  const onDragEnd = () => {\n    if (initData.dragging) {\n      /*\n       * 防止在 mouseup 后立即触发 click，导致滑块有几率产生一小段位移\n       * 不使用 preventDefault 是因为 mouseup 和 click 没有注册在同一个 DOM 上\n       */\n      setTimeout(() => {\n        initData.dragging = false\n        if (!initData.hovering) {\n          hideTooltip()\n        }\n        if (!initData.isClick) {\n          setPosition(initData.newPosition)\n        }\n        emitChange()\n      }, 0)\n      window.removeEventListener('mousemove', onDragging)\n      window.removeEventListener('touchmove', onDragging)\n      window.removeEventListener('mouseup', onDragEnd)\n      window.removeEventListener('touchend', onDragEnd)\n      window.removeEventListener('contextmenu', onDragEnd)\n    }\n  }\n\n  const setPosition = async (newPosition: number) => {\n    if (newPosition === null || Number.isNaN(+newPosition)) return\n\n    newPosition = clamp(newPosition, 0, 100)\n    let value: number\n\n    if (step.value === 'mark') {\n      if (markList.value.length === 0) {\n        value = newPosition <= 50 ? min.value : max.value\n      } else {\n        const closestMark = markList.value.reduce((prev, curr) => {\n          return Math.abs(curr.position - newPosition) <\n            Math.abs(prev.position - newPosition)\n            ? curr\n            : prev\n        })\n        value = closestMark.point\n      }\n    } else {\n      const fullSteps = Math.floor((max.value - min.value) / step.value)\n      const fullRangePercentage =\n        ((fullSteps * step.value) / (max.value - min.value)) * 100\n      const threshold = fullRangePercentage + (100 - fullRangePercentage) / 2\n      if (newPosition < fullRangePercentage) {\n        const valueBetween = fullRangePercentage / fullSteps\n        const steps = Math.round(newPosition / valueBetween)\n        value = min.value + steps * step.value\n      } else if (newPosition < threshold) {\n        value = min.value + fullSteps * step.value\n      } else {\n        value = max.value\n      }\n      value = Number.parseFloat(value.toFixed(precision.value))\n    }\n\n    if (value !== props.modelValue) {\n      emit(UPDATE_MODEL_EVENT, value)\n    }\n\n    if (!initData.dragging && props.modelValue !== initData.oldValue) {\n      initData.oldValue = props.modelValue\n    }\n\n    await nextTick()\n    initData.dragging && displayTooltip()\n    tooltip.value!.updatePopper()\n  }\n\n  watch(\n    () => initData.dragging,\n    (val) => {\n      updateDragging(val)\n    }\n  )\n\n  useEventListener(button, 'touchstart', onButtonDown, { passive: false })\n\n  return {\n    disabled,\n    button,\n    tooltip,\n    tooltipVisible,\n    showTooltip,\n    persistent,\n    wrapperStyle,\n    formatValue,\n    handleMouseEnter,\n    handleMouseLeave,\n    onButtonDown,\n    onKeyDown,\n    setPosition,\n  }\n}\n","import { computed } from 'vue'\nimport { debugWarn } from '@pit-element-plus/utils'\n\nimport type { CSSProperties, ComputedRef } from 'vue'\nimport type { SliderInitData, SliderProps } from '../slider'\n\ntype Stops = {\n  stops: ComputedRef<number[]>\n  getStopStyle: (position: number) => CSSProperties\n}\n\nexport const useStops = (\n  props: SliderProps,\n  initData: SliderInitData,\n  minValue: ComputedRef<number>,\n  maxValue: ComputedRef<number>\n): Stops => {\n  const stops = computed(() => {\n    if (!props.showStops || props.min > props.max) return []\n    if (props.step === 'mark' || props.step === 0) {\n      if (props.step === 0) debugWarn('ElSlider', 'step should not be 0.')\n      return []\n    }\n\n    const stopCount = Math.ceil((props.max - props.min) / props.step)\n    const stepWidth = (100 * props.step) / (props.max - props.min)\n    const result = Array.from<number>({ length: stopCount - 1 }).map(\n      (_, index) => (index + 1) * stepWidth\n    )\n\n    if (props.range) {\n      return result.filter((step) => {\n        return (\n          step <\n            (100 * (minValue.value - props.min)) / (props.max - props.min) ||\n          step > (100 * (maxValue.value - props.min)) / (props.max - props.min)\n        )\n      })\n    } else {\n      return result.filter(\n        (step) =>\n          step >\n          (100 * (initData.firstValue - props.min)) / (props.max - props.min)\n      )\n    }\n  })\n\n  const getStopStyle = (position: number): CSSProperties => {\n    return props.vertical\n      ? { bottom: `${position}%` }\n      : { left: `${position}%` }\n  }\n\n  return {\n    stops,\n    getStopStyle,\n  }\n}\n","import { watch } from 'vue'\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport {\n  debugWarn,\n  isArray,\n  isNumber,\n  throwError,\n} from '@pit-element-plus/utils'\n\nimport type { ComputedRef, SetupContext } from 'vue'\nimport type { Arrayable } from '@pit-element-plus/utils'\nimport type { FormItemContext } from '@pit-element-plus/components/form'\nimport type { SliderEmits, SliderInitData, SliderProps } from '../slider'\n\nexport const useWatch = (\n  props: SliderProps,\n  initData: SliderInitData,\n  minValue: ComputedRef<number>,\n  maxValue: ComputedRef<number>,\n  emit: SetupContext<SliderEmits>['emit'],\n  elFormItem: FormItemContext\n) => {\n  const _emit = (val: Arrayable<number>) => {\n    emit(UPDATE_MODEL_EVENT, val)\n    emit(INPUT_EVENT, val)\n  }\n\n  const valueChanged = () => {\n    if (props.range) {\n      return ![minValue.value, maxValue.value].every(\n        (item, index) => item === (initData.oldValue as number[])[index]\n      )\n    } else {\n      return props.modelValue !== initData.oldValue\n    }\n  }\n\n  const setValues = () => {\n    if (props.min > props.max) {\n      throwError('Slider', 'min should not be greater than max.')\n    }\n    const val = props.modelValue\n    if (props.range && isArray(val)) {\n      if (val[1] < props.min) {\n        _emit([props.min, props.min])\n      } else if (val[0] > props.max) {\n        _emit([props.max, props.max])\n      } else if (val[0] < props.min) {\n        _emit([props.min, val[1]])\n      } else if (val[1] > props.max) {\n        _emit([val[0], props.max])\n      } else {\n        initData.firstValue = val[0]\n        initData.secondValue = val[1]\n        if (valueChanged()) {\n          if (props.validateEvent) {\n            elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n          }\n          initData.oldValue = val.slice()\n        }\n      }\n    } else if (!props.range && isNumber(val) && !Number.isNaN(val)) {\n      if (val < props.min) {\n        _emit(props.min)\n      } else if (val > props.max) {\n        _emit(props.max)\n      } else {\n        initData.firstValue = val\n        if (valueChanged()) {\n          if (props.validateEvent) {\n            elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n          }\n          initData.oldValue = val\n        }\n      }\n    }\n  }\n\n  setValues()\n\n  watch(\n    () => initData.dragging,\n    (val) => {\n      if (!val) {\n        setValues()\n      }\n    }\n  )\n\n  watch(\n    () => props.modelValue,\n    (val, oldVal) => {\n      if (\n        initData.dragging ||\n        (isArray(val) &&\n          isArray(oldVal) &&\n          val.every((item, index) => item === oldVal[index]) &&\n          initData.firstValue === val[0] &&\n          initData.secondValue === val[1])\n      ) {\n        return\n      }\n      setValues()\n    },\n    {\n      deep: true,\n    }\n  )\n\n  watch(\n    () => [props.min, props.max],\n    () => {\n      setValues()\n    }\n  )\n}\n","import { placements } from '@popperjs/core'\nimport { buildProps, isNumber } from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\nimport type {\n  ComponentPublicInstance,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n  Ref,\n} from 'vue'\nimport type Button from './button.vue'\n\nexport const sliderButtonProps = buildProps({\n  modelValue: {\n    type: Number,\n    default: 0,\n  },\n  vertical: Boolean,\n  tooltipClass: String,\n  placement: {\n    type: String,\n    values: placements,\n    default: 'top',\n  },\n} as const)\nexport type SliderButtonProps = ExtractPropTypes<typeof sliderButtonProps>\nexport type SliderButtonPropsPublic = ExtractPublicPropTypes<\n  typeof sliderButtonProps\n>\n\nexport const sliderButtonEmits = {\n  [UPDATE_MODEL_EVENT]: (value: number) => isNumber(value),\n}\nexport type SliderButtonEmits = typeof sliderButtonEmits\n\nexport type SliderButtonInstance = ComponentPublicInstance<typeof Button>\n\nexport type ButtonRefs = Record<\n  'firstButton' | 'secondButton',\n  Ref<SliderButtonInstance | undefined>\n>\n\nexport interface SliderButtonInitData {\n  hovering: boolean\n  dragging: boolean\n  isClick: boolean\n  startX: number\n  currentX: number\n  startY: number\n  currentY: number\n  startPosition: number\n  newPosition: number\n  oldValue: number\n}\n","<template>\n  <div\n    ref=\"button\"\n    :class=\"[ns.e('button-wrapper'), { hover: hovering, dragging }]\"\n    :style=\"wrapperStyle\"\n    :tabindex=\"disabled ? undefined : 0\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n    @mousedown=\"onButtonDown\"\n    @focus=\"handleMouseEnter\"\n    @blur=\"handleMouseLeave\"\n    @keydown=\"onKeyDown\"\n  >\n    <el-tooltip\n      ref=\"tooltip\"\n      :visible=\"tooltipVisible\"\n      :placement=\"placement\"\n      :fallback-placements=\"['top', 'bottom', 'right', 'left']\"\n      :stop-popper-mouse-event=\"false\"\n      :popper-class=\"tooltipClass\"\n      :disabled=\"!showTooltip\"\n      :persistent=\"tooltipPersistent\"\n    >\n      <template #content>\n        <span>{{ formatValue }}</span>\n      </template>\n      <div :class=\"[ns.e('button'), { hover: hovering, dragging }]\" />\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, toRefs } from 'vue'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useSliderButton } from './composables'\nimport { sliderButtonEmits, sliderButtonProps } from './button'\n\nimport type { SliderButtonInitData } from './button'\n\ndefineOptions({\n  name: 'ElSliderButton',\n})\n\nconst props = defineProps(sliderButtonProps)\nconst emit = defineEmits(sliderButtonEmits)\n\nconst ns = useNamespace('slider')\n\nconst initData = reactive<SliderButtonInitData>({\n  hovering: false,\n  dragging: false,\n  isClick: false,\n  startX: 0,\n  currentX: 0,\n  startY: 0,\n  currentY: 0,\n  startPosition: 0,\n  newPosition: 0,\n  oldValue: props.modelValue,\n})\n\nconst tooltipPersistent = computed(() =>\n  !showTooltip.value ? false : persistent.value\n)\n\nconst {\n  disabled,\n  button,\n  tooltip,\n  showTooltip,\n  persistent,\n  tooltipVisible,\n  wrapperStyle,\n  formatValue,\n  handleMouseEnter,\n  handleMouseLeave,\n  onButtonDown,\n  onKeyDown,\n  setPosition,\n} = useSliderButton(props, initData, emit)\n\nconst { hovering, dragging } = toRefs(initData)\n\ndefineExpose({\n  onButtonDown,\n  onKeyDown,\n  setPosition,\n  hovering,\n  dragging,\n})\n</script>\n","<template>\n  <div\n    ref=\"button\"\n    :class=\"[ns.e('button-wrapper'), { hover: hovering, dragging }]\"\n    :style=\"wrapperStyle\"\n    :tabindex=\"disabled ? undefined : 0\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n    @mousedown=\"onButtonDown\"\n    @focus=\"handleMouseEnter\"\n    @blur=\"handleMouseLeave\"\n    @keydown=\"onKeyDown\"\n  >\n    <el-tooltip\n      ref=\"tooltip\"\n      :visible=\"tooltipVisible\"\n      :placement=\"placement\"\n      :fallback-placements=\"['top', 'bottom', 'right', 'left']\"\n      :stop-popper-mouse-event=\"false\"\n      :popper-class=\"tooltipClass\"\n      :disabled=\"!showTooltip\"\n      :persistent=\"tooltipPersistent\"\n    >\n      <template #content>\n        <span>{{ formatValue }}</span>\n      </template>\n      <div :class=\"[ns.e('button'), { hover: hovering, dragging }]\" />\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, toRefs } from 'vue'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useSliderButton } from './composables'\nimport { sliderButtonEmits, sliderButtonProps } from './button'\n\nimport type { SliderButtonInitData } from './button'\n\ndefineOptions({\n  name: 'ElSliderButton',\n})\n\nconst props = defineProps(sliderButtonProps)\nconst emit = defineEmits(sliderButtonEmits)\n\nconst ns = useNamespace('slider')\n\nconst initData = reactive<SliderButtonInitData>({\n  hovering: false,\n  dragging: false,\n  isClick: false,\n  startX: 0,\n  currentX: 0,\n  startY: 0,\n  currentY: 0,\n  startPosition: 0,\n  newPosition: 0,\n  oldValue: props.modelValue,\n})\n\nconst tooltipPersistent = computed(() =>\n  !showTooltip.value ? false : persistent.value\n)\n\nconst {\n  disabled,\n  button,\n  tooltip,\n  showTooltip,\n  persistent,\n  tooltipVisible,\n  wrapperStyle,\n  formatValue,\n  handleMouseEnter,\n  handleMouseLeave,\n  onButtonDown,\n  onKeyDown,\n  setPosition,\n} = useSliderButton(props, initData, emit)\n\nconst { hovering, dragging } = toRefs(initData)\n\ndefineExpose({\n  onButtonDown,\n  onKeyDown,\n  setPosition,\n  hovering,\n  dragging,\n})\n</script>\n","<template>\n  <div\n    ref=\"button\"\n    :class=\"[ns.e('button-wrapper'), { hover: hovering, dragging }]\"\n    :style=\"wrapperStyle\"\n    :tabindex=\"disabled ? undefined : 0\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n    @mousedown=\"onButtonDown\"\n    @focus=\"handleMouseEnter\"\n    @blur=\"handleMouseLeave\"\n    @keydown=\"onKeyDown\"\n  >\n    <el-tooltip\n      ref=\"tooltip\"\n      :visible=\"tooltipVisible\"\n      :placement=\"placement\"\n      :fallback-placements=\"['top', 'bottom', 'right', 'left']\"\n      :stop-popper-mouse-event=\"false\"\n      :popper-class=\"tooltipClass\"\n      :disabled=\"!showTooltip\"\n      :persistent=\"tooltipPersistent\"\n    >\n      <template #content>\n        <span>{{ formatValue }}</span>\n      </template>\n      <div :class=\"[ns.e('button'), { hover: hovering, dragging }]\" />\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, toRefs } from 'vue'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useSliderButton } from './composables'\nimport { sliderButtonEmits, sliderButtonProps } from './button'\n\nimport type { SliderButtonInitData } from './button'\n\ndefineOptions({\n  name: 'ElSliderButton',\n})\n\nconst props = defineProps(sliderButtonProps)\nconst emit = defineEmits(sliderButtonEmits)\n\nconst ns = useNamespace('slider')\n\nconst initData = reactive<SliderButtonInitData>({\n  hovering: false,\n  dragging: false,\n  isClick: false,\n  startX: 0,\n  currentX: 0,\n  startY: 0,\n  currentY: 0,\n  startPosition: 0,\n  newPosition: 0,\n  oldValue: props.modelValue,\n})\n\nconst tooltipPersistent = computed(() =>\n  !showTooltip.value ? false : persistent.value\n)\n\nconst {\n  disabled,\n  button,\n  tooltip,\n  showTooltip,\n  persistent,\n  tooltipVisible,\n  wrapperStyle,\n  formatValue,\n  handleMouseEnter,\n  handleMouseLeave,\n  onButtonDown,\n  onKeyDown,\n  setPosition,\n} = useSliderButton(props, initData, emit)\n\nconst { hovering, dragging } = toRefs(initData)\n\ndefineExpose({\n  onButtonDown,\n  onKeyDown,\n  setPosition,\n  hovering,\n  dragging,\n})\n</script>\n","import { computed, defineComponent, h } from 'vue'\nimport { buildProps, definePropType, isString } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\n\nexport const sliderMarkerProps = buildProps({\n  mark: {\n    type: definePropType<\n      | string\n      | {\n          style: CSSProperties\n          label: any\n        }\n    >([String, Object]),\n    default: undefined,\n  },\n} as const)\nexport type SliderMarkerProps = ExtractPropTypes<typeof sliderMarkerProps>\nexport type SliderMarkerPropsPublic = ExtractPublicPropTypes<\n  typeof sliderMarkerProps\n>\n\nexport default defineComponent({\n  name: 'ElSliderMarker',\n  props: sliderMarkerProps,\n  setup(props) {\n    const ns = useNamespace('slider')\n    const label = computed(() => {\n      return isString(props.mark) ? props.mark : props.mark!.label\n    })\n    const style = computed(() =>\n      isString(props.mark) ? undefined : props.mark!.style\n    )\n\n    return () =>\n      h(\n        'div',\n        {\n          class: ns.e('marks-text'),\n          style: style.value,\n        },\n        label.value\n      )\n  },\n})\n","<template>\n  <div\n    :id=\"range ? inputId : undefined\"\n    ref=\"sliderWrapper\"\n    :class=\"sliderKls\"\n    :role=\"range ? 'group' : undefined\"\n    :aria-label=\"range && !isLabeledByFormItem ? groupLabel : undefined\"\n    :aria-labelledby=\"\n      range && isLabeledByFormItem ? elFormItem?.labelId : undefined\n    \"\n  >\n    <div\n      ref=\"slider\"\n      :class=\"[\n        ns.e('runway'),\n        { 'show-input': renderInput },\n        ns.is('disabled', sliderDisabled),\n      ]\"\n      :style=\"runwayStyle\"\n      @mousedown=\"onSliderDown\"\n      @touchstart.passive=\"onSliderDown\"\n    >\n      <div :class=\"ns.e('bar')\" :style=\"barStyle\" />\n      <slider-button\n        :id=\"!range ? inputId : undefined\"\n        ref=\"firstButton\"\n        :model-value=\"firstValue\"\n        :vertical=\"vertical\"\n        :tooltip-class=\"tooltipClass\"\n        :placement=\"placement\"\n        role=\"slider\"\n        :aria-label=\"\n          range || !isLabeledByFormItem ? firstButtonLabel : undefined\n        \"\n        :aria-labelledby=\"\n          !range && isLabeledByFormItem ? elFormItem?.labelId : undefined\n        \"\n        :aria-valuemin=\"min\"\n        :aria-valuemax=\"range ? secondValue : max\"\n        :aria-valuenow=\"firstValue\"\n        :aria-valuetext=\"firstValueText\"\n        :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n        :aria-disabled=\"sliderDisabled\"\n        @update:model-value=\"setFirstValue\"\n      />\n      <slider-button\n        v-if=\"range\"\n        ref=\"secondButton\"\n        :model-value=\"secondValue\"\n        :vertical=\"vertical\"\n        :tooltip-class=\"tooltipClass\"\n        :placement=\"placement\"\n        role=\"slider\"\n        :aria-label=\"secondButtonLabel\"\n        :aria-valuemin=\"firstValue\"\n        :aria-valuemax=\"max\"\n        :aria-valuenow=\"secondValue\"\n        :aria-valuetext=\"secondValueText\"\n        :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n        :aria-disabled=\"sliderDisabled\"\n        @update:model-value=\"setSecondValue\"\n      />\n      <div v-if=\"showStops\">\n        <div\n          v-for=\"(item, key) in stops\"\n          :key=\"key\"\n          :class=\"ns.e('stop')\"\n          :style=\"getStopStyle(item)\"\n        />\n      </div>\n      <template v-if=\"markList.length > 0\">\n        <div>\n          <div\n            v-for=\"(item, key) in markList\"\n            :key=\"key\"\n            :style=\"getStopStyle(item.position)\"\n            :class=\"[ns.e('stop'), ns.e('marks-stop')]\"\n          />\n        </div>\n        <div :class=\"ns.e('marks')\">\n          <slider-marker\n            v-for=\"(item, key) in markList\"\n            :key=\"key\"\n            :mark=\"item.mark\"\n            :style=\"getStopStyle(item.position)\"\n            @mousedown.stop=\"onSliderMarkerDown(item.position)\"\n          />\n        </div>\n      </template>\n    </div>\n    <el-input-number\n      v-if=\"renderInput\"\n      ref=\"input\"\n      :model-value=\"firstValue\"\n      :class=\"ns.e('input')\"\n      :step=\"sliderInputStep\"\n      :disabled=\"sliderDisabled\"\n      :controls=\"showInputControls\"\n      :min=\"min\"\n      :max=\"max\"\n      :precision=\"precision\"\n      :size=\"sliderInputSize\"\n      @update:model-value=\"setFirstValue\"\n      @change=\"emitChange\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, toRefs } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport ElInputNumber from '@pit-element-plus/components/input-number'\nimport {\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { sliderContextKey } from './constants'\nimport { sliderEmits, sliderProps } from './slider'\nimport SliderButton from './button.vue'\nimport SliderMarker from './marker'\nimport {\n  useLifecycle,\n  useMarks,\n  useSlide,\n  useStops,\n  useWatch,\n} from './composables'\nimport { isNumber } from '@pit-element-plus/utils'\n\nimport type { SliderInitData } from './slider'\n\ndefineOptions({\n  name: 'ElSlider',\n})\n\nconst props = defineProps(sliderProps)\nconst emit = defineEmits(sliderEmits)\n\nconst ns = useNamespace('slider')\nconst { t } = useLocale()\n\nconst initData = reactive<SliderInitData>({\n  firstValue: 0,\n  secondValue: 0,\n  oldValue: 0,\n  dragging: false,\n  sliderSize: 1,\n})\n\nconst {\n  elFormItem,\n  slider,\n  firstButton,\n  secondButton,\n  sliderDisabled,\n  minValue,\n  maxValue,\n  runwayStyle,\n  barStyle,\n  resetSize,\n  emitChange,\n  onSliderWrapperPrevent,\n  onSliderClick,\n  onSliderDown,\n  onSliderMarkerDown,\n  setFirstValue,\n  setSecondValue,\n} = useSlide(props, initData, emit)\n\nconst { stops, getStopStyle } = useStops(props, initData, minValue, maxValue)\n\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: elFormItem,\n})\n\nconst sliderWrapperSize = useFormSize()\nconst sliderInputSize = computed(\n  () => props.inputSize || sliderWrapperSize.value\n)\n\nconst renderInput = computed(() => {\n  return props.showInput && !props.range && props.step !== 'mark'\n})\n\nconst groupLabel = computed<string>(() => {\n  return (\n    props.ariaLabel ||\n    t('el.slider.defaultLabel', {\n      min: props.min,\n      max: props.max,\n    })\n  )\n})\n\nconst firstButtonLabel = computed<string>(() => {\n  if (props.range) {\n    return props.rangeStartLabel || t('el.slider.defaultRangeStartLabel')\n  } else {\n    return groupLabel.value\n  }\n})\n\nconst firstValueText = computed<string>(() => {\n  return props.formatValueText\n    ? props.formatValueText(firstValue.value)\n    : `${firstValue.value}`\n})\n\nconst secondButtonLabel = computed<string>(() => {\n  return props.rangeEndLabel || t('el.slider.defaultRangeEndLabel')\n})\n\nconst secondValueText = computed<string>(() => {\n  return props.formatValueText\n    ? props.formatValueText(secondValue.value)\n    : `${secondValue.value}`\n})\n\nconst sliderKls = computed(() => [\n  ns.b(),\n  ns.m(sliderWrapperSize.value),\n  ns.is('vertical', props.vertical),\n  { [ns.m('with-input')]: renderInput.value },\n])\n\nconst markList = useMarks(props)\n\nuseWatch(props, initData, minValue, maxValue, emit, elFormItem!)\n\nconst sliderInputStep = computed(() => {\n  return isNumber(props.step) ? props.step : 1\n})\n\nconst precision = computed(() => {\n  const stepValue = isNumber(props.step) ? props.step : 1\n  const precisions = [props.min, props.max, stepValue].map((item) => {\n    const decimal = `${item}`.split('.')[1]\n    return decimal ? decimal.length : 0\n  })\n  return Math.max.apply(null, precisions)\n})\n\nconst { sliderWrapper } = useLifecycle(props, initData, resetSize)\n\nconst { firstValue, secondValue, sliderSize } = toRefs(initData)\n\nconst updateDragging = (val: boolean) => {\n  initData.dragging = val\n}\n\nuseEventListener(sliderWrapper, 'touchstart', onSliderWrapperPrevent, {\n  passive: false,\n})\nuseEventListener(sliderWrapper, 'touchmove', onSliderWrapperPrevent, {\n  passive: false,\n})\n\nprovide(sliderContextKey, {\n  ...toRefs(props),\n  sliderSize,\n  disabled: sliderDisabled,\n  precision,\n  markList,\n  emitChange,\n  resetSize,\n  updateDragging,\n})\n\ndefineExpose({\n  onSliderClick,\n})\n</script>\n","<template>\n  <div\n    :id=\"range ? inputId : undefined\"\n    ref=\"sliderWrapper\"\n    :class=\"sliderKls\"\n    :role=\"range ? 'group' : undefined\"\n    :aria-label=\"range && !isLabeledByFormItem ? groupLabel : undefined\"\n    :aria-labelledby=\"\n      range && isLabeledByFormItem ? elFormItem?.labelId : undefined\n    \"\n  >\n    <div\n      ref=\"slider\"\n      :class=\"[\n        ns.e('runway'),\n        { 'show-input': renderInput },\n        ns.is('disabled', sliderDisabled),\n      ]\"\n      :style=\"runwayStyle\"\n      @mousedown=\"onSliderDown\"\n      @touchstart.passive=\"onSliderDown\"\n    >\n      <div :class=\"ns.e('bar')\" :style=\"barStyle\" />\n      <slider-button\n        :id=\"!range ? inputId : undefined\"\n        ref=\"firstButton\"\n        :model-value=\"firstValue\"\n        :vertical=\"vertical\"\n        :tooltip-class=\"tooltipClass\"\n        :placement=\"placement\"\n        role=\"slider\"\n        :aria-label=\"\n          range || !isLabeledByFormItem ? firstButtonLabel : undefined\n        \"\n        :aria-labelledby=\"\n          !range && isLabeledByFormItem ? elFormItem?.labelId : undefined\n        \"\n        :aria-valuemin=\"min\"\n        :aria-valuemax=\"range ? secondValue : max\"\n        :aria-valuenow=\"firstValue\"\n        :aria-valuetext=\"firstValueText\"\n        :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n        :aria-disabled=\"sliderDisabled\"\n        @update:model-value=\"setFirstValue\"\n      />\n      <slider-button\n        v-if=\"range\"\n        ref=\"secondButton\"\n        :model-value=\"secondValue\"\n        :vertical=\"vertical\"\n        :tooltip-class=\"tooltipClass\"\n        :placement=\"placement\"\n        role=\"slider\"\n        :aria-label=\"secondButtonLabel\"\n        :aria-valuemin=\"firstValue\"\n        :aria-valuemax=\"max\"\n        :aria-valuenow=\"secondValue\"\n        :aria-valuetext=\"secondValueText\"\n        :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n        :aria-disabled=\"sliderDisabled\"\n        @update:model-value=\"setSecondValue\"\n      />\n      <div v-if=\"showStops\">\n        <div\n          v-for=\"(item, key) in stops\"\n          :key=\"key\"\n          :class=\"ns.e('stop')\"\n          :style=\"getStopStyle(item)\"\n        />\n      </div>\n      <template v-if=\"markList.length > 0\">\n        <div>\n          <div\n            v-for=\"(item, key) in markList\"\n            :key=\"key\"\n            :style=\"getStopStyle(item.position)\"\n            :class=\"[ns.e('stop'), ns.e('marks-stop')]\"\n          />\n        </div>\n        <div :class=\"ns.e('marks')\">\n          <slider-marker\n            v-for=\"(item, key) in markList\"\n            :key=\"key\"\n            :mark=\"item.mark\"\n            :style=\"getStopStyle(item.position)\"\n            @mousedown.stop=\"onSliderMarkerDown(item.position)\"\n          />\n        </div>\n      </template>\n    </div>\n    <el-input-number\n      v-if=\"renderInput\"\n      ref=\"input\"\n      :model-value=\"firstValue\"\n      :class=\"ns.e('input')\"\n      :step=\"sliderInputStep\"\n      :disabled=\"sliderDisabled\"\n      :controls=\"showInputControls\"\n      :min=\"min\"\n      :max=\"max\"\n      :precision=\"precision\"\n      :size=\"sliderInputSize\"\n      @update:model-value=\"setFirstValue\"\n      @change=\"emitChange\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, toRefs } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport ElInputNumber from '@pit-element-plus/components/input-number'\nimport {\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { sliderContextKey } from './constants'\nimport { sliderEmits, sliderProps } from './slider'\nimport SliderButton from './button.vue'\nimport SliderMarker from './marker'\nimport {\n  useLifecycle,\n  useMarks,\n  useSlide,\n  useStops,\n  useWatch,\n} from './composables'\nimport { isNumber } from '@pit-element-plus/utils'\n\nimport type { SliderInitData } from './slider'\n\ndefineOptions({\n  name: 'ElSlider',\n})\n\nconst props = defineProps(sliderProps)\nconst emit = defineEmits(sliderEmits)\n\nconst ns = useNamespace('slider')\nconst { t } = useLocale()\n\nconst initData = reactive<SliderInitData>({\n  firstValue: 0,\n  secondValue: 0,\n  oldValue: 0,\n  dragging: false,\n  sliderSize: 1,\n})\n\nconst {\n  elFormItem,\n  slider,\n  firstButton,\n  secondButton,\n  sliderDisabled,\n  minValue,\n  maxValue,\n  runwayStyle,\n  barStyle,\n  resetSize,\n  emitChange,\n  onSliderWrapperPrevent,\n  onSliderClick,\n  onSliderDown,\n  onSliderMarkerDown,\n  setFirstValue,\n  setSecondValue,\n} = useSlide(props, initData, emit)\n\nconst { stops, getStopStyle } = useStops(props, initData, minValue, maxValue)\n\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: elFormItem,\n})\n\nconst sliderWrapperSize = useFormSize()\nconst sliderInputSize = computed(\n  () => props.inputSize || sliderWrapperSize.value\n)\n\nconst renderInput = computed(() => {\n  return props.showInput && !props.range && props.step !== 'mark'\n})\n\nconst groupLabel = computed<string>(() => {\n  return (\n    props.ariaLabel ||\n    t('el.slider.defaultLabel', {\n      min: props.min,\n      max: props.max,\n    })\n  )\n})\n\nconst firstButtonLabel = computed<string>(() => {\n  if (props.range) {\n    return props.rangeStartLabel || t('el.slider.defaultRangeStartLabel')\n  } else {\n    return groupLabel.value\n  }\n})\n\nconst firstValueText = computed<string>(() => {\n  return props.formatValueText\n    ? props.formatValueText(firstValue.value)\n    : `${firstValue.value}`\n})\n\nconst secondButtonLabel = computed<string>(() => {\n  return props.rangeEndLabel || t('el.slider.defaultRangeEndLabel')\n})\n\nconst secondValueText = computed<string>(() => {\n  return props.formatValueText\n    ? props.formatValueText(secondValue.value)\n    : `${secondValue.value}`\n})\n\nconst sliderKls = computed(() => [\n  ns.b(),\n  ns.m(sliderWrapperSize.value),\n  ns.is('vertical', props.vertical),\n  { [ns.m('with-input')]: renderInput.value },\n])\n\nconst markList = useMarks(props)\n\nuseWatch(props, initData, minValue, maxValue, emit, elFormItem!)\n\nconst sliderInputStep = computed(() => {\n  return isNumber(props.step) ? props.step : 1\n})\n\nconst precision = computed(() => {\n  const stepValue = isNumber(props.step) ? props.step : 1\n  const precisions = [props.min, props.max, stepValue].map((item) => {\n    const decimal = `${item}`.split('.')[1]\n    return decimal ? decimal.length : 0\n  })\n  return Math.max.apply(null, precisions)\n})\n\nconst { sliderWrapper } = useLifecycle(props, initData, resetSize)\n\nconst { firstValue, secondValue, sliderSize } = toRefs(initData)\n\nconst updateDragging = (val: boolean) => {\n  initData.dragging = val\n}\n\nuseEventListener(sliderWrapper, 'touchstart', onSliderWrapperPrevent, {\n  passive: false,\n})\nuseEventListener(sliderWrapper, 'touchmove', onSliderWrapperPrevent, {\n  passive: false,\n})\n\nprovide(sliderContextKey, {\n  ...toRefs(props),\n  sliderSize,\n  disabled: sliderDisabled,\n  precision,\n  markList,\n  emitChange,\n  resetSize,\n  updateDragging,\n})\n\ndefineExpose({\n  onSliderClick,\n})\n</script>\n","<template>\n  <div\n    :id=\"range ? inputId : undefined\"\n    ref=\"sliderWrapper\"\n    :class=\"sliderKls\"\n    :role=\"range ? 'group' : undefined\"\n    :aria-label=\"range && !isLabeledByFormItem ? groupLabel : undefined\"\n    :aria-labelledby=\"\n      range && isLabeledByFormItem ? elFormItem?.labelId : undefined\n    \"\n  >\n    <div\n      ref=\"slider\"\n      :class=\"[\n        ns.e('runway'),\n        { 'show-input': renderInput },\n        ns.is('disabled', sliderDisabled),\n      ]\"\n      :style=\"runwayStyle\"\n      @mousedown=\"onSliderDown\"\n      @touchstart.passive=\"onSliderDown\"\n    >\n      <div :class=\"ns.e('bar')\" :style=\"barStyle\" />\n      <slider-button\n        :id=\"!range ? inputId : undefined\"\n        ref=\"firstButton\"\n        :model-value=\"firstValue\"\n        :vertical=\"vertical\"\n        :tooltip-class=\"tooltipClass\"\n        :placement=\"placement\"\n        role=\"slider\"\n        :aria-label=\"\n          range || !isLabeledByFormItem ? firstButtonLabel : undefined\n        \"\n        :aria-labelledby=\"\n          !range && isLabeledByFormItem ? elFormItem?.labelId : undefined\n        \"\n        :aria-valuemin=\"min\"\n        :aria-valuemax=\"range ? secondValue : max\"\n        :aria-valuenow=\"firstValue\"\n        :aria-valuetext=\"firstValueText\"\n        :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n        :aria-disabled=\"sliderDisabled\"\n        @update:model-value=\"setFirstValue\"\n      />\n      <slider-button\n        v-if=\"range\"\n        ref=\"secondButton\"\n        :model-value=\"secondValue\"\n        :vertical=\"vertical\"\n        :tooltip-class=\"tooltipClass\"\n        :placement=\"placement\"\n        role=\"slider\"\n        :aria-label=\"secondButtonLabel\"\n        :aria-valuemin=\"firstValue\"\n        :aria-valuemax=\"max\"\n        :aria-valuenow=\"secondValue\"\n        :aria-valuetext=\"secondValueText\"\n        :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n        :aria-disabled=\"sliderDisabled\"\n        @update:model-value=\"setSecondValue\"\n      />\n      <div v-if=\"showStops\">\n        <div\n          v-for=\"(item, key) in stops\"\n          :key=\"key\"\n          :class=\"ns.e('stop')\"\n          :style=\"getStopStyle(item)\"\n        />\n      </div>\n      <template v-if=\"markList.length > 0\">\n        <div>\n          <div\n            v-for=\"(item, key) in markList\"\n            :key=\"key\"\n            :style=\"getStopStyle(item.position)\"\n            :class=\"[ns.e('stop'), ns.e('marks-stop')]\"\n          />\n        </div>\n        <div :class=\"ns.e('marks')\">\n          <slider-marker\n            v-for=\"(item, key) in markList\"\n            :key=\"key\"\n            :mark=\"item.mark\"\n            :style=\"getStopStyle(item.position)\"\n            @mousedown.stop=\"onSliderMarkerDown(item.position)\"\n          />\n        </div>\n      </template>\n    </div>\n    <el-input-number\n      v-if=\"renderInput\"\n      ref=\"input\"\n      :model-value=\"firstValue\"\n      :class=\"ns.e('input')\"\n      :step=\"sliderInputStep\"\n      :disabled=\"sliderDisabled\"\n      :controls=\"showInputControls\"\n      :min=\"min\"\n      :max=\"max\"\n      :precision=\"precision\"\n      :size=\"sliderInputSize\"\n      @update:model-value=\"setFirstValue\"\n      @change=\"emitChange\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, reactive, toRefs } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport ElInputNumber from '@pit-element-plus/components/input-number'\nimport {\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { sliderContextKey } from './constants'\nimport { sliderEmits, sliderProps } from './slider'\nimport SliderButton from './button.vue'\nimport SliderMarker from './marker'\nimport {\n  useLifecycle,\n  useMarks,\n  useSlide,\n  useStops,\n  useWatch,\n} from './composables'\nimport { isNumber } from '@pit-element-plus/utils'\n\nimport type { SliderInitData } from './slider'\n\ndefineOptions({\n  name: 'ElSlider',\n})\n\nconst props = defineProps(sliderProps)\nconst emit = defineEmits(sliderEmits)\n\nconst ns = useNamespace('slider')\nconst { t } = useLocale()\n\nconst initData = reactive<SliderInitData>({\n  firstValue: 0,\n  secondValue: 0,\n  oldValue: 0,\n  dragging: false,\n  sliderSize: 1,\n})\n\nconst {\n  elFormItem,\n  slider,\n  firstButton,\n  secondButton,\n  sliderDisabled,\n  minValue,\n  maxValue,\n  runwayStyle,\n  barStyle,\n  resetSize,\n  emitChange,\n  onSliderWrapperPrevent,\n  onSliderClick,\n  onSliderDown,\n  onSliderMarkerDown,\n  setFirstValue,\n  setSecondValue,\n} = useSlide(props, initData, emit)\n\nconst { stops, getStopStyle } = useStops(props, initData, minValue, maxValue)\n\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: elFormItem,\n})\n\nconst sliderWrapperSize = useFormSize()\nconst sliderInputSize = computed(\n  () => props.inputSize || sliderWrapperSize.value\n)\n\nconst renderInput = computed(() => {\n  return props.showInput && !props.range && props.step !== 'mark'\n})\n\nconst groupLabel = computed<string>(() => {\n  return (\n    props.ariaLabel ||\n    t('el.slider.defaultLabel', {\n      min: props.min,\n      max: props.max,\n    })\n  )\n})\n\nconst firstButtonLabel = computed<string>(() => {\n  if (props.range) {\n    return props.rangeStartLabel || t('el.slider.defaultRangeStartLabel')\n  } else {\n    return groupLabel.value\n  }\n})\n\nconst firstValueText = computed<string>(() => {\n  return props.formatValueText\n    ? props.formatValueText(firstValue.value)\n    : `${firstValue.value}`\n})\n\nconst secondButtonLabel = computed<string>(() => {\n  return props.rangeEndLabel || t('el.slider.defaultRangeEndLabel')\n})\n\nconst secondValueText = computed<string>(() => {\n  return props.formatValueText\n    ? props.formatValueText(secondValue.value)\n    : `${secondValue.value}`\n})\n\nconst sliderKls = computed(() => [\n  ns.b(),\n  ns.m(sliderWrapperSize.value),\n  ns.is('vertical', props.vertical),\n  { [ns.m('with-input')]: renderInput.value },\n])\n\nconst markList = useMarks(props)\n\nuseWatch(props, initData, minValue, maxValue, emit, elFormItem!)\n\nconst sliderInputStep = computed(() => {\n  return isNumber(props.step) ? props.step : 1\n})\n\nconst precision = computed(() => {\n  const stepValue = isNumber(props.step) ? props.step : 1\n  const precisions = [props.min, props.max, stepValue].map((item) => {\n    const decimal = `${item}`.split('.')[1]\n    return decimal ? decimal.length : 0\n  })\n  return Math.max.apply(null, precisions)\n})\n\nconst { sliderWrapper } = useLifecycle(props, initData, resetSize)\n\nconst { firstValue, secondValue, sliderSize } = toRefs(initData)\n\nconst updateDragging = (val: boolean) => {\n  initData.dragging = val\n}\n\nuseEventListener(sliderWrapper, 'touchstart', onSliderWrapperPrevent, {\n  passive: false,\n})\nuseEventListener(sliderWrapper, 'touchmove', onSliderWrapperPrevent, {\n  passive: false,\n})\n\nprovide(sliderContextKey, {\n  ...toRefs(props),\n  sliderSize,\n  disabled: sliderDisabled,\n  precision,\n  markList,\n  emitChange,\n  resetSize,\n  updateDragging,\n})\n\ndefineExpose({\n  onSliderClick,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Slider from './src/slider.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElSlider: SFCWithInstall<typeof Slider> = withInstall(Slider)\nexport default ElSlider\n\nexport * from './src/slider'\nexport * from './src/constants'\n","import { computed, defineComponent, h, renderSlot } from 'vue'\nimport { buildProps } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const spaceItemProps = buildProps({\n  prefixCls: {\n    type: String,\n  },\n} as const)\nexport type SpaceItemProps = ExtractPropTypes<typeof spaceItemProps>\nexport type SpaceItemPropsPublic = ExtractPublicPropTypes<typeof spaceItemProps>\n\nconst SpaceItem = defineComponent({\n  name: 'ElSpaceItem',\n\n  props: spaceItemProps,\n\n  setup(props, { slots }) {\n    const ns = useNamespace('space')\n\n    const classes = computed(() => `${props.prefixCls || ns.b()}__item`)\n\n    return () =>\n      h('div', { class: classes.value }, renderSlot(slots, 'default'))\n  },\n})\nexport type SpaceItemInstance = InstanceType<typeof SpaceItem> & unknown\n\nexport default SpaceItem\n","import { computed, ref, watchEffect } from 'vue'\nimport { isArray, isNumber } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { SpaceProps } from './space'\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst SIZE_MAP = {\n  small: 8,\n  default: 12,\n  large: 16,\n} as const\n\nexport function useSpace(props: SpaceProps) {\n  const ns = useNamespace('space')\n\n  const classes = computed(() => [ns.b(), ns.m(props.direction), props.class])\n\n  const horizontalSize = ref(0)\n  const verticalSize = ref(0)\n\n  const containerStyle = computed<StyleValue>(() => {\n    const wrapKls: CSSProperties =\n      props.wrap || props.fill ? { flexWrap: 'wrap' } : {}\n    const alignment: CSSProperties = {\n      alignItems: props.alignment,\n    }\n    const gap: CSSProperties = {\n      rowGap: `${verticalSize.value}px`,\n      columnGap: `${horizontalSize.value}px`,\n    }\n    return [wrapKls, alignment, gap, props.style]\n  })\n\n  const itemStyle = computed<StyleValue>(() => {\n    return props.fill ? { flexGrow: 1, minWidth: `${props.fillRatio}%` } : {}\n  })\n\n  watchEffect(() => {\n    const { size = 'small', wrap, direction: dir, fill } = props\n\n    // when the specified size have been given\n    if (isArray(size)) {\n      const [h = 0, v = 0] = size\n      horizontalSize.value = h\n      verticalSize.value = v\n    } else {\n      let val: number\n      if (isNumber(size)) {\n        val = size\n      } else {\n        val = SIZE_MAP[size || 'small'] || SIZE_MAP.small\n      }\n\n      if ((wrap || fill) && dir === 'horizontal') {\n        horizontalSize.value = verticalSize.value = val\n      } else {\n        if (dir === 'horizontal') {\n          horizontalSize.value = val\n          verticalSize.value = 0\n        } else {\n          verticalSize.value = val\n          horizontalSize.value = 0\n        }\n      }\n    }\n  })\n\n  return {\n    classes,\n    containerStyle,\n    itemStyle,\n  }\n}\n","import {\n  Comment,\n  createTextVNode,\n  createVNode,\n  defineComponent,\n  isVNode,\n  renderSlot,\n} from 'vue'\nimport {\n  PatchFlags,\n  buildProps,\n  definePropType,\n  isArray,\n  isFragment,\n  isNumber,\n  isString,\n  isValidElementNode,\n} from '@pit-element-plus/utils'\nimport { componentSizes } from '@pit-element-plus/constants'\nimport Item from './item'\nimport { useSpace } from './use-space'\n\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n  StyleValue,\n  VNode,\n  VNodeArrayChildren,\n  VNodeChild,\n} from 'vue'\nimport type { Arrayable } from '@pit-element-plus/utils'\n\nexport const spaceProps = buildProps({\n  /**\n   * @description Placement direction\n   */\n  direction: {\n    type: String,\n    values: ['horizontal', 'vertical'],\n    default: 'horizontal',\n  },\n  /**\n   * @description Classname\n   */\n  class: {\n    type: definePropType<Arrayable<Record<string, boolean> | string>>([\n      String,\n      Object,\n      Array,\n    ]),\n    default: '',\n  },\n  /**\n   * @description Extra style rules\n   */\n  style: {\n    type: definePropType<StyleValue>([String, Array, Object]),\n    default: '',\n  },\n  /**\n   * @description Controls the alignment of items\n   */\n  alignment: {\n    type: definePropType<CSSProperties['align-items']>(String),\n    default: 'center',\n  },\n  /**\n   * @description Prefix for space-items\n   */\n  prefixCls: {\n    type: String,\n  },\n  /**\n   * @description Spacer\n   */\n  spacer: {\n    type: definePropType<VNodeChild>([Object, String, Number, Array]),\n    default: null,\n    validator: (val: unknown) => isVNode(val) || isNumber(val) || isString(val),\n  },\n  /**\n   * @description Auto wrapping\n   */\n  wrap: Boolean,\n  /**\n   * @description Whether to fill the container\n   */\n  fill: Boolean,\n  /**\n   * @description Ratio of fill\n   */\n  fillRatio: {\n    type: Number,\n    default: 100,\n  },\n  /**\n   * @description Spacing size\n   */\n  size: {\n    type: [String, Array, Number],\n    values: componentSizes,\n    validator: (val: unknown): val is [number, number] | number => {\n      return (\n        isNumber(val) ||\n        (isArray(val) && val.length === 2 && val.every(isNumber))\n      )\n    },\n  },\n} as const)\nexport type SpaceProps = ExtractPropTypes<typeof spaceProps>\nexport type SpacePropsPublic = ExtractPublicPropTypes<typeof spaceProps>\n\nconst Space = defineComponent({\n  name: 'ElSpace',\n\n  props: spaceProps,\n\n  setup(props, { slots }) {\n    const { classes, containerStyle, itemStyle } = useSpace(props)\n\n    // retrieve the children out via a simple for loop\n    // the edge case here is that when users uses directives like <v-for>, <v-if>\n    // we need to go deeper until the child is not the Fragment type\n    function extractChildren(\n      children: VNodeArrayChildren,\n      parentKey = '',\n      extractedChildren: VNode[] = []\n    ) {\n      const { prefixCls } = props\n      children.forEach((child, loopKey) => {\n        if (isFragment(child)) {\n          if (isArray(child.children)) {\n            child.children.forEach((nested, key) => {\n              if (isFragment(nested) && isArray(nested.children)) {\n                extractChildren(\n                  nested.children,\n                  `${parentKey + key}-`,\n                  extractedChildren\n                )\n              } else {\n                if (isVNode(nested) && nested?.type === Comment) {\n                  extractedChildren.push(nested)\n                } else {\n                  extractedChildren.push(\n                    createVNode(\n                      Item,\n                      {\n                        style: itemStyle.value,\n                        prefixCls,\n                        key: `nested-${parentKey + key}`,\n                      },\n                      {\n                        default: () => [nested],\n                      },\n                      PatchFlags.PROPS | PatchFlags.STYLE,\n                      ['style', 'prefixCls']\n                    )\n                  )\n                }\n              }\n            })\n          }\n          // if the current child is valid vnode, then append this current vnode\n          // to item as child node.\n        } else if (isValidElementNode(child)) {\n          extractedChildren.push(\n            createVNode(\n              Item,\n              {\n                style: itemStyle.value,\n                prefixCls,\n                key: `LoopKey${parentKey + loopKey}`,\n              },\n              {\n                default: () => [child],\n              },\n              PatchFlags.PROPS | PatchFlags.STYLE,\n              ['style', 'prefixCls']\n            )\n          )\n        }\n      })\n\n      return extractedChildren\n    }\n\n    return () => {\n      const { spacer, direction } = props\n\n      const children = renderSlot(slots, 'default', { key: 0 }, () => [])\n\n      if ((children.children ?? []).length === 0) return null\n      // loop the children, if current children is rendered via `renderList` or `<v-for>`\n      if (isArray(children.children)) {\n        let extractedChildren = extractChildren(children.children)\n\n        if (spacer) {\n          // track the current rendering index, when encounters the last element\n          // then no need to add a spacer after it.\n          const len = extractedChildren.length - 1\n          extractedChildren = extractedChildren.reduce<VNode[]>(\n            (acc, child, idx) => {\n              const children = [...acc, child]\n              if (idx !== len) {\n                children.push(\n                  createVNode(\n                    'span',\n                    // adding width 100% for vertical alignment,\n                    // when the spacer inherit the width from the\n                    // parent, this span's width was not set, so space\n                    // might disappear\n                    {\n                      style: [\n                        itemStyle.value,\n                        direction === 'vertical' ? 'width: 100%' : null,\n                      ],\n                      key: idx,\n                    },\n                    [\n                      // if spacer is already a valid vnode, then append it to the current\n                      // span element.\n                      // otherwise, treat it as string.\n                      isVNode(spacer)\n                        ? spacer\n                        : createTextVNode(spacer as string, PatchFlags.TEXT),\n                    ],\n                    PatchFlags.STYLE\n                  )\n                )\n              }\n              return children\n            },\n            []\n          )\n        }\n\n        // spacer container.\n        return createVNode(\n          'div',\n          {\n            class: classes.value,\n            style: containerStyle.value,\n          },\n          extractedChildren,\n          PatchFlags.STYLE | PatchFlags.CLASS\n        )\n      }\n\n      return children.children\n    }\n  },\n})\n\nexport type SpaceInstance = InstanceType<typeof Space> & unknown\n\nexport default Space\n","import { withInstall } from '@pit-element-plus/utils'\nimport Space from './src/space'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElSpace: SFCWithInstall<typeof Space> = withInstall(Space)\nexport default ElSpace\n\nexport * from './src/space'\nexport * from './src/item'\nexport * from './src/use-space'\n","import { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { buildProps, isNumber } from '@pit-element-plus/utils'\n\nimport type Steps from './steps.vue'\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport type StepsStatus = 'wait' | 'process' | 'finish' | 'error' | 'success'\n\nexport interface StepsProps {\n  /**\n   * @description the spacing of each step, will be responsive if omitted. Supports percentage.\n   * @default ''\n   */\n  space?: number | string\n  /**\n   * @description current activation step\n   * @default 0\n   */\n  active?: number\n  /**\n   * @description display direction\n   * @default 'horizontal'\n   */\n  direction?: 'horizontal' | 'vertical'\n  /**\n   * @description center title and description\n   */\n  alignCenter?: boolean\n  /**\n   * @description whether to apply simple theme\n   */\n  simple?: boolean\n  /**\n   * @description status of end step\n   * @default 'finish'\n   */\n  finishStatus?: StepsStatus\n  /**\n   * @description status of current step\n   * @default 'process'\n   */\n  processStatus?: StepsStatus\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `StepsProps` instead.\n */\nexport const stepsProps = buildProps({\n  /**\n   * @description the spacing of each step, will be responsive if omitted. Supports percentage.\n   */\n  space: {\n    type: [Number, String],\n    default: '',\n  },\n  /**\n   * @description current activation step\n   */\n  active: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description display direction\n   */\n  direction: {\n    type: String,\n    default: 'horizontal',\n    values: ['horizontal', 'vertical'],\n  },\n  /**\n   * @description center title and description\n   */\n  alignCenter: {\n    type: Boolean,\n  },\n  /**\n   * @description whether to apply simple theme\n   */\n  simple: {\n    type: Boolean,\n  },\n  /**\n   * @description status of end step\n   */\n  finishStatus: {\n    type: String,\n    values: ['wait', 'process', 'finish', 'error', 'success'],\n    default: 'finish',\n  },\n  /**\n   * @description status of current step\n   */\n  processStatus: {\n    type: String,\n    values: ['wait', 'process', 'finish', 'error', 'success'],\n    default: 'process',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `StepsProps` instead.\n */\nexport type StepsPropsPublic = ExtractPublicPropTypes<typeof stepsProps>\n\nexport const stepsEmits = {\n  [CHANGE_EVENT]: (newVal: number, oldVal: number) =>\n    [newVal, oldVal].every(isNumber),\n}\nexport type StepsEmits = typeof stepsEmits\n\nexport type StepsInstance = InstanceType<typeof Steps> & unknown\n","export const STEPS_INJECTION_KEY = 'ElSteps'\n","<template>\n  <div :class=\"[ns.b(), ns.m(simple ? 'simple' : direction)]\">\n    <slot />\n    <steps-sorter />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { getCurrentInstance, provide, watch } from 'vue'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { useNamespace, useOrderedChildren } from '@pit-element-plus/hooks'\nimport { stepsEmits } from './steps'\nimport { STEPS_INJECTION_KEY } from './tokens'\n\nimport type { StepsProps } from './steps'\nimport type { StepItemState } from './item.vue'\n\ndefineOptions({\n  name: 'ElSteps',\n})\n\nconst props = withDefaults(defineProps<StepsProps>(), {\n  space: '',\n  direction: 'horizontal',\n  active: 0,\n  processStatus: 'process',\n  finishStatus: 'finish',\n})\nconst emit = defineEmits(stepsEmits)\n\nconst ns = useNamespace('steps')\nconst {\n  children: steps,\n  addChild: addStep,\n  removeChild: removeStep,\n  ChildrenSorter: StepsSorter,\n} = useOrderedChildren<StepItemState>(getCurrentInstance()!, 'ElStep')\n\nwatch(steps, () => {\n  steps.value.forEach((instance: StepItemState, index: number) => {\n    instance.setIndex(index)\n  })\n})\n\nprovide(STEPS_INJECTION_KEY, { props, steps, addStep, removeStep })\n\nwatch(\n  () => props.active,\n  (newVal: number, oldVal: number) => {\n    emit(CHANGE_EVENT, newVal, oldVal)\n  }\n)\n</script>\n","<template>\n  <div :class=\"[ns.b(), ns.m(simple ? 'simple' : direction)]\">\n    <slot />\n    <steps-sorter />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { getCurrentInstance, provide, watch } from 'vue'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { useNamespace, useOrderedChildren } from '@pit-element-plus/hooks'\nimport { stepsEmits } from './steps'\nimport { STEPS_INJECTION_KEY } from './tokens'\n\nimport type { StepsProps } from './steps'\nimport type { StepItemState } from './item.vue'\n\ndefineOptions({\n  name: 'ElSteps',\n})\n\nconst props = withDefaults(defineProps<StepsProps>(), {\n  space: '',\n  direction: 'horizontal',\n  active: 0,\n  processStatus: 'process',\n  finishStatus: 'finish',\n})\nconst emit = defineEmits(stepsEmits)\n\nconst ns = useNamespace('steps')\nconst {\n  children: steps,\n  addChild: addStep,\n  removeChild: removeStep,\n  ChildrenSorter: StepsSorter,\n} = useOrderedChildren<StepItemState>(getCurrentInstance()!, 'ElStep')\n\nwatch(steps, () => {\n  steps.value.forEach((instance: StepItemState, index: number) => {\n    instance.setIndex(index)\n  })\n})\n\nprovide(STEPS_INJECTION_KEY, { props, steps, addStep, removeStep })\n\nwatch(\n  () => props.active,\n  (newVal: number, oldVal: number) => {\n    emit(CHANGE_EVENT, newVal, oldVal)\n  }\n)\n</script>\n","<template>\n  <div :class=\"[ns.b(), ns.m(simple ? 'simple' : direction)]\">\n    <slot />\n    <steps-sorter />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { getCurrentInstance, provide, watch } from 'vue'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { useNamespace, useOrderedChildren } from '@pit-element-plus/hooks'\nimport { stepsEmits } from './steps'\nimport { STEPS_INJECTION_KEY } from './tokens'\n\nimport type { StepsProps } from './steps'\nimport type { StepItemState } from './item.vue'\n\ndefineOptions({\n  name: 'ElSteps',\n})\n\nconst props = withDefaults(defineProps<StepsProps>(), {\n  space: '',\n  direction: 'horizontal',\n  active: 0,\n  processStatus: 'process',\n  finishStatus: 'finish',\n})\nconst emit = defineEmits(stepsEmits)\n\nconst ns = useNamespace('steps')\nconst {\n  children: steps,\n  addChild: addStep,\n  removeChild: removeStep,\n  ChildrenSorter: StepsSorter,\n} = useOrderedChildren<StepItemState>(getCurrentInstance()!, 'ElStep')\n\nwatch(steps, () => {\n  steps.value.forEach((instance: StepItemState, index: number) => {\n    instance.setIndex(index)\n  })\n})\n\nprovide(STEPS_INJECTION_KEY, { props, steps, addStep, removeStep })\n\nwatch(\n  () => props.active,\n  (newVal: number, oldVal: number) => {\n    emit(CHANGE_EVENT, newVal, oldVal)\n  }\n)\n</script>\n","import { buildProps, iconPropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type Step from './item.vue'\n\nexport interface StepProps {\n  /**\n   * @description step title\n   */\n  title?: string\n  /**\n   * @description step custom icon. Icons can be passed via named slot as well\n   */\n  icon?: IconPropType\n  /**\n   * @description step description\n   * @default ''\n   */\n  description?: string\n  /**\n   * @description current status. It will be automatically set by Steps if not configured.\n   * @default ''\n   */\n  status?: '' | 'wait' | 'process' | 'finish' | 'error' | 'success'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `StepProps` instead.\n */\nexport const stepProps = buildProps({\n  /**\n   * @description step title\n   */\n  title: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description step custom icon. Icons can be passed via named slot as well\n   */\n  icon: {\n    type: iconPropType,\n  },\n  /**\n   * @description step description\n   */\n  description: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description current status. It will be automatically set by Steps if not configured.\n   */\n  status: {\n    type: String,\n    values: ['', 'wait', 'process', 'finish', 'error', 'success'],\n    default: '',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `StepProps` instead.\n */\nexport type StepPropsPublic = ExtractPublicPropTypes<typeof stepProps>\n\nexport type StepInstance = InstanceType<typeof Step> & unknown\n","<template>\n  <div :style=\"style\" :class=\"containerKls\">\n    <!-- icon & line -->\n    <div :class=\"[ns.e('head'), ns.is(currentStatus)]\">\n      <div v-if=\"!isSimple\" :class=\"ns.e('line')\">\n        <i :class=\"ns.e('line-inner')\" :style=\"lineStyle\" />\n      </div>\n\n      <div\n        :class=\"[ns.e('icon'), ns.is(icon || $slots.icon ? 'icon' : 'text')]\"\n      >\n        <slot name=\"icon\">\n          <el-icon v-if=\"icon\" :class=\"ns.e('icon-inner')\">\n            <component :is=\"icon\" />\n          </el-icon>\n          <el-icon\n            v-else-if=\"currentStatus === 'success'\"\n            :class=\"[ns.e('icon-inner'), ns.is('status')]\"\n          >\n            <Check />\n          </el-icon>\n          <el-icon\n            v-else-if=\"currentStatus === 'error'\"\n            :class=\"[ns.e('icon-inner'), ns.is('status')]\"\n          >\n            <Close />\n          </el-icon>\n          <div v-else-if=\"!isSimple\" :class=\"ns.e('icon-inner')\">\n            {{ index + 1 }}\n          </div>\n        </slot>\n      </div>\n    </div>\n    <!-- title & description -->\n    <div :class=\"ns.e('main')\">\n      <div :class=\"[ns.e('title'), ns.is(currentStatus)]\">\n        <slot name=\"title\">{{ title }}</slot>\n      </div>\n      <div v-if=\"isSimple\" :class=\"ns.e('arrow')\" />\n      <div v-else :class=\"[ns.e('description'), ns.is(currentStatus)]\">\n        <slot name=\"description\">{{ description }}</slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Check, Close } from 'pit-element-icons'\nimport { isNumber } from '@pit-element-plus/utils'\nimport { STEPS_INJECTION_KEY } from './tokens'\n\nimport type { StepProps } from './item'\nimport type { CSSProperties, ComputedRef, Ref, VNode } from 'vue'\nimport type { StepsProps } from './steps'\n\nexport interface StepItemState {\n  uid: number\n  getVnode: () => VNode\n  currentStatus: ComputedRef<string>\n  internalStatus: Ref<string>\n  setIndex: (val: number) => void\n  calcProgress: (status: string) => void\n}\n\nexport interface IStepsInject {\n  props: Required<StepsProps>\n  steps: Ref<StepItemState[]>\n  addStep: (item: StepItemState) => void\n  removeStep: (item: StepItemState) => void\n}\n\ndefineOptions({\n  name: 'ElStep',\n})\n\nconst props = withDefaults(defineProps<StepProps>(), {\n  title: '',\n  description: '',\n  icon: '',\n  status: '',\n})\n\nconst ns = useNamespace('step')\nconst index = ref(-1)\nconst lineStyle = ref({})\nconst internalStatus = ref('')\nconst parent = inject(STEPS_INJECTION_KEY) as IStepsInject\nconst currentInstance = getCurrentInstance()!\nlet stepDiff = 0\nlet beforeActive = 0\n\nonMounted(() => {\n  watch(\n    [\n      () => parent.props.active,\n      () => parent.props.processStatus,\n      () => parent.props.finishStatus,\n    ],\n    ([active], [oldActive]) => {\n      beforeActive = oldActive || 0\n      stepDiff = active - beforeActive\n\n      updateStatus(active)\n    },\n    { immediate: true }\n  )\n})\n\nconst currentStatus = computed(() => {\n  return props.status || internalStatus.value\n})\n\nconst prevInternalStatus = computed(() => {\n  const prevStep = parent.steps.value[index.value - 1]\n  return prevStep ? prevStep.internalStatus.value : 'wait'\n})\n\nconst isCenter = computed(() => {\n  return parent.props.alignCenter\n})\n\nconst isVertical = computed(() => {\n  return parent.props.direction === 'vertical'\n})\n\nconst isSimple = computed(() => {\n  return parent.props.simple\n})\n\nconst stepsCount = computed(() => {\n  return parent.steps.value.length\n})\n\nconst isLast = computed(() => {\n  return parent.steps.value[stepsCount.value - 1]?.uid === currentInstance.uid\n})\n\nconst space = computed(() => {\n  return isSimple.value ? '' : parent.props.space\n})\n\nconst containerKls = computed(() => {\n  return [\n    ns.b(),\n    ns.is(isSimple.value ? 'simple' : parent.props.direction),\n    ns.is('flex', isLast.value && !space.value && !isCenter.value),\n    ns.is('center', isCenter.value && !isVertical.value && !isSimple.value),\n  ]\n})\n\nconst style = computed(() => {\n  const style: CSSProperties = {\n    flexBasis: isNumber(space.value)\n      ? `${space.value}px`\n      : space.value\n        ? space.value\n        : `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%`,\n  }\n  if (isVertical.value) return style\n  if (isLast.value) {\n    style.maxWidth = `${100 / stepsCount.value}%`\n  }\n  return style\n})\n\nconst setIndex = (val: number) => {\n  index.value = val\n}\n\nconst calcProgress = (status: string) => {\n  const isWait = status === 'wait'\n  const delayTimer =\n    Math.abs(stepDiff) === 1\n      ? 0\n      : stepDiff > 0\n        ? (index.value + 1 - beforeActive) * 150\n        : -(index.value + 1 - parent.props.active) * 150\n\n  const style: CSSProperties = {\n    transitionDelay: `${delayTimer}ms`,\n  }\n  const step = status === parent.props.processStatus || isWait ? 0 : 100\n\n  style.borderWidth = step && !isSimple.value ? '1px' : 0\n  style[parent.props.direction === 'vertical' ? 'height' : 'width'] = `${step}%`\n  lineStyle.value = style\n}\n\nconst updateStatus = (activeIndex: number) => {\n  if (activeIndex > index.value) {\n    internalStatus.value = parent.props.finishStatus\n  } else if (\n    activeIndex === index.value &&\n    prevInternalStatus.value !== 'error'\n  ) {\n    internalStatus.value = parent.props.processStatus\n  } else {\n    internalStatus.value = 'wait'\n  }\n  const prevChild = parent.steps.value[index.value - 1]\n  if (prevChild) prevChild.calcProgress(internalStatus.value)\n}\n\nconst stepItemState: StepItemState = {\n  uid: currentInstance.uid,\n  getVnode: () => currentInstance.vnode,\n  currentStatus,\n  internalStatus,\n  setIndex,\n  calcProgress,\n}\n\nparent.addStep(stepItemState)\n\nonBeforeUnmount(() => {\n  parent.removeStep(stepItemState)\n})\n</script>\n","<template>\n  <div :style=\"style\" :class=\"containerKls\">\n    <!-- icon & line -->\n    <div :class=\"[ns.e('head'), ns.is(currentStatus)]\">\n      <div v-if=\"!isSimple\" :class=\"ns.e('line')\">\n        <i :class=\"ns.e('line-inner')\" :style=\"lineStyle\" />\n      </div>\n\n      <div\n        :class=\"[ns.e('icon'), ns.is(icon || $slots.icon ? 'icon' : 'text')]\"\n      >\n        <slot name=\"icon\">\n          <el-icon v-if=\"icon\" :class=\"ns.e('icon-inner')\">\n            <component :is=\"icon\" />\n          </el-icon>\n          <el-icon\n            v-else-if=\"currentStatus === 'success'\"\n            :class=\"[ns.e('icon-inner'), ns.is('status')]\"\n          >\n            <Check />\n          </el-icon>\n          <el-icon\n            v-else-if=\"currentStatus === 'error'\"\n            :class=\"[ns.e('icon-inner'), ns.is('status')]\"\n          >\n            <Close />\n          </el-icon>\n          <div v-else-if=\"!isSimple\" :class=\"ns.e('icon-inner')\">\n            {{ index + 1 }}\n          </div>\n        </slot>\n      </div>\n    </div>\n    <!-- title & description -->\n    <div :class=\"ns.e('main')\">\n      <div :class=\"[ns.e('title'), ns.is(currentStatus)]\">\n        <slot name=\"title\">{{ title }}</slot>\n      </div>\n      <div v-if=\"isSimple\" :class=\"ns.e('arrow')\" />\n      <div v-else :class=\"[ns.e('description'), ns.is(currentStatus)]\">\n        <slot name=\"description\">{{ description }}</slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Check, Close } from 'pit-element-icons'\nimport { isNumber } from '@pit-element-plus/utils'\nimport { STEPS_INJECTION_KEY } from './tokens'\n\nimport type { StepProps } from './item'\nimport type { CSSProperties, ComputedRef, Ref, VNode } from 'vue'\nimport type { StepsProps } from './steps'\n\nexport interface StepItemState {\n  uid: number\n  getVnode: () => VNode\n  currentStatus: ComputedRef<string>\n  internalStatus: Ref<string>\n  setIndex: (val: number) => void\n  calcProgress: (status: string) => void\n}\n\nexport interface IStepsInject {\n  props: Required<StepsProps>\n  steps: Ref<StepItemState[]>\n  addStep: (item: StepItemState) => void\n  removeStep: (item: StepItemState) => void\n}\n\ndefineOptions({\n  name: 'ElStep',\n})\n\nconst props = withDefaults(defineProps<StepProps>(), {\n  title: '',\n  description: '',\n  icon: '',\n  status: '',\n})\n\nconst ns = useNamespace('step')\nconst index = ref(-1)\nconst lineStyle = ref({})\nconst internalStatus = ref('')\nconst parent = inject(STEPS_INJECTION_KEY) as IStepsInject\nconst currentInstance = getCurrentInstance()!\nlet stepDiff = 0\nlet beforeActive = 0\n\nonMounted(() => {\n  watch(\n    [\n      () => parent.props.active,\n      () => parent.props.processStatus,\n      () => parent.props.finishStatus,\n    ],\n    ([active], [oldActive]) => {\n      beforeActive = oldActive || 0\n      stepDiff = active - beforeActive\n\n      updateStatus(active)\n    },\n    { immediate: true }\n  )\n})\n\nconst currentStatus = computed(() => {\n  return props.status || internalStatus.value\n})\n\nconst prevInternalStatus = computed(() => {\n  const prevStep = parent.steps.value[index.value - 1]\n  return prevStep ? prevStep.internalStatus.value : 'wait'\n})\n\nconst isCenter = computed(() => {\n  return parent.props.alignCenter\n})\n\nconst isVertical = computed(() => {\n  return parent.props.direction === 'vertical'\n})\n\nconst isSimple = computed(() => {\n  return parent.props.simple\n})\n\nconst stepsCount = computed(() => {\n  return parent.steps.value.length\n})\n\nconst isLast = computed(() => {\n  return parent.steps.value[stepsCount.value - 1]?.uid === currentInstance.uid\n})\n\nconst space = computed(() => {\n  return isSimple.value ? '' : parent.props.space\n})\n\nconst containerKls = computed(() => {\n  return [\n    ns.b(),\n    ns.is(isSimple.value ? 'simple' : parent.props.direction),\n    ns.is('flex', isLast.value && !space.value && !isCenter.value),\n    ns.is('center', isCenter.value && !isVertical.value && !isSimple.value),\n  ]\n})\n\nconst style = computed(() => {\n  const style: CSSProperties = {\n    flexBasis: isNumber(space.value)\n      ? `${space.value}px`\n      : space.value\n        ? space.value\n        : `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%`,\n  }\n  if (isVertical.value) return style\n  if (isLast.value) {\n    style.maxWidth = `${100 / stepsCount.value}%`\n  }\n  return style\n})\n\nconst setIndex = (val: number) => {\n  index.value = val\n}\n\nconst calcProgress = (status: string) => {\n  const isWait = status === 'wait'\n  const delayTimer =\n    Math.abs(stepDiff) === 1\n      ? 0\n      : stepDiff > 0\n        ? (index.value + 1 - beforeActive) * 150\n        : -(index.value + 1 - parent.props.active) * 150\n\n  const style: CSSProperties = {\n    transitionDelay: `${delayTimer}ms`,\n  }\n  const step = status === parent.props.processStatus || isWait ? 0 : 100\n\n  style.borderWidth = step && !isSimple.value ? '1px' : 0\n  style[parent.props.direction === 'vertical' ? 'height' : 'width'] = `${step}%`\n  lineStyle.value = style\n}\n\nconst updateStatus = (activeIndex: number) => {\n  if (activeIndex > index.value) {\n    internalStatus.value = parent.props.finishStatus\n  } else if (\n    activeIndex === index.value &&\n    prevInternalStatus.value !== 'error'\n  ) {\n    internalStatus.value = parent.props.processStatus\n  } else {\n    internalStatus.value = 'wait'\n  }\n  const prevChild = parent.steps.value[index.value - 1]\n  if (prevChild) prevChild.calcProgress(internalStatus.value)\n}\n\nconst stepItemState: StepItemState = {\n  uid: currentInstance.uid,\n  getVnode: () => currentInstance.vnode,\n  currentStatus,\n  internalStatus,\n  setIndex,\n  calcProgress,\n}\n\nparent.addStep(stepItemState)\n\nonBeforeUnmount(() => {\n  parent.removeStep(stepItemState)\n})\n</script>\n","<template>\n  <div :style=\"style\" :class=\"containerKls\">\n    <!-- icon & line -->\n    <div :class=\"[ns.e('head'), ns.is(currentStatus)]\">\n      <div v-if=\"!isSimple\" :class=\"ns.e('line')\">\n        <i :class=\"ns.e('line-inner')\" :style=\"lineStyle\" />\n      </div>\n\n      <div\n        :class=\"[ns.e('icon'), ns.is(icon || $slots.icon ? 'icon' : 'text')]\"\n      >\n        <slot name=\"icon\">\n          <el-icon v-if=\"icon\" :class=\"ns.e('icon-inner')\">\n            <component :is=\"icon\" />\n          </el-icon>\n          <el-icon\n            v-else-if=\"currentStatus === 'success'\"\n            :class=\"[ns.e('icon-inner'), ns.is('status')]\"\n          >\n            <Check />\n          </el-icon>\n          <el-icon\n            v-else-if=\"currentStatus === 'error'\"\n            :class=\"[ns.e('icon-inner'), ns.is('status')]\"\n          >\n            <Close />\n          </el-icon>\n          <div v-else-if=\"!isSimple\" :class=\"ns.e('icon-inner')\">\n            {{ index + 1 }}\n          </div>\n        </slot>\n      </div>\n    </div>\n    <!-- title & description -->\n    <div :class=\"ns.e('main')\">\n      <div :class=\"[ns.e('title'), ns.is(currentStatus)]\">\n        <slot name=\"title\">{{ title }}</slot>\n      </div>\n      <div v-if=\"isSimple\" :class=\"ns.e('arrow')\" />\n      <div v-else :class=\"[ns.e('description'), ns.is(currentStatus)]\">\n        <slot name=\"description\">{{ description }}</slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Check, Close } from 'pit-element-icons'\nimport { isNumber } from '@pit-element-plus/utils'\nimport { STEPS_INJECTION_KEY } from './tokens'\n\nimport type { StepProps } from './item'\nimport type { CSSProperties, ComputedRef, Ref, VNode } from 'vue'\nimport type { StepsProps } from './steps'\n\nexport interface StepItemState {\n  uid: number\n  getVnode: () => VNode\n  currentStatus: ComputedRef<string>\n  internalStatus: Ref<string>\n  setIndex: (val: number) => void\n  calcProgress: (status: string) => void\n}\n\nexport interface IStepsInject {\n  props: Required<StepsProps>\n  steps: Ref<StepItemState[]>\n  addStep: (item: StepItemState) => void\n  removeStep: (item: StepItemState) => void\n}\n\ndefineOptions({\n  name: 'ElStep',\n})\n\nconst props = withDefaults(defineProps<StepProps>(), {\n  title: '',\n  description: '',\n  icon: '',\n  status: '',\n})\n\nconst ns = useNamespace('step')\nconst index = ref(-1)\nconst lineStyle = ref({})\nconst internalStatus = ref('')\nconst parent = inject(STEPS_INJECTION_KEY) as IStepsInject\nconst currentInstance = getCurrentInstance()!\nlet stepDiff = 0\nlet beforeActive = 0\n\nonMounted(() => {\n  watch(\n    [\n      () => parent.props.active,\n      () => parent.props.processStatus,\n      () => parent.props.finishStatus,\n    ],\n    ([active], [oldActive]) => {\n      beforeActive = oldActive || 0\n      stepDiff = active - beforeActive\n\n      updateStatus(active)\n    },\n    { immediate: true }\n  )\n})\n\nconst currentStatus = computed(() => {\n  return props.status || internalStatus.value\n})\n\nconst prevInternalStatus = computed(() => {\n  const prevStep = parent.steps.value[index.value - 1]\n  return prevStep ? prevStep.internalStatus.value : 'wait'\n})\n\nconst isCenter = computed(() => {\n  return parent.props.alignCenter\n})\n\nconst isVertical = computed(() => {\n  return parent.props.direction === 'vertical'\n})\n\nconst isSimple = computed(() => {\n  return parent.props.simple\n})\n\nconst stepsCount = computed(() => {\n  return parent.steps.value.length\n})\n\nconst isLast = computed(() => {\n  return parent.steps.value[stepsCount.value - 1]?.uid === currentInstance.uid\n})\n\nconst space = computed(() => {\n  return isSimple.value ? '' : parent.props.space\n})\n\nconst containerKls = computed(() => {\n  return [\n    ns.b(),\n    ns.is(isSimple.value ? 'simple' : parent.props.direction),\n    ns.is('flex', isLast.value && !space.value && !isCenter.value),\n    ns.is('center', isCenter.value && !isVertical.value && !isSimple.value),\n  ]\n})\n\nconst style = computed(() => {\n  const style: CSSProperties = {\n    flexBasis: isNumber(space.value)\n      ? `${space.value}px`\n      : space.value\n        ? space.value\n        : `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%`,\n  }\n  if (isVertical.value) return style\n  if (isLast.value) {\n    style.maxWidth = `${100 / stepsCount.value}%`\n  }\n  return style\n})\n\nconst setIndex = (val: number) => {\n  index.value = val\n}\n\nconst calcProgress = (status: string) => {\n  const isWait = status === 'wait'\n  const delayTimer =\n    Math.abs(stepDiff) === 1\n      ? 0\n      : stepDiff > 0\n        ? (index.value + 1 - beforeActive) * 150\n        : -(index.value + 1 - parent.props.active) * 150\n\n  const style: CSSProperties = {\n    transitionDelay: `${delayTimer}ms`,\n  }\n  const step = status === parent.props.processStatus || isWait ? 0 : 100\n\n  style.borderWidth = step && !isSimple.value ? '1px' : 0\n  style[parent.props.direction === 'vertical' ? 'height' : 'width'] = `${step}%`\n  lineStyle.value = style\n}\n\nconst updateStatus = (activeIndex: number) => {\n  if (activeIndex > index.value) {\n    internalStatus.value = parent.props.finishStatus\n  } else if (\n    activeIndex === index.value &&\n    prevInternalStatus.value !== 'error'\n  ) {\n    internalStatus.value = parent.props.processStatus\n  } else {\n    internalStatus.value = 'wait'\n  }\n  const prevChild = parent.steps.value[index.value - 1]\n  if (prevChild) prevChild.calcProgress(internalStatus.value)\n}\n\nconst stepItemState: StepItemState = {\n  uid: currentInstance.uid,\n  getVnode: () => currentInstance.vnode,\n  currentStatus,\n  internalStatus,\n  setIndex,\n  calcProgress,\n}\n\nparent.addStep(stepItemState)\n\nonBeforeUnmount(() => {\n  parent.removeStep(stepItemState)\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Steps from './src/steps.vue'\nimport Step from './src/item.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElSteps: SFCWithInstall<typeof Steps> & {\n  Step: typeof Step\n} = withInstall(Steps, {\n  Step,\n})\nexport default ElSteps\nexport const ElStep: SFCWithInstall<typeof Step> = withNoopInstall(Step)\n\nexport * from './src/item'\nexport * from './src/steps'\nexport * from './src/tokens'\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isBoolean,\n  isNumber,\n  isString,\n  isValidComponentSize,\n} from '@pit-element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useAriaProps } from '@pit-element-plus/hooks'\n\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { ExtractPublicPropTypes, PropType } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type Switch from './switch.vue'\n\nexport interface SwitchProps {\n  /**\n   * @description binding value, it should be equivalent to either `active-value` or `inactive-value`, by default it's `boolean` type\n   */\n  modelValue?: boolean | string | number\n  /**\n   * @description whether Switch is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description whether Switch is in loading state\n   */\n  loading?: boolean\n  /**\n   * @description size of Switch\n   */\n  size?: ComponentSize\n  /**\n   * @description width of Switch\n   */\n  width?: string | number\n  /**\n   * @description whether icon or text is displayed inside dot, only the first character will be rendered for text\n   */\n  inlinePrompt?: boolean\n  /**\n   * @description component of the icon displayed in action when in `off` state\n   */\n  inactiveActionIcon?: IconPropType\n  /**\n   * @description component of the icon displayed in action when in `on` state\n   */\n  activeActionIcon?: IconPropType\n  /**\n   * @description component of the icon displayed when in `on` state, overrides `active-text`\n   */\n  activeIcon?: IconPropType\n  /**\n   * @description component of the icon displayed when in `off` state, overrides `inactive-text`\n   */\n  inactiveIcon?: IconPropType\n  /**\n   * @description text displayed when in `on` state\n   */\n  activeText?: string\n  /**\n   * @description text displayed when in `off` state\n   */\n  inactiveText?: string\n  /**\n   * @description switch value when in `on` state\n   */\n  activeValue?: boolean | string | number\n  /**\n   * @description switch value when in `off` state\n   */\n  inactiveValue?: boolean | string | number\n  /**\n   * @description input name of Switch\n   */\n  name?: string\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n  /**\n   * @description before-change hook before the switch state changes. If `false` is returned or a `Promise` is returned and then is rejected, will stop switching\n   */\n  beforeChange?: () => Promise<boolean> | boolean\n  /**\n   * @description id for input\n   */\n  id?: string\n  /**\n   * @description tabindex for input\n   */\n  tabindex?: string | number\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `SwitchProps` instead.\n */\nexport const switchProps = buildProps({\n  /**\n   * @description binding value, it should be equivalent to either `active-value` or `inactive-value`, by default it's `boolean` type\n   */\n  modelValue: {\n    type: [Boolean, String, Number],\n    default: false,\n  },\n  /**\n   * @description whether Switch is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether Switch is in loading state\n   */\n  loading: Boolean,\n  /**\n   * @description size of Switch\n   */\n  size: {\n    type: String as PropType<ComponentSize>,\n    validator: isValidComponentSize,\n  },\n  /**\n   * @description width of Switch\n   */\n  width: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description whether icon or text is displayed inside dot, only the first character will be rendered for text\n   */\n  inlinePrompt: Boolean,\n  /**\n   * @description component of the icon displayed in action when in `off` state\n   */\n  inactiveActionIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description component of the icon displayed in action when in `on` state\n   */\n  activeActionIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description component of the icon displayed when in `on` state, overrides `active-text`\n   */\n  activeIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description component of the icon displayed when in `off` state, overrides `inactive-text`\n   */\n  inactiveIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description text displayed when in `on` state\n   */\n  activeText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description text displayed when in `off` state\n   */\n  inactiveText: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description switch value when in `on` state\n   */\n  activeValue: {\n    type: [Boolean, String, Number],\n    default: true,\n  },\n  /**\n   * @description switch value when in `off` state\n   */\n  inactiveValue: {\n    type: [Boolean, String, Number],\n    default: false,\n  },\n  /**\n   * @description input name of Switch\n   */\n  name: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description before-change hook before the switch state changes. If `false` is returned or a `Promise` is returned and then is rejected, will stop switching\n   */\n  beforeChange: {\n    type: definePropType<() => Promise<boolean> | boolean>(Function),\n  },\n  /**\n   * @description id for input\n   */\n  id: String,\n  /**\n   * @description tabindex for input\n   */\n  tabindex: {\n    type: [String, Number],\n  },\n  ...useAriaProps(['ariaLabel']),\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `SwitchProps` instead.\n */\nexport type SwitchPropsPublic = ExtractPublicPropTypes<typeof switchProps>\n\nexport const switchEmits = {\n  [UPDATE_MODEL_EVENT]: (val: boolean | string | number) =>\n    isBoolean(val) || isString(val) || isNumber(val),\n  [CHANGE_EVENT]: (val: boolean | string | number) =>\n    isBoolean(val) || isString(val) || isNumber(val),\n  [INPUT_EVENT]: (val: boolean | string | number) =>\n    isBoolean(val) || isString(val) || isNumber(val),\n}\nexport type SwitchEmits = typeof switchEmits\n\nexport type SwitchInstance = InstanceType<typeof Switch> & unknown\n","<template>\n  <div :class=\"switchKls\" @click.prevent=\"switchValue\">\n    <input\n      :id=\"inputId\"\n      ref=\"input\"\n      :class=\"ns.e('input')\"\n      type=\"checkbox\"\n      role=\"switch\"\n      :aria-checked=\"checked\"\n      :aria-disabled=\"switchDisabled\"\n      :aria-label=\"ariaLabel\"\n      :name=\"name\"\n      :true-value=\"activeValue\"\n      :false-value=\"inactiveValue\"\n      :disabled=\"switchDisabled\"\n      :tabindex=\"tabindex\"\n      @change=\"handleChange\"\n      @keydown.enter=\"switchValue\"\n    />\n    <span\n      v-if=\"!inlinePrompt && (inactiveIcon || inactiveText || $slots.inactive)\"\n      :class=\"labelLeftKls\"\n    >\n      <slot name=\"inactive\">\n        <el-icon v-if=\"inactiveIcon\">\n          <component :is=\"inactiveIcon\" />\n        </el-icon>\n        <span v-if=\"!inactiveIcon && inactiveText\" :aria-hidden=\"checked\">{{\n          inactiveText\n        }}</span>\n      </slot>\n    </span>\n    <span :class=\"ns.e('core')\" :style=\"coreStyle\">\n      <div v-if=\"inlinePrompt\" :class=\"ns.e('inner')\">\n        <div v-if=\"!checked\" :class=\"ns.e('inner-wrapper')\">\n          <slot name=\"inactive\">\n            <el-icon v-if=\"inactiveIcon\">\n              <component :is=\"inactiveIcon\" />\n            </el-icon>\n            <span v-if=\"!inactiveIcon && inactiveText\">{{ inactiveText }}</span>\n          </slot>\n        </div>\n        <div v-else :class=\"ns.e('inner-wrapper')\">\n          <slot name=\"active\">\n            <el-icon v-if=\"activeIcon\">\n              <component :is=\"activeIcon\" />\n            </el-icon>\n            <span v-if=\"!activeIcon && activeText\">{{ activeText }}</span>\n          </slot>\n        </div>\n      </div>\n      <div :class=\"ns.e('action')\">\n        <el-icon v-if=\"loading\" :class=\"ns.is('loading')\">\n          <loading />\n        </el-icon>\n        <slot v-else-if=\"checked\" name=\"active-action\">\n          <el-icon v-if=\"activeActionIcon\">\n            <component :is=\"activeActionIcon\" />\n          </el-icon>\n        </slot>\n        <slot v-else-if=\"!checked\" name=\"inactive-action\">\n          <el-icon v-if=\"inactiveActionIcon\">\n            <component :is=\"inactiveActionIcon\" />\n          </el-icon>\n        </slot>\n      </div>\n    </span>\n    <span\n      v-if=\"!inlinePrompt && (activeIcon || activeText || $slots.active)\"\n      :class=\"labelRightKls\"\n    >\n      <slot name=\"active\">\n        <el-icon v-if=\"activeIcon\">\n          <component :is=\"activeIcon\" />\n        </el-icon>\n        <span v-if=\"!activeIcon && activeText\" :aria-hidden=\"!checked\">{{\n          activeText\n        }}</span>\n      </slot>\n    </span>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, shallowRef, watch } from 'vue'\nimport {\n  addUnit,\n  debugWarn,\n  isBoolean,\n  isPromise,\n  throwError,\n} from '@pit-element-plus/utils'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { Loading } from 'pit-element-icons'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { switchEmits } from './switch'\n\nimport type { CSSProperties } from 'vue'\nimport type { SwitchProps } from './switch'\n\nconst COMPONENT_NAME = 'ElSwitch'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<SwitchProps>(), {\n  modelValue: false,\n  disabled: undefined,\n  activeText: '',\n  inactiveText: '',\n  activeValue: true,\n  inactiveValue: false,\n  name: '',\n  validateEvent: true,\n  width: '',\n})\nconst emit = defineEmits(switchEmits)\n\nconst { formItem } = useFormItem()\nconst switchSize = useFormSize()\nconst ns = useNamespace('switch')\n\nconst { inputId } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst switchDisabled = useFormDisabled(\n  computed(() => {\n    if (props.loading) {\n      return true\n    }\n    return undefined\n  })\n)\nconst isControlled = ref(props.modelValue !== false)\nconst input = shallowRef<HTMLInputElement>()\n\nconst switchKls = computed(() => [\n  ns.b(),\n  ns.m(switchSize.value),\n  ns.is('disabled', switchDisabled.value),\n  ns.is('checked', checked.value),\n])\n\nconst labelLeftKls = computed(() => [\n  ns.e('label'),\n  ns.em('label', 'left'),\n  ns.is('active', !checked.value),\n])\n\nconst labelRightKls = computed(() => [\n  ns.e('label'),\n  ns.em('label', 'right'),\n  ns.is('active', checked.value),\n])\n\nconst coreStyle = computed<CSSProperties>(() => ({\n  width: addUnit(props.width),\n}))\n\nwatch(\n  () => props.modelValue,\n  () => {\n    isControlled.value = true\n  }\n)\n\nconst actualValue = computed(() => {\n  return isControlled.value ? props.modelValue : false\n})\n\nconst checked = computed(() => actualValue.value === props.activeValue)\n\nif (![props.activeValue, props.inactiveValue].includes(actualValue.value)) {\n  emit(UPDATE_MODEL_EVENT, props.inactiveValue)\n  emit(CHANGE_EVENT, props.inactiveValue)\n  emit(INPUT_EVENT, props.inactiveValue)\n}\n\nwatch(checked, (val) => {\n  input.value!.checked = val\n\n  if (props.validateEvent) {\n    formItem?.validate?.('change').catch((err) => debugWarn(err))\n  }\n})\n\nconst handleChange = () => {\n  const val = checked.value ? props.inactiveValue : props.activeValue\n  emit(UPDATE_MODEL_EVENT, val)\n  emit(CHANGE_EVENT, val)\n  emit(INPUT_EVENT, val)\n  nextTick(() => {\n    input.value!.checked = checked.value\n  })\n}\n\nconst switchValue = () => {\n  if (switchDisabled.value) return\n\n  const { beforeChange } = props\n  if (!beforeChange) {\n    handleChange()\n    return\n  }\n\n  const shouldChange = beforeChange()\n\n  const isPromiseOrBool = [\n    isPromise(shouldChange),\n    isBoolean(shouldChange),\n  ].includes(true)\n  if (!isPromiseOrBool) {\n    throwError(\n      COMPONENT_NAME,\n      'beforeChange must return type `Promise<boolean>` or `boolean`'\n    )\n  }\n\n  if (isPromise(shouldChange)) {\n    shouldChange\n      .then((result) => {\n        if (result) {\n          handleChange()\n        }\n      })\n      .catch((e) => {\n        debugWarn(COMPONENT_NAME, `some error occurred: ${e}`)\n      })\n  } else if (shouldChange) {\n    handleChange()\n  }\n}\n\nconst focus = (): void => {\n  input.value?.focus?.()\n}\n\nonMounted(() => {\n  input.value!.checked = checked.value\n})\n\ndefineExpose({\n  /**\n   *  @description manual focus to the switch component\n   **/\n  focus,\n  /**\n   * @description whether Switch is checked\n   */\n  checked,\n})\n</script>\n","<template>\n  <div :class=\"switchKls\" @click.prevent=\"switchValue\">\n    <input\n      :id=\"inputId\"\n      ref=\"input\"\n      :class=\"ns.e('input')\"\n      type=\"checkbox\"\n      role=\"switch\"\n      :aria-checked=\"checked\"\n      :aria-disabled=\"switchDisabled\"\n      :aria-label=\"ariaLabel\"\n      :name=\"name\"\n      :true-value=\"activeValue\"\n      :false-value=\"inactiveValue\"\n      :disabled=\"switchDisabled\"\n      :tabindex=\"tabindex\"\n      @change=\"handleChange\"\n      @keydown.enter=\"switchValue\"\n    />\n    <span\n      v-if=\"!inlinePrompt && (inactiveIcon || inactiveText || $slots.inactive)\"\n      :class=\"labelLeftKls\"\n    >\n      <slot name=\"inactive\">\n        <el-icon v-if=\"inactiveIcon\">\n          <component :is=\"inactiveIcon\" />\n        </el-icon>\n        <span v-if=\"!inactiveIcon && inactiveText\" :aria-hidden=\"checked\">{{\n          inactiveText\n        }}</span>\n      </slot>\n    </span>\n    <span :class=\"ns.e('core')\" :style=\"coreStyle\">\n      <div v-if=\"inlinePrompt\" :class=\"ns.e('inner')\">\n        <div v-if=\"!checked\" :class=\"ns.e('inner-wrapper')\">\n          <slot name=\"inactive\">\n            <el-icon v-if=\"inactiveIcon\">\n              <component :is=\"inactiveIcon\" />\n            </el-icon>\n            <span v-if=\"!inactiveIcon && inactiveText\">{{ inactiveText }}</span>\n          </slot>\n        </div>\n        <div v-else :class=\"ns.e('inner-wrapper')\">\n          <slot name=\"active\">\n            <el-icon v-if=\"activeIcon\">\n              <component :is=\"activeIcon\" />\n            </el-icon>\n            <span v-if=\"!activeIcon && activeText\">{{ activeText }}</span>\n          </slot>\n        </div>\n      </div>\n      <div :class=\"ns.e('action')\">\n        <el-icon v-if=\"loading\" :class=\"ns.is('loading')\">\n          <loading />\n        </el-icon>\n        <slot v-else-if=\"checked\" name=\"active-action\">\n          <el-icon v-if=\"activeActionIcon\">\n            <component :is=\"activeActionIcon\" />\n          </el-icon>\n        </slot>\n        <slot v-else-if=\"!checked\" name=\"inactive-action\">\n          <el-icon v-if=\"inactiveActionIcon\">\n            <component :is=\"inactiveActionIcon\" />\n          </el-icon>\n        </slot>\n      </div>\n    </span>\n    <span\n      v-if=\"!inlinePrompt && (activeIcon || activeText || $slots.active)\"\n      :class=\"labelRightKls\"\n    >\n      <slot name=\"active\">\n        <el-icon v-if=\"activeIcon\">\n          <component :is=\"activeIcon\" />\n        </el-icon>\n        <span v-if=\"!activeIcon && activeText\" :aria-hidden=\"!checked\">{{\n          activeText\n        }}</span>\n      </slot>\n    </span>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, shallowRef, watch } from 'vue'\nimport {\n  addUnit,\n  debugWarn,\n  isBoolean,\n  isPromise,\n  throwError,\n} from '@pit-element-plus/utils'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { Loading } from 'pit-element-icons'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { switchEmits } from './switch'\n\nimport type { CSSProperties } from 'vue'\nimport type { SwitchProps } from './switch'\n\nconst COMPONENT_NAME = 'ElSwitch'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<SwitchProps>(), {\n  modelValue: false,\n  disabled: undefined,\n  activeText: '',\n  inactiveText: '',\n  activeValue: true,\n  inactiveValue: false,\n  name: '',\n  validateEvent: true,\n  width: '',\n})\nconst emit = defineEmits(switchEmits)\n\nconst { formItem } = useFormItem()\nconst switchSize = useFormSize()\nconst ns = useNamespace('switch')\n\nconst { inputId } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst switchDisabled = useFormDisabled(\n  computed(() => {\n    if (props.loading) {\n      return true\n    }\n    return undefined\n  })\n)\nconst isControlled = ref(props.modelValue !== false)\nconst input = shallowRef<HTMLInputElement>()\n\nconst switchKls = computed(() => [\n  ns.b(),\n  ns.m(switchSize.value),\n  ns.is('disabled', switchDisabled.value),\n  ns.is('checked', checked.value),\n])\n\nconst labelLeftKls = computed(() => [\n  ns.e('label'),\n  ns.em('label', 'left'),\n  ns.is('active', !checked.value),\n])\n\nconst labelRightKls = computed(() => [\n  ns.e('label'),\n  ns.em('label', 'right'),\n  ns.is('active', checked.value),\n])\n\nconst coreStyle = computed<CSSProperties>(() => ({\n  width: addUnit(props.width),\n}))\n\nwatch(\n  () => props.modelValue,\n  () => {\n    isControlled.value = true\n  }\n)\n\nconst actualValue = computed(() => {\n  return isControlled.value ? props.modelValue : false\n})\n\nconst checked = computed(() => actualValue.value === props.activeValue)\n\nif (![props.activeValue, props.inactiveValue].includes(actualValue.value)) {\n  emit(UPDATE_MODEL_EVENT, props.inactiveValue)\n  emit(CHANGE_EVENT, props.inactiveValue)\n  emit(INPUT_EVENT, props.inactiveValue)\n}\n\nwatch(checked, (val) => {\n  input.value!.checked = val\n\n  if (props.validateEvent) {\n    formItem?.validate?.('change').catch((err) => debugWarn(err))\n  }\n})\n\nconst handleChange = () => {\n  const val = checked.value ? props.inactiveValue : props.activeValue\n  emit(UPDATE_MODEL_EVENT, val)\n  emit(CHANGE_EVENT, val)\n  emit(INPUT_EVENT, val)\n  nextTick(() => {\n    input.value!.checked = checked.value\n  })\n}\n\nconst switchValue = () => {\n  if (switchDisabled.value) return\n\n  const { beforeChange } = props\n  if (!beforeChange) {\n    handleChange()\n    return\n  }\n\n  const shouldChange = beforeChange()\n\n  const isPromiseOrBool = [\n    isPromise(shouldChange),\n    isBoolean(shouldChange),\n  ].includes(true)\n  if (!isPromiseOrBool) {\n    throwError(\n      COMPONENT_NAME,\n      'beforeChange must return type `Promise<boolean>` or `boolean`'\n    )\n  }\n\n  if (isPromise(shouldChange)) {\n    shouldChange\n      .then((result) => {\n        if (result) {\n          handleChange()\n        }\n      })\n      .catch((e) => {\n        debugWarn(COMPONENT_NAME, `some error occurred: ${e}`)\n      })\n  } else if (shouldChange) {\n    handleChange()\n  }\n}\n\nconst focus = (): void => {\n  input.value?.focus?.()\n}\n\nonMounted(() => {\n  input.value!.checked = checked.value\n})\n\ndefineExpose({\n  /**\n   *  @description manual focus to the switch component\n   **/\n  focus,\n  /**\n   * @description whether Switch is checked\n   */\n  checked,\n})\n</script>\n","<template>\n  <div :class=\"switchKls\" @click.prevent=\"switchValue\">\n    <input\n      :id=\"inputId\"\n      ref=\"input\"\n      :class=\"ns.e('input')\"\n      type=\"checkbox\"\n      role=\"switch\"\n      :aria-checked=\"checked\"\n      :aria-disabled=\"switchDisabled\"\n      :aria-label=\"ariaLabel\"\n      :name=\"name\"\n      :true-value=\"activeValue\"\n      :false-value=\"inactiveValue\"\n      :disabled=\"switchDisabled\"\n      :tabindex=\"tabindex\"\n      @change=\"handleChange\"\n      @keydown.enter=\"switchValue\"\n    />\n    <span\n      v-if=\"!inlinePrompt && (inactiveIcon || inactiveText || $slots.inactive)\"\n      :class=\"labelLeftKls\"\n    >\n      <slot name=\"inactive\">\n        <el-icon v-if=\"inactiveIcon\">\n          <component :is=\"inactiveIcon\" />\n        </el-icon>\n        <span v-if=\"!inactiveIcon && inactiveText\" :aria-hidden=\"checked\">{{\n          inactiveText\n        }}</span>\n      </slot>\n    </span>\n    <span :class=\"ns.e('core')\" :style=\"coreStyle\">\n      <div v-if=\"inlinePrompt\" :class=\"ns.e('inner')\">\n        <div v-if=\"!checked\" :class=\"ns.e('inner-wrapper')\">\n          <slot name=\"inactive\">\n            <el-icon v-if=\"inactiveIcon\">\n              <component :is=\"inactiveIcon\" />\n            </el-icon>\n            <span v-if=\"!inactiveIcon && inactiveText\">{{ inactiveText }}</span>\n          </slot>\n        </div>\n        <div v-else :class=\"ns.e('inner-wrapper')\">\n          <slot name=\"active\">\n            <el-icon v-if=\"activeIcon\">\n              <component :is=\"activeIcon\" />\n            </el-icon>\n            <span v-if=\"!activeIcon && activeText\">{{ activeText }}</span>\n          </slot>\n        </div>\n      </div>\n      <div :class=\"ns.e('action')\">\n        <el-icon v-if=\"loading\" :class=\"ns.is('loading')\">\n          <loading />\n        </el-icon>\n        <slot v-else-if=\"checked\" name=\"active-action\">\n          <el-icon v-if=\"activeActionIcon\">\n            <component :is=\"activeActionIcon\" />\n          </el-icon>\n        </slot>\n        <slot v-else-if=\"!checked\" name=\"inactive-action\">\n          <el-icon v-if=\"inactiveActionIcon\">\n            <component :is=\"inactiveActionIcon\" />\n          </el-icon>\n        </slot>\n      </div>\n    </span>\n    <span\n      v-if=\"!inlinePrompt && (activeIcon || activeText || $slots.active)\"\n      :class=\"labelRightKls\"\n    >\n      <slot name=\"active\">\n        <el-icon v-if=\"activeIcon\">\n          <component :is=\"activeIcon\" />\n        </el-icon>\n        <span v-if=\"!activeIcon && activeText\" :aria-hidden=\"!checked\">{{\n          activeText\n        }}</span>\n      </slot>\n    </span>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, shallowRef, watch } from 'vue'\nimport {\n  addUnit,\n  debugWarn,\n  isBoolean,\n  isPromise,\n  throwError,\n} from '@pit-element-plus/utils'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { Loading } from 'pit-element-icons'\nimport {\n  CHANGE_EVENT,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { switchEmits } from './switch'\n\nimport type { CSSProperties } from 'vue'\nimport type { SwitchProps } from './switch'\n\nconst COMPONENT_NAME = 'ElSwitch'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<SwitchProps>(), {\n  modelValue: false,\n  disabled: undefined,\n  activeText: '',\n  inactiveText: '',\n  activeValue: true,\n  inactiveValue: false,\n  name: '',\n  validateEvent: true,\n  width: '',\n})\nconst emit = defineEmits(switchEmits)\n\nconst { formItem } = useFormItem()\nconst switchSize = useFormSize()\nconst ns = useNamespace('switch')\n\nconst { inputId } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst switchDisabled = useFormDisabled(\n  computed(() => {\n    if (props.loading) {\n      return true\n    }\n    return undefined\n  })\n)\nconst isControlled = ref(props.modelValue !== false)\nconst input = shallowRef<HTMLInputElement>()\n\nconst switchKls = computed(() => [\n  ns.b(),\n  ns.m(switchSize.value),\n  ns.is('disabled', switchDisabled.value),\n  ns.is('checked', checked.value),\n])\n\nconst labelLeftKls = computed(() => [\n  ns.e('label'),\n  ns.em('label', 'left'),\n  ns.is('active', !checked.value),\n])\n\nconst labelRightKls = computed(() => [\n  ns.e('label'),\n  ns.em('label', 'right'),\n  ns.is('active', checked.value),\n])\n\nconst coreStyle = computed<CSSProperties>(() => ({\n  width: addUnit(props.width),\n}))\n\nwatch(\n  () => props.modelValue,\n  () => {\n    isControlled.value = true\n  }\n)\n\nconst actualValue = computed(() => {\n  return isControlled.value ? props.modelValue : false\n})\n\nconst checked = computed(() => actualValue.value === props.activeValue)\n\nif (![props.activeValue, props.inactiveValue].includes(actualValue.value)) {\n  emit(UPDATE_MODEL_EVENT, props.inactiveValue)\n  emit(CHANGE_EVENT, props.inactiveValue)\n  emit(INPUT_EVENT, props.inactiveValue)\n}\n\nwatch(checked, (val) => {\n  input.value!.checked = val\n\n  if (props.validateEvent) {\n    formItem?.validate?.('change').catch((err) => debugWarn(err))\n  }\n})\n\nconst handleChange = () => {\n  const val = checked.value ? props.inactiveValue : props.activeValue\n  emit(UPDATE_MODEL_EVENT, val)\n  emit(CHANGE_EVENT, val)\n  emit(INPUT_EVENT, val)\n  nextTick(() => {\n    input.value!.checked = checked.value\n  })\n}\n\nconst switchValue = () => {\n  if (switchDisabled.value) return\n\n  const { beforeChange } = props\n  if (!beforeChange) {\n    handleChange()\n    return\n  }\n\n  const shouldChange = beforeChange()\n\n  const isPromiseOrBool = [\n    isPromise(shouldChange),\n    isBoolean(shouldChange),\n  ].includes(true)\n  if (!isPromiseOrBool) {\n    throwError(\n      COMPONENT_NAME,\n      'beforeChange must return type `Promise<boolean>` or `boolean`'\n    )\n  }\n\n  if (isPromise(shouldChange)) {\n    shouldChange\n      .then((result) => {\n        if (result) {\n          handleChange()\n        }\n      })\n      .catch((e) => {\n        debugWarn(COMPONENT_NAME, `some error occurred: ${e}`)\n      })\n  } else if (shouldChange) {\n    handleChange()\n  }\n}\n\nconst focus = (): void => {\n  input.value?.focus?.()\n}\n\nonMounted(() => {\n  input.value!.checked = checked.value\n})\n\ndefineExpose({\n  /**\n   *  @description manual focus to the switch component\n   **/\n  focus,\n  /**\n   * @description whether Switch is checked\n   */\n  checked,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Switch from './src/switch.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElSwitch: SFCWithInstall<typeof Switch> = withInstall(Switch)\nexport default ElSwitch\n\nexport * from './src/switch'\n","import { Comment, Fragment, createVNode, isVNode, render } from 'vue'\nimport { flatMap, get, isNull, merge } from 'lodash-unified'\nimport {\n  ensureArray,\n  getProp,\n  hasOwn,\n  isArray,\n  isBoolean,\n  isFunction,\n  isNumber,\n  isObject,\n  isString,\n  isUndefined,\n  throwError,\n} from '@pit-element-plus/utils'\nimport ElTooltip, {\n  type ElTooltipProps,\n} from '@pit-element-plus/components/tooltip'\n\nimport type { DefaultRow, Table, TreeProps } from './table/defaults'\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { CSSProperties, VNode, VNodeArrayChildren } from 'vue'\n\nexport type TableOverflowTooltipOptions = Partial<\n  Pick<\n    ElTooltipProps,\n    | 'appendTo'\n    | 'effect'\n    | 'enterable'\n    | 'hideAfter'\n    | 'offset'\n    | 'placement'\n    | 'popperClass'\n    | 'popperOptions'\n    | 'showAfter'\n    | 'showArrow'\n    | 'transition'\n  >\n>\n\nexport type TableOverflowTooltipFormatter<T extends DefaultRow> = (data: {\n  row: T\n  column: TableColumnCtx<T>\n  cellValue: any\n}) => VNode | string\n\ntype RemovePopperFn = (() => void) & {\n  trigger?: HTMLElement\n  vm?: VNode\n}\n\ntype CompareValue<T> = {\n  value: T\n  index: number\n  key: any[] | null\n}\n\nexport const getCell = function (event: Event) {\n  return (event.target as HTMLElement)?.closest('td')\n}\n\nexport const orderBy = function <T extends DefaultRow>(\n  array: T[],\n  sortKey: string | null,\n  reverse: string | number | null,\n  sortMethod: TableColumnCtx<T>['sortMethod'] | null,\n  sortBy: string | string[] | ((a: T, index: number, array?: T[]) => string)\n) {\n  if (\n    !sortKey &&\n    !sortMethod &&\n    (!sortBy || (isArray(sortBy) && !sortBy.length))\n  ) {\n    return array\n  }\n  if (isString(reverse)) {\n    reverse = reverse === 'descending' ? -1 : 1\n  } else {\n    reverse = reverse && reverse < 0 ? -1 : 1\n  }\n  const getKey = sortMethod\n    ? null\n    : function (value: T, index: number) {\n        if (sortBy) {\n          return flatMap(ensureArray(sortBy), (by) => {\n            if (isString(by)) {\n              return get(value, by)\n            } else {\n              return by(value, index, array)\n            }\n          })\n        }\n        if (sortKey !== '$key') {\n          if (isObject(value) && '$value' in value) value = value.$value\n        }\n        return [\n          isObject(value) ? (sortKey ? get(value, sortKey) : null) : value,\n        ]\n      }\n  const compare = function (a: CompareValue<T>, b: CompareValue<T>) {\n    if (sortMethod) {\n      return sortMethod(a.value, b.value)\n    }\n    for (let i = 0, len = a.key?.length ?? 0; i < len; i++) {\n      if (a.key?.[i] < b.key?.[i]) {\n        return -1\n      }\n      if (a.key?.[i] > b.key?.[i]) {\n        return 1\n      }\n    }\n    return 0\n  }\n  return array\n    .map<CompareValue<T>>((value: T, index) => {\n      return {\n        value,\n        index,\n        key: getKey ? getKey(value, index) : null,\n      }\n    })\n    .sort((a, b) => {\n      let order = compare(a, b)\n      if (!order) {\n        // make stable https://en.wikipedia.org/wiki/Sorting_algorithm#Stability\n        order = a.index - b.index\n      }\n      return order * +reverse\n    })\n    .map((item) => item.value)\n}\n\nexport const getColumnById = function <T extends DefaultRow>(\n  table: {\n    columns: TableColumnCtx<T>[]\n  },\n  columnId: string\n): null | TableColumnCtx<T> {\n  let column = null\n  table.columns.forEach((item) => {\n    if (item.id === columnId) {\n      column = item\n    }\n  })\n  return column\n}\n\nexport const getColumnByKey = function <T extends DefaultRow>(\n  table: {\n    columns: TableColumnCtx<T>[]\n  },\n  columnKey: string\n): TableColumnCtx<T> {\n  let column = null\n  for (let i = 0; i < table.columns.length; i++) {\n    const item = table.columns[i]\n    if (item.columnKey === columnKey) {\n      column = item\n      break\n    }\n  }\n  if (!column)\n    throwError('ElTable', `No column matching with column-key: ${columnKey}`)\n  return column\n}\n\nexport const getColumnByCell = function <T extends DefaultRow>(\n  table: {\n    columns: TableColumnCtx<T>[]\n  },\n  cell: HTMLElement,\n  namespace: string\n): null | TableColumnCtx<T> {\n  const matches = (cell.className || '').match(\n    new RegExp(`${namespace}-table_[^\\\\s]+`, 'gm')\n  )\n  if (matches) {\n    return getColumnById(table, matches[0])\n  }\n  return null\n}\n\nexport const getRowIdentity = <T extends DefaultRow>(\n  row: T,\n  rowKey: string | ((row: T) => string) | null\n): string => {\n  if (!row) throw new Error('Row is required when get row identity')\n  if (isString(rowKey)) {\n    if (!rowKey.includes('.')) {\n      return `${row[rowKey]}`\n    }\n    const key = rowKey.split('.')\n    let current: any = row\n    for (const element of key) {\n      current = current[element]\n    }\n    //TODO: \"current\" is now any, we just satisfies typecheck here\n    // but this function can actually return a number\n    return `${current}`\n  } else if (isFunction(rowKey)) {\n    return rowKey.call(null, row)\n  }\n  return ''\n}\n\nexport const getKeysMap = function <T extends DefaultRow>(\n  array: T[],\n  rowKey: string | null,\n  flatten = false,\n  childrenKey = 'children'\n): Record<PropertyKey, { row: T; index: number }> {\n  const data = array || []\n  const arrayMap: Record<string, { row: T; index: number }> = {}\n\n  data.forEach((row, index) => {\n    arrayMap[getRowIdentity(row, rowKey)] = { row, index }\n\n    if (flatten) {\n      const children = row[childrenKey]\n      if (isArray(children)) {\n        Object.assign(arrayMap, getKeysMap(children, rowKey, true, childrenKey))\n      }\n    }\n  })\n\n  return arrayMap\n}\n\nexport function mergeOptions<T extends DefaultRow, K extends DefaultRow>(\n  defaults: T,\n  config: K\n): T & K {\n  const options = {} as T & K\n  let key: keyof T & keyof K\n  for (key in defaults) {\n    options[key] = defaults[key]\n  }\n  for (key in config) {\n    if (hasOwn(config, key)) {\n      const value = config[key]\n      if (!isUndefined(value)) {\n        options[key as keyof K] = value\n      }\n    }\n  }\n  return options\n}\n\nexport function parseWidth(width?: number | string): number | string {\n  if (width === '') return width\n  if (!isUndefined(width)) {\n    width = Number.parseInt(width as string, 10)\n    if (Number.isNaN(width)) {\n      width = ''\n    }\n  }\n  return width!\n}\n\nexport function parseMinWidth(minWidth: number | string): number | string {\n  if (minWidth === '') return minWidth\n  if (!isUndefined(minWidth)) {\n    minWidth = parseWidth(minWidth)\n    if (Number.isNaN(minWidth)) {\n      minWidth = 80\n    }\n  }\n  return minWidth\n}\n\nexport function parseHeight(height: number | string | null) {\n  if (isNumber(height)) {\n    return height\n  }\n  if (isString(height)) {\n    if (/^\\d+(?:px)?$/.test(height)) {\n      return Number.parseInt(height, 10)\n    } else {\n      return height\n    }\n  }\n  return null\n}\n\n// https://github.com/reduxjs/redux/blob/master/src/compose.ts\nexport function compose(...funcs: ((...args: any[]) => void)[]) {\n  if (funcs.length === 0) {\n    return <T>(arg: T) => arg\n  }\n  if (funcs.length === 1) {\n    return funcs[0]\n  }\n  return funcs.reduce(\n    (a, b) =>\n      (...args: any[]) =>\n        a(b(...args))\n  )\n}\n\nexport function toggleRowStatus<T extends DefaultRow>(\n  statusArr: T[],\n  row: T,\n  newVal?: boolean,\n  tableTreeProps?: TreeProps,\n  selectable?: ((row: T, index: number) => boolean) | null,\n  rowIndex?: number,\n  rowKey?: string | null\n): boolean {\n  let _rowIndex = rowIndex ?? 0\n  let changed = false\n\n  const getIndex = () => {\n    if (!rowKey) {\n      return statusArr.indexOf(row)\n    }\n\n    const id = getRowIdentity(row, rowKey)\n\n    return statusArr.findIndex((item) => getRowIdentity(item, rowKey) === id)\n  }\n\n  const index = getIndex()\n\n  const included = index !== -1\n  const isRowSelectable = selectable?.call(null, row, _rowIndex)\n\n  const toggleStatus = (type: 'add' | 'remove') => {\n    if (type === 'add') {\n      statusArr.push(row)\n    } else {\n      statusArr.splice(index, 1)\n    }\n    changed = true\n  }\n  const getChildrenCount = <T extends DefaultRow>(row: T) => {\n    let count = 0\n    const children = tableTreeProps?.children && row[tableTreeProps.children]\n    if (children && isArray(children)) {\n      count += children.length\n      children.forEach((item) => {\n        count += getChildrenCount(item)\n      })\n    }\n    return count\n  }\n\n  if (!selectable || isRowSelectable) {\n    if (isBoolean(newVal)) {\n      if (newVal && !included) {\n        toggleStatus('add')\n      } else if (!newVal && included) {\n        toggleStatus('remove')\n      }\n    } else {\n      included ? toggleStatus('remove') : toggleStatus('add')\n    }\n  }\n\n  if (\n    !tableTreeProps?.checkStrictly &&\n    tableTreeProps?.children &&\n    isArray(row[tableTreeProps.children])\n  ) {\n    row[tableTreeProps.children].forEach((item: T) => {\n      const childChanged = toggleRowStatus(\n        statusArr,\n        item,\n        newVal ?? !included,\n        tableTreeProps,\n        selectable,\n        _rowIndex + 1,\n        rowKey\n      )\n      _rowIndex += getChildrenCount(item) + 1\n      if (childChanged) {\n        changed = childChanged\n      }\n    })\n  }\n  return changed\n}\n\nexport function walkTreeNode<T extends DefaultRow>(\n  root: T[],\n  cb: (parent: any, children: T | T[] | null, level: number) => void,\n  childrenKey = 'children',\n  lazyKey = 'hasChildren',\n  lazy = false\n) {\n  const isNil = (array: any): array is null => !(isArray(array) && array.length)\n\n  function _walker(parent: any, children: T | T[], level: number) {\n    cb(parent, children, level)\n    children.forEach((item: any) => {\n      if (item[lazyKey] && lazy) {\n        cb(item, null, level + 1)\n        return\n      }\n      const children = item[childrenKey]\n      if (!isNil(children)) {\n        _walker(item, children, level + 1)\n      }\n    })\n  }\n\n  root.forEach((item: any) => {\n    if (item[lazyKey] && lazy) {\n      cb(item, null, 0)\n      return\n    }\n    const children = item[childrenKey]\n    if (!isNil(children)) {\n      _walker(item, children, 0)\n    }\n  })\n}\n\nconst getTableOverflowTooltipProps = <T extends DefaultRow>(\n  props: TableOverflowTooltipOptions,\n  innerText: string,\n  row: T,\n  column: TableColumnCtx<T> | null\n) => {\n  // merge popperOptions\n  const popperOptions = {\n    strategy: 'fixed',\n    ...props.popperOptions,\n  }\n\n  const tooltipFormatterContent = isFunction(column?.tooltipFormatter)\n    ? column.tooltipFormatter({\n        row,\n        column,\n        cellValue: getProp(row, column.property).value,\n      })\n    : undefined\n\n  if (isVNode(tooltipFormatterContent)) {\n    return {\n      slotContent: tooltipFormatterContent,\n      content: null,\n      ...props,\n      popperOptions,\n    }\n  }\n\n  return {\n    slotContent: null,\n    content: tooltipFormatterContent ?? innerText,\n    ...props,\n    popperOptions,\n  }\n}\n\nexport let removePopper: RemovePopperFn | null = null\n\nexport function createTablePopper<T extends DefaultRow>(\n  props: TableOverflowTooltipOptions,\n  popperContent: string,\n  row: T,\n  column: TableColumnCtx<T> | null,\n  trigger: HTMLElement | null,\n  table: Table<DefaultRow>\n) {\n  const tableOverflowTooltipProps = getTableOverflowTooltipProps(\n    props,\n    popperContent,\n    row,\n    column\n  )\n  const mergedProps = {\n    ...tableOverflowTooltipProps,\n    slotContent: undefined,\n  }\n  if (removePopper?.trigger === trigger) {\n    const comp = removePopper.vm?.component\n    merge(comp?.props, mergedProps)\n    if (comp && tableOverflowTooltipProps.slotContent) {\n      comp.slots.content = () => [tableOverflowTooltipProps.slotContent]\n    }\n    return\n  }\n  removePopper?.()\n  const parentNode = table?.refs.tableWrapper\n  const ns = parentNode?.dataset.prefix\n  const vm = createVNode(\n    ElTooltip,\n    {\n      virtualTriggering: true,\n      virtualRef: trigger,\n      appendTo: parentNode,\n      placement: 'top',\n      transition: 'none', // Default does not require transition\n      offset: 0,\n      hideAfter: 0,\n      ...mergedProps,\n    },\n    tableOverflowTooltipProps.slotContent\n      ? {\n          content: () => tableOverflowTooltipProps.slotContent,\n        }\n      : undefined\n  )\n  vm.appContext = { ...table.appContext, ...table }\n  const container = document.createElement('div')\n  render(vm, container)\n  vm.component!.exposed!.onOpen()\n  const scrollContainer = parentNode?.querySelector(`.${ns}-scrollbar__wrap`)\n  removePopper = () => {\n    if (vm.component?.exposed?.onClose) {\n      vm.component.exposed.onClose()\n    }\n    render(null, container)\n    const currentRemovePopper = removePopper as RemovePopperFn\n    scrollContainer?.removeEventListener('scroll', currentRemovePopper)\n    currentRemovePopper.trigger = undefined\n    currentRemovePopper.vm = undefined\n    removePopper = null\n  }\n  removePopper.trigger = trigger ?? undefined\n  removePopper.vm = vm\n  scrollContainer?.addEventListener('scroll', removePopper)\n}\n\nfunction getCurrentColumns<T extends DefaultRow>(\n  column: TableColumnCtx<T>\n): TableColumnCtx<T>[] {\n  if (column.children) {\n    return flatMap(column.children, getCurrentColumns)\n  } else {\n    return [column]\n  }\n}\n\nfunction getColSpan<T extends DefaultRow>(\n  colSpan: number,\n  column: TableColumnCtx<T>\n) {\n  return colSpan + column.colSpan\n}\n\nexport const isFixedColumn = <T extends DefaultRow>(\n  index: number,\n  fixed: string | boolean | undefined,\n  store: any,\n  realColumns?: TableColumnCtx<T>[]\n) => {\n  let start = 0\n  let after = index\n  const columns = store.states.columns.value\n  if (realColumns) {\n    // fixed column supported in grouped header\n    const curColumns = getCurrentColumns(realColumns[index])\n    const preColumns = columns.slice(0, columns.indexOf(curColumns[0]))\n\n    start = preColumns.reduce(getColSpan, 0)\n    after = start + curColumns.reduce(getColSpan, 0) - 1\n  } else {\n    start = index\n  }\n  let fixedLayout\n  switch (fixed) {\n    case 'left':\n      if (after < store.states.fixedLeafColumnsLength.value) {\n        fixedLayout = 'left'\n      }\n      break\n    case 'right':\n      if (\n        start >=\n        columns.length - store.states.rightFixedLeafColumnsLength.value\n      ) {\n        fixedLayout = 'right'\n      }\n      break\n    default:\n      if (after < store.states.fixedLeafColumnsLength.value) {\n        fixedLayout = 'left'\n      } else if (\n        start >=\n        columns.length - store.states.rightFixedLeafColumnsLength.value\n      ) {\n        fixedLayout = 'right'\n      }\n  }\n  return fixedLayout\n    ? {\n        direction: fixedLayout,\n        start,\n        after,\n      }\n    : {}\n}\n\nexport const getFixedColumnsClass = <T extends DefaultRow>(\n  namespace: string,\n  index: number,\n  fixed: string | boolean | undefined,\n  store: any,\n  realColumns?: TableColumnCtx<T>[],\n  offset = 0\n) => {\n  const classes: string[] = []\n  const { direction, start, after } = isFixedColumn(\n    index,\n    fixed,\n    store,\n    realColumns\n  )\n  if (direction) {\n    const isLeft = direction === 'left'\n    classes.push(`${namespace}-fixed-column--${direction}`)\n    if (\n      isLeft &&\n      after + offset === store.states.fixedLeafColumnsLength.value - 1\n    ) {\n      classes.push('is-last-column')\n    } else if (\n      !isLeft &&\n      start - offset ===\n        store.states.columns.value.length -\n          store.states.rightFixedLeafColumnsLength.value\n    ) {\n      classes.push('is-first-column')\n    }\n  }\n  return classes\n}\n\nfunction getOffset<T extends DefaultRow>(\n  offset: number,\n  column: TableColumnCtx<T>\n) {\n  return (\n    offset +\n    (isNull(column.realWidth) || Number.isNaN(column.realWidth)\n      ? Number(column.width)\n      : column.realWidth)\n  )\n}\n\nexport const getFixedColumnOffset = <T extends DefaultRow>(\n  index: number,\n  fixed: string | boolean | undefined,\n  store: any,\n  realColumns?: TableColumnCtx<T>[]\n) => {\n  const {\n    direction,\n    start = 0,\n    after = 0,\n  } = isFixedColumn(index, fixed, store, realColumns)\n  if (!direction) {\n    return\n  }\n  const styles: CSSProperties = {}\n  const isLeft = direction === 'left'\n  const columns = store.states.columns.value\n  if (isLeft) {\n    styles.left = columns.slice(0, start).reduce(getOffset, 0)\n  } else {\n    styles.right = columns\n      .slice(after + 1)\n      .reverse()\n      .reduce(getOffset, 0)\n  }\n  return styles\n}\n\nexport const ensurePosition = <T extends CSSProperties>(\n  style: T | undefined,\n  key: keyof T\n) => {\n  if (!style) return\n  if (!Number.isNaN(style[key])) {\n    style[key] = `${style[key]}px` as any\n  }\n}\n\nexport function ensureValidVNode(\n  vnodes: VNodeArrayChildren\n): VNodeArrayChildren | null {\n  return vnodes.some((child) => {\n    if (!isVNode(child)) return true\n    if (child.type === Comment) return false\n    if (\n      child.type === Fragment &&\n      !ensureValidVNode(child.children as VNodeArrayChildren)\n    ) {\n      return false\n    }\n    return true\n  })\n    ? vnodes\n    : null\n}\n","import { getCurrentInstance, ref } from 'vue'\nimport { getKeysMap, getRowIdentity, toggleRowStatus } from '../util'\n\nimport type { Ref } from 'vue'\nimport type { WatcherPropsData } from '.'\nimport type { DefaultRow, Table } from '../table/defaults'\n\nfunction useExpand<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n  const instance = getCurrentInstance() as Table<T>\n  const defaultExpandAll = ref(false)\n  const expandRows: Ref<T[]> = ref([])\n\n  const canRowExpand = (row: T, index: number) => {\n    const expandableFn = instance.store.states.rowExpandable.value\n    return expandableFn?.(row, index) ?? true\n  }\n\n  const updateExpandRows = () => {\n    const data = watcherData.data.value || []\n    const rowKey = watcherData.rowKey.value\n    if (defaultExpandAll.value) {\n      expandRows.value = instance.store.states.rowExpandable.value\n        ? data.filter(canRowExpand)\n        : data.slice()\n    } else if (rowKey) {\n      // TODO：这里的代码可以优化\n      const expandRowsMap = getKeysMap(expandRows.value, rowKey)\n      expandRows.value = data.filter((row, index) => {\n        const rowId = getRowIdentity(row, rowKey)\n        return !!expandRowsMap[rowId] && canRowExpand(row, index)\n      })\n    } else {\n      expandRows.value = []\n    }\n  }\n\n  const toggleRowExpansion = (row: T, expanded?: boolean) => {\n    const dataArr = watcherData.data.value || []\n    const rowIndex = dataArr.indexOf(row)\n    if (rowIndex > -1 && !canRowExpand(row, rowIndex)) return\n\n    const changed = toggleRowStatus(\n      expandRows.value,\n      row,\n      expanded,\n      undefined,\n      undefined,\n      undefined,\n      watcherData.rowKey.value\n    )\n    if (changed) {\n      instance.emit('expand-change', row, expandRows.value.slice())\n    }\n  }\n\n  const setExpandRowKeys = (rowKeys: (string | number)[]) => {\n    instance.store.assertRowKey()\n    // TODO：这里的代码可以优化\n    const data = watcherData.data.value || []\n    const rowKey = watcherData.rowKey.value\n    const keysMap = getKeysMap(data, rowKey)\n    expandRows.value = rowKeys.reduce((prev: T[], cur) => {\n      const info = keysMap[cur]\n      if (info && canRowExpand(info.row, info.index)) {\n        prev.push(info.row)\n      }\n      return prev\n    }, [])\n  }\n\n  const isRowExpanded = (row: T): boolean => {\n    const rowKey = watcherData.rowKey.value\n    if (rowKey) {\n      const expandMap = getKeysMap(expandRows.value, rowKey)\n      return !!expandMap[getRowIdentity(row, rowKey)]\n    }\n    return expandRows.value.includes(row)\n  }\n  return {\n    updateExpandRows,\n    toggleRowExpansion,\n    setExpandRowKeys,\n    isRowExpanded,\n    states: {\n      expandRows,\n      defaultExpandAll,\n    },\n  }\n}\n\nexport default useExpand\n","import { getCurrentInstance, ref, unref } from 'vue'\nimport { getRowIdentity } from '../util'\n\nimport type { Ref } from 'vue'\nimport type { DefaultRow, Table } from '../table/defaults'\nimport type { WatcherPropsData } from '.'\n\nfunction useCurrent<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n  const instance = getCurrentInstance() as Table<T>\n  const _currentRowKey: Ref<string | null> = ref(null)\n  const currentRow: Ref<T | null> = ref(null)\n\n  const setCurrentRowKey = (key: string) => {\n    instance.store.assertRowKey()\n    _currentRowKey.value = key\n    setCurrentRowByKey(key)\n  }\n\n  const restoreCurrentRowKey = () => {\n    _currentRowKey.value = null\n  }\n\n  const setCurrentRowByKey = (key: string) => {\n    const { data, rowKey } = watcherData\n    const oldCurrentRow = currentRow.value\n    let _currentRow: T | null = null\n    if (rowKey.value) {\n      _currentRow =\n        (unref(data) || []).find(\n          (item) => getRowIdentity(item, rowKey.value) === key\n        ) ?? null\n    }\n    currentRow.value = _currentRow ?? null\n    instance.emit('current-change', currentRow.value, oldCurrentRow)\n  }\n\n  const updateCurrentRow = (_currentRow: T) => {\n    const oldCurrentRow = currentRow.value\n    if (_currentRow && _currentRow !== oldCurrentRow) {\n      currentRow.value = _currentRow\n      instance.emit('current-change', currentRow.value, oldCurrentRow)\n      return\n    }\n    if (!_currentRow && oldCurrentRow) {\n      currentRow.value = null\n      instance.emit('current-change', null, oldCurrentRow)\n    }\n  }\n\n  const updateCurrentRowData = () => {\n    const rowKey = watcherData.rowKey.value\n    // data 为 null 时，解构时的默认值会被忽略\n    const data = watcherData.data.value || []\n    const oldCurrentRow = currentRow.value\n    // 当 currentRow 不在 data 中时尝试更新数据\n    if (oldCurrentRow && !data.includes(oldCurrentRow)) {\n      if (rowKey) {\n        const currentRowKey = getRowIdentity(oldCurrentRow, rowKey)\n        setCurrentRowByKey(currentRowKey)\n      } else {\n        currentRow.value = null\n        instance.emit('current-change', null, oldCurrentRow)\n      }\n    } else if (_currentRowKey.value) {\n      // 把初始时下设置的 rowKey 转化成 rowData\n      setCurrentRowByKey(_currentRowKey.value)\n      restoreCurrentRowKey()\n    }\n  }\n\n  return {\n    setCurrentRowKey,\n    restoreCurrentRowKey,\n    setCurrentRowByKey,\n    updateCurrentRow,\n    updateCurrentRowData,\n    states: {\n      _currentRowKey,\n      currentRow,\n    },\n  }\n}\n\nexport default useCurrent\n","import { computed, getCurrentInstance, ref, unref, watch } from 'vue'\nimport { isArray, isUndefined } from '@pit-element-plus/utils'\nimport { getRowIdentity, walkTreeNode } from '../util'\n\nimport type { WatcherPropsData } from '.'\nimport type { DefaultRow, Table, TableProps, TreeNode } from '../table/defaults'\n\nexport interface TreeData extends TreeNode {\n  children?: string[]\n  lazy?: boolean\n  loaded?: boolean\n}\n\nfunction useTree<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n  const expandRowKeys = ref<Array<string>>([])\n  const treeData = ref<Record<string, TreeData>>({})\n  const indent = ref(16)\n  const lazy = ref(false)\n  const lazyTreeNodeMap = ref<Record<string, T[]>>({})\n  const lazyColumnIdentifier = ref('hasChildren')\n  const childrenColumnName = ref('children')\n  const checkStrictly = ref(false)\n  const instance = getCurrentInstance() as Table<T>\n  const normalizedData = computed(() => {\n    if (!watcherData.rowKey.value) return {}\n    const data = watcherData.data.value || []\n    return normalize(data)\n  })\n  const normalizedLazyNode = computed(() => {\n    const rowKey = watcherData.rowKey.value\n    const keys = Object.keys(lazyTreeNodeMap.value)\n    const res: Record<string, { children: string[] }> = {}\n    if (!keys.length) return res\n    keys.forEach((key) => {\n      if (lazyTreeNodeMap.value[key].length) {\n        const item: (typeof res)[number] = { children: [] }\n        lazyTreeNodeMap.value[key].forEach((row) => {\n          const currentRowKey = getRowIdentity(row, rowKey)\n          item.children.push(currentRowKey)\n          if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {\n            res[currentRowKey] = { children: [] }\n          }\n        })\n        res[key] = item\n      }\n    })\n    return res\n  })\n\n  const normalize = (data: T[]) => {\n    const rowKey = watcherData.rowKey.value\n    const res = {} as Record<string, TreeData>\n    walkTreeNode(\n      data,\n      (parent, children, level) => {\n        const parentId = getRowIdentity(parent, rowKey)\n        if (isArray(children)) {\n          res[parentId] = {\n            children: children.map((row) => getRowIdentity(row, rowKey)),\n            level,\n          }\n        } else if (lazy.value) {\n          // 当 children 不存在且 lazy 为 true，该节点即为懒加载的节点\n          res[parentId] = {\n            children: [],\n            lazy: true,\n            level,\n          }\n        }\n      },\n      childrenColumnName.value,\n      lazyColumnIdentifier.value,\n      lazy.value\n    )\n    return res\n  }\n\n  const updateTreeData = (\n    ifChangeExpandRowKeys = false,\n    ifExpandAll?: boolean\n  ) => {\n    ifExpandAll ||= instance.store?.states.defaultExpandAll.value\n    const nested = normalizedData.value\n    const normalizedLazyNode_ = normalizedLazyNode.value\n    const keys = Object.keys(nested)\n    const newTreeData: Record<string, TreeData> = {}\n    if (keys.length) {\n      const oldTreeData = unref(treeData)\n      const rootLazyRowKeys: string[] = []\n      const getExpanded = (oldValue: TreeData, key: string) => {\n        if (ifChangeExpandRowKeys) {\n          if (expandRowKeys.value) {\n            return ifExpandAll || expandRowKeys.value.includes(key)\n          } else {\n            return !!(ifExpandAll || oldValue?.expanded)\n          }\n        } else {\n          const included =\n            ifExpandAll ||\n            (expandRowKeys.value && expandRowKeys.value.includes(key))\n          return !!(oldValue?.expanded || included)\n        }\n      }\n      // 合并 expanded 与 display，确保数据刷新后，状态不变\n      keys.forEach((key) => {\n        const oldValue = oldTreeData[key]\n        const newValue = { ...nested[key] }\n        newValue.expanded = getExpanded(oldValue, key)\n        if (newValue.lazy) {\n          const { loaded = false, loading = false } = oldValue || {}\n          newValue.loaded = !!loaded\n          newValue.loading = !!loading\n          rootLazyRowKeys.push(key)\n        }\n        newTreeData[key] = newValue\n      })\n      // 根据懒加载数据更新 treeData\n      const lazyKeys = Object.keys(normalizedLazyNode_)\n      if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {\n        lazyKeys.forEach((key) => {\n          const oldValue = oldTreeData[key]\n          const lazyNodeChildren = normalizedLazyNode_[key].children\n          if (rootLazyRowKeys.includes(key)) {\n            // 懒加载的 root 节点，更新一下原有的数据，原来的 children 一定是空数组\n            if (newTreeData[key].children?.length !== 0) {\n              throw new Error('[ElTable]children must be an empty array.')\n            }\n            newTreeData[key].children = lazyNodeChildren\n          } else {\n            const { loaded = false, loading = false } = oldValue || {}\n            newTreeData[key] = {\n              lazy: true,\n              loaded: !!loaded,\n              loading: !!loading,\n              expanded: getExpanded(oldValue, key),\n              children: lazyNodeChildren,\n              level: undefined,\n            }\n          }\n        })\n      }\n    }\n    treeData.value = newTreeData\n    instance.store?.updateTableScrollY()\n  }\n\n  watch(\n    () => expandRowKeys.value,\n    () => {\n      updateTreeData(true)\n    },\n    { deep: true }\n  )\n\n  watch(\n    () => normalizedData.value,\n    () => {\n      updateTreeData()\n    }\n  )\n  watch(\n    () => normalizedLazyNode.value,\n    () => {\n      updateTreeData()\n    }\n  )\n\n  const updateTreeExpandKeys = (value: string[]) => {\n    expandRowKeys.value = value\n    updateTreeData()\n  }\n  const isUseLazy = (data: TreeData) => {\n    return lazy.value && data && 'loaded' in data && !data.loaded\n  }\n  const toggleTreeExpansion = (row: T, expanded?: boolean) => {\n    instance.store.assertRowKey()\n\n    const rowKey = watcherData.rowKey.value\n    const id = getRowIdentity(row, rowKey)\n    const data = id && treeData.value[id]\n    if (id && data && 'expanded' in data) {\n      const oldExpanded = data.expanded\n      expanded = isUndefined(expanded) ? !data.expanded : expanded\n      treeData.value[id].expanded = expanded\n      if (oldExpanded !== expanded) {\n        instance.emit('expand-change', row, expanded)\n      }\n      expanded && isUseLazy(data) && loadData(row, id, data)\n      instance.store.updateTableScrollY()\n    }\n  }\n\n  const loadOrToggle = (row: T) => {\n    instance.store.assertRowKey()\n    const rowKey = watcherData.rowKey.value\n    const id = getRowIdentity(row, rowKey)\n    const data = treeData.value[id]\n    if (isUseLazy(data)) {\n      loadData(row, id, data)\n    } else {\n      toggleTreeExpansion(row, undefined)\n    }\n  }\n\n  const loadData = (row: T, key: string, treeNode: TreeNode) => {\n    const { load } = instance.props as unknown as TableProps<T>\n    if (load && !treeData.value[key].loaded) {\n      treeData.value[key].loading = true\n      load(row, treeNode, (data) => {\n        if (!isArray(data)) {\n          throw new TypeError('[ElTable] data must be an array')\n        }\n        treeData.value[key].loading = false\n        treeData.value[key].loaded = true\n        treeData.value[key].expanded = true\n        if (data.length) {\n          lazyTreeNodeMap.value[key] = data\n        }\n        instance.emit('expand-change', row, true)\n      })\n    }\n  }\n\n  const updateKeyChildren = (key: string, data: T[]) => {\n    const { lazy, rowKey } = instance.props as unknown as TableProps<T>\n    if (!lazy) return\n    if (!rowKey) throw new Error('[Table] rowKey is required in updateKeyChild')\n\n    if (lazyTreeNodeMap.value[key]) {\n      lazyTreeNodeMap.value[key] = data\n    }\n  }\n\n  return {\n    loadData,\n    loadOrToggle,\n    toggleTreeExpansion,\n    updateTreeExpandKeys,\n    updateTreeData,\n    updateKeyChildren,\n    normalize,\n    states: {\n      expandRowKeys,\n      treeData,\n      indent,\n      lazy,\n      lazyTreeNodeMap,\n      lazyColumnIdentifier,\n      childrenColumnName,\n      checkStrictly,\n    },\n  }\n}\n\nexport default useTree\n","import { computed, getCurrentInstance, ref, toRefs, unref, watch } from 'vue'\nimport { ensureArray, hasOwn, isArray, isString } from '@pit-element-plus/utils'\nimport {\n  getColumnById,\n  getColumnByKey,\n  getKeysMap,\n  getRowIdentity,\n  orderBy,\n  toggleRowStatus,\n} from '../util'\nimport useExpand from './expand'\nimport useCurrent from './current'\nimport useTree from './tree'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type {\n  DefaultRow,\n  Table,\n  TableRefs,\n  TableSortOrder,\n} from '../table/defaults'\nimport type { StoreFilter } from '.'\n\nconst sortData = <T extends DefaultRow>(\n  data: T[],\n  states: {\n    sortingColumn: TableColumnCtx<T> | null\n    sortProp: string | null\n    sortOrder: string | number | null\n  }\n) => {\n  const sortingColumn = states.sortingColumn\n  if (!sortingColumn || isString(sortingColumn.sortable)) {\n    return data\n  }\n  return orderBy(\n    data,\n    states.sortProp,\n    states.sortOrder,\n    sortingColumn.sortMethod,\n    sortingColumn.sortBy\n  )\n}\n\nconst doFlattenColumns = <T extends DefaultRow>(\n  columns: TableColumnCtx<T>[]\n) => {\n  const result: TableColumnCtx<T>[] = []\n  columns.forEach((column) => {\n    if (column.children && column.children.length > 0) {\n      // eslint-disable-next-line prefer-spread\n      result.push.apply(result, doFlattenColumns(column.children))\n    } else {\n      result.push(column)\n    }\n  })\n  return result\n}\n\nfunction useWatcher<T extends DefaultRow>() {\n  const instance = getCurrentInstance() as Table<T>\n  const { size: tableSize } = toRefs(instance.proxy?.$props as any)\n  const rowKey: Ref<string | null> = ref(null)\n  const data: Ref<T[]> = ref([])\n  const _data: Ref<T[]> = ref([])\n  const isComplex = ref(false)\n  const _columns: Ref<TableColumnCtx<T>[]> = ref([])\n  const originColumns: Ref<TableColumnCtx<T>[]> = ref([])\n  const columns: Ref<TableColumnCtx<T>[]> = ref([])\n  const fixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n  const rightFixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n  const leafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n  const fixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n  const rightFixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n  const updateOrderFns: (() => void)[] = []\n  const leafColumnsLength = ref(0)\n  const fixedLeafColumnsLength = ref(0)\n  const rightFixedLeafColumnsLength = ref(0)\n  const isAllSelected = ref(false)\n  const selection: Ref<T[]> = ref([])\n  const reserveSelection = ref(false)\n  const selectOnIndeterminate = ref(false)\n  const selectable: Ref<((row: T, index: number) => boolean) | null> = ref(null)\n  const rowExpandable: Ref<((row: T, index: number) => boolean) | null> =\n    ref(null)\n  const filters: Ref<StoreFilter> = ref({})\n  const filteredData: Ref<T[] | null> = ref(null)\n  const sortingColumn: Ref<TableColumnCtx<T> | null> = ref(null)\n  const sortProp: Ref<string | null> = ref(null)\n  const sortOrder: Ref<string | number | null> = ref(null)\n  const hoverRow: Ref<T | null> = ref(null)\n\n  const selectedMap = computed(() => {\n    return rowKey.value ? getKeysMap(selection.value, rowKey.value) : undefined\n  })\n\n  watch(\n    data,\n    () => {\n      if (instance.state) {\n        scheduleLayout(false)\n        const needUpdateFixed = instance.props.tableLayout === 'auto'\n        if (needUpdateFixed) {\n          instance.refs.tableHeaderRef?.updateFixedColumnStyle()\n        }\n      }\n    },\n    {\n      deep: true,\n    }\n  )\n\n  // 检查 rowKey 是否存在\n  const assertRowKey = () => {\n    if (!rowKey.value) throw new Error('[ElTable] prop row-key is required')\n  }\n\n  // 更新 fixed\n  const updateChildFixed = (column: TableColumnCtx<T>) => {\n    column.children?.forEach((childColumn) => {\n      childColumn.fixed = column.fixed\n      updateChildFixed(childColumn)\n    })\n  }\n\n  // 更新列\n  const updateColumns = () => {\n    _columns.value.forEach((column) => {\n      updateChildFixed(column)\n    })\n    fixedColumns.value = _columns.value.filter((column) =>\n      [true, 'left'].includes(column.fixed)\n    )\n\n    const selectColumn = _columns.value.find(\n      (column) => column.type === 'selection'\n    )\n\n    let selectColFixLeft: boolean\n    if (\n      selectColumn &&\n      selectColumn.fixed !== 'right' &&\n      !fixedColumns.value.includes(selectColumn)\n    ) {\n      const selectColumnIndex = _columns.value.indexOf(selectColumn)\n      if (selectColumnIndex === 0 && fixedColumns.value.length) {\n        fixedColumns.value.unshift(selectColumn)\n        selectColFixLeft = true\n      }\n    }\n\n    rightFixedColumns.value = _columns.value.filter(\n      (column) => column.fixed === 'right'\n    )\n\n    const notFixedColumns = _columns.value.filter(\n      (column) =>\n        (selectColFixLeft ? column.type !== 'selection' : true) && !column.fixed\n    )\n\n    originColumns.value = Array.from(fixedColumns.value)\n      .concat(notFixedColumns)\n      .concat(rightFixedColumns.value)\n    const leafColumns = doFlattenColumns(notFixedColumns)\n    const fixedLeafColumns = doFlattenColumns(fixedColumns.value)\n    const rightFixedLeafColumns = doFlattenColumns(rightFixedColumns.value)\n\n    leafColumnsLength.value = leafColumns.length\n    fixedLeafColumnsLength.value = fixedLeafColumns.length\n    rightFixedLeafColumnsLength.value = rightFixedLeafColumns.length\n\n    columns.value = Array.from(fixedLeafColumns)\n      .concat(leafColumns)\n      .concat(rightFixedLeafColumns)\n    isComplex.value =\n      fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0\n  }\n\n  // 更新 DOM\n  const scheduleLayout = (needUpdateColumns?: boolean, immediate = false) => {\n    if (needUpdateColumns) {\n      updateColumns()\n    }\n    if (immediate) {\n      instance.state.doLayout()\n    } else {\n      instance.state.debouncedUpdateLayout()\n    }\n  }\n\n  // 选择\n  const isSelected = (row: T) => {\n    if (selectedMap.value) {\n      return !!selectedMap.value[getRowIdentity(row, rowKey.value)]\n    } else {\n      return selection.value.includes(row)\n    }\n  }\n\n  const clearSelection = () => {\n    isAllSelected.value = false\n    const oldSelection = selection.value\n    selection.value = []\n    if (oldSelection.length) {\n      instance.emit('selection-change', [])\n    }\n  }\n\n  const cleanSelection = () => {\n    let deleted\n    if (rowKey.value) {\n      deleted = []\n      const childrenKey = instance?.store?.states?.childrenColumnName.value\n      const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey)\n      for (const key in selectedMap.value) {\n        if (hasOwn(selectedMap.value, key) && !dataMap[key]) {\n          deleted.push(selectedMap.value[key].row)\n        }\n      }\n    } else {\n      deleted = selection.value.filter((item) => !data.value.includes(item))\n    }\n    if (deleted.length) {\n      const newSelection = selection.value.filter(\n        (item) => !deleted.includes(item)\n      )\n      selection.value = newSelection\n      instance.emit('selection-change', newSelection.slice())\n    }\n  }\n\n  const getSelectionRows = () => {\n    return (selection.value || []).slice()\n  }\n\n  const toggleRowSelection = (\n    row: T,\n    selected?: boolean,\n    emitChange = true,\n    ignoreSelectable = false\n  ) => {\n    const treeProps = {\n      children: instance?.store?.states?.childrenColumnName.value,\n      checkStrictly: instance?.store?.states?.checkStrictly.value,\n    }\n    const changed = toggleRowStatus(\n      selection.value,\n      row,\n      selected,\n      treeProps,\n      ignoreSelectable ? undefined : selectable.value,\n      data.value.indexOf(row),\n      rowKey.value\n    )\n    if (changed) {\n      const newSelection = (selection.value || []).slice()\n      // 调用 API 修改选中值，不触发 select 事件\n      if (emitChange) {\n        instance.emit('select', newSelection, row)\n      }\n      instance.emit('selection-change', newSelection)\n    }\n  }\n\n  const _toggleAllSelection = () => {\n    // when only some rows are selected (but not all), select or deselect all of them\n    // depending on the value of selectOnIndeterminate\n    const value = selectOnIndeterminate.value\n      ? !isAllSelected.value\n      : !(isAllSelected.value || selection.value.length)\n    isAllSelected.value = value\n\n    let selectionChanged = false\n    let childrenCount = 0\n    const rowKey = instance?.store?.states?.rowKey.value\n    const { childrenColumnName } = instance.store.states\n    const treeProps = {\n      children: childrenColumnName.value,\n      checkStrictly: false, // Disable checkStrictly when selecting all\n    }\n\n    data.value.forEach((row, index) => {\n      const rowIndex = index + childrenCount\n      if (\n        toggleRowStatus(\n          selection.value,\n          row,\n          value,\n          treeProps,\n          selectable.value,\n          rowIndex,\n          rowKey\n        )\n      ) {\n        selectionChanged = true\n      }\n      childrenCount += getChildrenCount(getRowIdentity(row, rowKey))\n    })\n\n    if (selectionChanged) {\n      instance.emit(\n        'selection-change',\n        selection.value ? selection.value.slice() : []\n      )\n    }\n    instance.emit('select-all', (selection.value || []).slice())\n  }\n\n  const updateAllSelected = () => {\n    // data 为 null 时，解构时的默认值会被忽略\n    if (data.value?.length === 0) {\n      isAllSelected.value = false\n      return\n    }\n\n    const { childrenColumnName } = instance.store.states\n    let rowIndex = 0\n    let selectedCount = 0\n\n    const checkSelectedStatus = (data: T[]) => {\n      for (const row of data) {\n        const isRowSelectable =\n          selectable.value && selectable.value.call(null, row, rowIndex)\n\n        if (!isSelected(row)) {\n          if (!selectable.value || isRowSelectable) {\n            return false\n          }\n        } else {\n          selectedCount++\n        }\n        rowIndex++\n\n        if (\n          row[childrenColumnName.value]?.length &&\n          !checkSelectedStatus(row[childrenColumnName.value])\n        ) {\n          return false\n        }\n      }\n      return true\n    }\n\n    const isAllSelected_ = checkSelectedStatus(data.value || [])\n    isAllSelected.value = selectedCount === 0 ? false : isAllSelected_\n  }\n\n  const getChildrenCount = (rowKey: string) => {\n    if (!instance || !instance.store) return 0\n    const { treeData } = instance.store.states\n    let count = 0\n    const children = treeData.value[rowKey]?.children\n    if (children) {\n      count += children.length\n      children.forEach((childKey) => {\n        count += getChildrenCount(childKey)\n      })\n    }\n    return count\n  }\n\n  // 过滤与排序\n  const updateFilters = (column: TableColumnCtx<T>, values: string[]) => {\n    const filters_: Record<string, string[]> = {}\n    ensureArray(column).forEach((col) => {\n      filters.value[col.id] = values\n      filters_[col.columnKey || col.id] = values\n    })\n    return filters_\n  }\n\n  const updateSort = (\n    column: TableColumnCtx<T> | null,\n    prop: string | null,\n    order: TableSortOrder | null\n  ) => {\n    if (sortingColumn.value && sortingColumn.value !== column) {\n      sortingColumn.value.order = null\n    }\n    sortingColumn.value = column\n    sortProp.value = prop\n    sortOrder.value = order\n  }\n\n  const execFilter = () => {\n    let sourceData = unref(_data)\n    Object.keys(filters.value).forEach((columnId) => {\n      const values = filters.value[columnId]\n      if (!values || values.length === 0) return\n      const column = getColumnById(\n        {\n          columns: columns.value,\n        },\n        columnId\n      )\n      if (column && column.filterMethod) {\n        sourceData = sourceData.filter((row) => {\n          return values.some((value) =>\n            column.filterMethod.call(null, value, row, column)\n          )\n        })\n      }\n    })\n    filteredData.value = sourceData\n  }\n\n  const execSort = () => {\n    data.value = sortData(filteredData.value ?? [], {\n      sortingColumn: sortingColumn.value,\n      sortProp: sortProp.value,\n      sortOrder: sortOrder.value,\n    })\n  }\n\n  // 根据 filters 与 sort 去过滤 data\n  const execQuery = (ignore: { filter: boolean } | undefined = undefined) => {\n    if (!ignore?.filter) {\n      execFilter()\n    }\n    execSort()\n  }\n\n  const clearFilter = (columnKeys?: string[] | string) => {\n    const { tableHeaderRef } = instance.refs as TableRefs\n    if (!tableHeaderRef) return\n    const panels = Object.assign({}, tableHeaderRef.filterPanels)\n\n    const keys = Object.keys(panels)\n    if (!keys.length) return\n\n    if (isString(columnKeys)) {\n      columnKeys = [columnKeys]\n    }\n\n    if (isArray(columnKeys)) {\n      const columns_ = columnKeys.map((key) =>\n        getColumnByKey(\n          {\n            columns: columns.value,\n          },\n          key\n        )\n      )\n      keys.forEach((key) => {\n        const column = columns_.find((col) => col.id === key)\n        if (column) {\n          column.filteredValue = []\n        }\n      })\n      instance.store.commit('filterChange', {\n        column: columns_,\n        values: [],\n        silent: true,\n        multi: true,\n      })\n    } else {\n      keys.forEach((key) => {\n        const column = columns.value.find((col) => col.id === key)\n        if (column) {\n          column.filteredValue = []\n        }\n      })\n\n      filters.value = {}\n      instance.store.commit('filterChange', {\n        column: {},\n        values: [],\n        silent: true,\n      })\n    }\n  }\n\n  const clearSort = () => {\n    if (!sortingColumn.value) return\n\n    updateSort(null, null, null)\n    instance.store.commit('changeSortCondition', {\n      silent: true,\n    })\n  }\n  const {\n    setExpandRowKeys,\n    toggleRowExpansion,\n    updateExpandRows,\n    states: expandStates,\n    isRowExpanded,\n  } = useExpand({\n    data,\n    rowKey,\n  })\n  const {\n    updateTreeExpandKeys,\n    toggleTreeExpansion,\n    updateTreeData,\n    updateKeyChildren,\n    loadOrToggle,\n    states: treeStates,\n  } = useTree({\n    data,\n    rowKey,\n  })\n  const {\n    updateCurrentRowData,\n    updateCurrentRow,\n    setCurrentRowKey,\n    states: currentData,\n  } = useCurrent({\n    data,\n    rowKey,\n  })\n  // 适配层，expand-row-keys 在 Expand 与 TreeTable 中都有使用\n  const setExpandRowKeysAdapter = (val: string[]) => {\n    // 这里会触发额外的计算，但为了兼容性，暂时这么做\n    setExpandRowKeys(val)\n    updateTreeExpandKeys(val)\n  }\n\n  // 展开行与 TreeTable 都要使用\n  const toggleRowExpansionAdapter = (row: T, expanded?: boolean) => {\n    const hasExpandColumn = columns.value.some(({ type }) => type === 'expand')\n    if (hasExpandColumn) {\n      toggleRowExpansion(row, expanded)\n    } else {\n      toggleTreeExpansion(row, expanded)\n    }\n  }\n\n  return {\n    assertRowKey,\n    updateColumns,\n    scheduleLayout,\n    isSelected,\n    clearSelection,\n    cleanSelection,\n    getSelectionRows,\n    toggleRowSelection,\n    _toggleAllSelection,\n    toggleAllSelection: null as (() => void) | null,\n    updateAllSelected,\n    updateFilters,\n    updateCurrentRow,\n    updateSort,\n    execFilter,\n    execSort,\n    execQuery,\n    clearFilter,\n    clearSort,\n    toggleRowExpansion,\n    setExpandRowKeysAdapter,\n    setCurrentRowKey,\n    toggleRowExpansionAdapter,\n    isRowExpanded,\n    updateExpandRows,\n    updateCurrentRowData,\n    loadOrToggle,\n    updateTreeData,\n    updateKeyChildren,\n    states: {\n      tableSize,\n      rowKey,\n      data,\n      _data,\n      isComplex,\n      _columns,\n      originColumns,\n      columns,\n      fixedColumns,\n      rightFixedColumns,\n      leafColumns,\n      fixedLeafColumns,\n      rightFixedLeafColumns,\n      updateOrderFns,\n      leafColumnsLength,\n      fixedLeafColumnsLength,\n      rightFixedLeafColumnsLength,\n      isAllSelected,\n      selection,\n      reserveSelection,\n      selectOnIndeterminate,\n      selectable,\n      rowExpandable,\n      filters,\n      filteredData,\n      sortingColumn,\n      sortProp,\n      sortOrder,\n      hoverRow,\n      ...expandStates,\n      ...treeStates,\n      ...currentData,\n    },\n  }\n}\n\nexport default useWatcher\n","import { getCurrentInstance, nextTick, unref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport useWatcher from './watcher'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow, Filter, Sort, Table } from '../table/defaults'\n\ninterface WatcherPropsData<T extends DefaultRow> {\n  data: Ref<T[]>\n  rowKey: Ref<string | null>\n}\n\nfunction replaceColumn<T extends DefaultRow>(\n  array: TableColumnCtx<T>[],\n  column: TableColumnCtx<T>\n) {\n  return array.map((item) => {\n    if (item.id === column.id) {\n      return column\n    } else if (item.children?.length) {\n      item.children = replaceColumn(item.children, column)\n    }\n    return item\n  })\n}\n\nfunction sortColumn<T extends DefaultRow>(array: TableColumnCtx<T>[]) {\n  array.forEach((item) => {\n    item.no = item.getColumnIndex?.()\n    if (item.children?.length) {\n      sortColumn(item.children)\n    }\n  })\n  array.sort((cur, pre) => cur.no - pre.no)\n}\n\nfunction useStore<T extends DefaultRow>() {\n  const instance = getCurrentInstance() as Table<T>\n  const watcher = useWatcher<T>()\n  const ns = useNamespace('table')\n  const { t } = useLocale()\n\n  type StoreStates = typeof watcher.states\n  const mutations = {\n    setData(states: StoreStates, data: T[]) {\n      const dataInstanceChanged = unref(states._data) !== data\n      states.data.value = data\n      states._data.value = data\n      instance.store.execQuery()\n      // 数据变化，更新部分数据。\n      // 没有使用 computed，而是手动更新部分数据 https://github.com/vuejs/vue/issues/6660#issuecomment-331417140\n      instance.store.updateCurrentRowData()\n      instance.store.updateExpandRows()\n      instance.store.updateTreeData(\n        instance.store.states.defaultExpandAll.value\n      )\n      if (unref(states.reserveSelection)) {\n        instance.store.assertRowKey()\n      } else {\n        if (dataInstanceChanged) {\n          instance.store.clearSelection()\n        } else {\n          instance.store.cleanSelection()\n        }\n      }\n      instance.store.updateAllSelected()\n      if (instance.$ready) {\n        instance.store.scheduleLayout()\n      }\n    },\n\n    insertColumn(\n      states: StoreStates,\n      column: TableColumnCtx<T>,\n      parent: TableColumnCtx<T>,\n      updateColumnOrder: () => void\n    ) {\n      const array = unref(states._columns)\n      let newColumns = []\n      if (!parent) {\n        array.push(column)\n        newColumns = array\n      } else {\n        if (parent && !parent.children) {\n          parent.children = []\n        }\n        parent.children?.push(column)\n        newColumns = replaceColumn(array, parent)\n      }\n      sortColumn(newColumns)\n      states._columns.value = newColumns\n      states.updateOrderFns.push(updateColumnOrder)\n      if (column.type === 'selection') {\n        states.selectable.value = column.selectable\n        states.reserveSelection.value = column.reserveSelection\n      }\n      if (instance.$ready) {\n        instance.store.updateColumns() // hack for dynamics insert column\n        instance.store.scheduleLayout()\n      }\n    },\n\n    updateColumnOrder(states: StoreStates, column: TableColumnCtx<T>) {\n      const newColumnIndex = column.getColumnIndex?.()\n      if (newColumnIndex === column.no) return\n\n      sortColumn(states._columns.value)\n\n      if (instance.$ready) {\n        instance.store.updateColumns()\n      }\n    },\n\n    removeColumn(\n      states: StoreStates,\n      column: TableColumnCtx<T>,\n      parent: TableColumnCtx<T>,\n      updateColumnOrder: () => void\n    ) {\n      const array = unref(states._columns) || []\n      if (parent) {\n        parent.children?.splice(\n          parent.children.findIndex((item) => item.id === column.id),\n          1\n        )\n        // fix #10699, delete parent.children immediately will trigger again\n        nextTick(() => {\n          if (parent.children?.length === 0) {\n            delete parent.children\n          }\n        })\n        states._columns.value = replaceColumn(array, parent)\n      } else {\n        const index = array.indexOf(column)\n        if (index > -1) {\n          array.splice(index, 1)\n          states._columns.value = array\n        }\n      }\n\n      const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder)\n      updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1)\n\n      if (instance.$ready) {\n        instance.store.updateColumns() // hack for dynamics remove column\n        instance.store.scheduleLayout()\n      }\n    },\n\n    sort(states: StoreStates, options: Sort) {\n      const { prop, order, init } = options\n      if (prop) {\n        const column = unref(states.columns).find(\n          (column) => column.property === prop\n        )\n        if (column) {\n          column.order = order\n          instance.store.updateSort(column, prop, order)\n          instance.store.commit('changeSortCondition', { init })\n        }\n      }\n    },\n\n    changeSortCondition(states: StoreStates, options: Sort) {\n      // 修复 pr https://github.com/ElemeFE/element/pull/15012 导致的 bug\n      // https://github.com/element-plus/element-plus/pull/4640\n      const { sortingColumn, sortProp, sortOrder } = states\n      const columnValue = unref(sortingColumn),\n        propValue = unref(sortProp),\n        orderValue = unref(sortOrder)\n      if (isNull(orderValue)) {\n        states.sortingColumn.value = null\n        states.sortProp.value = null\n      }\n      const ignore = { filter: true }\n      instance.store.execQuery(ignore)\n\n      if (!options || !(options.silent || options.init)) {\n        instance.emit('sort-change', {\n          column: columnValue,\n          prop: propValue,\n          order: orderValue,\n        })\n      }\n\n      instance.store.updateTableScrollY()\n    },\n\n    filterChange(_states: StoreStates, options: Filter<T>) {\n      const { column, values, silent } = options\n      const newFilters = instance.store.updateFilters(column, values)\n      instance.store.execQuery()\n\n      if (!silent) {\n        instance.emit('filter-change', newFilters)\n      }\n      instance.store.updateTableScrollY()\n    },\n\n    toggleAllSelection() {\n      instance.store.toggleAllSelection?.()\n    },\n\n    rowSelectedChanged(_states: StoreStates, row: T) {\n      instance.store.toggleRowSelection(row)\n      instance.store.updateAllSelected()\n    },\n\n    setHoverRow(states: StoreStates, row: T) {\n      states.hoverRow.value = row\n    },\n\n    setCurrentRow(_states: StoreStates, row: T) {\n      instance.store.updateCurrentRow(row)\n    },\n  }\n  const commit = function (name: keyof typeof mutations, ...args: any[]) {\n    const mutations = instance.store.mutations\n    if (mutations[name]) {\n      ;(mutations[name] as any).apply(instance, [\n        instance.store.states,\n        ...args,\n      ])\n    } else {\n      throw new Error(`Action not found: ${name}`)\n    }\n  }\n  const updateTableScrollY = function () {\n    nextTick(() => instance.layout.updateScrollY.apply(instance.layout))\n  }\n  return {\n    ns,\n    t,\n    ...watcher,\n    mutations,\n    commit,\n    updateTableScrollY,\n  }\n}\n\nexport default useStore\n\nclass HelperStore<T extends DefaultRow> {\n  Return = useStore<T>()\n}\n\ntype StoreFilter = Record<string, string[]>\ntype Store<T extends DefaultRow> = HelperStore<T>['Return']\nexport type { WatcherPropsData, Store, StoreFilter }\n","import { watch } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { isObject } from '@pit-element-plus/utils'\nimport useStore from '.'\n\nimport type { Store } from '.'\nimport type { DefaultRow, Table, TableProps } from '../table/defaults'\n\nconst InitialStateMap = {\n  rowKey: 'rowKey',\n  defaultExpandAll: 'defaultExpandAll',\n  rowExpandable: 'rowExpandable',\n  selectOnIndeterminate: 'selectOnIndeterminate',\n  indent: 'indent',\n  lazy: 'lazy',\n  ['treeProps.hasChildren']: {\n    key: 'lazyColumnIdentifier',\n    default: 'hasChildren',\n  },\n  ['treeProps.children']: {\n    key: 'childrenColumnName',\n    default: 'children',\n  },\n  ['treeProps.checkStrictly']: {\n    key: 'checkStrictly',\n    default: false,\n  },\n}\n\nexport function createStore<T extends DefaultRow>(\n  table: Table<T>,\n  props: TableProps<T>\n) {\n  if (!table) {\n    throw new Error('Table is required.')\n  }\n\n  const store = useStore<T>()\n  // fix https://github.com/ElemeFE/element/issues/14075\n  // related pr https://github.com/ElemeFE/element/pull/14146\n  store.toggleAllSelection = debounce(store._toggleAllSelection, 10)\n  Object.keys(InitialStateMap).forEach((key) => {\n    handleValue(getArrKeysValue(props, key), key, store)\n  })\n  proxyTableProps(store, props)\n  return store\n}\n\nfunction proxyTableProps<T extends DefaultRow>(\n  store: Store<T>,\n  props: TableProps<T>\n) {\n  Object.keys(InitialStateMap).forEach((key) => {\n    watch(\n      () => getArrKeysValue(props, key),\n      (value) => {\n        handleValue(value, key, store)\n      }\n    )\n  })\n}\n\nfunction handleValue<T extends DefaultRow>(\n  value: string | boolean | Record<string, any>,\n  propsKey: string,\n  store: Store<T>\n) {\n  let newVal = value\n  let storeKey = InitialStateMap[propsKey as keyof typeof InitialStateMap]\n  if (isObject(storeKey)) {\n    newVal = newVal || storeKey.default\n    storeKey = storeKey.key\n  }\n  ;((store.states as any)[storeKey] as any).value = newVal\n}\n\nfunction getArrKeysValue<T extends DefaultRow>(\n  props: TableProps<T>,\n  key: string\n) {\n  if ((key as keyof typeof props).includes('.')) {\n    const keyList = (key as keyof typeof props).split('.')\n    let value: string | Record<string, any> = props\n    keyList.forEach((k) => {\n      value = (value as Record<string, any>)[k]\n    })\n    return value\n  } else {\n    return (props as any)[key] as boolean | string\n  }\n}\n","import { isRef, nextTick, ref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport { hasOwn, isClient, isNumber, isString } from '@pit-element-plus/utils'\nimport { parseHeight } from './util'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { TableHeader } from './table-header'\nimport type { DefaultRow, Table } from './table/defaults'\nimport type { Store } from './store'\n\nclass TableLayout<T extends DefaultRow> {\n  observers: TableHeader[]\n  table: Table<T>\n  store: Store<T>\n  columns: TableColumnCtx<T>[]\n  fit: boolean\n  showHeader: boolean\n\n  height: Ref<null | number>\n  scrollX: Ref<boolean>\n  scrollY: Ref<boolean>\n  bodyWidth: Ref<null | number>\n  fixedWidth: Ref<null | number>\n  rightFixedWidth: Ref<null | number>\n  tableHeight!: Ref<null | number>\n  headerHeight!: Ref<null | number> // Table Header Height\n  appendHeight!: Ref<null | number> // Append Slot Height\n  footerHeight!: Ref<null | number> // Table Footer Height\n  gutterWidth: number\n  constructor(options: Record<string, any>) {\n    this.observers = []\n    this.table = null as unknown as Table<T>\n    this.store = null as unknown as Store<T>\n    this.columns = []\n    this.fit = true\n    this.showHeader = true\n    this.height = ref(null)\n    this.scrollX = ref(false)\n    this.scrollY = ref(false)\n    this.bodyWidth = ref(null)\n    this.fixedWidth = ref(null)\n    this.rightFixedWidth = ref(null)\n    this.gutterWidth = 0\n    for (const name in options) {\n      if (hasOwn(options, name)) {\n        if (isRef(this[name])) {\n          ;(this[name] as Ref).value = options[name]\n        } else {\n          this[name as keyof typeof this] = options[name]\n        }\n      }\n    }\n    if (!this.table) {\n      throw new Error('Table is required for Table Layout')\n    }\n    if (!this.store) {\n      throw new Error('Store is required for Table Layout')\n    }\n  }\n\n  updateScrollY() {\n    const height = this.height.value\n    /**\n     * When the height is not initialized, it is null.\n     * After the table is initialized, when the height is not configured, the height is 0.\n     */\n    if (isNull(height)) return false\n    const scrollBarRef = this.table.refs.scrollBarRef\n    if (this.table.vnode.el && scrollBarRef?.wrapRef) {\n      let scrollY = true\n      const prevScrollY = this.scrollY.value\n      scrollY =\n        scrollBarRef.wrapRef.scrollHeight > scrollBarRef.wrapRef.clientHeight\n      this.scrollY.value = scrollY\n      return prevScrollY !== scrollY\n    }\n    return false\n  }\n\n  setHeight(value: string | number | null, prop = 'height') {\n    if (!isClient) return\n    const el = this.table.vnode.el\n    value = parseHeight(value)\n    this.height.value = Number(value)\n\n    if (!el && (value || value === 0)) {\n      nextTick(() => this.setHeight(value, prop))\n      return\n    }\n\n    if (el && isNumber(value)) {\n      el.style[prop] = `${value}px`\n      this.updateElsHeight()\n    } else if (el && isString(value)) {\n      el.style[prop] = value\n      this.updateElsHeight()\n    }\n  }\n\n  setMaxHeight(value: string | number | null) {\n    this.setHeight(value, 'max-height')\n  }\n\n  getFlattenColumns(): TableColumnCtx<T>[] {\n    const flattenColumns: TableColumnCtx<T>[] = []\n    const columns = this.table.store.states.columns.value\n    columns.forEach((column) => {\n      if (column.isColumnGroup) {\n        // eslint-disable-next-line prefer-spread\n        flattenColumns.push.apply(flattenColumns, column.columns)\n      } else {\n        flattenColumns.push(column)\n      }\n    })\n\n    return flattenColumns\n  }\n\n  updateElsHeight() {\n    this.updateScrollY()\n    this.notifyObservers('scrollable')\n  }\n\n  headerDisplayNone(elm: HTMLElement) {\n    if (!elm) return true\n    let headerChild = elm\n    while (headerChild.tagName !== 'DIV') {\n      if (getComputedStyle(headerChild).display === 'none') {\n        return true\n      }\n      headerChild = headerChild.parentElement!\n    }\n    return false\n  }\n\n  updateColumnsWidth() {\n    if (!isClient) return\n    const fit = this.fit\n    const bodyWidth = this.table.vnode.el?.clientWidth\n    let bodyMinWidth = 0\n\n    const flattenColumns = this.getFlattenColumns()\n    const flexColumns = flattenColumns.filter(\n      (column) => !isNumber(column.width)\n    )\n    flattenColumns.forEach((column) => {\n      // Clean those columns whose width changed from flex to unflex\n      if (isNumber(column.width) && column.realWidth) column.realWidth = null\n    })\n    if (flexColumns.length > 0 && fit) {\n      flattenColumns.forEach((column) => {\n        bodyMinWidth += Number(column.width || column.minWidth || 80)\n      })\n      if (bodyMinWidth <= bodyWidth) {\n        // DON'T HAVE SCROLL BAR\n        this.scrollX.value = false\n\n        const totalFlexWidth = bodyWidth - bodyMinWidth\n\n        if (flexColumns.length === 1) {\n          flexColumns[0].realWidth =\n            Number(flexColumns[0].minWidth || 80) + totalFlexWidth\n        } else {\n          const allColumnsWidth = flexColumns.reduce(\n            (prev, column) => prev + Number(column.minWidth || 80),\n            0\n          )\n          const flexWidthPerPixel = totalFlexWidth / allColumnsWidth\n          let noneFirstWidth = 0\n\n          flexColumns.forEach((column, index) => {\n            if (index === 0) return\n            const flexWidth = Math.floor(\n              Number(column.minWidth || 80) * flexWidthPerPixel\n            )\n            noneFirstWidth += flexWidth\n            column.realWidth = Number(column.minWidth || 80) + flexWidth\n          })\n\n          flexColumns[0].realWidth =\n            Number(flexColumns[0].minWidth || 80) +\n            totalFlexWidth -\n            noneFirstWidth\n        }\n      } else {\n        // HAVE HORIZONTAL SCROLL BAR\n        this.scrollX.value = true\n        flexColumns.forEach((column) => {\n          column.realWidth = Number(column.minWidth)\n        })\n      }\n\n      this.bodyWidth.value = Math.max(bodyMinWidth, bodyWidth)\n      this.table.state.resizeState.value.width = this.bodyWidth.value\n    } else {\n      flattenColumns.forEach((column) => {\n        if (!column.width && !column.minWidth) {\n          column.realWidth = 80\n        } else {\n          column.realWidth = Number(column.width || column.minWidth)\n        }\n        bodyMinWidth += column.realWidth\n      })\n      this.scrollX.value = bodyMinWidth > bodyWidth\n\n      this.bodyWidth.value = bodyMinWidth\n    }\n\n    const fixedColumns = this.store.states.fixedColumns.value\n\n    if (fixedColumns.length > 0) {\n      let fixedWidth = 0\n      fixedColumns.forEach((column) => {\n        fixedWidth += Number(column.realWidth || column.width)\n      })\n\n      this.fixedWidth.value = fixedWidth\n    }\n\n    const rightFixedColumns = this.store.states.rightFixedColumns.value\n    if (rightFixedColumns.length > 0) {\n      let rightFixedWidth = 0\n      rightFixedColumns.forEach((column) => {\n        rightFixedWidth += Number(column.realWidth || column.width)\n      })\n\n      this.rightFixedWidth.value = rightFixedWidth\n    }\n    this.notifyObservers('columns')\n  }\n\n  addObserver(observer: TableHeader) {\n    this.observers.push(observer)\n  }\n\n  removeObserver(observer: TableHeader) {\n    const index = this.observers.indexOf(observer)\n    if (index !== -1) {\n      this.observers.splice(index, 1)\n    }\n  }\n\n  notifyObservers(event: string) {\n    const observers = this.observers\n    observers.forEach((observer) => {\n      switch (event) {\n        case 'columns':\n          observer.state?.onColumnsChange(this as TableLayout<DefaultRow>)\n          break\n        case 'scrollable':\n          observer.state?.onScrollableChange(this as TableLayout<DefaultRow>)\n          break\n        default:\n          throw new Error(`Table Layout don't have event ${event}.`)\n      }\n    })\n  }\n}\n\nexport default TableLayout\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    :offset=\"0\"\n    :placement=\"placement\"\n    :show-arrow=\"false\"\n    trigger=\"click\"\n    role=\"dialog\"\n    teleported\n    effect=\"light\"\n    pure\n    loop\n    :popper-class=\"filterClassName\"\n    persistent\n    :append-to=\"appendTo\"\n    @show=\"handleShowTooltip\"\n    @hide=\"handleHideTooltip\"\n  >\n    <template #content>\n      <div\n        v-if=\"multiple\"\n        ref=\"rootRef\"\n        tabindex=\"-1\"\n        :class=\"ns.e('multiple')\"\n      >\n        <div :class=\"ns.e('content')\">\n          <el-scrollbar :wrap-class=\"ns.e('wrap')\">\n            <el-checkbox-group\n              v-model=\"filteredValue\"\n              :class=\"ns.e('checkbox-group')\"\n            >\n              <el-checkbox\n                v-for=\"filter in filters\"\n                :key=\"filter.value\"\n                :value=\"filter.value\"\n              >\n                {{ filter.text }}\n              </el-checkbox>\n            </el-checkbox-group>\n          </el-scrollbar>\n        </div>\n        <div :class=\"ns.e('bottom')\">\n          <button\n            :class=\"ns.is('disabled', filteredValue.length === 0)\"\n            :disabled=\"filteredValue.length === 0\"\n            type=\"button\"\n            @click=\"handleConfirm\"\n          >\n            {{ t('el.table.confirmFilter') }}\n          </button>\n          <button type=\"button\" @click=\"handleReset\">\n            {{ t('el.table.resetFilter') }}\n          </button>\n        </div>\n      </div>\n      <ul\n        v-else\n        ref=\"rootRef\"\n        tabindex=\"-1\"\n        role=\"radiogroup\"\n        :class=\"ns.e('list')\"\n        @keydown=\"handleKeydown\"\n      >\n        <li\n          role=\"radio\"\n          :class=\"[\n            ns.e('list-item'),\n            ns.is('active', isPropAbsent(filterValue)),\n          ]\"\n          :tabindex=\"checkedIndex === 0 ? 0 : -1\"\n          :aria-checked=\"isPropAbsent(filterValue)\"\n          @click=\"handleSelect(null, 0)\"\n        >\n          {{ t('el.table.clearFilter') }}\n        </li>\n        <li\n          v-for=\"(filter, idx) in filters\"\n          :key=\"filter.value\"\n          role=\"radio\"\n          :class=\"[ns.e('list-item'), ns.is('active', isActive(filter))]\"\n          :tabindex=\"checkedIndex === idx + 1 ? 0 : -1\"\n          :aria-checked=\"isActive(filter)\"\n          @click=\"handleSelect(filter.value, idx + 1)\"\n        >\n          {{ filter.text }}\n        </li>\n      </ul>\n    </template>\n    <template #default>\n      <button\n        type=\"button\"\n        :class=\"`${ns.namespace.value}-table__column-filter-trigger`\"\n        :aria-label=\"t('el.table.filterLabel', { column: column?.label || '' })\"\n      >\n        <el-icon>\n          <slot name=\"filter-icon\">\n            <arrow-up v-if=\"column?.filterOpened\" />\n            <arrow-down v-else />\n          </slot>\n        </el-icon>\n      </button>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, getCurrentInstance, ref } from 'vue'\nimport {\n  ElCheckbox,\n  ElCheckboxGroup,\n} from '@pit-element-plus/components/checkbox'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ArrowDown, ArrowUp } from 'pit-element-icons'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  ElTooltip,\n  useTooltipContentProps,\n} from '@pit-element-plus/components/tooltip'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { getEventCode, isPropAbsent } from '@pit-element-plus/utils'\n\nimport type { DefaultRow } from './table/defaults'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { Placement } from '@pit-element-plus/components/popper'\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { TableHeader } from './table-header'\nimport type { Store } from './store'\n\nexport default defineComponent({\n  name: 'ElTableFilterPanel',\n  components: {\n    ElCheckbox,\n    ElCheckboxGroup,\n    ElScrollbar,\n    ElTooltip,\n    ElIcon,\n    ArrowDown,\n    ArrowUp,\n  },\n  props: {\n    placement: {\n      type: String as PropType<Placement>,\n      default: 'bottom-start',\n    },\n    store: {\n      type: Object as PropType<Store<DefaultRow>>,\n    },\n    column: {\n      type: Object as PropType<TableColumnCtx<DefaultRow>>,\n    },\n    upDataColumn: {\n      type: Function,\n    },\n    appendTo: useTooltipContentProps.appendTo,\n  },\n  setup(props) {\n    const instance = getCurrentInstance()\n    const { t } = useLocale()\n    const ns = useNamespace('table-filter')\n    const parent = instance?.parent as TableHeader\n    if (props.column && !parent.filterPanels.value[props.column.id]) {\n      parent.filterPanels.value[props.column.id] = instance\n    }\n\n    const tooltipRef = ref<TooltipInstance | null>(null)\n    const rootRef = ref<HTMLElement | null>(null)\n    const checkedIndex = ref(0)\n\n    const filters = computed(() => {\n      return props.column && props.column.filters\n    })\n    const filterClassName = computed(() => {\n      if (props.column && props.column.filterClassName) {\n        return `${ns.b()} ${props.column.filterClassName}`\n      }\n      return ns.b()\n    })\n    const filterValue = computed({\n      get: () => (props.column?.filteredValue || [])[0],\n      set: (value?: string | null) => {\n        if (filteredValue.value) {\n          if (!isPropAbsent(value)) {\n            filteredValue.value.splice(0, 1, value)\n          } else {\n            filteredValue.value.splice(0, 1)\n          }\n        }\n      },\n    })\n    const filteredValue: WritableComputedRef<string[]> = computed({\n      get() {\n        if (props.column) {\n          return props.column.filteredValue || []\n        }\n        return []\n      },\n      set(value: string[]) {\n        if (props.column) {\n          props.upDataColumn?.('filteredValue', value)\n        }\n      },\n    })\n    const multiple = computed(() => {\n      if (props.column) {\n        return props.column.filterMultiple\n      }\n      return true\n    })\n    const isActive = (filter: { value: string; text: string }) => {\n      return filter.value === filterValue.value\n    }\n    const hidden = () => {\n      tooltipRef.value?.onClose()\n    }\n    const handleConfirm = () => {\n      confirmFilter(filteredValue.value)\n      hidden()\n    }\n    const handleReset = () => {\n      filteredValue.value = []\n      confirmFilter(filteredValue.value)\n      hidden()\n    }\n    const handleSelect = (_filterValue: string | null, index: number) => {\n      filterValue.value = _filterValue!\n      checkedIndex.value = index\n      if (!isPropAbsent(_filterValue)) {\n        confirmFilter(filteredValue.value)\n      } else {\n        confirmFilter([])\n      }\n      hidden()\n    }\n    const confirmFilter = (filteredValue: unknown[]) => {\n      props.store?.commit('filterChange', {\n        column: props.column,\n        values: filteredValue,\n      })\n      props.store?.updateAllSelected()\n    }\n    const handleShowTooltip = () => {\n      rootRef.value?.focus()\n      !multiple.value && initCheckedIndex()\n      if (props.column) {\n        props.upDataColumn?.('filterOpened', true)\n      }\n    }\n    const handleHideTooltip = () => {\n      if (props.column) {\n        props.upDataColumn?.('filterOpened', false)\n      }\n    }\n\n    const initCheckedIndex = () => {\n      if (isPropAbsent(filterValue)) {\n        checkedIndex.value = 0\n        return\n      }\n      const idx = (filters.value || []).findIndex((item) => {\n        return item.value === filterValue.value\n      })\n      checkedIndex.value = idx >= 0 ? idx + 1 : 0\n    }\n\n    const handleKeydown = (event: KeyboardEvent) => {\n      const code = getEventCode(event)\n      const len = (filters.value ? filters.value.length : 0) + 1\n      let index = checkedIndex.value\n      let isPreventDefault = true\n\n      switch (code) {\n        case EVENT_CODE.down:\n        case EVENT_CODE.right:\n          index = (index + 1) % len\n          break\n        case EVENT_CODE.up:\n        case EVENT_CODE.left:\n          index = (index - 1 + len) % len\n          break\n        case EVENT_CODE.tab:\n          hidden()\n          isPreventDefault = false\n          break\n        case EVENT_CODE.enter:\n        case EVENT_CODE.space:\n          if (index === 0) {\n            handleSelect(null, 0)\n          } else {\n            const item = (filters.value || [])[index - 1]\n            item.value && handleSelect(item.value, index)\n          }\n          break\n        default:\n          isPreventDefault = false\n          break\n      }\n\n      isPreventDefault && event.preventDefault()\n      checkedIndex.value = index\n      rootRef.value\n        ?.querySelector<HTMLElement>(\n          `.${ns.e('list-item')}:nth-child(${index + 1})`\n        )\n        ?.focus()\n    }\n\n    return {\n      multiple,\n      filterClassName,\n      filteredValue,\n      filterValue,\n      filters,\n      handleConfirm,\n      handleReset,\n      handleSelect,\n      isPropAbsent,\n      isActive,\n      t,\n      ns,\n      tooltipRef,\n      rootRef,\n      checkedIndex,\n      handleShowTooltip,\n      handleHideTooltip,\n      handleKeydown,\n    }\n  },\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    :offset=\"0\"\n    :placement=\"placement\"\n    :show-arrow=\"false\"\n    trigger=\"click\"\n    role=\"dialog\"\n    teleported\n    effect=\"light\"\n    pure\n    loop\n    :popper-class=\"filterClassName\"\n    persistent\n    :append-to=\"appendTo\"\n    @show=\"handleShowTooltip\"\n    @hide=\"handleHideTooltip\"\n  >\n    <template #content>\n      <div\n        v-if=\"multiple\"\n        ref=\"rootRef\"\n        tabindex=\"-1\"\n        :class=\"ns.e('multiple')\"\n      >\n        <div :class=\"ns.e('content')\">\n          <el-scrollbar :wrap-class=\"ns.e('wrap')\">\n            <el-checkbox-group\n              v-model=\"filteredValue\"\n              :class=\"ns.e('checkbox-group')\"\n            >\n              <el-checkbox\n                v-for=\"filter in filters\"\n                :key=\"filter.value\"\n                :value=\"filter.value\"\n              >\n                {{ filter.text }}\n              </el-checkbox>\n            </el-checkbox-group>\n          </el-scrollbar>\n        </div>\n        <div :class=\"ns.e('bottom')\">\n          <button\n            :class=\"ns.is('disabled', filteredValue.length === 0)\"\n            :disabled=\"filteredValue.length === 0\"\n            type=\"button\"\n            @click=\"handleConfirm\"\n          >\n            {{ t('el.table.confirmFilter') }}\n          </button>\n          <button type=\"button\" @click=\"handleReset\">\n            {{ t('el.table.resetFilter') }}\n          </button>\n        </div>\n      </div>\n      <ul\n        v-else\n        ref=\"rootRef\"\n        tabindex=\"-1\"\n        role=\"radiogroup\"\n        :class=\"ns.e('list')\"\n        @keydown=\"handleKeydown\"\n      >\n        <li\n          role=\"radio\"\n          :class=\"[\n            ns.e('list-item'),\n            ns.is('active', isPropAbsent(filterValue)),\n          ]\"\n          :tabindex=\"checkedIndex === 0 ? 0 : -1\"\n          :aria-checked=\"isPropAbsent(filterValue)\"\n          @click=\"handleSelect(null, 0)\"\n        >\n          {{ t('el.table.clearFilter') }}\n        </li>\n        <li\n          v-for=\"(filter, idx) in filters\"\n          :key=\"filter.value\"\n          role=\"radio\"\n          :class=\"[ns.e('list-item'), ns.is('active', isActive(filter))]\"\n          :tabindex=\"checkedIndex === idx + 1 ? 0 : -1\"\n          :aria-checked=\"isActive(filter)\"\n          @click=\"handleSelect(filter.value, idx + 1)\"\n        >\n          {{ filter.text }}\n        </li>\n      </ul>\n    </template>\n    <template #default>\n      <button\n        type=\"button\"\n        :class=\"`${ns.namespace.value}-table__column-filter-trigger`\"\n        :aria-label=\"t('el.table.filterLabel', { column: column?.label || '' })\"\n      >\n        <el-icon>\n          <slot name=\"filter-icon\">\n            <arrow-up v-if=\"column?.filterOpened\" />\n            <arrow-down v-else />\n          </slot>\n        </el-icon>\n      </button>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, getCurrentInstance, ref } from 'vue'\nimport {\n  ElCheckbox,\n  ElCheckboxGroup,\n} from '@pit-element-plus/components/checkbox'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ArrowDown, ArrowUp } from 'pit-element-icons'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  ElTooltip,\n  useTooltipContentProps,\n} from '@pit-element-plus/components/tooltip'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { getEventCode, isPropAbsent } from '@pit-element-plus/utils'\n\nimport type { DefaultRow } from './table/defaults'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { Placement } from '@pit-element-plus/components/popper'\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { TableHeader } from './table-header'\nimport type { Store } from './store'\n\nexport default defineComponent({\n  name: 'ElTableFilterPanel',\n  components: {\n    ElCheckbox,\n    ElCheckboxGroup,\n    ElScrollbar,\n    ElTooltip,\n    ElIcon,\n    ArrowDown,\n    ArrowUp,\n  },\n  props: {\n    placement: {\n      type: String as PropType<Placement>,\n      default: 'bottom-start',\n    },\n    store: {\n      type: Object as PropType<Store<DefaultRow>>,\n    },\n    column: {\n      type: Object as PropType<TableColumnCtx<DefaultRow>>,\n    },\n    upDataColumn: {\n      type: Function,\n    },\n    appendTo: useTooltipContentProps.appendTo,\n  },\n  setup(props) {\n    const instance = getCurrentInstance()\n    const { t } = useLocale()\n    const ns = useNamespace('table-filter')\n    const parent = instance?.parent as TableHeader\n    if (props.column && !parent.filterPanels.value[props.column.id]) {\n      parent.filterPanels.value[props.column.id] = instance\n    }\n\n    const tooltipRef = ref<TooltipInstance | null>(null)\n    const rootRef = ref<HTMLElement | null>(null)\n    const checkedIndex = ref(0)\n\n    const filters = computed(() => {\n      return props.column && props.column.filters\n    })\n    const filterClassName = computed(() => {\n      if (props.column && props.column.filterClassName) {\n        return `${ns.b()} ${props.column.filterClassName}`\n      }\n      return ns.b()\n    })\n    const filterValue = computed({\n      get: () => (props.column?.filteredValue || [])[0],\n      set: (value?: string | null) => {\n        if (filteredValue.value) {\n          if (!isPropAbsent(value)) {\n            filteredValue.value.splice(0, 1, value)\n          } else {\n            filteredValue.value.splice(0, 1)\n          }\n        }\n      },\n    })\n    const filteredValue: WritableComputedRef<string[]> = computed({\n      get() {\n        if (props.column) {\n          return props.column.filteredValue || []\n        }\n        return []\n      },\n      set(value: string[]) {\n        if (props.column) {\n          props.upDataColumn?.('filteredValue', value)\n        }\n      },\n    })\n    const multiple = computed(() => {\n      if (props.column) {\n        return props.column.filterMultiple\n      }\n      return true\n    })\n    const isActive = (filter: { value: string; text: string }) => {\n      return filter.value === filterValue.value\n    }\n    const hidden = () => {\n      tooltipRef.value?.onClose()\n    }\n    const handleConfirm = () => {\n      confirmFilter(filteredValue.value)\n      hidden()\n    }\n    const handleReset = () => {\n      filteredValue.value = []\n      confirmFilter(filteredValue.value)\n      hidden()\n    }\n    const handleSelect = (_filterValue: string | null, index: number) => {\n      filterValue.value = _filterValue!\n      checkedIndex.value = index\n      if (!isPropAbsent(_filterValue)) {\n        confirmFilter(filteredValue.value)\n      } else {\n        confirmFilter([])\n      }\n      hidden()\n    }\n    const confirmFilter = (filteredValue: unknown[]) => {\n      props.store?.commit('filterChange', {\n        column: props.column,\n        values: filteredValue,\n      })\n      props.store?.updateAllSelected()\n    }\n    const handleShowTooltip = () => {\n      rootRef.value?.focus()\n      !multiple.value && initCheckedIndex()\n      if (props.column) {\n        props.upDataColumn?.('filterOpened', true)\n      }\n    }\n    const handleHideTooltip = () => {\n      if (props.column) {\n        props.upDataColumn?.('filterOpened', false)\n      }\n    }\n\n    const initCheckedIndex = () => {\n      if (isPropAbsent(filterValue)) {\n        checkedIndex.value = 0\n        return\n      }\n      const idx = (filters.value || []).findIndex((item) => {\n        return item.value === filterValue.value\n      })\n      checkedIndex.value = idx >= 0 ? idx + 1 : 0\n    }\n\n    const handleKeydown = (event: KeyboardEvent) => {\n      const code = getEventCode(event)\n      const len = (filters.value ? filters.value.length : 0) + 1\n      let index = checkedIndex.value\n      let isPreventDefault = true\n\n      switch (code) {\n        case EVENT_CODE.down:\n        case EVENT_CODE.right:\n          index = (index + 1) % len\n          break\n        case EVENT_CODE.up:\n        case EVENT_CODE.left:\n          index = (index - 1 + len) % len\n          break\n        case EVENT_CODE.tab:\n          hidden()\n          isPreventDefault = false\n          break\n        case EVENT_CODE.enter:\n        case EVENT_CODE.space:\n          if (index === 0) {\n            handleSelect(null, 0)\n          } else {\n            const item = (filters.value || [])[index - 1]\n            item.value && handleSelect(item.value, index)\n          }\n          break\n        default:\n          isPreventDefault = false\n          break\n      }\n\n      isPreventDefault && event.preventDefault()\n      checkedIndex.value = index\n      rootRef.value\n        ?.querySelector<HTMLElement>(\n          `.${ns.e('list-item')}:nth-child(${index + 1})`\n        )\n        ?.focus()\n    }\n\n    return {\n      multiple,\n      filterClassName,\n      filteredValue,\n      filterValue,\n      filters,\n      handleConfirm,\n      handleReset,\n      handleSelect,\n      isPropAbsent,\n      isActive,\n      t,\n      ns,\n      tooltipRef,\n      rootRef,\n      checkedIndex,\n      handleShowTooltip,\n      handleHideTooltip,\n      handleKeydown,\n    }\n  },\n})\n</script>\n","import {\n  computed,\n  getCurrentInstance,\n  onBeforeMount,\n  onMounted,\n  onUnmounted,\n  onUpdated,\n} from 'vue'\n\nimport type { TableHeader } from './table-header'\nimport type TableLayout from './table-layout'\nimport type { DefaultRow, Table, TableColumnCtx } from './table/defaults'\n\nfunction useLayoutObserver<T extends DefaultRow>(root: Table<T>) {\n  const instance = getCurrentInstance() as TableHeader\n  onBeforeMount(() => {\n    tableLayout.value.addObserver(instance)\n  })\n  onMounted(() => {\n    onColumnsChange(tableLayout.value)\n    onScrollableChange(tableLayout.value)\n  })\n  onUpdated(() => {\n    onColumnsChange(tableLayout.value)\n    onScrollableChange(tableLayout.value)\n  })\n  onUnmounted(() => {\n    tableLayout.value.removeObserver(instance)\n  })\n  const tableLayout = computed(() => {\n    const layout = root.layout as TableLayout<T>\n    if (!layout) {\n      throw new Error('Can not find table layout.')\n    }\n    return layout\n  })\n  const onColumnsChange = (layout: TableLayout<T>) => {\n    const cols = root.vnode.el?.querySelectorAll('colgroup > col') || []\n    if (!cols.length) return\n    const flattenColumns = layout.getFlattenColumns()\n    const columnsMap: Record<string, TableColumnCtx<T>> = {}\n    flattenColumns.forEach((column) => {\n      columnsMap[column.id] = column\n    })\n    for (let i = 0, j = cols.length; i < j; i++) {\n      const col = cols[i]\n      const name = col.getAttribute('name')\n      const column = columnsMap[name]\n      if (column) {\n        col.setAttribute('width', column.realWidth || column.width)\n      }\n    }\n  }\n\n  const onScrollableChange = (layout: TableLayout<T>) => {\n    const cols =\n      root.vnode.el?.querySelectorAll('colgroup > col[name=gutter]') || []\n    for (let i = 0, j = cols.length; i < j; i++) {\n      const col = cols[i]\n      col.setAttribute('width', layout.scrollY.value ? layout.gutterWidth : '0')\n    }\n    const ths = root.vnode.el?.querySelectorAll('th.gutter') || []\n    for (let i = 0, j = ths.length; i < j; i++) {\n      const th = ths[i]\n      th.style.width = layout.scrollY.value ? `${layout.gutterWidth}px` : '0'\n      th.style.display = layout.scrollY.value ? '' : 'none'\n    }\n  }\n\n  return {\n    tableLayout: tableLayout.value,\n    onColumnsChange,\n    onScrollableChange,\n  }\n}\n\nexport default useLayoutObserver\n","import type { InjectionKey } from 'vue'\nimport type { DefaultRow, Table } from './table/defaults'\n\nexport const TABLE_INJECTION_KEY: InjectionKey<Table<DefaultRow>> =\n  Symbol('ElTable')\n","import { getCurrentInstance, inject, ref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport {\n  addClass,\n  hasClass,\n  isClient,\n  isElement,\n  removeClass,\n} from '@pit-element-plus/utils'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nimport type { EmitFn } from '@pit-element-plus/utils'\nimport type { TableHeaderProps } from '.'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow, TableSortOrder } from '../table/defaults'\n\nfunction useEvent<T extends DefaultRow>(\n  props: TableHeaderProps<T>,\n  emit: EmitFn<string[]>\n) {\n  const instance = getCurrentInstance()\n  const parent = inject(TABLE_INJECTION_KEY)\n  const handleFilterClick = (event: Event) => {\n    event.stopPropagation()\n    return\n  }\n\n  const handleHeaderClick = (event: Event, column: TableColumnCtx<T>) => {\n    if (!column.filters && column.sortable) {\n      handleSortClick(event, column, false)\n    } else if (column.filterable && !column.sortable) {\n      handleFilterClick(event)\n    }\n    parent?.emit('header-click', column, event)\n  }\n\n  const handleHeaderContextMenu = (event: Event, column: TableColumnCtx<T>) => {\n    parent?.emit('header-contextmenu', column, event)\n  }\n  const draggingColumn = ref<TableColumnCtx<T> | null>(null)\n  const dragging = ref(false)\n  const dragState = ref<{\n    startMouseLeft: number\n    startLeft: number\n    startColumnLeft: number\n    tableLeft: number\n  }>()\n  const handleMouseDown = (event: MouseEvent, column: TableColumnCtx<T>) => {\n    if (!isClient) return\n    if (column.children && column.children.length > 0) return\n    /* istanbul ignore if */\n    if (\n      draggingColumn.value &&\n      props.border &&\n      draggingColumn.value.id === column.id\n    ) {\n      dragging.value = true\n\n      const table = parent\n      emit('set-drag-visible', true)\n      const tableEl = table?.vnode.el\n      const tableLeft = tableEl?.getBoundingClientRect().left\n      const columnEl = instance?.vnode?.el?.querySelector(`th.${column.id}`)\n      const columnRect = columnEl.getBoundingClientRect()\n      const minLeft = columnRect.left - tableLeft + 30\n\n      addClass(columnEl, 'noclick')\n\n      dragState.value = {\n        startMouseLeft: event.clientX,\n        startLeft: columnRect.right - tableLeft,\n        startColumnLeft: columnRect.left - tableLeft,\n        tableLeft,\n      }\n      const resizeProxy = table?.refs.resizeProxy as HTMLElement\n      resizeProxy.style.left = `${(dragState.value as any).startLeft}px`\n\n      document.onselectstart = function () {\n        return false\n      }\n      document.ondragstart = function () {\n        return false\n      }\n\n      const handleMouseMove = (event: MouseEvent) => {\n        const deltaLeft =\n          event.clientX - (dragState.value as any).startMouseLeft\n        const proxyLeft = (dragState.value as any).startLeft + deltaLeft\n\n        resizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`\n      }\n\n      const handleMouseUp = () => {\n        if (dragging.value) {\n          const { startColumnLeft, startLeft } = dragState.value as any\n          const finalLeft = Number.parseInt(resizeProxy.style.left, 10)\n          const columnWidth = finalLeft - startColumnLeft\n          column.width = column.realWidth = columnWidth\n          table?.emit(\n            'header-dragend',\n            column.width,\n            startLeft - startColumnLeft,\n            column,\n            event\n          )\n          requestAnimationFrame(() => {\n            props.store.scheduleLayout(false, true)\n          })\n          document.body.style.cursor = ''\n          dragging.value = false\n          draggingColumn.value = null\n          dragState.value = undefined\n          emit('set-drag-visible', false)\n        }\n\n        document.removeEventListener('mousemove', handleMouseMove)\n        document.removeEventListener('mouseup', handleMouseUp)\n        document.onselectstart = null\n        document.ondragstart = null\n\n        setTimeout(() => {\n          removeClass(columnEl, 'noclick')\n        }, 0)\n      }\n\n      document.addEventListener('mousemove', handleMouseMove)\n      document.addEventListener('mouseup', handleMouseUp)\n    }\n  }\n\n  const handleMouseMove = (event: MouseEvent, column: TableColumnCtx<T>) => {\n    if (!props.border || (column.children && column.children.length > 0)) return\n    const el = event.target as HTMLElement\n    const target = isElement(el) ? el.closest('th') : null\n    if (!target) {\n      return\n    }\n\n    const isSortable = hasClass(target, 'is-sortable')\n\n    if (isSortable) {\n      const cursor = dragging.value ? 'col-resize' : ''\n      target.style.cursor = cursor\n\n      const caret = target.querySelector<HTMLElement>('.caret-wrapper')\n      if (caret) {\n        caret.style.cursor = cursor\n      }\n    }\n\n    if (!column.resizable || dragging.value) {\n      draggingColumn.value = null\n      return\n    }\n\n    const rect = target.getBoundingClientRect()\n    const isLastTh = target.parentNode?.lastElementChild === target\n    const allowDrag = props.allowDragLastColumn || !isLastTh\n    const isResizeHandleActive =\n      rect.width > 12 && rect.right - event.clientX < 8 && allowDrag\n    const cursor = isResizeHandleActive ? 'col-resize' : ''\n\n    document.body.style.cursor = cursor\n    draggingColumn.value = isResizeHandleActive ? (column as any) : null\n    if (isSortable) {\n      target.style.cursor = cursor\n    }\n  }\n\n  const handleMouseOut = () => {\n    if (!isClient || dragging.value) return\n    document.body.style.cursor = ''\n  }\n  const toggleOrder = ({ order, sortOrders }: TableColumnCtx<T>) => {\n    if ((order as string) === '') return sortOrders[0]\n    const index = sortOrders.indexOf(order || null)\n    return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1]\n  }\n  const handleSortClick = (\n    event: Event,\n    column: TableColumnCtx<T>,\n    givenOrder?: TableSortOrder | boolean\n  ) => {\n    event.stopPropagation()\n    const order = (\n      column.order === givenOrder ? null : givenOrder || toggleOrder(column)\n    ) as TableSortOrder | null\n    const target = (event.target as HTMLElement)?.closest('th')\n\n    if (target) {\n      if (hasClass(target, 'noclick')) {\n        removeClass(target, 'noclick')\n        return\n      }\n    }\n\n    if (!column.sortable) return\n\n    const clickTarget = event.currentTarget\n\n    if (\n      ['ascending', 'descending'].some(\n        (str) =>\n          hasClass(clickTarget as Element, str) &&\n          !column.sortOrders.includes(str as TableSortOrder)\n      )\n    ) {\n      return\n    }\n\n    const states = props.store.states\n    let sortProp = states.sortProp.value\n    let sortOrder\n    const sortingColumn = states.sortingColumn.value\n\n    if (\n      sortingColumn !== column ||\n      (sortingColumn === column && isNull(sortingColumn.order))\n    ) {\n      if (sortingColumn) {\n        sortingColumn.order = null\n      }\n      states.sortingColumn.value = column\n      sortProp = column.property\n    }\n    if (!order) {\n      sortOrder = column.order = null\n    } else {\n      sortOrder = column.order = order\n    }\n\n    states.sortProp.value = sortProp\n    states.sortOrder.value = sortOrder\n\n    parent?.store.commit('changeSortCondition')\n  }\n\n  return {\n    handleHeaderClick,\n    handleHeaderContextMenu,\n    handleMouseDown,\n    handleMouseMove,\n    handleMouseOut,\n    handleSortClick,\n    handleFilterClick,\n  }\n}\n\nexport default useEvent\n","import { inject } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isString } from '@pit-element-plus/utils'\nimport {\n  ensurePosition,\n  getFixedColumnOffset,\n  getFixedColumnsClass,\n} from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow } from '../table/defaults'\nimport type { TableHeaderProps } from '.'\n\nfunction useStyle<T extends DefaultRow>(props: TableHeaderProps<T>) {\n  const parent = inject(TABLE_INJECTION_KEY)\n  const ns = useNamespace('table')\n\n  const getHeaderRowStyle = (rowIndex: number) => {\n    const headerRowStyle = parent?.props.headerRowStyle\n    if (isFunction(headerRowStyle)) {\n      return headerRowStyle.call(null, { rowIndex })\n    }\n    return headerRowStyle\n  }\n\n  const getHeaderRowClass = (rowIndex: number): string => {\n    const classes: string[] = []\n    const headerRowClassName = parent?.props.headerRowClassName\n    if (isString(headerRowClassName)) {\n      classes.push(headerRowClassName)\n    } else if (isFunction(headerRowClassName)) {\n      classes.push(headerRowClassName.call(null, { rowIndex }))\n    }\n\n    return classes.join(' ')\n  }\n\n  const getHeaderCellStyle = (\n    rowIndex: number,\n    columnIndex: number,\n    row: T,\n    column: TableColumnCtx<T>\n  ) => {\n    let headerCellStyles = parent?.props.headerCellStyle ?? {}\n    if (isFunction(headerCellStyles)) {\n      headerCellStyles = headerCellStyles.call(null, {\n        rowIndex,\n        columnIndex,\n        row,\n        column,\n      })\n    }\n    const fixedStyle = getFixedColumnOffset<T>(\n      columnIndex,\n      column.fixed,\n      props.store,\n      row as unknown as TableColumnCtx<T>[]\n    )\n    ensurePosition(fixedStyle, 'left')\n    ensurePosition(fixedStyle, 'right')\n    return Object.assign({}, headerCellStyles, fixedStyle)\n  }\n\n  const getHeaderCellClass = (\n    rowIndex: number,\n    columnIndex: number,\n    row: T,\n    column: TableColumnCtx<T>\n  ) => {\n    const fixedClasses = getFixedColumnsClass<T>(\n      ns.b(),\n      columnIndex,\n      column.fixed,\n      props.store,\n      row as unknown as TableColumnCtx<T>[]\n    )\n    const classes = [\n      column.id,\n      column.order,\n      column.headerAlign,\n      column.className,\n      column.labelClassName,\n      ...fixedClasses,\n    ]\n\n    if (!column.children) {\n      classes.push('is-leaf')\n    }\n\n    if (column.sortable) {\n      classes.push('is-sortable')\n    }\n\n    const headerCellClassName = parent?.props.headerCellClassName\n    if (isString(headerCellClassName)) {\n      classes.push(headerCellClassName)\n    } else if (isFunction(headerCellClassName)) {\n      classes.push(\n        headerCellClassName.call(null, {\n          rowIndex,\n          columnIndex,\n          row,\n          column,\n        })\n      )\n    }\n\n    classes.push(ns.e('cell'))\n\n    return classes.filter((className) => Boolean(className)).join(' ')\n  }\n\n  return {\n    getHeaderRowStyle,\n    getHeaderRowClass,\n    getHeaderCellStyle,\n    getHeaderCellClass,\n  }\n}\n\nexport default useStyle\n","import { computed, inject } from 'vue'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nimport type { DefaultRow } from '../table/defaults'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { TableHeaderProps } from '.'\n\nconst getAllColumns = <T extends DefaultRow>(\n  columns: TableColumnCtx<T>[]\n): TableColumnCtx<T>[] => {\n  const result: TableColumnCtx<T>[] = []\n  columns.forEach((column) => {\n    if (column.children) {\n      result.push(column)\n      // eslint-disable-next-line prefer-spread\n      result.push.apply(result, getAllColumns(column.children))\n    } else {\n      result.push(column)\n    }\n  })\n  return result\n}\n\nexport const convertToRows = <T extends DefaultRow>(\n  originColumns: TableColumnCtx<T>[]\n): TableColumnCtx<T>[][] => {\n  let maxLevel = 1\n  const traverse = (column: TableColumnCtx<T>, parent?: TableColumnCtx<T>) => {\n    if (parent) {\n      column.level = parent.level + 1\n      if (maxLevel < column.level) {\n        maxLevel = column.level\n      }\n    }\n    if (column.children) {\n      let colSpan = 0\n      column.children.forEach((subColumn) => {\n        traverse(subColumn, column)\n        colSpan += subColumn.colSpan\n      })\n      column.colSpan = colSpan\n    } else {\n      column.colSpan = 1\n    }\n  }\n\n  originColumns.forEach((column) => {\n    column.level = 1\n    traverse(column, undefined)\n  })\n\n  const rows: TableColumnCtx<T>[][] = []\n  for (let i = 0; i < maxLevel; i++) {\n    rows.push([])\n  }\n\n  const allColumns: TableColumnCtx<T>[] = getAllColumns(originColumns)\n\n  allColumns.forEach((column) => {\n    if (!column.children) {\n      column.rowSpan = maxLevel - column.level + 1\n    } else {\n      column.rowSpan = 1\n      column.children.forEach((col) => (col.isSubColumn = true))\n    }\n    rows[column.level - 1].push(column)\n  })\n\n  return rows\n}\n\nfunction useUtils<T extends DefaultRow>(props: TableHeaderProps<T>) {\n  const parent = inject(TABLE_INJECTION_KEY)\n  const columnRows = computed(() => {\n    return convertToRows(props.store.states.originColumns.value)\n  })\n  const isGroup = computed(() => {\n    const result = columnRows.value.length > 1\n    if (result && parent) {\n      parent.state.isGroup.value = true\n    }\n    return result\n  })\n  const toggleAllSelection = (event: Event) => {\n    event.stopPropagation()\n    parent?.store.commit('toggleAllSelection')\n  }\n  return {\n    isGroup,\n    toggleAllSelection,\n    columnRows,\n  }\n}\n\nexport default useUtils\n","import {\n  defineComponent,\n  getCurrentInstance,\n  h,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  reactive,\n  ref,\n  watch,\n} from 'vue'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useLocale } from '@pit-element-plus/hooks/use-locale'\nimport FilterPanel from '../filter-panel.vue'\nimport useLayoutObserver from '../layout-observer'\nimport { TABLE_INJECTION_KEY } from '../tokens'\nimport useEvent from './event-helper'\nimport useStyle from './style.helper'\nimport useUtils from './utils-helper'\n\nimport type TableLayout from '../table-layout'\nimport type { ComponentInternalInstance, PropType, Ref } from 'vue'\nimport type { DefaultRow, Sort } from '../table/defaults'\nimport type { Store } from '../store'\n\nexport interface TableHeader extends ComponentInternalInstance {\n  state: {\n    onColumnsChange: (layout: TableLayout<any>) => void\n    onScrollableChange: (layout: TableLayout<any>) => void\n  }\n  filterPanels: Ref<DefaultRow>\n}\nexport interface TableHeaderProps<T extends DefaultRow> {\n  fixed: string\n  store: Store<T>\n  border: boolean\n  defaultSort: Sort\n  allowDragLastColumn: boolean\n}\n\nexport default defineComponent({\n  name: 'ElTableHeader',\n  components: {\n    ElCheckbox,\n  },\n  props: {\n    fixed: {\n      type: String,\n      default: '',\n    },\n    store: {\n      required: true,\n      type: Object as PropType<TableHeaderProps<any>['store']>,\n    },\n    border: Boolean,\n    defaultSort: {\n      type: Object as PropType<TableHeaderProps<any>['defaultSort']>,\n      default: () => {\n        return {\n          prop: '',\n          order: '',\n        }\n      },\n    },\n    appendFilterPanelTo: {\n      type: String,\n    },\n    allowDragLastColumn: {\n      type: Boolean,\n    },\n  },\n  setup(props, { emit }) {\n    const instance = getCurrentInstance() as TableHeader\n    const parent = inject(TABLE_INJECTION_KEY)\n    const ns = useNamespace('table')\n    const filterPanels = ref({})\n    const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent!)\n\n    const isTableLayoutAuto = parent?.props.tableLayout === 'auto'\n    const saveIndexSelection = reactive(new Map())\n    const theadRef = ref()\n\n    let delayId: ReturnType<typeof setTimeout> | undefined\n    const updateFixedColumnStyle = () => {\n      delayId = setTimeout(() => {\n        if (saveIndexSelection.size > 0) {\n          saveIndexSelection.forEach((column, key) => {\n            const el = theadRef.value.querySelector(\n              `.${key.replace(/\\s/g, '.')}`\n            )\n            if (el) {\n              const width = el.getBoundingClientRect().width\n              column.width = width || column.width\n            }\n          })\n          saveIndexSelection.clear()\n        }\n      })\n    }\n\n    watch(saveIndexSelection, updateFixedColumnStyle)\n    onBeforeUnmount(() => {\n      if (delayId) {\n        clearTimeout(delayId)\n        delayId = undefined\n      }\n    })\n\n    onMounted(async () => {\n      // Need double await, because updateColumns is executed after nextTick for now\n      await nextTick()\n      await nextTick()\n      const { prop, order } = props.defaultSort\n      parent?.store.commit('sort', { prop, order, init: true })\n\n      updateFixedColumnStyle()\n    })\n\n    const {\n      handleHeaderClick,\n      handleHeaderContextMenu,\n      handleMouseDown,\n      handleMouseMove,\n      handleMouseOut,\n      handleSortClick,\n      handleFilterClick,\n    } = useEvent(props as TableHeaderProps<any>, emit)\n    const {\n      getHeaderRowStyle,\n      getHeaderRowClass,\n      getHeaderCellStyle,\n      getHeaderCellClass,\n    } = useStyle(props as TableHeaderProps<any>)\n    const { isGroup, toggleAllSelection, columnRows } = useUtils(\n      props as TableHeaderProps<any>\n    )\n\n    const { t } = useLocale()\n\n    instance.state = {\n      onColumnsChange,\n      onScrollableChange,\n    }\n    instance.filterPanels = filterPanels\n\n    return {\n      ns,\n      t,\n      filterPanels,\n      onColumnsChange,\n      onScrollableChange,\n      columnRows,\n      getHeaderRowClass,\n      getHeaderRowStyle,\n      getHeaderCellClass,\n      getHeaderCellStyle,\n      handleHeaderClick,\n      handleHeaderContextMenu,\n      handleMouseDown,\n      handleMouseMove,\n      handleMouseOut,\n      handleSortClick,\n      handleFilterClick,\n      isGroup,\n      toggleAllSelection,\n      saveIndexSelection,\n      isTableLayoutAuto,\n      theadRef,\n      updateFixedColumnStyle,\n    }\n  },\n  render() {\n    const {\n      ns,\n      t,\n      isGroup,\n      columnRows,\n      getHeaderCellStyle,\n      getHeaderCellClass,\n      getHeaderRowClass,\n      getHeaderRowStyle,\n      handleHeaderClick,\n      handleHeaderContextMenu,\n      handleMouseDown,\n      handleMouseMove,\n      handleSortClick,\n      handleMouseOut,\n      store,\n      $parent,\n      saveIndexSelection,\n      isTableLayoutAuto,\n    } = this\n    let rowSpan = 1\n    return h(\n      'thead',\n      {\n        ref: 'theadRef',\n        class: ns.is('group', isGroup),\n      },\n      columnRows.map((subColumns, rowIndex) =>\n        h(\n          'tr',\n          {\n            class: getHeaderRowClass(rowIndex),\n            key: rowIndex,\n            style: getHeaderRowStyle(rowIndex),\n          },\n          subColumns.map((column, cellIndex) => {\n            if (column.rowSpan > rowSpan) {\n              rowSpan = column.rowSpan\n            }\n            const _class = getHeaderCellClass(\n              rowIndex,\n              cellIndex,\n              subColumns,\n              column\n            )\n            if (isTableLayoutAuto && column.fixed) {\n              saveIndexSelection.set(_class, column)\n            }\n            return h(\n              'th',\n              {\n                class: _class,\n                colspan: column.colSpan,\n                key: `${column.id}-thead`,\n                rowspan: column.rowSpan,\n                scope: column.colSpan > 1 ? 'colgroup' : 'col',\n                ariaSort: column.sortable ? column.order : undefined,\n                style: getHeaderCellStyle(\n                  rowIndex,\n                  cellIndex,\n                  subColumns,\n                  column\n                ),\n                onClick: ($event: Event) => {\n                  if (\n                    ($event.currentTarget as Element)?.classList.contains(\n                      'noclick'\n                    )\n                  ) {\n                    return\n                  }\n                  handleHeaderClick($event, column)\n                },\n                onContextmenu: ($event: MouseEvent) =>\n                  handleHeaderContextMenu($event, column),\n                onMousedown: ($event: MouseEvent) =>\n                  handleMouseDown($event, column),\n                onMousemove: ($event: MouseEvent) =>\n                  handleMouseMove($event, column),\n                onMouseout: handleMouseOut,\n              },\n              [\n                h(\n                  'div',\n                  {\n                    class: [\n                      'cell',\n                      column.filteredValue && column.filteredValue.length > 0\n                        ? 'highlight'\n                        : '',\n                    ],\n                  },\n                  [\n                    column.renderHeader\n                      ? column.renderHeader({\n                          column,\n                          $index: cellIndex,\n                          store,\n                          _self: $parent,\n                        })\n                      : column.label,\n                    column.sortable &&\n                      h(\n                        'button',\n                        {\n                          type: 'button',\n                          class: 'caret-wrapper',\n                          'aria-label': t('el.table.sortLabel', {\n                            column: column.label || '',\n                          }),\n                          onClick: ($event: Event) =>\n                            handleSortClick($event, column),\n                        },\n                        [\n                          h('i', {\n                            onClick: ($event: Event) =>\n                              handleSortClick($event, column, 'ascending'),\n                            class: 'sort-caret ascending',\n                          }),\n                          h('i', {\n                            onClick: ($event: Event) =>\n                              handleSortClick($event, column, 'descending'),\n                            class: 'sort-caret descending',\n                          }),\n                        ]\n                      ),\n                    column.filterable &&\n                      h(\n                        FilterPanel as any,\n                        {\n                          store,\n                          placement: column.filterPlacement || 'bottom-start',\n                          appendTo: ($parent as any)?.appendFilterPanelTo,\n                          column,\n                          upDataColumn: (key: never, value: never) => {\n                            column[key] = value\n                          },\n                        },\n                        {\n                          'filter-icon': () =>\n                            column.renderFilterIcon\n                              ? column.renderFilterIcon({\n                                  filterOpened: column.filterOpened,\n                                })\n                              : null,\n                        }\n                      ),\n                  ]\n                ),\n              ]\n            )\n          })\n        )\n      )\n    )\n  },\n})\n","import { h, inject, ref } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { addClass, hasClass, removeClass } from '@pit-element-plus/utils'\nimport {\n  createTablePopper,\n  getCell,\n  getColumnByCell,\n  removePopper,\n} from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { TableBodyProps } from './defaults'\nimport type { TableOverflowTooltipOptions } from '../util'\nimport type { DefaultRow } from '../table/defaults'\n\nfunction isGreaterThan(a: number, b: number, epsilon = 0.03) {\n  return a - b > epsilon\n}\n\nfunction useEvents<T extends DefaultRow>(props: Partial<TableBodyProps<T>>) {\n  const parent = inject(TABLE_INJECTION_KEY)\n  const tooltipContent = ref('')\n  const tooltipTrigger = ref(h('div'))\n  const handleEvent = (event: Event, row: T, name: string) => {\n    const table = parent\n    const cell = getCell(event)\n    let column: TableColumnCtx<T> | null = null\n    const namespace = table?.vnode.el?.dataset.prefix\n    if (cell) {\n      column = getColumnByCell(\n        {\n          columns: props.store?.states.columns.value ?? [],\n        },\n        cell,\n        namespace\n      )\n      if (column) {\n        table?.emit(`cell-${name}`, row, column, cell, event)\n      }\n    }\n    table?.emit(`row-${name}`, row, column, event)\n  }\n  const handleDoubleClick = (event: Event, row: T) => {\n    handleEvent(event, row, 'dblclick')\n  }\n  const handleClick = (event: Event, row: T) => {\n    props.store?.commit('setCurrentRow', row)\n    handleEvent(event, row, 'click')\n  }\n  const handleContextMenu = (event: Event, row: T) => {\n    handleEvent(event, row, 'contextmenu')\n  }\n  const handleMouseEnter = debounce((index: number) => {\n    props.store?.commit('setHoverRow', index)\n  }, 30)\n  const handleMouseLeave = debounce(() => {\n    props.store?.commit('setHoverRow', null)\n  }, 30)\n  const getPadding = (el: HTMLElement) => {\n    const style = window.getComputedStyle(el, null)\n    const paddingLeft = Number.parseInt(style.paddingLeft, 10) || 0\n    const paddingRight = Number.parseInt(style.paddingRight, 10) || 0\n    const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\n    const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\n    return {\n      left: paddingLeft,\n      right: paddingRight,\n      top: paddingTop,\n      bottom: paddingBottom,\n    }\n  }\n\n  const toggleRowClassByCell = (\n    rowSpan: number,\n    event: MouseEvent,\n    toggle: (el: Element, cls: string) => void\n  ) => {\n    let node: Node | null | undefined = (event?.target as Element | null)\n      ?.parentNode\n    while (rowSpan > 1) {\n      node = node?.nextSibling\n      if (!node || node.nodeName !== 'TR') break\n      toggle(node as Element, 'hover-row hover-fixed-row')\n      rowSpan--\n    }\n  }\n\n  const handleCellMouseEnter = (\n    event: MouseEvent,\n    row: T,\n    tooltipOptions: TableOverflowTooltipOptions\n  ) => {\n    if (!parent) return\n    const table = parent\n    const cell = getCell(event)\n    const namespace = table?.vnode.el?.dataset.prefix\n    let column: TableColumnCtx<T> | null = null\n    if (cell) {\n      column = getColumnByCell(\n        {\n          columns: props.store?.states.columns.value ?? [],\n        },\n        cell,\n        namespace\n      )\n      if (!column) {\n        return\n      }\n      if (cell.rowSpan > 1) {\n        toggleRowClassByCell(cell.rowSpan, event, addClass)\n      }\n      const hoverState = (table.hoverState = {\n        cell,\n        column: column as any,\n        row,\n      })\n      table?.emit(\n        'cell-mouse-enter',\n        hoverState.row,\n        hoverState.column,\n        hoverState.cell,\n        event\n      )\n    }\n\n    if (!tooltipOptions) {\n      if (removePopper?.trigger === cell) {\n        removePopper?.()\n      }\n      return\n    }\n\n    // 判断是否text-overflow, 如果是就显示tooltip\n    const cellChild = (event.target as HTMLElement).querySelector(\n      '.cell'\n    ) as HTMLElement\n    if (\n      !(\n        hasClass(cellChild, `${namespace}-tooltip`) &&\n        cellChild.childNodes.length &&\n        cellChild.textContent?.trim()\n      )\n    ) {\n      return\n    }\n    // use range width instead of scrollWidth to determine whether the text is overflowing\n    // to address a potential FireFox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1074543#c3\n    const range = document.createRange()\n    range.setStart(cellChild, 0)\n    range.setEnd(cellChild, cellChild.childNodes.length)\n    /** detail: https://github.com/element-plus/element-plus/issues/10790\n     *  What went wrong?\n     *  UI > Browser > Zoom, In Blink/WebKit, getBoundingClientRect() sometimes returns inexact values, probably due to lost precision during internal calculations. In the example above:\n     *    - Expected: 188\n     *    - Actual: 188.00000762939453\n     */\n    const { width: rangeWidth, height: rangeHeight } =\n      range.getBoundingClientRect()\n    const { width: cellChildWidth, height: cellChildHeight } =\n      cellChild.getBoundingClientRect()\n\n    const { top, left, right, bottom } = getPadding(cellChild)\n    const horizontalPadding = left + right\n    const verticalPadding = top + bottom\n    if (\n      isGreaterThan(rangeWidth + horizontalPadding, cellChildWidth) ||\n      isGreaterThan(rangeHeight + verticalPadding, cellChildHeight) ||\n      // When using a high-resolution screen, it is possible that a returns cellChild.scrollWidth value of 1921 and\n      // cellChildWidth returns a value of 1920.994140625. #16856 #16673\n      isGreaterThan(cellChild.scrollWidth, cellChildWidth)\n    ) {\n      createTablePopper(\n        tooltipOptions,\n        (cell?.innerText || cell?.textContent) ?? '',\n        row,\n        column,\n        cell,\n        table\n      )\n    } else if (removePopper?.trigger === cell) {\n      removePopper?.()\n    }\n  }\n  const handleCellMouseLeave = (event: MouseEvent) => {\n    const cell = getCell(event)\n    if (!cell) return\n    if (cell.rowSpan > 1) {\n      toggleRowClassByCell(cell.rowSpan, event, removeClass)\n    }\n    const oldHoverState = parent?.hoverState\n    parent?.emit(\n      'cell-mouse-leave',\n      oldHoverState?.row,\n      oldHoverState?.column,\n      oldHoverState?.cell,\n      event\n    )\n  }\n\n  return {\n    handleDoubleClick,\n    handleClick,\n    handleContextMenu,\n    handleMouseEnter,\n    handleMouseLeave,\n    handleCellMouseEnter,\n    handleCellMouseLeave,\n    tooltipContent,\n    tooltipTrigger,\n  }\n}\n\nexport default useEvents\n","import { inject } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  isArray,\n  isFunction,\n  isObject,\n  isString,\n} from '@pit-element-plus/utils'\nimport {\n  ensurePosition,\n  getFixedColumnOffset,\n  getFixedColumnsClass,\n} from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { TableBodyProps } from './defaults'\nimport type { DefaultRow, Table } from '../table/defaults'\n\nfunction useStyles<T extends DefaultRow>(props: Partial<TableBodyProps<T>>) {\n  const parent = inject(TABLE_INJECTION_KEY) as Table<T>\n  const ns = useNamespace('table')\n\n  const getRowStyle = (row: T, rowIndex: number) => {\n    const rowStyle = parent?.props.rowStyle\n    if (isFunction(rowStyle)) {\n      return rowStyle.call(null, {\n        row,\n        rowIndex,\n      })\n    }\n    return rowStyle || null\n  }\n\n  const getRowClass = (row: T, rowIndex: number, displayIndex: number) => {\n    const classes = [ns.e('row')]\n    if (\n      parent?.props.highlightCurrentRow &&\n      row === props.store?.states.currentRow.value\n    ) {\n      classes.push('current-row')\n    }\n    if (props.stripe && displayIndex % 2 === 1) {\n      classes.push(ns.em('row', 'striped'))\n    }\n    const rowClassName = parent?.props.rowClassName\n    if (isString(rowClassName)) {\n      classes.push(rowClassName)\n    } else if (isFunction(rowClassName)) {\n      classes.push(\n        rowClassName.call(null, {\n          row,\n          rowIndex,\n        })\n      )\n    }\n    return classes\n  }\n\n  const getCellStyle = (\n    rowIndex: number,\n    columnIndex: number,\n    row: T,\n    column: TableColumnCtx<T>\n  ) => {\n    const cellStyle = parent?.props.cellStyle\n    let cellStyles = cellStyle ?? {}\n    if (isFunction(cellStyle)) {\n      cellStyles = cellStyle.call(null, {\n        rowIndex,\n        columnIndex,\n        row,\n        column,\n      })\n    }\n    const fixedStyle = getFixedColumnOffset(\n      columnIndex,\n      props?.fixed,\n      props.store\n    )\n    ensurePosition(fixedStyle, 'left')\n    ensurePosition(fixedStyle, 'right')\n    return Object.assign({}, cellStyles, fixedStyle)\n  }\n\n  const getCellClass = (\n    rowIndex: number,\n    columnIndex: number,\n    row: T,\n    column: TableColumnCtx<T>,\n    offset: number\n  ) => {\n    const fixedClasses = getFixedColumnsClass(\n      ns.b(),\n      columnIndex,\n      props?.fixed,\n      props.store,\n      undefined,\n      offset\n    )\n    const classes = [column.id, column.align, column.className, ...fixedClasses]\n    const cellClassName = parent?.props.cellClassName\n    if (isString(cellClassName)) {\n      classes.push(cellClassName)\n    } else if (isFunction(cellClassName)) {\n      classes.push(\n        cellClassName.call(null, {\n          rowIndex,\n          columnIndex,\n          row,\n          column,\n        })\n      )\n    }\n    classes.push(ns.e('cell'))\n    return classes.filter((className) => Boolean(className)).join(' ')\n  }\n  const getSpan = (\n    row: T,\n    column: TableColumnCtx<T>,\n    rowIndex: number,\n    columnIndex: number\n  ) => {\n    let rowspan = 1\n    let colspan = 1\n    const fn = parent?.props.spanMethod\n    if (isFunction(fn)) {\n      const result = fn({\n        row,\n        column,\n        rowIndex,\n        columnIndex,\n      })\n      if (isArray(result)) {\n        rowspan = result[0]\n        colspan = result[1]\n      } else if (isObject(result)) {\n        rowspan = result.rowspan\n        colspan = result.colspan\n      }\n    }\n    return { rowspan, colspan }\n  }\n  const getColspanRealWidth = (\n    columns: TableColumnCtx<T>[],\n    colspan: number,\n    index: number\n  ): number => {\n    if (colspan < 1) {\n      return columns[index].realWidth!\n    }\n    const widthArr = columns\n      .map(({ realWidth, width }) => realWidth || width)\n      .slice(index, index + colspan)\n    return Number(\n      widthArr.reduce((acc, width) => Number(acc) + Number(width), -1)\n    )\n  }\n\n  return {\n    getRowStyle,\n    getRowClass,\n    getCellStyle,\n    getCellClass,\n    getSpan,\n    getColspanRealWidth,\n  }\n}\n\nexport default useStyles\n","<template>\n  <td :colspan=\"colspan\" :rowspan=\"rowspan\"><slot /></td>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({\n  name: 'TableTdWrapper',\n})\n\ndefineProps({\n  colspan: {\n    type: Number,\n    default: 1,\n  },\n  rowspan: {\n    type: Number,\n    default: 1,\n  },\n})\n</script>\n","<template>\n  <td :colspan=\"colspan\" :rowspan=\"rowspan\"><slot /></td>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({\n  name: 'TableTdWrapper',\n})\n\ndefineProps({\n  colspan: {\n    type: Number,\n    default: 1,\n  },\n  rowspan: {\n    type: Number,\n    default: 1,\n  },\n})\n</script>\n","<template>\n  <td :colspan=\"colspan\" :rowspan=\"rowspan\"><slot /></td>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({\n  name: 'TableTdWrapper',\n})\n\ndefineProps({\n  colspan: {\n    type: Number,\n    default: 1,\n  },\n  rowspan: {\n    type: Number,\n    default: 1,\n  },\n})\n</script>\n","import { computed, h, inject } from 'vue'\nimport { merge } from 'lodash-unified'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isBoolean, isPropAbsent } from '@pit-element-plus/utils'\nimport { getRowIdentity } from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\nimport useEvents from './events-helper'\nimport useStyles from './styles-helper'\nimport TdWrapper from './td-wrapper.vue'\n\nimport type { TableBodyProps } from './defaults'\nimport type {\n  DefaultRow,\n  RenderRowData,\n  Table,\n  TableColumnCtx,\n  TableProps,\n  TreeNode,\n} from '../table/defaults'\nimport type { TreeData } from '../store/tree'\nimport type { TableOverflowTooltipOptions } from '../util'\n\nfunction useRender<T extends DefaultRow>(props: Partial<TableBodyProps<T>>) {\n  const parent = inject(TABLE_INJECTION_KEY) as Table<T>\n  const ns = useNamespace('table')\n  const {\n    handleDoubleClick,\n    handleClick,\n    handleContextMenu,\n    handleMouseEnter,\n    handleMouseLeave,\n    handleCellMouseEnter,\n    handleCellMouseLeave,\n    tooltipContent,\n    tooltipTrigger,\n  } = useEvents(props)\n  const {\n    getRowStyle,\n    getRowClass,\n    getCellStyle,\n    getCellClass,\n    getSpan,\n    getColspanRealWidth,\n  } = useStyles(props)\n\n  let displayIndex = -1\n\n  const firstDefaultColumnIndex = computed(() => {\n    return props.store?.states.columns.value.findIndex(\n      ({ type }) => type === 'default'\n    )\n  })\n  const getKeyOfRow = (row: T, index: number) => {\n    const rowKey = (parent?.props as Partial<TableProps<T>>)?.rowKey\n    if (rowKey) {\n      return getRowIdentity(row, rowKey)\n    }\n    return index\n  }\n  const rowRender = (\n    row: T,\n    $index: number,\n    treeRowData?: TreeNode,\n    expanded = false\n  ) => {\n    const { tooltipEffect, tooltipOptions, store } = props\n    const { indent, columns } = store!.states\n    const rowClasses = []\n    let display = true\n    if (treeRowData) {\n      rowClasses.push(ns.em('row', `level-${treeRowData.level}`))\n      display = !!treeRowData.display\n    }\n    if ($index === 0) {\n      displayIndex = -1\n    }\n    if (props.stripe && display) {\n      displayIndex++\n    }\n    rowClasses.push(...getRowClass(row, $index, displayIndex))\n    const displayStyle = display ? null : { display: 'none' }\n    return h(\n      'tr',\n      {\n        style: [displayStyle, getRowStyle(row, $index)],\n        class: rowClasses,\n        key: getKeyOfRow(row, $index),\n        onDblclick: ($event: Event) => handleDoubleClick($event, row),\n        onClick: ($event: Event) => handleClick($event, row),\n        onContextmenu: ($event: Event) => handleContextMenu($event, row),\n        onMouseenter: () => handleMouseEnter($index),\n        onMouseleave: handleMouseLeave,\n      },\n      columns.value.map((column, cellIndex) => {\n        const { rowspan, colspan } = getSpan(row, column, $index, cellIndex)\n        if (!rowspan || !colspan) {\n          return null\n        }\n        const columnData = Object.assign({}, column)\n        columnData.realWidth = getColspanRealWidth(\n          columns.value,\n          colspan,\n          cellIndex\n        )\n        const data: RenderRowData<T> = {\n          store: store!,\n          _self: props.context || parent!,\n          column: columnData,\n          row,\n          $index,\n          cellIndex,\n          expanded,\n        }\n        if (cellIndex === firstDefaultColumnIndex.value && treeRowData) {\n          data.treeNode = {\n            indent: treeRowData.level && treeRowData.level * indent.value,\n            level: treeRowData.level,\n          }\n          if (isBoolean(treeRowData.expanded)) {\n            data.treeNode.expanded = treeRowData.expanded\n            // 表明是懒加载\n            if ('loading' in treeRowData) {\n              data.treeNode.loading = treeRowData.loading\n            }\n            if ('noLazyChildren' in treeRowData) {\n              data.treeNode.noLazyChildren = treeRowData.noLazyChildren\n            }\n          }\n        }\n        const baseKey = `${getKeyOfRow(row, $index)},${cellIndex}`\n        const patchKey = columnData.columnKey || columnData.rawColumnKey || ''\n        const mergedTooltipOptions =\n          column.showOverflowTooltip &&\n          merge(\n            {\n              effect: tooltipEffect,\n            },\n            tooltipOptions,\n            column.showOverflowTooltip\n          )\n        return h(\n          TdWrapper,\n          {\n            style: getCellStyle($index, cellIndex, row, column),\n            class: getCellClass($index, cellIndex, row, column, colspan - 1),\n            key: `${patchKey}${baseKey}`,\n            rowspan,\n            colspan,\n            onMouseenter: ($event: MouseEvent) =>\n              handleCellMouseEnter(\n                $event,\n                row,\n                mergedTooltipOptions as TableOverflowTooltipOptions\n              ),\n            onMouseleave: handleCellMouseLeave,\n          },\n          {\n            default: () => cellChildren(cellIndex, column, data),\n          }\n        )\n      })\n    )\n  }\n  const cellChildren = <T extends DefaultRow>(\n    _cellIndex: number,\n    column: TableColumnCtx<T>,\n    data: RenderRowData<T>\n  ) => {\n    return column.renderCell(data)\n  }\n\n  const wrappedRowRender = (row: T, $index: number) => {\n    const store = props.store!\n    const { isRowExpanded, assertRowKey } = store\n    const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey } =\n      store.states\n    const columns = store.states.columns.value\n    const hasExpandColumn = columns.some(({ type }) => type === 'expand')\n    if (hasExpandColumn) {\n      const expanded = isRowExpanded(row)\n      const tr = rowRender(row, $index, undefined, expanded)\n      const renderExpanded = parent?.renderExpanded\n      if (!renderExpanded) {\n        console.error('[Element Error]renderExpanded is required.')\n        return tr\n      }\n\n      // 在没设置时候避免 h 执行\n      // 非保留模式且未展开时，直接返回\n      // 使用二维数组包装，避免修改 $index\n      const rows = [[tr]]\n\n      // 仅在需要时创建展开行（保留模式或展开状态）\n      if (parent.props.preserveExpandedContent || expanded) {\n        rows[0].push(\n          h(\n            'tr',\n            {\n              key: `expanded-row__${tr.key as string}`,\n              style: { display: expanded ? '' : 'none' },\n            },\n            [\n              h(\n                'td',\n                {\n                  colspan: columns.length,\n                  class: `${ns.e('cell')} ${ns.e('expanded-cell')}`,\n                },\n                [renderExpanded({ row, $index, store, expanded })]\n              ),\n            ]\n          )\n        )\n      }\n\n      return rows\n    } else if (Object.keys(treeData.value).length) {\n      assertRowKey()\n      // TreeTable 时，rowKey 必须由用户设定，不使用 getKeyOfRow 计算\n      // 在调用 rowRender 函数时，仍然会计算 rowKey，不太好的操作\n      const key = getRowIdentity(row, rowKey.value)\n      let cur = treeData.value[key]\n      let treeRowData = null\n      if (cur) {\n        treeRowData = {\n          expanded: cur.expanded,\n          level: cur.level,\n          display: true,\n          noLazyChildren: undefined as boolean | undefined,\n          loading: undefined as boolean | undefined,\n        }\n        if (isBoolean(cur.lazy)) {\n          if (treeRowData && isBoolean(cur.loaded) && cur.loaded) {\n            treeRowData.noLazyChildren = !(cur.children && cur.children.length)\n          }\n          treeRowData.loading = cur.loading\n        }\n      }\n      const tmp = [rowRender(row, $index, treeRowData ?? undefined)]\n      // 渲染嵌套数据\n      if (cur) {\n        // currentRow 记录的是 index，所以还需主动增加 TreeTable 的 index\n        let i = 0\n        const traverse = (children: T[], parent: TreeData) => {\n          if (!(children && children.length && parent)) return\n          children.forEach((node) => {\n            // 父节点的 display 状态影响子节点的显示状态\n            const innerTreeRowData: Partial<Record<string, any>> = {\n              display: parent.display && parent.expanded,\n              level: parent.level! + 1,\n              expanded: false,\n              noLazyChildren: false,\n              loading: false,\n            }\n            const childKey = getRowIdentity(node, rowKey.value)\n            if (isPropAbsent(childKey)) {\n              throw new Error('For nested data item, row-key is required.')\n            }\n            cur = { ...treeData.value[childKey] }\n            // 对于当前节点，分成有无子节点两种情况。\n            // 如果包含子节点的，设置 expanded 属性。\n            // 对于它子节点的 display 属性由它本身的 expanded 与 display 共同决定。\n            if (cur) {\n              innerTreeRowData.expanded = cur.expanded\n              // 懒加载的某些节点，level 未知\n              cur.level = cur.level || innerTreeRowData.level\n              cur.display = !!(cur.expanded && innerTreeRowData.display)\n              if (isBoolean(cur.lazy)) {\n                if (isBoolean(cur.loaded) && cur.loaded) {\n                  innerTreeRowData.noLazyChildren = !(\n                    cur.children && cur.children.length\n                  )\n                }\n                innerTreeRowData.loading = cur.loading\n              }\n            }\n            i++\n            tmp.push(rowRender(node, $index + i, innerTreeRowData))\n            if (cur) {\n              const nodes =\n                lazyTreeNodeMap.value[childKey] ||\n                node[childrenColumnName.value]\n              traverse(nodes, cur)\n            }\n          })\n        }\n        // 对于 root 节点，display 一定为 true\n        cur.display = true\n        const nodes =\n          lazyTreeNodeMap.value[key] || row[childrenColumnName.value]\n        traverse(nodes, cur)\n      }\n      return tmp\n    } else {\n      return rowRender(row, $index, undefined)\n    }\n  }\n\n  return {\n    wrappedRowRender,\n    tooltipContent,\n    tooltipTrigger,\n  }\n}\n\nexport default useRender\n","import type { PropType } from 'vue'\nimport type { Store } from '../store'\nimport type {\n  ColumnCls,\n  ColumnStyle,\n  DefaultRow,\n  Table,\n} from '../table/defaults'\nimport type { TableOverflowTooltipOptions } from '../util'\n\ninterface TableBodyProps<T extends DefaultRow> {\n  store: Store<T>\n  stripe?: boolean\n  context: Table<T>\n  rowClassName: ColumnCls<T>\n  rowStyle: ColumnStyle<T>\n  fixed: string\n  highlight: boolean\n  tooltipEffect?: string\n  tooltipOptions?: TableOverflowTooltipOptions\n}\n\nconst defaultProps = {\n  store: {\n    required: true,\n    type: Object as PropType<TableBodyProps<any>['store']>,\n  },\n  stripe: Boolean,\n  tooltipEffect: String,\n  tooltipOptions: {\n    type: Object as PropType<TableBodyProps<any>['tooltipOptions']>,\n  },\n  context: {\n    default: () => ({}),\n    type: Object as PropType<TableBodyProps<any>['context']>,\n  },\n  rowClassName: [String, Function] as PropType<\n    TableBodyProps<any>['rowClassName']\n  >,\n  rowStyle: [Object, Function] as PropType<TableBodyProps<any>['rowStyle']>,\n  fixed: {\n    type: String,\n    default: '',\n  },\n  highlight: Boolean,\n}\n\nexport { TableBodyProps }\nexport default defaultProps\n","import {\n  defineComponent,\n  getCurrentInstance,\n  h,\n  inject,\n  onUnmounted,\n  watch,\n} from 'vue'\nimport { addClass, isClient, rAF, removeClass } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport useLayoutObserver from '../layout-observer'\nimport { removePopper } from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\nimport useRender from './render-helper'\nimport defaultProps from './defaults'\n\nimport type { VNode } from 'vue'\n\nexport default defineComponent({\n  name: 'ElTableBody',\n  props: defaultProps,\n  setup(props) {\n    const instance = getCurrentInstance()\n    const parent = inject(TABLE_INJECTION_KEY)\n    const ns = useNamespace('table')\n    const { wrappedRowRender, tooltipContent, tooltipTrigger } =\n      useRender(props)\n    const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent!)\n\n    const hoveredCellList: HTMLTableCellElement[] = []\n    watch(props.store?.states.hoverRow, (newVal: any, oldVal: any) => {\n      const el = instance?.vnode.el as HTMLElement\n      const rows = Array.from(el?.children || []).filter((e) =>\n        e?.classList.contains(`${ns.e('row')}`)\n      )\n\n      // hover rowSpan > 1 choose the whole row\n      let rowNum = newVal\n      const childNodes = rows[rowNum]\n        ?.childNodes as NodeListOf<HTMLTableCellElement>\n      if (childNodes?.length) {\n        let control = 0\n        const indexes = Array.from(childNodes).reduce((acc, item, index) => {\n          // drop colsSpan\n          if (childNodes[index]?.colSpan > 1) {\n            control = childNodes[index]?.colSpan\n          }\n          if (item.nodeName !== 'TD' && control === 0) {\n            acc.push(index)\n          }\n          control > 0 && control--\n          return acc\n        }, [] as number[])\n\n        indexes.forEach((rowIndex) => {\n          rowNum = newVal\n          while (rowNum > 0) {\n            // find from previous\n            const preChildNodes = rows[rowNum - 1]\n              ?.childNodes as NodeListOf<HTMLTableCellElement>\n\n            if (\n              preChildNodes[rowIndex] &&\n              preChildNodes[rowIndex].nodeName === 'TD' &&\n              preChildNodes[rowIndex].rowSpan > 1\n            ) {\n              addClass(preChildNodes[rowIndex], 'hover-cell')\n              hoveredCellList.push(preChildNodes[rowIndex])\n              break\n            }\n            rowNum--\n          }\n        })\n      } else {\n        hoveredCellList.forEach((item) => removeClass(item, 'hover-cell'))\n        hoveredCellList.length = 0\n      }\n      if (!props.store?.states.isComplex.value || !isClient) return\n\n      rAF(() => {\n        // just get first level children; fix #9723\n        const oldRow = rows[oldVal]\n        const newRow = rows[newVal]\n        // when there is fixed row, hover on rowSpan > 1 should not clear the class\n        if (oldRow && !oldRow.classList.contains('hover-fixed-row')) {\n          removeClass(oldRow, 'hover-row')\n        }\n        if (newRow) {\n          addClass(newRow, 'hover-row')\n        }\n      })\n    })\n\n    onUnmounted(() => {\n      removePopper?.()\n    })\n\n    return {\n      ns,\n      onColumnsChange,\n      onScrollableChange,\n      wrappedRowRender,\n      tooltipContent,\n      tooltipTrigger,\n    }\n  },\n  render() {\n    const { wrappedRowRender, store } = this\n    const data = store?.states.data.value || []\n    // Why do we need tabIndex: -1 ?\n    // If you set the tabindex attribute on an element ,\n    // then its child content cannot be scrolled with the arrow keys,\n    // unless you set tabindex on the content too\n    // See https://github.com/facebook/react/issues/25462#issuecomment-1274775248 or https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/tabindex\n    return h('tbody', { tabIndex: -1 }, [\n      data.reduce((acc: VNode[], row) => {\n        return acc.concat(wrappedRowRender(row, acc.length) as VNode[])\n      }, []),\n    ])\n  },\n})\n","import { computed, inject } from 'vue'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nfunction useMapState() {\n  const table = inject(TABLE_INJECTION_KEY)\n  const store = table?.store\n  const leftFixedLeafCount = computed(() => {\n    return store?.states.fixedLeafColumnsLength.value ?? 0\n  })\n  const rightFixedLeafCount = computed(() => {\n    return store?.states.rightFixedColumns.value.length ?? 0\n  })\n  const columnsCount = computed(() => {\n    return store?.states.columns.value.length ?? 0\n  })\n  const leftFixedCount = computed(() => {\n    return store?.states.fixedColumns.value.length ?? 0\n  })\n  const rightFixedCount = computed(() => {\n    return store?.states.rightFixedColumns.value.length ?? 0\n  })\n\n  return {\n    leftFixedLeafCount,\n    rightFixedLeafCount,\n    columnsCount,\n    leftFixedCount,\n    rightFixedCount,\n    columns: computed(() => store?.states.columns.value ?? []),\n  }\n}\n\nexport default useMapState\n","import { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  ensurePosition,\n  getFixedColumnOffset,\n  getFixedColumnsClass,\n} from '../util'\nimport useMapState from './mapState-helper'\n\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow } from '../table/defaults'\nimport type { TableFooter } from '.'\n\nfunction useStyle<T extends DefaultRow>(props: TableFooter<T>) {\n  const { columns } = useMapState()\n  const ns = useNamespace('table')\n\n  const getCellClasses = (columns: TableColumnCtx<T>[], cellIndex: number) => {\n    const column = columns[cellIndex]\n    const classes = [\n      ns.e('cell'),\n      column.id,\n      column.align,\n      column.labelClassName,\n      ...getFixedColumnsClass(ns.b(), cellIndex, column.fixed, props.store),\n    ]\n    if (column.className) {\n      classes.push(column.className)\n    }\n    if (!column.children) {\n      classes.push(ns.is('leaf'))\n    }\n    return classes\n  }\n\n  const getCellStyles = (column: TableColumnCtx<T>, cellIndex: number) => {\n    const fixedStyle = getFixedColumnOffset(\n      cellIndex,\n      column.fixed,\n      props.store\n    )\n    ensurePosition(fixedStyle, 'left')\n    ensurePosition(fixedStyle, 'right')\n    return fixedStyle\n  }\n\n  return {\n    getCellClasses,\n    getCellStyles,\n    columns,\n  }\n}\n\nexport default useStyle\n","import { defineComponent, h, inject } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport useLayoutObserver from '../layout-observer'\nimport { TABLE_INJECTION_KEY } from '../tokens'\nimport useStyle from './style-helper'\n\nimport type { Store } from '../store'\nimport type { PropType, VNode } from 'vue'\nimport type { DefaultRow, Sort, SummaryMethod, Table } from '../table/defaults'\n\nexport interface TableFooter<T extends DefaultRow> {\n  fixed: string\n  store: Store<T>\n  summaryMethod: SummaryMethod<T>\n  sumText: string\n  border: boolean\n  defaultSort: Sort\n}\n\nexport default defineComponent({\n  name: 'ElTableFooter',\n\n  props: {\n    fixed: {\n      type: String,\n      default: '',\n    },\n    store: {\n      required: true,\n      type: Object as PropType<TableFooter<any>['store']>,\n    },\n    summaryMethod: Function as PropType<TableFooter<any>['summaryMethod']>,\n    sumText: String,\n    border: Boolean,\n    defaultSort: {\n      type: Object as PropType<TableFooter<any>['defaultSort']>,\n      default: () => {\n        return {\n          prop: '',\n          order: '',\n        }\n      },\n    },\n  },\n  setup(props) {\n    const parent = inject(TABLE_INJECTION_KEY) as Table<any>\n    const ns = useNamespace('table')\n    const { getCellClasses, getCellStyles, columns } = useStyle(\n      props as TableFooter<any>\n    )\n    const { onScrollableChange, onColumnsChange } = useLayoutObserver(parent!)\n\n    return {\n      ns,\n      onScrollableChange,\n      onColumnsChange,\n      getCellClasses,\n      getCellStyles,\n      columns,\n    }\n  },\n  render() {\n    const { columns, getCellStyles, getCellClasses, summaryMethod, sumText } =\n      this\n    const data = this.store.states.data.value\n    let sums: (string | VNode | number | undefined)[] = []\n    if (summaryMethod) {\n      sums = summaryMethod({\n        columns,\n        data,\n      })\n    } else {\n      columns.forEach((column, index) => {\n        if (index === 0) {\n          sums[index] = sumText\n          return\n        }\n        const values = data.map((item) => Number(item[column.property]))\n        const precisions: number[] = []\n        let notNumber = true\n        values.forEach((value) => {\n          if (!Number.isNaN(+value)) {\n            notNumber = false\n            const decimal = `${value}`.split('.')[1]\n            precisions.push(decimal ? decimal.length : 0)\n          }\n        })\n        const precision = Math.max.apply(null, precisions)\n        if (!notNumber) {\n          sums[index] = values.reduce((prev, curr) => {\n            const value = Number(curr)\n            if (!Number.isNaN(+value)) {\n              return Number.parseFloat(\n                (prev + curr).toFixed(Math.min(precision, 20))\n              )\n            } else {\n              return prev\n            }\n          }, 0)\n        } else {\n          sums[index] = ''\n        }\n      })\n    }\n    return h(\n      h('tfoot', [\n        h('tr', {}, [\n          ...columns.map((column, cellIndex) =>\n            h(\n              'td',\n              {\n                key: cellIndex,\n                colspan: column.colSpan,\n                rowspan: column.rowSpan,\n                class: getCellClasses(columns, cellIndex),\n                style: getCellStyles(column, cellIndex),\n              },\n              [\n                h(\n                  'div',\n                  {\n                    class: ['cell', column.labelClassName],\n                  },\n                  [sums[cellIndex]]\n                ),\n              ]\n            )\n          ),\n        ]),\n      ])\n    )\n  },\n})\n","import type { Store } from '../store'\nimport type { DefaultRow } from './defaults'\n\nfunction useUtils<T extends DefaultRow>(store: Store<T>) {\n  const setCurrentRow = (row: T) => {\n    store.commit('setCurrentRow', row)\n  }\n  const getSelectionRows = () => {\n    return store.getSelectionRows()\n  }\n  const toggleRowSelection = (\n    row: T,\n    selected?: boolean,\n    ignoreSelectable = true\n  ) => {\n    store.toggleRowSelection(row, selected, false, ignoreSelectable)\n    store.updateAllSelected()\n  }\n  const clearSelection = () => {\n    store.clearSelection()\n  }\n  const clearFilter = (columnKeys?: string[] | string) => {\n    store.clearFilter(columnKeys)\n  }\n  const toggleAllSelection = () => {\n    store.commit('toggleAllSelection')\n  }\n  const toggleRowExpansion = (row: T, expanded?: boolean) => {\n    store.toggleRowExpansionAdapter(row, expanded)\n  }\n  const clearSort = () => {\n    store.clearSort()\n  }\n  const sort = (prop: string, order: string) => {\n    store.commit('sort', { prop, order })\n  }\n  const updateKeyChildren = (key: string, data: T[]) => {\n    store.updateKeyChildren(key, data)\n  }\n\n  return {\n    setCurrentRow,\n    getSelectionRows,\n    toggleRowSelection,\n    clearSelection,\n    clearFilter,\n    toggleAllSelection,\n    toggleRowExpansion,\n    clearSort,\n    sort,\n    updateKeyChildren,\n  }\n}\n\nexport default useUtils\n","import {\n  computed,\n  nextTick,\n  onMounted,\n  ref,\n  unref,\n  watch,\n  watchEffect,\n} from 'vue'\nimport { useEventListener, useResizeObserver } from '@vueuse/core'\nimport { useFormSize } from '@pit-element-plus/components/form'\n\nimport type { DefaultRow, RenderExpanded, Table, TableProps } from './defaults'\nimport type { Store } from '../store'\nimport type TableLayout from '../table-layout'\nimport type { TableColumnCtx } from '../table-column/defaults'\n\nfunction useStyle<T extends DefaultRow>(\n  props: TableProps<T>,\n  layout: TableLayout<T>,\n  store: Store<T>,\n  table: Table<T>\n) {\n  const isHidden = ref(false)\n  const renderExpanded = ref<RenderExpanded<T> | null>(null)\n  const resizeProxyVisible = ref(false)\n  const setDragVisible = (visible: boolean) => {\n    resizeProxyVisible.value = visible\n  }\n  const resizeState = ref<{\n    width: null | number\n    height: null | number\n    headerHeight: null | number\n  }>({\n    width: null,\n    height: null,\n    headerHeight: null,\n  })\n  const isGroup = ref(false)\n  const scrollbarViewStyle = {\n    display: 'inline-block',\n    verticalAlign: 'middle',\n  }\n  const tableWidth = ref()\n  const tableScrollHeight = ref(0)\n  const bodyScrollHeight = ref(0)\n  const headerScrollHeight = ref(0)\n  const footerScrollHeight = ref(0)\n  const appendScrollHeight = ref(0)\n\n  watch(\n    () => props.height,\n    (value) => {\n      layout.setHeight(value ?? null)\n    },\n    { immediate: true }\n  )\n  watch(\n    () => props.maxHeight,\n    (value) => {\n      layout.setMaxHeight(value ?? null)\n    },\n    { immediate: true }\n  )\n  watch(\n    () => [props.currentRowKey, store.states.rowKey],\n    ([currentRowKey, rowKey]) => {\n      if (!unref(rowKey) || !unref(currentRowKey)) return\n      store.setCurrentRowKey(`${currentRowKey}`)\n    },\n    {\n      immediate: true,\n    }\n  )\n  watch(\n    () => props.data,\n    (data) => {\n      table.store.commit('setData', data)\n    },\n    {\n      immediate: true,\n      deep: true,\n    }\n  )\n  watchEffect(() => {\n    if (props.expandRowKeys) {\n      store.setExpandRowKeysAdapter(props.expandRowKeys)\n    }\n  })\n\n  const handleMouseLeave = () => {\n    table.store.commit('setHoverRow', null)\n    if (table.hoverState) table.hoverState = null\n  }\n\n  const handleHeaderFooterMousewheel = (_event: WheelEvent, data: any) => {\n    const { pixelX, pixelY } = data\n    if (Math.abs(pixelX) >= Math.abs(pixelY)) {\n      table.refs.bodyWrapper.scrollLeft += data.pixelX / 5\n    }\n  }\n\n  const shouldUpdateHeight = computed(() => {\n    return (\n      props.height ||\n      props.maxHeight ||\n      store.states.fixedColumns.value.length > 0 ||\n      store.states.rightFixedColumns.value.length > 0\n    )\n  })\n\n  const tableBodyStyles = computed(() => {\n    return {\n      width: layout.bodyWidth.value ? `${layout.bodyWidth.value}px` : '',\n    }\n  })\n\n  const doLayout = () => {\n    if (shouldUpdateHeight.value) {\n      layout.updateElsHeight()\n    }\n    layout.updateColumnsWidth()\n\n    // When the test case is running, the context environment simulated by jsdom may have been destroyed,\n    // and window.requestAnimationFrame does not exist at this time.\n    if (typeof window === 'undefined') return\n    requestAnimationFrame(syncPosition)\n  }\n  onMounted(async () => {\n    await nextTick()\n    store.updateColumns()\n    bindEvents()\n    requestAnimationFrame(doLayout)\n\n    const el: HTMLElement = table.vnode.el as HTMLElement\n    const tableHeader: HTMLElement = table.refs.headerWrapper\n    if (props.flexible && el && el.parentElement) {\n      // Automatic minimum size of flex-items\n      // Ensure that the main axis does not follow the width of the items\n      el.parentElement.style.minWidth = '0'\n    }\n\n    resizeState.value = {\n      width: (tableWidth.value = el.offsetWidth),\n      height: el.offsetHeight,\n      headerHeight:\n        props.showHeader && tableHeader ? tableHeader.offsetHeight : null,\n    }\n\n    // init filters\n    store.states.columns.value.forEach((column: TableColumnCtx<T>) => {\n      if (column.filteredValue && column.filteredValue.length) {\n        table.store.commit('filterChange', {\n          column,\n          values: column.filteredValue,\n          silent: true,\n        })\n      }\n    })\n    table.$ready = true\n  })\n  const setScrollClassByEl = (el: HTMLElement, className: string) => {\n    if (!el) return\n    const classList = Array.from(el.classList).filter(\n      (item) => !item.startsWith('is-scrolling-')\n    )\n    classList.push(layout.scrollX.value ? className : 'is-scrolling-none')\n    el.className = classList.join(' ')\n  }\n  const setScrollClass = (className: string) => {\n    const { tableWrapper } = table.refs\n    setScrollClassByEl(tableWrapper, className)\n  }\n  const hasScrollClass = (className: string) => {\n    const { tableWrapper } = table.refs\n    return !!(tableWrapper && tableWrapper.classList.contains(className))\n  }\n  const syncPosition = function () {\n    if (!table.refs.scrollBarRef) return\n    if (!layout.scrollX.value) {\n      const scrollingNoneClass = 'is-scrolling-none'\n      if (!hasScrollClass(scrollingNoneClass)) {\n        setScrollClass(scrollingNoneClass)\n      }\n      return\n    }\n    const scrollContainer = table.refs.scrollBarRef.wrapRef\n    if (!scrollContainer) return\n    const { scrollLeft, offsetWidth, scrollWidth } = scrollContainer\n    const { headerWrapper, footerWrapper } = table.refs\n    if (headerWrapper) headerWrapper.scrollLeft = scrollLeft\n    if (footerWrapper) footerWrapper.scrollLeft = scrollLeft\n    const maxScrollLeftPosition = scrollWidth - offsetWidth - 1\n    if (scrollLeft >= maxScrollLeftPosition) {\n      setScrollClass('is-scrolling-right')\n    } else if (scrollLeft === 0) {\n      setScrollClass('is-scrolling-left')\n    } else {\n      setScrollClass('is-scrolling-middle')\n    }\n  }\n\n  const bindEvents = () => {\n    if (!table.refs.scrollBarRef) return\n    if (table.refs.scrollBarRef.wrapRef) {\n      useEventListener(\n        table.refs.scrollBarRef.wrapRef,\n        'scroll',\n        syncPosition,\n        {\n          passive: true,\n        }\n      )\n    }\n    if (props.fit) {\n      useResizeObserver(table.vnode.el as HTMLElement, resizeListener)\n    } else {\n      useEventListener(window, 'resize', resizeListener)\n    }\n\n    useResizeObserver(table.refs.tableInnerWrapper, () => {\n      resizeListener()\n      table.refs?.scrollBarRef?.update()\n    })\n  }\n  const resizeListener = () => {\n    const el = table.vnode.el\n    if (!table.$ready || !el) return\n\n    let shouldUpdateLayout = false\n    const {\n      width: oldWidth,\n      height: oldHeight,\n      headerHeight: oldHeaderHeight,\n    } = resizeState.value\n\n    const width = (tableWidth.value = el.offsetWidth)\n    if (oldWidth !== width) {\n      shouldUpdateLayout = true\n    }\n\n    const height = el.offsetHeight\n    if ((props.height || shouldUpdateHeight.value) && oldHeight !== height) {\n      shouldUpdateLayout = true\n    }\n\n    const tableHeader: HTMLElement =\n      props.tableLayout === 'fixed'\n        ? table.refs.headerWrapper\n        : table.refs.tableHeaderRef?.$el\n    if (props.showHeader && tableHeader?.offsetHeight !== oldHeaderHeight) {\n      shouldUpdateLayout = true\n    }\n\n    tableScrollHeight.value = table.refs.tableWrapper?.scrollHeight || 0\n    headerScrollHeight.value = tableHeader?.scrollHeight || 0\n    footerScrollHeight.value = table.refs.footerWrapper?.offsetHeight || 0\n    appendScrollHeight.value = table.refs.appendWrapper?.offsetHeight || 0\n    bodyScrollHeight.value =\n      tableScrollHeight.value -\n      headerScrollHeight.value -\n      footerScrollHeight.value -\n      appendScrollHeight.value\n\n    if (shouldUpdateLayout) {\n      resizeState.value = {\n        width,\n        height,\n        headerHeight: (props.showHeader && tableHeader?.offsetHeight) || 0,\n      }\n      doLayout()\n    }\n  }\n  const tableSize = useFormSize()\n  const bodyWidth = computed(() => {\n    const { bodyWidth: bodyWidth_, scrollY, gutterWidth } = layout\n    return bodyWidth_.value\n      ? `${(bodyWidth_.value as number) - (scrollY.value ? gutterWidth : 0)}px`\n      : ''\n  })\n\n  const tableLayout = computed(() => {\n    if (props.maxHeight) return 'fixed'\n    return props.tableLayout!\n  })\n\n  const emptyBlockStyle = computed(() => {\n    if (props.data && props.data.length) return\n    let height = '100%'\n    if (props.height && bodyScrollHeight.value) {\n      height = `${bodyScrollHeight.value}px`\n    }\n    const width = tableWidth.value\n    return {\n      width: width ? `${width}px` : '',\n      height,\n    }\n  })\n\n  const scrollbarStyle = computed(() => {\n    if (props.height) {\n      return {\n        height: '100%',\n      }\n    }\n    if (props.maxHeight) {\n      if (!Number.isNaN(Number(props.maxHeight))) {\n        return {\n          maxHeight: `${\n            +props.maxHeight -\n            headerScrollHeight.value -\n            footerScrollHeight.value\n          }px`,\n        }\n      } else {\n        return {\n          maxHeight: `calc(${props.maxHeight} - ${\n            headerScrollHeight.value + footerScrollHeight.value\n          }px)`,\n        }\n      }\n    }\n\n    return {}\n  })\n\n  return {\n    isHidden,\n    renderExpanded,\n    setDragVisible,\n    isGroup,\n    handleMouseLeave,\n    handleHeaderFooterMousewheel,\n    tableSize,\n    emptyBlockStyle,\n    resizeProxyVisible,\n    bodyWidth,\n    resizeState,\n    doLayout,\n    tableBodyStyles,\n    tableLayout,\n    scrollbarViewStyle,\n    scrollbarStyle,\n  }\n}\n\nexport default useStyle\n","import { onMounted, onUnmounted } from 'vue'\n\nimport type { Table } from './defaults'\n\nexport default function useKeyRender(table: Table<[]>) {\n  let observer: MutationObserver | undefined\n\n  const initWatchDom = () => {\n    const el = table.vnode.el\n    const columnsWrapper = (el as HTMLElement).querySelector('.hidden-columns')\n    const config = { childList: true, subtree: true }\n    const updateOrderFns = table.store.states.updateOrderFns\n    observer = new MutationObserver(() => {\n      updateOrderFns.forEach((fn: () => void) => fn())\n    })\n\n    observer.observe(columnsWrapper!, config)\n  }\n\n  onMounted(() => {\n    // fix https://github.com/element-plus/element-plus/issues/8528\n    initWatchDom()\n  })\n\n  onUnmounted(() => {\n    observer?.disconnect()\n  })\n}\n","import { useSizeProp } from '@pit-element-plus/hooks'\n\nimport type {\n  CSSProperties,\n  ComponentInternalInstance,\n  PropType,\n  Ref,\n  StyleValue,\n  VNode,\n} from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { Nullable } from '@pit-element-plus/utils'\nimport type { Store } from '../store'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type TableLayout from '../table-layout'\nimport type {\n  TableOverflowTooltipFormatter,\n  TableOverflowTooltipOptions,\n} from '../util'\n\ntype DefaultRow = Record<PropertyKey, any>\n\ninterface TableRefs {\n  tableWrapper: HTMLElement\n  headerWrapper: HTMLElement\n  footerWrapper: HTMLElement\n  fixedBodyWrapper: HTMLElement\n  rightFixedBodyWrapper: HTMLElement\n  bodyWrapper: HTMLElement\n  appendWrapper: HTMLElement\n  [key: string]: any\n}\n\ninterface TableState {\n  isGroup: Ref<boolean>\n  resizeState: Ref<{\n    width: any\n    height: any\n  }>\n  doLayout: () => void\n  debouncedUpdateLayout: () => void\n}\n\ninterface TreeProps {\n  hasChildren?: string\n  children?: string\n  checkStrictly?: boolean\n}\n\ntype HoverState<T extends DefaultRow> = Nullable<{\n  cell: HTMLElement\n  column: TableColumnCtx<T>\n  row: T\n}>\n\ntype RIS<T extends DefaultRow> = {\n  row: T\n  $index: number\n  store: Store<T>\n  expanded: boolean\n}\n\ntype RenderExpanded<T extends DefaultRow> = ({\n  row,\n  $index,\n  store,\n  expanded,\n}: RIS<T>) => VNode[] | undefined\n\ntype SummaryMethod<T extends DefaultRow> = (data: {\n  columns: TableColumnCtx<T>[]\n  data: T[]\n}) => (string | VNode)[]\n\ninterface Table<T extends DefaultRow = any> extends ComponentInternalInstance {\n  $ready: boolean\n  hoverState?: HoverState<T> | null\n  renderExpanded: RenderExpanded<T>\n  store: Store<T>\n  layout: TableLayout<T>\n  refs: TableRefs\n  tableId: string\n  state: TableState\n}\n\ntype ColumnCls<T> = string | ((data: { row: T; rowIndex: number }) => string)\ntype ColumnStyle<T> =\n  | CSSProperties\n  | ((data: { row: T; rowIndex: number }) => CSSProperties)\ntype CellCls<T extends DefaultRow> =\n  | string\n  | ((data: {\n      row: T\n      rowIndex: number\n      column: TableColumnCtx<T>\n      columnIndex: number\n    }) => string)\ntype CellStyle<T extends DefaultRow> =\n  | CSSProperties\n  | ((data: {\n      row: T\n      rowIndex: number\n      column: TableColumnCtx<T>\n      columnIndex: number\n    }) => CSSProperties)\ntype Layout = 'fixed' | 'auto'\ninterface TableProps<T extends DefaultRow> {\n  data: T[]\n  size?: ComponentSize\n  width?: string | number\n  height?: string | number\n  maxHeight?: string | number\n  fit?: boolean\n  stripe?: boolean\n  border?: boolean\n  rowKey?: string | ((row: T) => string)\n  context?: Table<T>\n  showHeader?: boolean\n  showSummary?: boolean\n  sumText?: string\n  summaryMethod?: SummaryMethod<T>\n  rowClassName?: ColumnCls<T>\n  rowStyle?: ColumnStyle<T>\n  cellClassName?: CellCls<T>\n  cellStyle?: CellStyle<T>\n  headerRowClassName?: ColumnCls<T>\n  headerRowStyle?: ColumnStyle<T>\n  headerCellClassName?: CellCls<T>\n  headerCellStyle?: CellStyle<T>\n  highlightCurrentRow?: boolean\n  currentRowKey?: string | number\n  emptyText?: string\n  expandRowKeys?: Array<string>\n  defaultExpandAll?: boolean\n  rowExpandable?: (row: T, index: number) => boolean\n  defaultSort?: Sort\n  tooltipEffect?: string\n  tooltipOptions?: TableOverflowTooltipOptions\n  spanMethod?: (data: {\n    row: T\n    rowIndex: number\n    column: TableColumnCtx<T>\n    columnIndex: number\n  }) =>\n    | number[]\n    | {\n        rowspan: number\n        colspan: number\n      }\n    | undefined\n  selectOnIndeterminate?: boolean\n  indent?: number\n  treeProps?: TreeProps\n  lazy?: boolean\n  load?: (row: T, treeNode: TreeNode, resolve: (data: T[]) => void) => void\n  className?: string\n  style?: StyleValue\n  tableLayout?: Layout\n  scrollbarAlwaysOn?: boolean\n  flexible?: boolean\n  showOverflowTooltip?: boolean | TableOverflowTooltipOptions\n  tooltipFormatter?: TableOverflowTooltipFormatter<T>\n  appendFilterPanelTo?: string\n  scrollbarTabindex?: number | string\n  nativeScrollbar?: boolean\n}\n\ntype TableTooltipData<T extends DefaultRow> = Parameters<\n  TableOverflowTooltipFormatter<T>\n>[0]\ntype TableSortOrder = 'ascending' | 'descending'\n\ninterface Sort {\n  prop: string\n  order: TableSortOrder\n  init?: any\n  silent?: any\n}\n\ninterface Filter<T extends DefaultRow> {\n  column: TableColumnCtx<T>\n  values: string[]\n  silent: any\n}\n\ninterface TreeNode {\n  expanded?: boolean\n  loading?: boolean\n  noLazyChildren?: boolean\n  indent?: number\n  level?: number\n  display?: boolean\n}\n\ninterface RenderRowData<T extends DefaultRow> {\n  store: Store<T>\n  _self: Table<T>\n  column: TableColumnCtx<T>\n  row: T\n  $index: number\n  cellIndex: number\n  treeNode?: TreeNode\n  expanded: boolean\n}\n\ninterface TableConfigContext {\n  showOverflowTooltip?: boolean | TableOverflowTooltipOptions\n  tooltipEffect?: string\n  tooltipOptions?: TableOverflowTooltipOptions\n  tooltipFormatter?: TableOverflowTooltipFormatter<any>\n}\n\nexport default {\n  /**\n   * @description table data\n   */\n  data: {\n    type: Array as PropType<any[]>,\n    default: () => [],\n  },\n  /**\n   * @description size of Table\n   */\n  size: useSizeProp,\n  width: [String, Number],\n  /**\n   * @description table's height. By default it has an `auto` height. If its value is a number, the height is measured in pixels; if its value is a string, the value will be assigned to element's style.height, the height is affected by external styles\n   */\n  height: [String, Number],\n  /**\n   * @description table's max-height. The legal value is a number or the height in px\n   */\n  maxHeight: [String, Number],\n  /**\n   * @description whether width of column automatically fits its container\n   */\n  fit: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether Table is striped\n   */\n  stripe: Boolean,\n  /**\n   * @description whether Table has vertical border\n   */\n  border: Boolean,\n  /**\n   * @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used\n   */\n  rowKey: [String, Function] as PropType<TableProps<any>['rowKey']>,\n  /**\n   * @description whether Table header is visible\n   */\n  showHeader: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to display a summary row\n   */\n  showSummary: Boolean,\n  /**\n   * @description displayed text for the first column of summary row\n   */\n  sumText: String,\n  /**\n   * @description custom summary method\n   */\n  summaryMethod: Function as PropType<TableProps<any>['summaryMethod']>,\n  /**\n   * @description function that returns custom class names for a row, or a string assigning class names for every row\n   */\n  rowClassName: [String, Function] as PropType<TableProps<any>['rowClassName']>,\n  /**\n   * @description function that returns custom style for a row, or an object assigning custom style for every row\n   */\n  rowStyle: [Object, Function] as PropType<TableProps<any>['rowStyle']>,\n  /**\n   * @description function that returns custom class names for a cell, or a string assigning class names for every cell\n   */\n  cellClassName: [String, Function] as PropType<\n    TableProps<any>['cellClassName']\n  >,\n  /**\n   * @description function that returns custom style for a cell, or an object assigning custom style for every cell\n   */\n  cellStyle: [Object, Function] as PropType<TableProps<any>['cellStyle']>,\n  /**\n   * @description function that returns custom class names for a row in table header, or a string assigning class names for every row in table header\n   */\n  headerRowClassName: [String, Function] as PropType<\n    TableProps<any>['headerRowClassName']\n  >,\n  /**\n   * @description function that returns custom style for a row in table header, or an object assigning custom style for every row in table header\n   */\n  headerRowStyle: [Object, Function] as PropType<\n    TableProps<any>['headerRowStyle']\n  >,\n  /**\n   * @description function that returns custom class names for a cell in table header, or a string assigning class names for every cell in table header\n   */\n  headerCellClassName: [String, Function] as PropType<\n    TableProps<any>['headerCellClassName']\n  >,\n  /**\n   * @description function that returns custom style for a cell in table header, or an object assigning custom style for every cell in table header\n   */\n  headerCellStyle: [Object, Function] as PropType<\n    TableProps<any>['headerCellStyle']\n  >,\n  /**\n   * @description whether current row is highlighted\n   */\n  highlightCurrentRow: Boolean,\n  /**\n   * @description key of current row, a set only prop\n   */\n  currentRowKey: [String, Number],\n  /**\n   * @description displayed text when data is empty. You can customize this area with `#empty`\n   */\n  emptyText: String,\n  /**\n   * @description set expanded rows by this prop, prop's value is the keys of expand rows, you should set row-key before using this prop\n   */\n  expandRowKeys: Array as PropType<TableProps<any>['expandRowKeys']>,\n  /**\n   * @description whether expand all rows by default, works when the table has a column type=\"expand\" or contains tree structure data\n   */\n  defaultExpandAll: Boolean,\n  /**\n   * @description enable expandable rows, works when the table has a column type=\"expand\"\n   */\n  rowExpandable: {\n    type: Function as PropType<TableProps<any>['rowExpandable']>,\n  },\n  /**\n   * @description set the default sort column and order. property `prop` is used to set default sort column, property `order` is used to set default sort order\n   */\n  defaultSort: Object as PropType<TableProps<any>['defaultSort']>,\n  /**\n   * @description the `effect` of the overflow tooltip\n   */\n  tooltipEffect: String,\n  /**\n   * @description the options for the overflow tooltip, [see the following tooltip component](tooltip.html#attributes)\n   */\n  tooltipOptions: Object as PropType<TableProps<any>['tooltipOptions']>,\n  /**\n   * @description method that returns rowspan and colspan\n   */\n  spanMethod: Function as PropType<TableProps<any>['spanMethod']>,\n  /**\n   * @description controls the behavior of master checkbox in multi-select tables when only some rows are selected (but not all). If true, all rows will be selected, else deselected\n   */\n  selectOnIndeterminate: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description horizontal indentation of tree data\n   */\n  indent: {\n    type: Number,\n    default: 16,\n  },\n  /**\n   * @description configuration for rendering nested data\n   */\n  treeProps: {\n    type: Object as PropType<TableProps<any>['treeProps']>,\n    default: () => {\n      return {\n        hasChildren: 'hasChildren',\n        children: 'children',\n        checkStrictly: false,\n      }\n    },\n  },\n  /**\n   * @description whether to lazy loading data\n   */\n  lazy: Boolean,\n  /**\n   * @description method for loading child row data, only works when `lazy` is true\n   */\n  load: Function as PropType<TableProps<any>['load']>,\n  style: {\n    type: [String, Object, Array] as PropType<TableProps<any>['style']>,\n    default: () => ({}),\n  },\n  className: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description sets the algorithm used to lay out table cells, rows, and columns\n   */\n  tableLayout: {\n    type: String as PropType<Layout>,\n    default: 'fixed',\n  },\n  /**\n   * @description always show scrollbar\n   */\n  scrollbarAlwaysOn: Boolean,\n  /**\n   * @description ensure main axis minimum-size doesn't follow the content\n   */\n  flexible: Boolean,\n  /**\n   * @description whether to hide extra content and show them in a tooltip when hovering on the cell.It will affect all the table columns\n   */\n  showOverflowTooltip: {\n    type: [Boolean, Object] as PropType<TableProps<any>['showOverflowTooltip']>,\n    default: undefined,\n  },\n  /**\n   * @description function that formats cell tooltip content, works when `show-overflow-tooltip` is `true`\n   */\n  tooltipFormatter: Function as PropType<TableProps<any>['tooltipFormatter']>,\n  appendFilterPanelTo: String,\n  scrollbarTabindex: {\n    type: [Number, String],\n    default: undefined,\n  },\n  /**\n   * @description whether to allow drag the last column\n   */\n  allowDragLastColumn: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to preserve expanded row content in DOM when collapsed\n   */\n  preserveExpandedContent: Boolean,\n  /**\n   * @description whether to use native scrollbars\n   */\n  nativeScrollbar: Boolean,\n}\nexport type {\n  SummaryMethod,\n  Table,\n  TableProps,\n  TableRefs,\n  ColumnCls,\n  ColumnStyle,\n  CellCls,\n  CellStyle,\n  DefaultRow,\n  TreeNode,\n  RenderRowData,\n  Sort,\n  Filter,\n  TableColumnCtx,\n  TreeProps,\n  TableTooltipData,\n  TableSortOrder,\n  RenderExpanded,\n  TableConfigContext,\n}\n","import { h } from 'vue'\nimport { isUndefined } from '@pit-element-plus/utils'\n\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { DefaultRow } from './table/defaults'\n\ntype Props = {\n  tableLayout: 'fixed' | 'auto'\n  columns?: TableColumnCtx<DefaultRow>[]\n}\n\nexport function hColgroup(props: Props) {\n  const isAuto = props.tableLayout === 'auto'\n  let columns = props.columns || []\n  if (isAuto) {\n    if (columns.every(({ width }) => isUndefined(width))) {\n      columns = []\n    }\n  }\n  const getPropsData = (column: TableColumnCtx<DefaultRow>) => {\n    const propsData = {\n      key: `${props.tableLayout}_${column.id}`,\n      style: {},\n      name: undefined as string | undefined,\n    }\n    if (isAuto) {\n      propsData.style = {\n        width: `${column.width}px`,\n      }\n    } else {\n      propsData.name = column.id\n    }\n    return propsData\n  }\n\n  return h(\n    'colgroup',\n    {},\n    columns.map((column) => h('col', getPropsData(column)))\n  )\n}\n\nhColgroup.props = ['columns', 'tableLayout']\n","import { ref } from 'vue'\nimport { isNumber } from '@pit-element-plus/utils'\n\nexport const useScrollbar = () => {\n  const scrollBarRef = ref()\n\n  const scrollTo = (options: ScrollToOptions | number, yCoord?: number) => {\n    const scrollbar = scrollBarRef.value\n    if (scrollbar) {\n      scrollbar.scrollTo(options, yCoord)\n    }\n  }\n\n  const setScrollPosition = (position: 'Top' | 'Left', offset?: number) => {\n    const scrollbar = scrollBarRef.value\n    if (scrollbar && isNumber(offset) && ['Top', 'Left'].includes(position)) {\n      scrollbar[`setScroll${position}`](offset)\n    }\n  }\n\n  const setScrollTop = (top?: number) => setScrollPosition('Top', top)\n  const setScrollLeft = (left?: number) => setScrollPosition('Left', left)\n\n  return {\n    scrollBarRef,\n    scrollTo,\n    setScrollTop,\n    setScrollLeft,\n  }\n}\n","<template>\n  <div\n    ref=\"tableWrapper\"\n    :class=\"[\n      {\n        [ns.m('fit')]: fit,\n        [ns.m('striped')]: stripe,\n        [ns.m('border')]: border || isGroup,\n        [ns.m('hidden')]: isHidden,\n        [ns.m('group')]: isGroup,\n        [ns.m('fluid-height')]: maxHeight,\n        [ns.m('scrollable-x')]: layout.scrollX.value,\n        [ns.m('scrollable-y')]: layout.scrollY.value,\n        [ns.m('enable-row-hover')]: !store.states.isComplex.value,\n        [ns.m('enable-row-transition')]:\n          (store.states.data.value || []).length !== 0 &&\n          (store.states.data.value || []).length < 100,\n        'has-footer': showSummary,\n      },\n      ns.m(tableSize),\n      className,\n      ns.b(),\n      ns.m(`layout-${tableLayout}`),\n    ]\"\n    :style=\"style\"\n    :data-prefix=\"ns.namespace.value\"\n    @mouseleave=\"handleMouseLeave\"\n  >\n    <div ref=\"tableInnerWrapper\" :class=\"ns.e('inner-wrapper')\">\n      <div ref=\"hiddenColumns\" class=\"hidden-columns\">\n        <slot />\n      </div>\n      <div\n        v-if=\"showHeader && tableLayout === 'fixed'\"\n        ref=\"headerWrapper\"\n        v-mousewheel=\"handleHeaderFooterMousewheel\"\n        :class=\"ns.e('header-wrapper')\"\n      >\n        <table\n          ref=\"tableHeader\"\n          :class=\"ns.e('header')\"\n          :style=\"tableBodyStyles\"\n          border=\"0\"\n          cellpadding=\"0\"\n          cellspacing=\"0\"\n        >\n          <hColgroup\n            :columns=\"store.states.columns.value\"\n            :table-layout=\"tableLayout\"\n          />\n          <table-header\n            ref=\"tableHeaderRef\"\n            :border=\"border\"\n            :default-sort=\"defaultSort\"\n            :store=\"store\"\n            :append-filter-panel-to=\"appendFilterPanelTo\"\n            :allow-drag-last-column=\"allowDragLastColumn\"\n            @set-drag-visible=\"setDragVisible\"\n          />\n        </table>\n      </div>\n      <div ref=\"bodyWrapper\" :class=\"ns.e('body-wrapper')\">\n        <el-scrollbar\n          ref=\"scrollBarRef\"\n          :view-style=\"scrollbarViewStyle\"\n          :wrap-style=\"scrollbarStyle\"\n          :always=\"scrollbarAlwaysOn\"\n          :tabindex=\"scrollbarTabindex\"\n          :native=\"nativeScrollbar\"\n          @scroll=\"$emit('scroll', $event)\"\n        >\n          <table\n            ref=\"tableBody\"\n            :class=\"ns.e('body')\"\n            cellspacing=\"0\"\n            cellpadding=\"0\"\n            border=\"0\"\n            :style=\"{\n              width: bodyWidth,\n              tableLayout,\n            }\"\n          >\n            <hColgroup\n              :columns=\"store.states.columns.value\"\n              :table-layout=\"tableLayout\"\n            />\n            <table-header\n              v-if=\"showHeader && tableLayout === 'auto'\"\n              ref=\"tableHeaderRef\"\n              :class=\"ns.e('body-header')\"\n              :border=\"border\"\n              :default-sort=\"defaultSort\"\n              :store=\"store\"\n              :append-filter-panel-to=\"appendFilterPanelTo\"\n              @set-drag-visible=\"setDragVisible\"\n            />\n            <table-body\n              :context=\"context\"\n              :highlight=\"highlightCurrentRow\"\n              :row-class-name=\"rowClassName\"\n              :tooltip-effect=\"computedTooltipEffect\"\n              :tooltip-options=\"computedTooltipOptions\"\n              :row-style=\"rowStyle\"\n              :store=\"store\"\n              :stripe=\"stripe\"\n            />\n            <table-footer\n              v-if=\"showSummary && tableLayout === 'auto'\"\n              :class=\"ns.e('body-footer')\"\n              :border=\"border\"\n              :default-sort=\"defaultSort\"\n              :store=\"store\"\n              :sum-text=\"computedSumText\"\n              :summary-method=\"summaryMethod\"\n            />\n          </table>\n          <div\n            v-if=\"isEmpty\"\n            ref=\"emptyBlock\"\n            :style=\"emptyBlockStyle\"\n            :class=\"ns.e('empty-block')\"\n          >\n            <span :class=\"ns.e('empty-text')\">\n              <slot name=\"empty\">{{ computedEmptyText }}</slot>\n            </span>\n          </div>\n          <div\n            v-if=\"$slots.append\"\n            ref=\"appendWrapper\"\n            :class=\"ns.e('append-wrapper')\"\n          >\n            <slot name=\"append\" />\n          </div>\n        </el-scrollbar>\n      </div>\n      <div\n        v-if=\"showSummary && tableLayout === 'fixed'\"\n        v-show=\"!isEmpty\"\n        ref=\"footerWrapper\"\n        v-mousewheel=\"handleHeaderFooterMousewheel\"\n        :class=\"ns.e('footer-wrapper')\"\n      >\n        <table\n          :class=\"ns.e('footer')\"\n          cellspacing=\"0\"\n          cellpadding=\"0\"\n          border=\"0\"\n          :style=\"tableBodyStyles\"\n        >\n          <hColgroup\n            :columns=\"store.states.columns.value\"\n            :table-layout=\"tableLayout\"\n          />\n          <table-footer\n            :border=\"border\"\n            :default-sort=\"defaultSort\"\n            :store=\"store\"\n            :sum-text=\"computedSumText\"\n            :summary-method=\"summaryMethod\"\n          />\n        </table>\n      </div>\n      <div v-if=\"border || isGroup\" :class=\"ns.e('border-left-patch')\" />\n    </div>\n    <div\n      v-show=\"resizeProxyVisible\"\n      ref=\"resizeProxy\"\n      :class=\"ns.e('column-resize-proxy')\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  onBeforeUnmount,\n  provide,\n} from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { Mousewheel } from '@pit-element-plus/directives'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { createStore } from './store/helper'\nimport TableLayout from './table-layout'\nimport TableHeader from './table-header'\nimport TableBody from './table-body'\nimport TableFooter from './table-footer'\nimport useUtils from './table/utils-helper'\nimport { convertToRows } from './table-header/utils-helper'\nimport useStyle from './table/style-helper'\nimport useKeyRender from './table/key-render-helper'\nimport defaultProps from './table/defaults'\nimport { TABLE_INJECTION_KEY } from './tokens'\nimport { hColgroup } from './h-helper'\nimport { useScrollbar } from './composables/use-scrollbar'\n\nimport type { Table } from './table/defaults'\n\nlet tableIdSeed = 1\nexport default defineComponent({\n  name: 'ElTable',\n  directives: {\n    Mousewheel,\n  },\n  components: {\n    TableHeader,\n    TableBody,\n    TableFooter,\n    ElScrollbar,\n    hColgroup,\n  },\n  props: defaultProps,\n  emits: [\n    'select',\n    'select-all',\n    'selection-change',\n    'cell-mouse-enter',\n    'cell-mouse-leave',\n    'cell-contextmenu',\n    'cell-click',\n    'cell-dblclick',\n    'row-click',\n    'row-contextmenu',\n    'row-dblclick',\n    'header-click',\n    'header-contextmenu',\n    'sort-change',\n    'filter-change',\n    'current-change',\n    'header-dragend',\n    'expand-change',\n    'scroll',\n  ],\n  setup(props) {\n    type Row = (typeof props.data)[number]\n    const { t } = useLocale()\n    const ns = useNamespace('table')\n    const globalConfig = useGlobalConfig('table')\n    const table = getCurrentInstance() as Table<Row>\n    provide(TABLE_INJECTION_KEY, table)\n    const store = createStore<Row>(table, props)\n    table.store = store\n    const layout = new TableLayout<Row>({\n      store: table.store,\n      table,\n      fit: props.fit,\n      showHeader: props.showHeader,\n    })\n    table.layout = layout\n\n    const isEmpty = computed(() => (store.states.data.value || []).length === 0)\n\n    /**\n     * open functions\n     */\n    const {\n      setCurrentRow,\n      getSelectionRows,\n      toggleRowSelection,\n      clearSelection,\n      clearFilter,\n      toggleAllSelection,\n      toggleRowExpansion,\n      clearSort,\n      sort,\n      updateKeyChildren,\n    } = useUtils<Row>(store)\n    const {\n      isHidden,\n      renderExpanded,\n      setDragVisible,\n      isGroup,\n      handleMouseLeave,\n      handleHeaderFooterMousewheel,\n      tableSize,\n      emptyBlockStyle,\n      resizeProxyVisible,\n      bodyWidth,\n      resizeState,\n      doLayout,\n      tableBodyStyles,\n      tableLayout,\n      scrollbarViewStyle,\n      scrollbarStyle,\n    } = useStyle<Row>(props, layout, store, table)\n\n    const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } =\n      useScrollbar()\n\n    const debouncedUpdateLayout = debounce(doLayout, 50)\n\n    const tableId = `${ns.namespace.value}-table_${tableIdSeed++}`\n    table.tableId = tableId\n    table.state = {\n      isGroup,\n      resizeState,\n      doLayout,\n      debouncedUpdateLayout,\n    }\n    const computedSumText = computed(\n      () => props.sumText ?? t('el.table.sumText')\n    )\n\n    const computedEmptyText = computed(() => {\n      return props.emptyText ?? t('el.table.emptyText')\n    })\n\n    const computedTooltipEffect = computed(\n      () => props.tooltipEffect ?? globalConfig.value?.tooltipEffect\n    )\n\n    const computedTooltipOptions = computed(\n      () => props.tooltipOptions ?? globalConfig.value?.tooltipOptions\n    )\n\n    const columns = computed(() => {\n      return convertToRows(store.states.originColumns.value)[0]\n    })\n\n    useKeyRender(table)\n\n    onBeforeUnmount(() => {\n      debouncedUpdateLayout.cancel()\n    })\n\n    return {\n      ns,\n      layout,\n      store,\n      columns,\n      handleHeaderFooterMousewheel,\n      handleMouseLeave,\n      tableId,\n      tableSize,\n      isHidden,\n      isEmpty,\n      renderExpanded,\n      resizeProxyVisible,\n      resizeState,\n      isGroup,\n      bodyWidth,\n      tableBodyStyles,\n      emptyBlockStyle,\n      debouncedUpdateLayout,\n      /**\n       * @description used in single selection Table, set a certain row selected. If called without any parameter, it will clear selection\n       */\n      setCurrentRow,\n      /**\n       * @description returns the currently selected rows\n       */\n      getSelectionRows,\n      /**\n       * @description used in multiple selection Table, toggle if a certain row is selected. With the second parameter, you can directly set if this row is selected\n       */\n      toggleRowSelection,\n      /**\n       * @description used in multiple selection Table, clear user selection\n       */\n      clearSelection,\n      /**\n       * @description clear filters of the columns whose `columnKey` are passed in. If no params, clear all filters\n       */\n      clearFilter,\n      /**\n       * @description used in multiple selection Table, toggle select all and deselect all\n       */\n      toggleAllSelection,\n      /**\n       * @description used in expandable Table or tree Table, toggle if a certain row is expanded. With the second parameter, you can directly set if this row is expanded or collapsed\n       */\n      toggleRowExpansion,\n      /**\n       * @description clear sorting, restore data to the original order\n       */\n      clearSort,\n      /**\n       * @description refresh the layout of Table. When the visibility of Table changes, you may need to call this method to get a correct layout\n       */\n      doLayout,\n      /**\n       * @description sort Table manually. Property `prop` is used to set sort column, property `order` is used to set sort order\n       */\n      sort,\n      /**\n       * @description used in lazy Table, must set `rowKey`, update key children\n       */\n      updateKeyChildren,\n      t,\n      setDragVisible,\n      context: table,\n      computedSumText,\n      computedEmptyText,\n      computedTooltipEffect,\n      computedTooltipOptions,\n      tableLayout,\n      scrollbarViewStyle,\n      scrollbarStyle,\n      scrollBarRef,\n      /**\n       * @description scrolls to a particular set of coordinates\n       */\n      scrollTo,\n      /**\n       * @description set horizontal scroll position\n       */\n      setScrollLeft,\n      /**\n       * @description set vertical scroll position\n       */\n      setScrollTop,\n      /**\n       * @description whether to allow drag the last column\n       */\n      allowDragLastColumn: props.allowDragLastColumn,\n    }\n  },\n})\n</script>\n","<template>\n  <div\n    ref=\"tableWrapper\"\n    :class=\"[\n      {\n        [ns.m('fit')]: fit,\n        [ns.m('striped')]: stripe,\n        [ns.m('border')]: border || isGroup,\n        [ns.m('hidden')]: isHidden,\n        [ns.m('group')]: isGroup,\n        [ns.m('fluid-height')]: maxHeight,\n        [ns.m('scrollable-x')]: layout.scrollX.value,\n        [ns.m('scrollable-y')]: layout.scrollY.value,\n        [ns.m('enable-row-hover')]: !store.states.isComplex.value,\n        [ns.m('enable-row-transition')]:\n          (store.states.data.value || []).length !== 0 &&\n          (store.states.data.value || []).length < 100,\n        'has-footer': showSummary,\n      },\n      ns.m(tableSize),\n      className,\n      ns.b(),\n      ns.m(`layout-${tableLayout}`),\n    ]\"\n    :style=\"style\"\n    :data-prefix=\"ns.namespace.value\"\n    @mouseleave=\"handleMouseLeave\"\n  >\n    <div ref=\"tableInnerWrapper\" :class=\"ns.e('inner-wrapper')\">\n      <div ref=\"hiddenColumns\" class=\"hidden-columns\">\n        <slot />\n      </div>\n      <div\n        v-if=\"showHeader && tableLayout === 'fixed'\"\n        ref=\"headerWrapper\"\n        v-mousewheel=\"handleHeaderFooterMousewheel\"\n        :class=\"ns.e('header-wrapper')\"\n      >\n        <table\n          ref=\"tableHeader\"\n          :class=\"ns.e('header')\"\n          :style=\"tableBodyStyles\"\n          border=\"0\"\n          cellpadding=\"0\"\n          cellspacing=\"0\"\n        >\n          <hColgroup\n            :columns=\"store.states.columns.value\"\n            :table-layout=\"tableLayout\"\n          />\n          <table-header\n            ref=\"tableHeaderRef\"\n            :border=\"border\"\n            :default-sort=\"defaultSort\"\n            :store=\"store\"\n            :append-filter-panel-to=\"appendFilterPanelTo\"\n            :allow-drag-last-column=\"allowDragLastColumn\"\n            @set-drag-visible=\"setDragVisible\"\n          />\n        </table>\n      </div>\n      <div ref=\"bodyWrapper\" :class=\"ns.e('body-wrapper')\">\n        <el-scrollbar\n          ref=\"scrollBarRef\"\n          :view-style=\"scrollbarViewStyle\"\n          :wrap-style=\"scrollbarStyle\"\n          :always=\"scrollbarAlwaysOn\"\n          :tabindex=\"scrollbarTabindex\"\n          :native=\"nativeScrollbar\"\n          @scroll=\"$emit('scroll', $event)\"\n        >\n          <table\n            ref=\"tableBody\"\n            :class=\"ns.e('body')\"\n            cellspacing=\"0\"\n            cellpadding=\"0\"\n            border=\"0\"\n            :style=\"{\n              width: bodyWidth,\n              tableLayout,\n            }\"\n          >\n            <hColgroup\n              :columns=\"store.states.columns.value\"\n              :table-layout=\"tableLayout\"\n            />\n            <table-header\n              v-if=\"showHeader && tableLayout === 'auto'\"\n              ref=\"tableHeaderRef\"\n              :class=\"ns.e('body-header')\"\n              :border=\"border\"\n              :default-sort=\"defaultSort\"\n              :store=\"store\"\n              :append-filter-panel-to=\"appendFilterPanelTo\"\n              @set-drag-visible=\"setDragVisible\"\n            />\n            <table-body\n              :context=\"context\"\n              :highlight=\"highlightCurrentRow\"\n              :row-class-name=\"rowClassName\"\n              :tooltip-effect=\"computedTooltipEffect\"\n              :tooltip-options=\"computedTooltipOptions\"\n              :row-style=\"rowStyle\"\n              :store=\"store\"\n              :stripe=\"stripe\"\n            />\n            <table-footer\n              v-if=\"showSummary && tableLayout === 'auto'\"\n              :class=\"ns.e('body-footer')\"\n              :border=\"border\"\n              :default-sort=\"defaultSort\"\n              :store=\"store\"\n              :sum-text=\"computedSumText\"\n              :summary-method=\"summaryMethod\"\n            />\n          </table>\n          <div\n            v-if=\"isEmpty\"\n            ref=\"emptyBlock\"\n            :style=\"emptyBlockStyle\"\n            :class=\"ns.e('empty-block')\"\n          >\n            <span :class=\"ns.e('empty-text')\">\n              <slot name=\"empty\">{{ computedEmptyText }}</slot>\n            </span>\n          </div>\n          <div\n            v-if=\"$slots.append\"\n            ref=\"appendWrapper\"\n            :class=\"ns.e('append-wrapper')\"\n          >\n            <slot name=\"append\" />\n          </div>\n        </el-scrollbar>\n      </div>\n      <div\n        v-if=\"showSummary && tableLayout === 'fixed'\"\n        v-show=\"!isEmpty\"\n        ref=\"footerWrapper\"\n        v-mousewheel=\"handleHeaderFooterMousewheel\"\n        :class=\"ns.e('footer-wrapper')\"\n      >\n        <table\n          :class=\"ns.e('footer')\"\n          cellspacing=\"0\"\n          cellpadding=\"0\"\n          border=\"0\"\n          :style=\"tableBodyStyles\"\n        >\n          <hColgroup\n            :columns=\"store.states.columns.value\"\n            :table-layout=\"tableLayout\"\n          />\n          <table-footer\n            :border=\"border\"\n            :default-sort=\"defaultSort\"\n            :store=\"store\"\n            :sum-text=\"computedSumText\"\n            :summary-method=\"summaryMethod\"\n          />\n        </table>\n      </div>\n      <div v-if=\"border || isGroup\" :class=\"ns.e('border-left-patch')\" />\n    </div>\n    <div\n      v-show=\"resizeProxyVisible\"\n      ref=\"resizeProxy\"\n      :class=\"ns.e('column-resize-proxy')\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  onBeforeUnmount,\n  provide,\n} from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { Mousewheel } from '@pit-element-plus/directives'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { createStore } from './store/helper'\nimport TableLayout from './table-layout'\nimport TableHeader from './table-header'\nimport TableBody from './table-body'\nimport TableFooter from './table-footer'\nimport useUtils from './table/utils-helper'\nimport { convertToRows } from './table-header/utils-helper'\nimport useStyle from './table/style-helper'\nimport useKeyRender from './table/key-render-helper'\nimport defaultProps from './table/defaults'\nimport { TABLE_INJECTION_KEY } from './tokens'\nimport { hColgroup } from './h-helper'\nimport { useScrollbar } from './composables/use-scrollbar'\n\nimport type { Table } from './table/defaults'\n\nlet tableIdSeed = 1\nexport default defineComponent({\n  name: 'ElTable',\n  directives: {\n    Mousewheel,\n  },\n  components: {\n    TableHeader,\n    TableBody,\n    TableFooter,\n    ElScrollbar,\n    hColgroup,\n  },\n  props: defaultProps,\n  emits: [\n    'select',\n    'select-all',\n    'selection-change',\n    'cell-mouse-enter',\n    'cell-mouse-leave',\n    'cell-contextmenu',\n    'cell-click',\n    'cell-dblclick',\n    'row-click',\n    'row-contextmenu',\n    'row-dblclick',\n    'header-click',\n    'header-contextmenu',\n    'sort-change',\n    'filter-change',\n    'current-change',\n    'header-dragend',\n    'expand-change',\n    'scroll',\n  ],\n  setup(props) {\n    type Row = (typeof props.data)[number]\n    const { t } = useLocale()\n    const ns = useNamespace('table')\n    const globalConfig = useGlobalConfig('table')\n    const table = getCurrentInstance() as Table<Row>\n    provide(TABLE_INJECTION_KEY, table)\n    const store = createStore<Row>(table, props)\n    table.store = store\n    const layout = new TableLayout<Row>({\n      store: table.store,\n      table,\n      fit: props.fit,\n      showHeader: props.showHeader,\n    })\n    table.layout = layout\n\n    const isEmpty = computed(() => (store.states.data.value || []).length === 0)\n\n    /**\n     * open functions\n     */\n    const {\n      setCurrentRow,\n      getSelectionRows,\n      toggleRowSelection,\n      clearSelection,\n      clearFilter,\n      toggleAllSelection,\n      toggleRowExpansion,\n      clearSort,\n      sort,\n      updateKeyChildren,\n    } = useUtils<Row>(store)\n    const {\n      isHidden,\n      renderExpanded,\n      setDragVisible,\n      isGroup,\n      handleMouseLeave,\n      handleHeaderFooterMousewheel,\n      tableSize,\n      emptyBlockStyle,\n      resizeProxyVisible,\n      bodyWidth,\n      resizeState,\n      doLayout,\n      tableBodyStyles,\n      tableLayout,\n      scrollbarViewStyle,\n      scrollbarStyle,\n    } = useStyle<Row>(props, layout, store, table)\n\n    const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } =\n      useScrollbar()\n\n    const debouncedUpdateLayout = debounce(doLayout, 50)\n\n    const tableId = `${ns.namespace.value}-table_${tableIdSeed++}`\n    table.tableId = tableId\n    table.state = {\n      isGroup,\n      resizeState,\n      doLayout,\n      debouncedUpdateLayout,\n    }\n    const computedSumText = computed(\n      () => props.sumText ?? t('el.table.sumText')\n    )\n\n    const computedEmptyText = computed(() => {\n      return props.emptyText ?? t('el.table.emptyText')\n    })\n\n    const computedTooltipEffect = computed(\n      () => props.tooltipEffect ?? globalConfig.value?.tooltipEffect\n    )\n\n    const computedTooltipOptions = computed(\n      () => props.tooltipOptions ?? globalConfig.value?.tooltipOptions\n    )\n\n    const columns = computed(() => {\n      return convertToRows(store.states.originColumns.value)[0]\n    })\n\n    useKeyRender(table)\n\n    onBeforeUnmount(() => {\n      debouncedUpdateLayout.cancel()\n    })\n\n    return {\n      ns,\n      layout,\n      store,\n      columns,\n      handleHeaderFooterMousewheel,\n      handleMouseLeave,\n      tableId,\n      tableSize,\n      isHidden,\n      isEmpty,\n      renderExpanded,\n      resizeProxyVisible,\n      resizeState,\n      isGroup,\n      bodyWidth,\n      tableBodyStyles,\n      emptyBlockStyle,\n      debouncedUpdateLayout,\n      /**\n       * @description used in single selection Table, set a certain row selected. If called without any parameter, it will clear selection\n       */\n      setCurrentRow,\n      /**\n       * @description returns the currently selected rows\n       */\n      getSelectionRows,\n      /**\n       * @description used in multiple selection Table, toggle if a certain row is selected. With the second parameter, you can directly set if this row is selected\n       */\n      toggleRowSelection,\n      /**\n       * @description used in multiple selection Table, clear user selection\n       */\n      clearSelection,\n      /**\n       * @description clear filters of the columns whose `columnKey` are passed in. If no params, clear all filters\n       */\n      clearFilter,\n      /**\n       * @description used in multiple selection Table, toggle select all and deselect all\n       */\n      toggleAllSelection,\n      /**\n       * @description used in expandable Table or tree Table, toggle if a certain row is expanded. With the second parameter, you can directly set if this row is expanded or collapsed\n       */\n      toggleRowExpansion,\n      /**\n       * @description clear sorting, restore data to the original order\n       */\n      clearSort,\n      /**\n       * @description refresh the layout of Table. When the visibility of Table changes, you may need to call this method to get a correct layout\n       */\n      doLayout,\n      /**\n       * @description sort Table manually. Property `prop` is used to set sort column, property `order` is used to set sort order\n       */\n      sort,\n      /**\n       * @description used in lazy Table, must set `rowKey`, update key children\n       */\n      updateKeyChildren,\n      t,\n      setDragVisible,\n      context: table,\n      computedSumText,\n      computedEmptyText,\n      computedTooltipEffect,\n      computedTooltipOptions,\n      tableLayout,\n      scrollbarViewStyle,\n      scrollbarStyle,\n      scrollBarRef,\n      /**\n       * @description scrolls to a particular set of coordinates\n       */\n      scrollTo,\n      /**\n       * @description set horizontal scroll position\n       */\n      setScrollLeft,\n      /**\n       * @description set vertical scroll position\n       */\n      setScrollTop,\n      /**\n       * @description whether to allow drag the last column\n       */\n      allowDragLastColumn: props.allowDragLastColumn,\n    }\n  },\n})\n</script>\n","import { h } from 'vue'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ArrowRight, Loading } from 'pit-element-icons'\nimport {\n  getProp,\n  isBoolean,\n  isFunction,\n  isNumber,\n} from '@pit-element-plus/utils'\n\nimport type { VNode } from 'vue'\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { Store } from './store'\nimport type { DefaultRow, TreeNode } from './table/defaults'\n\nconst defaultClassNames = {\n  selection: 'table-column--selection',\n  expand: 'table__expand-column',\n} as const\n\nexport const cellStarts = {\n  default: {\n    order: '',\n  },\n  selection: {\n    width: 48,\n    minWidth: 48,\n    realWidth: 48,\n    order: '',\n  },\n  expand: {\n    width: 48,\n    minWidth: 48,\n    realWidth: 48,\n    order: '',\n  },\n  index: {\n    width: 48,\n    minWidth: 48,\n    realWidth: 48,\n    order: '',\n  },\n}\n\nexport const getDefaultClassName = (type: string) => {\n  return defaultClassNames[type as keyof typeof defaultClassNames] || ''\n}\n\n// 这些选项不应该被覆盖\nexport const cellForced = {\n  selection: {\n    renderHeader<T extends DefaultRow>({ store }: { store: Store<T> }) {\n      function isDisabled() {\n        return store.states.data.value && store.states.data.value.length === 0\n      }\n      return h(ElCheckbox, {\n        disabled: isDisabled(),\n        size: store.states.tableSize.value,\n        indeterminate:\n          store.states.selection.value.length > 0 &&\n          !store.states.isAllSelected.value,\n        'onUpdate:modelValue': store.toggleAllSelection ?? undefined,\n        modelValue: store.states.isAllSelected.value,\n        ariaLabel: store.t('el.table.selectAllLabel'),\n      })\n    },\n    renderCell<T extends DefaultRow>({\n      row,\n      column,\n      store,\n      $index,\n    }: {\n      row: T\n      column: TableColumnCtx<T>\n      store: Store<T>\n      $index: number\n    }) {\n      return h(ElCheckbox, {\n        disabled: column.selectable\n          ? !column.selectable.call(null, row, $index)\n          : false,\n        size: store.states.tableSize.value,\n        onChange: () => {\n          store.commit('rowSelectedChanged', row)\n        },\n        onClick: (event: Event) => event.stopPropagation(),\n        modelValue: store.isSelected(row),\n        ariaLabel: store.t('el.table.selectRowLabel'),\n      })\n    },\n    sortable: false,\n    resizable: false,\n  },\n  index: {\n    renderHeader<T extends DefaultRow>({\n      column,\n    }: {\n      column: TableColumnCtx<T>\n    }) {\n      return column.label || '#'\n    },\n    renderCell<T extends DefaultRow>({\n      column,\n      $index,\n    }: {\n      column: TableColumnCtx<T>\n      $index: number\n    }) {\n      let i = $index + 1\n      const index = column.index\n\n      if (isNumber(index)) {\n        i = $index + index\n      } else if (isFunction(index)) {\n        i = index($index)\n      }\n      return h('div', {}, [i])\n    },\n    sortable: false,\n  },\n  expand: {\n    renderHeader<T extends DefaultRow>({\n      column,\n    }: {\n      column: TableColumnCtx<T>\n    }) {\n      return column.label || ''\n    },\n    renderCell<T extends DefaultRow>({\n      column,\n      row,\n      store,\n      expanded,\n      $index,\n    }: {\n      column: TableColumnCtx<T>\n      row: T\n      store: Store<T>\n      expanded: boolean\n      $index: number\n    }) {\n      const { ns } = store\n      const classes = [ns.e('expand-icon')]\n\n      if (!column.renderExpand && expanded) {\n        classes.push(ns.em('expand-icon', 'expanded'))\n      }\n      const callback = function (e: Event) {\n        e.stopPropagation()\n        store.toggleRowExpansion(row)\n      }\n      const isRowExpandable =\n        store.states.rowExpandable.value?.(row, $index) ?? true\n      if (!isRowExpandable) {\n        classes.push(ns.is('disabled'))\n      }\n      return h(\n        'button',\n        {\n          type: 'button',\n          disabled: !isRowExpandable,\n          'aria-label': store.t(\n            expanded ? 'el.table.collapseRowLabel' : 'el.table.expandRowLabel'\n          ),\n          'aria-expanded': expanded,\n          class: classes,\n          onClick: callback,\n        },\n        {\n          default: () => {\n            if (column.renderExpand) {\n              return [\n                column.renderExpand({\n                  expanded,\n                  expandable: isRowExpandable,\n                }),\n              ]\n            }\n\n            return [\n              h(ElIcon, null, {\n                default: () => {\n                  return [h(ArrowRight)]\n                },\n              }),\n            ]\n          },\n        }\n      )\n    },\n    sortable: false,\n    resizable: false,\n  },\n}\n\nexport function defaultRenderCell<T extends DefaultRow>({\n  row,\n  column,\n  $index,\n}: {\n  row: T\n  column: TableColumnCtx<T>\n  $index: number\n}) {\n  const property = column.property\n  const value = property && getProp(row, property).value\n  if (column && column.formatter) {\n    return column.formatter(row, column, value, $index)\n  }\n  return value?.toString?.() || ''\n}\n\nexport function treeCellPrefix<T extends DefaultRow>(\n  {\n    row,\n    treeNode,\n    store,\n  }: {\n    row: T\n    treeNode: TreeNode\n    store: Store<T>\n  },\n  createPlaceholder = false\n) {\n  const { ns } = store\n  if (!treeNode) {\n    if (createPlaceholder) {\n      return [\n        h('span', {\n          class: ns.e('placeholder'),\n        }),\n      ]\n    }\n    return null\n  }\n  const ele: VNode[] = []\n  const callback = function (e: Event) {\n    e.stopPropagation()\n    if (treeNode.loading) {\n      return\n    }\n    store.loadOrToggle(row)\n  }\n  if (treeNode.indent) {\n    ele.push(\n      h('span', {\n        class: ns.e('indent'),\n        style: { 'padding-left': `${treeNode.indent}px` },\n      })\n    )\n  }\n  if (isBoolean(treeNode.expanded) && !treeNode.noLazyChildren) {\n    const expandClasses = [\n      ns.e('expand-icon'),\n      treeNode.expanded ? ns.em('expand-icon', 'expanded') : '',\n    ]\n    let icon = ArrowRight\n    if (treeNode.loading) {\n      icon = Loading\n    }\n\n    ele.push(\n      h(\n        'button',\n        {\n          type: 'button',\n          'aria-label': store.t(\n            treeNode.expanded\n              ? 'el.table.collapseRowLabel'\n              : 'el.table.expandRowLabel'\n          ),\n          'aria-expanded': treeNode.expanded,\n          class: expandClasses,\n          onClick: callback,\n        },\n        {\n          default: () => {\n            return [\n              h(\n                ElIcon,\n                { class: ns.is('loading', treeNode.loading) },\n                {\n                  default: () => [h(icon)],\n                }\n              ),\n            ]\n          },\n        }\n      )\n    )\n  } else {\n    ele.push(\n      h('span', {\n        class: ns.e('placeholder'),\n      })\n    )\n  }\n  return ele\n}\n","import { getCurrentInstance, watch } from 'vue'\nimport { hasOwn, isUndefined } from '@pit-element-plus/utils'\nimport { parseMinWidth, parseWidth } from '../util'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\n\nimport type { ComputedRef } from 'vue'\nimport type { DefaultRow } from '../table/defaults'\nimport type { TableColumn, TableColumnCtx, ValueOf } from './defaults'\n\nfunction getAllAliases(props: string[], aliases: Record<string, string>) {\n  return props.reduce((prev, cur) => {\n    prev[cur as keyof typeof prev] = cur\n    return prev\n  }, aliases)\n}\nfunction useWatcher<T extends DefaultRow>(\n  owner: ComputedRef<any>,\n  props_: Partial<TableColumnCtx<T>>\n) {\n  const instance = getCurrentInstance() as TableColumn<T>\n  const registerComplexWatchers = () => {\n    const props = ['fixed']\n    const aliases: Record<string, string> = {\n      realWidth: 'width',\n      realMinWidth: 'minWidth',\n    }\n    const allAliases = getAllAliases(props, aliases)\n    Object.keys(allAliases).forEach((key) => {\n      const columnKey = aliases[key]\n      if (hasOwn(props_, columnKey)) {\n        watch(\n          () => props_[columnKey],\n          (newVal) => {\n            let value: ValueOf<TableColumnCtx<T>> = newVal\n            if (columnKey === 'width' && key === 'realWidth') {\n              value = parseWidth(newVal)\n            }\n            if (columnKey === 'minWidth' && key === 'realMinWidth') {\n              value = parseMinWidth(newVal)\n            }\n            instance.columnConfig.value[columnKey as never] = value as never\n            instance.columnConfig.value[key as never] = value as never\n            const updateColumns = columnKey === 'fixed'\n            owner.value.store.scheduleLayout(updateColumns)\n          }\n        )\n      }\n    })\n  }\n  const registerNormalWatchers = () => {\n    const props = [\n      'label',\n      'filters',\n      'filterMultiple',\n      'filteredValue',\n      'sortable',\n      'index',\n      'formatter',\n      'className',\n      'labelClassName',\n      'filterClassName',\n      'showOverflowTooltip',\n      'tooltipFormatter',\n      'resizable',\n    ]\n    const parentProps = ['showOverflowTooltip']\n    const aliases: Record<string, string> = {\n      property: 'prop',\n      align: 'realAlign',\n      headerAlign: 'realHeaderAlign',\n    }\n    const allAliases = getAllAliases(props, aliases)\n    Object.keys(allAliases).forEach((key) => {\n      const columnKey = aliases[key]\n      if (hasOwn(props_, columnKey)) {\n        watch(\n          () => props_[columnKey],\n          (newVal) => {\n            instance.columnConfig.value[key as never] = newVal\n            if (key === 'filters' || key === 'filterMethod') {\n              instance.columnConfig.value['filterable'] = !!(\n                instance.columnConfig.value['filters'] ||\n                instance.columnConfig.value['filterMethod']\n              )\n            }\n          }\n        )\n      }\n    })\n    parentProps.forEach((key) => {\n      if (hasOwn(owner.value.props, key)) {\n        watch(\n          () => owner.value.props[key],\n          (newVal) => {\n            if (instance.columnConfig.value.type === 'selection') return\n            if (!isUndefined(props_[key])) return\n            instance.columnConfig.value[key] = newVal as never\n          }\n        )\n      }\n    })\n\n    const globalConfig = useGlobalConfig('table')\n    if (\n      globalConfig.value &&\n      hasOwn(globalConfig.value, 'showOverflowTooltip')\n    ) {\n      watch(\n        () => globalConfig.value?.showOverflowTooltip,\n        (newVal) => {\n          if (instance.columnConfig.value.type === 'selection') return\n          if (\n            !isUndefined(props_.showOverflowTooltip) ||\n            !isUndefined(owner.value.props.showOverflowTooltip)\n          )\n            return\n          instance.columnConfig.value.showOverflowTooltip = newVal as never\n        }\n      )\n    }\n  }\n\n  return {\n    registerComplexWatchers,\n    registerNormalWatchers,\n  }\n}\n\nexport default useWatcher\n","import {\n  Comment,\n  Fragment,\n  computed,\n  createTextVNode,\n  getCurrentInstance,\n  h,\n  ref,\n  renderSlot,\n  unref,\n  watchEffect,\n} from 'vue'\nimport { debugWarn, isArray, isUndefined } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  cellForced,\n  defaultRenderCell,\n  getDefaultClassName,\n  treeCellPrefix,\n} from '../config'\nimport { ensureValidVNode, parseMinWidth, parseWidth } from '../util'\n\nimport type { ComputedRef, RendererNode, Slots, VNode } from 'vue'\nimport type { TableColumn, TableColumnCtx } from './defaults'\nimport type { DefaultRow, Table } from '../table/defaults'\n\nfunction useRender<T extends DefaultRow>(\n  props: TableColumnCtx<T>,\n  slots: Slots,\n  owner: ComputedRef<Table<T>>\n) {\n  const instance = getCurrentInstance() as TableColumn<T>\n  const columnId = ref('')\n  const isSubColumn = ref(false)\n  const realAlign = ref<string | null>()\n  const realHeaderAlign = ref<string | null | undefined>()\n  const ns = useNamespace('table')\n  watchEffect(() => {\n    realAlign.value = props.align ? `is-${props.align}` : null\n    // nextline help render\n    realAlign.value\n  })\n  watchEffect(() => {\n    realHeaderAlign.value = props.headerAlign\n      ? `is-${props.headerAlign}`\n      : realAlign.value\n    // nextline help render\n    realHeaderAlign.value\n  })\n  const columnOrTableParent = computed<Table<T> | TableColumn<T>>(() => {\n    let parent: any = instance.vnode.vParent || instance.parent\n    while (parent && !parent.tableId && !parent.columnId) {\n      parent = parent.vnode.vParent || parent.parent\n    }\n    return parent\n  })\n  const hasTreeColumn = computed<boolean>(() => {\n    const { store } = (instance.parent as Table<T>)!\n    if (!store) return false\n    const { treeData } = store.states\n    const treeDataValue = treeData.value\n    return treeDataValue && Object.keys(treeDataValue).length > 0\n  })\n\n  const realWidth = ref(parseWidth(props.width))\n  const realMinWidth = ref(parseMinWidth(props.minWidth))\n  const setColumnWidth = (column: TableColumnCtx<T>) => {\n    if (realWidth.value) column.width = realWidth.value\n    if (realMinWidth.value) {\n      column.minWidth = realMinWidth.value\n    }\n    if (!realWidth.value && realMinWidth.value) {\n      column.width = undefined\n    }\n    if (!column.minWidth) {\n      column.minWidth = 80\n    }\n    column.realWidth = Number(\n      isUndefined(column.width) ? column.minWidth : column.width\n    )\n    return column\n  }\n  const setColumnForcedProps = (column: TableColumnCtx<T>) => {\n    // 对于特定类型的 column，某些属性不允许设置\n    const type = column.type\n    const source = cellForced[type as keyof typeof cellForced] || {}\n    Object.keys(source).forEach((prop) => {\n      const value = source[prop as keyof typeof source]\n      if (prop !== 'className' && !isUndefined(value)) {\n        ;(column as any)[prop] = value\n      }\n    })\n    const className = getDefaultClassName(type)\n    if (className) {\n      const forceClass = `${unref(ns.namespace)}-${className}`\n      column.className = column.className\n        ? `${column.className} ${forceClass}`\n        : forceClass\n    }\n    return column\n  }\n\n  const checkSubColumn = (children: VNode | VNode[]) => {\n    if (isArray(children)) {\n      children.forEach((child) => check(child))\n    } else {\n      check(children)\n    }\n    function check(item: any) {\n      if (item?.type?.name === 'ElTableColumn') {\n        item.vParent = instance\n      }\n    }\n  }\n  const setColumnRenders = (column: TableColumnCtx<T>) => {\n    // renderHeader 属性不推荐使用。\n    //@ts-expect-error\n    if (props.renderHeader) {\n      debugWarn(\n        'TableColumn',\n        'Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header.'\n      )\n    } else if (column.type !== 'selection') {\n      column.renderHeader = (scope) => {\n        // help render\n        instance.columnConfig.value['label']\n\n        if (slots.header) {\n          const slotResult = slots.header(scope)\n          // Manual valid check to support v-if fallback\n          // and bypass renderSlot to support HMR\n          if (ensureValidVNode(slotResult)) {\n            return h(Fragment, slotResult)\n          }\n        }\n\n        return createTextVNode(column.label)\n      }\n    }\n\n    if (slots['filter-icon']) {\n      column.renderFilterIcon = (scope) => {\n        return renderSlot(slots, 'filter-icon', scope)\n      }\n    }\n\n    if (slots.expand) {\n      column.renderExpand = (scope) => {\n        return renderSlot(slots, 'expand', scope)\n      }\n    }\n\n    let originRenderCell = column.renderCell\n    // TODO: 这里的实现调整\n    if (column.type === 'expand') {\n      // 对于展开行，renderCell 不允许配置的。在上一步中已经设置过，这里需要简单封装一下。\n      column.renderCell = (data) =>\n        h(\n          'div',\n          {\n            class: 'cell',\n          },\n          [originRenderCell(data)]\n        )\n      owner.value.renderExpanded = (row) => {\n        return slots.default ? slots.default(row) : slots.default\n      }\n    } else {\n      originRenderCell = originRenderCell || defaultRenderCell\n      // 对 renderCell 进行包装\n      column.renderCell = (data) => {\n        let children: VNode | VNode[] | null = null\n        if (slots.default) {\n          const vnodes = slots.default(data)\n          children = vnodes.some((v) => v.type !== Comment)\n            ? vnodes\n            : originRenderCell(data)\n        } else {\n          children = originRenderCell(data)\n        }\n\n        const { columns } = owner.value.store.states\n        const firstUserColumnIndex = columns.value.findIndex(\n          (item) => item.type === 'default'\n        )\n        const shouldCreatePlaceholder =\n          hasTreeColumn.value && data.cellIndex === firstUserColumnIndex\n        const prefix = treeCellPrefix(data, shouldCreatePlaceholder)\n        const props = {\n          class: 'cell',\n          style: {},\n        }\n        if (column.showOverflowTooltip) {\n          props.class = `${props.class} ${unref(ns.namespace)}-tooltip`\n          props.style = {\n            width: `${\n              (data.column.realWidth || Number(data.column.width)) - 1\n            }px`,\n          }\n        }\n        checkSubColumn(children)\n        return h('div', props, [prefix, children])\n      }\n    }\n    return column\n  }\n  const getPropsData = (...propsKey: string[][]) => {\n    return propsKey.reduce(\n      (prev, cur) => {\n        if (isArray(cur)) {\n          cur.forEach((key) => {\n            prev[key] = props[key as keyof TableColumnCtx<T>]\n          })\n        }\n        return prev\n      },\n      {} as Record<string, any>\n    )\n  }\n  const getColumnElIndex = (children: T[], child: RendererNode | null) => {\n    return Array.prototype.indexOf.call(children, child)\n  }\n\n  const updateColumnOrder = () => {\n    owner.value.store.commit('updateColumnOrder', instance.columnConfig.value)\n  }\n\n  return {\n    columnId,\n    realAlign,\n    isSubColumn,\n    realHeaderAlign,\n    columnOrTableParent,\n    setColumnWidth,\n    setColumnForcedProps,\n    setColumnRenders,\n    getPropsData,\n    getColumnElIndex,\n    updateColumnOrder,\n  }\n}\n\nexport default useRender\n","import type { ComponentInternalInstance, PropType, Ref, VNode } from 'vue'\nimport type { DefaultRow, Table, TableSortOrder } from '../table/defaults'\nimport type {\n  TableOverflowTooltipFormatter,\n  TableOverflowTooltipOptions,\n} from '../util'\nimport type { Store } from '../store'\n\ntype CI<T extends DefaultRow> = {\n  column: TableColumnCtx<T>\n  $index: number\n  store: Store<T>\n  _self: any\n}\n\ntype Filters = {\n  text: string\n  value: string\n}[]\n\ntype FilterMethods<T extends DefaultRow> = (\n  value: string,\n  row: T,\n  column: TableColumnCtx<T>\n) => void\n\ntype ValueOf<T> = T[keyof T]\n\ntype TableColumnCtx<T extends DefaultRow = DefaultRow> = {\n  id: string\n  realWidth: number | null\n  type: string\n  label: string\n  className: string\n  labelClassName: string\n  property: string\n  prop: string\n  width?: string | number\n  minWidth: string | number\n  renderHeader: (data: CI<T>) => VNode\n  sortable: boolean | string\n  sortMethod: (a: T, b: T) => number\n  sortBy: string | ((row: T, index: number, array?: T[]) => string) | string[]\n  resizable: boolean\n  columnKey: string\n  rawColumnKey: string\n  align: string\n  headerAlign: string\n  showOverflowTooltip?: boolean | TableOverflowTooltipOptions\n  tooltipFormatter?: TableOverflowTooltipFormatter<T>\n  fixed: boolean | string\n  formatter: (\n    row: T,\n    column: TableColumnCtx<T>,\n    cellValue: any,\n    index: number\n  ) => VNode | string\n  selectable: (row: T, index: number) => boolean\n  reserveSelection: boolean\n  filterMethod: FilterMethods<T>\n  filteredValue: string[]\n  filters: Filters\n  filterPlacement: string\n  filterMultiple: boolean\n  filterClassName: string\n  index: number | ((index: number) => number)\n  sortOrders: (TableSortOrder | null)[]\n  renderCell: (data: any) => VNode | VNode[]\n  colSpan: number\n  rowSpan: number\n  children?: TableColumnCtx<T>[]\n  level: number\n  filterable: boolean | FilterMethods<T> | Filters\n  order: TableSortOrder | null\n  isColumnGroup: boolean\n  isSubColumn: boolean\n  columns: TableColumnCtx<T>[]\n  getColumnIndex: () => number\n  no: number\n  filterOpened?: boolean\n  renderFilterIcon?: (scope: any) => VNode\n  renderExpand?: (scope: any) => VNode\n}\n\ninterface TableColumn<T extends DefaultRow> extends ComponentInternalInstance {\n  vnode: {\n    vParent: TableColumn<T> | Table<T>\n  } & VNode\n  vParent: TableColumn<T> | Table<T>\n  columnId: string\n  columnConfig: Ref<Partial<TableColumnCtx<T>>>\n}\n\nexport type { Filters, FilterMethods, TableColumnCtx, TableColumn, ValueOf }\n\nexport default {\n  /**\n   * @description type of the column. If set to `selection`, the column will display checkbox. If set to `index`, the column will display index of the row (staring from 1). If set to `expand`, the column will display expand icon\n   */\n  type: {\n    type: String,\n    default: 'default',\n  },\n  /**\n   * @description column label\n   */\n  label: String,\n  /**\n   * @description class name of cells in the column\n   */\n  className: String,\n  /**\n   * @description class name of the label of this column\n   */\n  labelClassName: String,\n  /**\n   * @description\n   */\n  property: String,\n  /**\n   * @description field name. You can also use its alias: `property`\n   */\n  prop: String,\n  /**\n   * @description column width\n   */\n  width: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description column minimum width. Columns with `width` has a fixed width, while columns with `min-width` has a width that is distributed in proportion\n   */\n  minWidth: {\n    type: [String, Number],\n    default: '',\n  },\n  /**\n   * @description render function for table header of this column\n   */\n  renderHeader: Function as PropType<TableColumnCtx<any>['renderHeader']>,\n  /**\n   * @description whether column can be sorted. Remote sorting can be done by setting this attribute to 'custom' and listening to the `sort-change` event of Table\n   */\n  sortable: {\n    type: [Boolean, String],\n    default: false,\n  },\n  /**\n   * @description sorting method, works when `sortable` is `true`. Should return a number, just like Array.sort\n   */\n  sortMethod: Function as PropType<TableColumnCtx<any>['sortMethod']>,\n  /**\n   * @description specify which property to sort by, works when `sortable` is `true` and `sort-method` is `undefined`. If set to an Array, the column will sequentially sort by the next property if the previous one is equal\n   */\n  sortBy: [String, Function, Array] as PropType<TableColumnCtx<any>['sortBy']>,\n  /**\n   * @description whether column width can be resized, works when `border` of `el-table` is `true`\n   */\n  resizable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description column's key. If you need to use the filter-change event, you need this attribute to identify which column is being filtered\n   */\n  columnKey: String,\n  /**\n   * @description alignment, the value should be 'left' \\/ 'center' \\/ 'right'\n   */\n  align: String,\n  /**\n   * @description alignment of the table header. If omitted, the value of the above `align` attribute will be applied, the value should be 'left' \\/ 'center' \\/ 'right'\n   */\n  headerAlign: String,\n  /**\n   * @description whether to hide extra content and show them in a tooltip when hovering on the cell\n   */\n  showOverflowTooltip: {\n    type: [Boolean, Object] as PropType<\n      TableColumnCtx<any>['showOverflowTooltip']\n    >,\n    default: undefined,\n  },\n  /**\n   * @description function that formats cell tooltip content, works when `show-overflow-tooltip` is `true`\n   */\n  tooltipFormatter: Function as PropType<\n    TableColumnCtx<any>['tooltipFormatter']\n  >,\n  /**\n   * @description whether column is fixed at left / right. Will be fixed at left if `true`\n   */\n  fixed: [Boolean, String],\n  /**\n   * @description function that formats cell content\n   */\n  formatter: Function as PropType<TableColumnCtx<any>['formatter']>,\n  /**\n   * @description function that determines if a certain row can be selected, works when `type` is 'selection'\n   */\n  selectable: Function as PropType<TableColumnCtx<any>['selectable']>,\n  /**\n   * @description whether to reserve selection after data refreshing, works when `type` is 'selection'. Note that `row-key` is required for this to work\n   */\n  reserveSelection: Boolean,\n  /**\n   * @description data filtering method. If `filter-multiple` is on, this method will be called multiple times for each row, and a row will display if one of the calls returns `true`\n   */\n  filterMethod: Function as PropType<TableColumnCtx<any>['filterMethod']>,\n  /**\n   * @description filter value for selected data, might be useful when table header is rendered with `render-header`\n   */\n  filteredValue: Array as PropType<TableColumnCtx<any>['filteredValue']>,\n  /**\n   * @description an array of data filtering options. For each element in this array, `text` and `value` are required\n   */\n  filters: Array as PropType<TableColumnCtx<any>['filters']>,\n  /**\n   * @description placement for the filter dropdown\n   */\n  filterPlacement: String,\n  /**\n   * @description whether data filtering supports multiple options\n   */\n  filterMultiple: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description className for the filter dropdown\n   */\n  filterClassName: String,\n  /**\n   * @description customize indices for each row, works on columns with `type=index`\n   */\n  index: [Number, Function] as PropType<TableColumnCtx<any>['index']>,\n  /**\n   * @description the order of the sorting strategies used when sorting the data, works when `sortable` is `true`. Accepts an array, as the user clicks on the header, the column is sorted in order of the elements in the array\n   */\n  sortOrders: {\n    type: Array as PropType<TableColumnCtx<any>['sortOrders']>,\n    default: () => {\n      return ['ascending', 'descending', null]\n    },\n    validator: (val: TableColumnCtx<any>['sortOrders']) => {\n      return val.every((order: TableSortOrder | null) =>\n        ['ascending', 'descending', null].includes(order)\n      )\n    },\n  },\n}\n","import {\n  Fragment,\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  onBeforeMount,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n} from 'vue'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport { useGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { isArray, isString, isUndefined } from '@pit-element-plus/utils'\nimport { cellStarts } from '../config'\nimport { compose, mergeOptions } from '../util'\nimport useWatcher from './watcher-helper'\nimport useRender from './render-helper'\nimport defaultProps from './defaults'\n\nimport type { VNode } from 'vue'\nimport type { TableColumn, TableColumnCtx } from './defaults'\nimport type { DefaultRow } from '../table/defaults'\n\nlet columnIdSeed = 1\n\n//TODO: when vue 3.3 we can set this component a generic: https://github.com/vuejs/core/pull/7963\nexport default defineComponent({\n  name: 'ElTableColumn',\n  components: {\n    ElCheckbox,\n  },\n  props: defaultProps,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance() as TableColumn<DefaultRow>\n    const globalConfig = useGlobalConfig('table')\n    const columnConfig = ref<Partial<TableColumnCtx<DefaultRow>>>({})\n    const owner = computed(() => {\n      let parent = instance.parent as any\n      while (parent && !parent.tableId) {\n        parent = parent.parent\n      }\n      return parent\n    })\n\n    const { registerNormalWatchers, registerComplexWatchers } = useWatcher(\n      owner,\n      props\n    )\n    const {\n      columnId,\n      isSubColumn,\n      realHeaderAlign,\n      columnOrTableParent,\n      setColumnWidth,\n      setColumnForcedProps,\n      setColumnRenders,\n      getPropsData,\n      getColumnElIndex,\n      realAlign,\n      updateColumnOrder,\n    } = useRender(props as unknown as TableColumnCtx<DefaultRow>, slots, owner)\n\n    const parent = columnOrTableParent.value\n    columnId.value = `${\n      ('tableId' in parent && parent.tableId) ||\n      ('columnId' in parent && parent.columnId)\n    }_column_${columnIdSeed++}`\n    onBeforeMount(() => {\n      isSubColumn.value = owner.value !== parent\n\n      const type = (props.type as keyof typeof cellStarts) || 'default'\n      const sortable = props.sortable === '' ? true : props.sortable\n      //The selection column should not be affected by `showOverflowTooltip`.\n      const showOverflowTooltip =\n        type === 'selection'\n          ? false\n          : isUndefined(props.showOverflowTooltip)\n            ? (parent.props.showOverflowTooltip ??\n              globalConfig.value?.showOverflowTooltip)\n            : props.showOverflowTooltip\n      const tooltipFormatter = isUndefined(props.tooltipFormatter)\n        ? (parent.props.tooltipFormatter ??\n          globalConfig.value?.tooltipFormatter)\n        : props.tooltipFormatter\n      const defaults = {\n        ...cellStarts[type],\n        id: columnId.value,\n        type,\n        property: props.prop || props.property,\n        align: realAlign,\n        headerAlign: realHeaderAlign,\n        showOverflowTooltip,\n        tooltipFormatter,\n        // filter 相关属性\n        filterable: props.filters || props.filterMethod,\n        filteredValue: [],\n        filterPlacement: '',\n        filterClassName: '',\n        isColumnGroup: false,\n        isSubColumn: false,\n        filterOpened: false,\n        // sort 相关属性\n        sortable,\n        // index 列\n        index: props.index,\n        // <el-table-column key=\"xxx\" />\n        rawColumnKey: instance.vnode.key,\n      }\n\n      const basicProps = [\n        'columnKey',\n        'label',\n        'className',\n        'labelClassName',\n        'type',\n        'renderHeader',\n        'formatter',\n        'fixed',\n        'resizable',\n      ]\n      const sortProps = ['sortMethod', 'sortBy', 'sortOrders']\n      const selectProps = ['selectable', 'reserveSelection']\n      const filterProps = [\n        'filterMethod',\n        'filters',\n        'filterMultiple',\n        'filterOpened',\n        'filteredValue',\n        'filterPlacement',\n        'filterClassName',\n      ]\n\n      let column = getPropsData(basicProps, sortProps, selectProps, filterProps)\n\n      column = mergeOptions(defaults, column)\n      // 注意 compose 中函数执行的顺序是从右到左\n      const chains = compose(\n        setColumnRenders,\n        setColumnWidth,\n        setColumnForcedProps\n      )\n      column = chains(column) as unknown as TableColumnCtx<DefaultRow>\n      columnConfig.value = column\n\n      // 注册 watcher\n      registerNormalWatchers()\n      registerComplexWatchers()\n    })\n    onMounted(() => {\n      const parent = columnOrTableParent.value\n      const children = isSubColumn.value\n        ? parent.vnode.el?.children\n        : parent.refs.hiddenColumns?.children\n      const getColumnIndex = () =>\n        getColumnElIndex(children || [], instance.vnode.el)\n      columnConfig.value.getColumnIndex = getColumnIndex\n      const columnIndex = getColumnIndex()\n      columnIndex > -1 &&\n        owner.value.store.commit(\n          'insertColumn',\n          columnConfig.value,\n          isSubColumn.value\n            ? 'columnConfig' in parent && parent.columnConfig.value\n            : null,\n          updateColumnOrder\n        )\n    })\n    onBeforeUnmount(() => {\n      const getColumnIndex = columnConfig.value.getColumnIndex\n      const columnIndex = getColumnIndex ? getColumnIndex() : -1\n      columnIndex > -1 &&\n        owner.value.store.commit(\n          'removeColumn',\n          columnConfig.value,\n          isSubColumn.value\n            ? 'columnConfig' in parent && parent.columnConfig.value\n            : null,\n          updateColumnOrder\n        )\n    })\n    instance.columnId = columnId.value\n\n    instance.columnConfig = columnConfig as any\n    return\n  },\n  render() {\n    try {\n      const renderDefault = this.$slots.default?.({\n        row: {},\n        column: {},\n        $index: -1,\n      })\n      const children = []\n      if (isArray(renderDefault)) {\n        for (const childNode of renderDefault) {\n          if (\n            (childNode.type as any)?.name === 'ElTableColumn' ||\n            childNode.shapeFlag & 2\n          ) {\n            children.push(childNode)\n          } else if (\n            childNode.type === Fragment &&\n            isArray(childNode.children)\n          ) {\n            childNode.children.forEach((vnode) => {\n              // No rendering when vnode is dynamic slot or text\n              if (\n                (vnode as VNode)?.patchFlag !== 1024 &&\n                !isString((vnode as VNode)?.children)\n              ) {\n                children.push(vnode)\n              }\n            })\n          }\n        }\n      }\n      const vnode = h('div', children)\n      return vnode\n    } catch {\n      return h('div', [])\n    }\n  },\n})\n","import ElTableColumn from './table-column'\n\nexport default ElTableColumn\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Table from './src/table.vue'\nimport TableColumn from './src/tableColumn'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTable: SFCWithInstall<typeof Table> & {\n  TableColumn: typeof TableColumn\n} = withInstall(Table, {\n  TableColumn,\n})\nexport default ElTable\nexport const ElTableColumn: SFCWithInstall<typeof TableColumn> =\n  withNoopInstall(TableColumn)\n\nexport type TableInstance = InstanceType<typeof Table> & unknown\n\nexport type TableColumnInstance = InstanceType<typeof TableColumn> & unknown\n\nexport type {\n  SummaryMethod,\n  Table,\n  TableProps,\n  TableRefs,\n  ColumnCls,\n  ColumnStyle,\n  CellCls,\n  CellStyle,\n  TreeNode,\n  RenderRowData,\n  Sort,\n  Filter,\n  TableColumnCtx,\n  TableTooltipData,\n  TableConfigContext,\n} from './src/table/defaults'\n","export enum SortOrder {\n  ASC = 'asc',\n  DESC = 'desc',\n}\n\nexport enum Alignment {\n  LEFT = 'left',\n  CENTER = 'center',\n  RIGHT = 'right',\n}\n\nexport enum FixedDir {\n  LEFT = 'left',\n  RIGHT = 'right',\n}\n\nexport const oppositeOrderMap = {\n  [SortOrder.ASC]: SortOrder.DESC,\n  [SortOrder.DESC]: SortOrder.ASC,\n}\n\nexport const sortOrders = [SortOrder.ASC, SortOrder.DESC] as const\n","export const placeholderSign = Symbol('placeholder')\n","import type { CSSProperties } from 'vue'\nimport type { AnyColumns } from '../types'\n\nexport const calcColumnStyle = (\n  column: AnyColumns[number],\n  fixedColumn: boolean,\n  fixed: boolean\n): CSSProperties => {\n  const flex = {\n    flexGrow: 0,\n    flexShrink: 0,\n    ...(fixed\n      ? {}\n      : {\n          flexGrow: column.flexGrow ?? 0,\n          flexShrink: column.flexShrink ?? 1,\n        }),\n  }\n\n  const style = {\n    ...(column.style ?? {}),\n    ...flex,\n    flexBasis: 'auto',\n    width: column.width,\n  }\n\n  if (!fixedColumn) {\n    if (column.maxWidth) style.maxWidth = column.maxWidth\n    if (column.minWidth) style.minWidth = column.minWidth\n  }\n\n  return style\n}\n","import { computed, unref } from 'vue'\nimport { isObject } from '@pit-element-plus/utils'\nimport { SortOrder, oppositeOrderMap } from '../constants'\nimport { placeholderSign } from '../private'\nimport { calcColumnStyle } from './utils'\n\nimport type { CSSProperties, Ref } from 'vue'\nimport type { TableV2Props } from '../table'\nimport type { AnyColumns, Column, KeyType } from '../types'\n\nfunction useColumns(\n  props: TableV2Props,\n  columns: Ref<AnyColumns>,\n  fixed: Ref<boolean>\n) {\n  const _columns = computed(() =>\n    unref(columns).map((column, index) => ({\n      ...column,\n      key: column.key ?? column.dataKey ?? index,\n    }))\n  )\n\n  const visibleColumns = computed(() => {\n    return unref(_columns).filter((column) => !column.hidden)\n  })\n\n  const fixedColumnsOnLeft = computed(() =>\n    unref(visibleColumns).filter(\n      (column) => column.fixed === 'left' || column.fixed === true\n    )\n  )\n\n  const fixedColumnsOnRight = computed(() =>\n    unref(visibleColumns).filter((column) => column.fixed === 'right')\n  )\n\n  const normalColumns = computed(() =>\n    unref(visibleColumns).filter((column) => !column.fixed)\n  )\n\n  const mainColumns = computed(() => {\n    const ret: AnyColumns = []\n\n    unref(fixedColumnsOnLeft).forEach((column) => {\n      ret.push({\n        ...column,\n        placeholderSign,\n      })\n    })\n\n    unref(normalColumns).forEach((column) => {\n      ret.push(column)\n    })\n\n    unref(fixedColumnsOnRight).forEach((column) => {\n      ret.push({\n        ...column,\n        placeholderSign,\n      })\n    })\n\n    return ret\n  })\n\n  const hasFixedColumns = computed(() => {\n    return unref(fixedColumnsOnLeft).length || unref(fixedColumnsOnRight).length\n  })\n\n  const columnsStyles = computed(() => {\n    return unref(_columns).reduce<Record<KeyType, CSSProperties>>(\n      (style, column) => {\n        style[column.key] = calcColumnStyle(column, unref(fixed), props.fixed)\n        return style\n      },\n      {}\n    )\n  })\n\n  const columnsTotalWidth = computed(() => {\n    return unref(visibleColumns).reduce(\n      (width, column) => width + column.width,\n      0\n    )\n  })\n\n  const getColumn = (key: KeyType) => {\n    return unref(_columns).find((column) => column.key === key)\n  }\n\n  const getColumnStyle = (key: KeyType) => {\n    return unref(columnsStyles)[key]\n  }\n\n  const updateColumnWidth = (column: Column<any>, width: number) => {\n    column.width = width\n  }\n\n  function onColumnSorted(e: MouseEvent) {\n    const { key } = (e.currentTarget as HTMLElement).dataset\n    if (!key) return\n    const { sortState, sortBy } = props\n\n    let order = SortOrder.ASC\n\n    if (isObject(sortState)) {\n      order = oppositeOrderMap[sortState[key]]\n    } else {\n      order = oppositeOrderMap[sortBy.order]\n    }\n\n    props.onColumnSort?.({ column: getColumn(key)!, key, order })\n  }\n\n  return {\n    columns: _columns,\n    columnsStyles,\n    columnsTotalWidth,\n    fixedColumnsOnLeft,\n    fixedColumnsOnRight,\n    hasFixedColumns,\n    mainColumns,\n    normalColumns,\n    visibleColumns,\n\n    getColumn,\n    getColumnStyle,\n    updateColumnWidth,\n    onColumnSorted,\n  }\n}\n\nexport { useColumns }\nexport type UseColumnsReturn = ReturnType<typeof useColumns>\n","import { ref, unref, watch } from 'vue'\n\nimport type { Ref } from 'vue'\nimport type { Alignment as ScrollStrategy } from '@pit-element-plus/components/virtual-list'\nimport type { TableV2Props } from '../table'\nimport type { TableGridInstance } from '../table-grid'\n\nexport type ScrollPos = { scrollLeft: number; scrollTop: number }\ntype GridInstanceRef = Ref<TableGridInstance | undefined>\n\ntype UseScrollBarProps = {\n  mainTableRef: GridInstanceRef\n  leftTableRef: GridInstanceRef\n  rightTableRef: GridInstanceRef\n\n  onMaybeEndReached: () => void\n}\n\nexport type { ScrollStrategy }\n\nexport const useScrollbar = (\n  props: TableV2Props,\n  {\n    mainTableRef,\n    leftTableRef,\n    rightTableRef,\n    onMaybeEndReached,\n  }: UseScrollBarProps\n) => {\n  const scrollPos = ref<ScrollPos>({ scrollLeft: 0, scrollTop: 0 })\n\n  function doScroll(params: ScrollPos) {\n    const { scrollTop } = params\n\n    mainTableRef.value?.scrollTo(params)\n    leftTableRef.value?.scrollToTop(scrollTop)\n    rightTableRef.value?.scrollToTop(scrollTop)\n  }\n\n  // methods\n  function scrollTo(params: ScrollPos) {\n    scrollPos.value = params\n\n    doScroll(params)\n  }\n\n  function scrollToTop(scrollTop: number) {\n    scrollPos.value.scrollTop = scrollTop\n\n    doScroll(unref(scrollPos))\n  }\n\n  function scrollToLeft(scrollLeft: number) {\n    scrollPos.value.scrollLeft = scrollLeft\n\n    mainTableRef.value?.scrollTo?.(unref(scrollPos))\n  }\n\n  function onScroll(params: ScrollPos) {\n    scrollTo(params)\n    props.onScroll?.(params)\n  }\n\n  function onVerticalScroll({ scrollTop }: ScrollPos) {\n    const { scrollTop: currentScrollTop } = unref(scrollPos)\n    if (scrollTop !== currentScrollTop) scrollToTop(scrollTop)\n  }\n\n  function scrollToRow(row: number, strategy: ScrollStrategy = 'auto') {\n    mainTableRef.value?.scrollToRow(row, strategy)\n  }\n\n  // When scrollTop changes, maybe reaching the bottom\n  watch(\n    () => unref(scrollPos).scrollTop,\n    (cur, prev) => {\n      if (cur > prev) onMaybeEndReached()\n    }\n  )\n\n  return {\n    scrollPos,\n\n    scrollTo,\n    scrollToLeft,\n    scrollToTop,\n    scrollToRow,\n    onScroll,\n    onVerticalScroll,\n  }\n}\n","import {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  ref,\n  shallowRef,\n  unref,\n} from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { isNumber } from '@pit-element-plus/utils'\nimport { FixedDir } from '../constants'\n\nimport type { ComponentInternalInstance, Ref, ShallowRef } from 'vue'\nimport type { TableV2Props } from '../table'\nimport type {\n  RowExpandParams,\n  RowHeightChangedParams,\n  RowHoverParams,\n} from '../row'\nimport type { FixedDirection, KeyType } from '../types'\nimport type { onRowRenderedParams } from '../grid'\nimport type { TableGridInstance } from '../table-grid'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\n\ntype Heights = Record<KeyType, number>\ntype GridInstanceRef = Ref<TableGridInstance | undefined>\n\ntype UseRowProps = {\n  mainTableRef: GridInstanceRef\n  leftTableRef: GridInstanceRef\n  rightTableRef: GridInstanceRef\n  tableInstance: ComponentInternalInstance\n  ns: UseNamespaceReturn\n  isScrolling: ShallowRef<boolean>\n}\n\nexport const useRow = (\n  props: TableV2Props,\n  {\n    mainTableRef,\n    leftTableRef,\n    rightTableRef,\n    tableInstance,\n    ns,\n    isScrolling,\n  }: UseRowProps\n) => {\n  const vm = getCurrentInstance()!\n  const { emit } = vm\n  const isResetting = shallowRef(false)\n  const expandedRowKeys = ref<KeyType[]>(props.defaultExpandedRowKeys || [])\n  const lastRenderedRowIndex = ref(-1)\n  const resetIndex = shallowRef<number | null>(null)\n  const rowHeights = ref<Heights>({})\n  const pendingRowHeights = ref<Heights>({})\n  const leftTableHeights = shallowRef<Heights>({})\n  const mainTableHeights = shallowRef<Heights>({})\n  const rightTableHeights = shallowRef<Heights>({})\n  const isDynamic = computed(() => isNumber(props.estimatedRowHeight))\n\n  function onRowsRendered(params: onRowRenderedParams) {\n    props.onRowsRendered?.(params)\n\n    if (params.rowCacheEnd > unref(lastRenderedRowIndex)) {\n      lastRenderedRowIndex.value = params.rowCacheEnd\n    }\n  }\n\n  function onRowHovered({ hovered, rowKey }: RowHoverParams) {\n    if (isScrolling.value) {\n      return\n    }\n    const tableRoot = tableInstance!.vnode.el as HTMLElement\n    const rows = tableRoot.querySelectorAll(`[rowkey=\"${String(rowKey)}\"]`)\n    rows.forEach((row) => {\n      if (hovered) {\n        row.classList.add(ns.is('hovered'))\n      } else {\n        row.classList.remove(ns.is('hovered'))\n      }\n    })\n  }\n\n  function onRowExpanded({\n    expanded,\n    rowData,\n    rowIndex,\n    rowKey,\n  }: RowExpandParams) {\n    const _expandedRowKeys = [...unref(expandedRowKeys)]\n    const currentKeyIndex = _expandedRowKeys.indexOf(rowKey)\n    if (expanded) {\n      if (currentKeyIndex === -1) _expandedRowKeys.push(rowKey)\n    } else {\n      if (currentKeyIndex > -1) _expandedRowKeys.splice(currentKeyIndex, 1)\n    }\n    expandedRowKeys.value = _expandedRowKeys\n\n    emit('update:expandedRowKeys', _expandedRowKeys)\n    props.onRowExpand?.({\n      expanded,\n      rowData,\n      rowIndex,\n      rowKey,\n    })\n    // If this is not controlled, then use this to notify changes\n    props.onExpandedRowsChange?.(_expandedRowKeys)\n\n    const tableRoot = tableInstance!.vnode.el as HTMLElement\n    const hoverRow = tableRoot.querySelector(\n      `.${ns.is('hovered')}[rowkey=\"${String(rowKey)}\"]`\n    )\n    if (hoverRow) {\n      nextTick(() => onRowHovered({ hovered: true, rowKey }))\n    }\n  }\n\n  const flushingRowHeights = debounce(() => {\n    isResetting.value = true\n    rowHeights.value = { ...unref(rowHeights), ...unref(pendingRowHeights) }\n    resetAfterIndex(unref(resetIndex)!, false)\n    pendingRowHeights.value = {}\n    // force update\n    resetIndex.value = null\n    mainTableRef.value?.forceUpdate()\n    leftTableRef.value?.forceUpdate()\n    rightTableRef.value?.forceUpdate()\n    vm.proxy?.$forceUpdate()\n    isResetting.value = false\n  }, 0)\n\n  function resetAfterIndex(index: number, forceUpdate = false) {\n    if (!unref(isDynamic)) return\n    ;[mainTableRef, leftTableRef, rightTableRef].forEach((tableRef) => {\n      const table = unref(tableRef)\n      if (table) table.resetAfterRowIndex(index, forceUpdate)\n    })\n  }\n\n  function resetHeights(rowKey: KeyType, height: number, rowIdx: number) {\n    const resetIdx = unref(resetIndex)\n    if (resetIdx === null) {\n      resetIndex.value = rowIdx\n    } else {\n      if (resetIdx > rowIdx) {\n        resetIndex.value = rowIdx\n      }\n    }\n\n    pendingRowHeights.value[rowKey] = height\n  }\n\n  function onRowHeightChange(\n    { rowKey, height, rowIndex }: RowHeightChangedParams,\n    fixedDir: FixedDirection\n  ) {\n    if (!fixedDir) {\n      mainTableHeights.value[rowKey] = height\n    } else {\n      if (fixedDir === FixedDir.RIGHT) {\n        rightTableHeights.value[rowKey] = height\n      } else {\n        leftTableHeights.value[rowKey] = height\n      }\n    }\n\n    const maximumHeight = Math.max(\n      ...[leftTableHeights, rightTableHeights, mainTableHeights].map(\n        (records) => records.value[rowKey] || 0\n      )\n    )\n\n    if (unref(rowHeights)[rowKey] !== maximumHeight) {\n      resetHeights(rowKey, maximumHeight, rowIndex)\n      flushingRowHeights()\n    }\n  }\n\n  return {\n    expandedRowKeys,\n    lastRenderedRowIndex,\n    isDynamic,\n    isResetting,\n    rowHeights,\n\n    resetAfterIndex,\n    onRowExpanded,\n    onRowHovered,\n    onRowsRendered,\n    onRowHeightChange,\n  }\n}\n\nexport type UseRowReturn = ReturnType<typeof useRow>\n","import { computed, ref, unref, watch } from 'vue'\nimport { isArray } from '@pit-element-plus/utils'\n\nimport type { TableV2Props } from '../table'\nimport type { KeyType } from '../types'\nimport type { UseRowReturn } from './use-row'\n\ntype UseDataProps = {\n  expandedRowKeys: UseRowReturn['expandedRowKeys']\n  lastRenderedRowIndex: UseRowReturn['lastRenderedRowIndex']\n  resetAfterIndex: UseRowReturn['resetAfterIndex']\n}\n\nexport const useData = (\n  props: TableV2Props,\n  { expandedRowKeys, lastRenderedRowIndex, resetAfterIndex }: UseDataProps\n) => {\n  const depthMap = ref<Record<KeyType, number>>({})\n\n  const flattenedData = computed(() => {\n    const depths: Record<KeyType, number> = {}\n    const { data, rowKey } = props\n\n    const _expandedRowKeys = unref(expandedRowKeys)\n\n    if (!_expandedRowKeys || !_expandedRowKeys.length) return data\n\n    const array: any[] = []\n    const keysSet = new Set()\n    _expandedRowKeys.forEach((x) => keysSet.add(x))\n\n    let copy: any[] = data.slice()\n    copy.forEach((x) => (depths[x[rowKey]] = 0))\n    while (copy.length > 0) {\n      const item = copy.shift()!\n\n      array.push(item)\n      if (\n        keysSet.has(item[rowKey]) &&\n        isArray(item.children) &&\n        item.children.length > 0\n      ) {\n        copy = [...item.children, ...copy]\n        item.children.forEach(\n          (child: any) => (depths[child[rowKey]] = depths[item[rowKey]] + 1)\n        )\n      }\n    }\n\n    depthMap.value = depths\n    return array\n  })\n\n  const data = computed(() => {\n    const { data, expandColumnKey } = props\n    return expandColumnKey ? unref(flattenedData) : data\n  })\n\n  watch(data, (val, prev) => {\n    if (val !== prev) {\n      lastRenderedRowIndex.value = -1\n      resetAfterIndex(0, true)\n    }\n  })\n\n  return {\n    data,\n    depthMap,\n  }\n}\n\nexport type UseDataReturn = ReturnType<typeof useData>\n","import { h, isVNode } from 'vue'\nimport { addUnit, isArray, isFunction } from '@pit-element-plus/utils'\n\nimport type { CSSProperties, Component, Slot } from 'vue'\nimport type { JSX } from 'vue/jsx-runtime'\n\nconst sumReducer = (sum: number, num: number) => sum + num\n\nexport const sum = (listLike: number | number[]) => {\n  return isArray(listLike) ? listLike.reduce(sumReducer, 0) : listLike\n}\n\nexport const tryCall = <T>(\n  fLike: T,\n  params: T extends (...args: infer K) => unknown ? K : any,\n  defaultRet = {}\n) => {\n  return isFunction(fLike) ? fLike(params) : (fLike ?? defaultRet)\n}\n\nexport const enforceUnit = (style: CSSProperties) => {\n  ;(['width', 'maxWidth', 'minWidth', 'height'] as const).forEach((key) => {\n    style[key] = addUnit(style[key])\n  })\n\n  return style\n}\n\nexport const componentToSlot = <T extends object>(\n  ComponentLike: JSX.Element | ((props: T) => Component<T>) | undefined\n) =>\n  isVNode(ComponentLike)\n    ? (props: T) => h(ComponentLike, props)\n    : (ComponentLike as Slot)\n","import { computed, unref } from 'vue'\nimport { addUnit, isNumber } from '@pit-element-plus/utils'\nimport { enforceUnit, sum } from '../utils'\n\nimport type { CSSProperties, ComputedRef } from 'vue'\nimport type { TableV2Props } from '../table'\nimport type { UseColumnsReturn } from './use-columns'\n\ntype UseStyleProps = {\n  columnsTotalWidth: UseColumnsReturn['columnsTotalWidth']\n  fixedColumnsOnLeft: UseColumnsReturn['fixedColumnsOnLeft']\n  fixedColumnsOnRight: UseColumnsReturn['fixedColumnsOnRight']\n  rowsHeight: ComputedRef<number>\n}\n\nexport const useStyles = (\n  props: TableV2Props,\n  {\n    columnsTotalWidth,\n    rowsHeight,\n    fixedColumnsOnLeft,\n    fixedColumnsOnRight,\n  }: UseStyleProps\n) => {\n  const bodyWidth = computed(() => {\n    const { fixed, width, vScrollbarSize } = props\n    const ret = width - vScrollbarSize\n    return fixed ? Math.max(Math.round(unref(columnsTotalWidth)), ret) : ret\n  })\n\n  const mainTableHeight = computed(() => {\n    const { height = 0, maxHeight = 0, footerHeight, hScrollbarSize } = props\n\n    if (maxHeight > 0) {\n      const _fixedRowsHeight = unref(fixedRowsHeight)\n      const _rowsHeight = unref(rowsHeight)\n      const _headerHeight = unref(headerHeight)\n      const total =\n        _headerHeight + _fixedRowsHeight + _rowsHeight + hScrollbarSize\n\n      return Math.min(total, maxHeight - footerHeight)\n    }\n\n    return height - footerHeight\n  })\n\n  const fixedTableHeight = computed(() => {\n    const { maxHeight } = props\n    const tableHeight = unref(mainTableHeight)\n    if (isNumber(maxHeight) && maxHeight > 0) return tableHeight\n\n    const totalHeight =\n      unref(rowsHeight) + unref(headerHeight) + unref(fixedRowsHeight)\n\n    return Math.min(tableHeight, totalHeight)\n  })\n\n  const mapColumn = (column: TableV2Props['columns'][number]) => column.width\n\n  const leftTableWidth = computed(() =>\n    sum(unref(fixedColumnsOnLeft).map(mapColumn))\n  )\n\n  const rightTableWidth = computed(() =>\n    sum(unref(fixedColumnsOnRight).map(mapColumn))\n  )\n\n  const headerHeight = computed(() => sum(props.headerHeight))\n\n  const fixedRowsHeight = computed(() => {\n    return (props.fixedData?.length || 0) * props.rowHeight\n  })\n\n  const windowHeight = computed(() => {\n    return unref(mainTableHeight) - unref(headerHeight) - unref(fixedRowsHeight)\n  })\n\n  const rootStyle = computed<CSSProperties>(() => {\n    const { style = {}, height, width } = props\n    return enforceUnit({\n      ...style,\n      height,\n      width,\n    })\n  })\n\n  const footerHeight = computed(() =>\n    enforceUnit({ height: props.footerHeight })\n  )\n\n  const emptyStyle = computed<CSSProperties>(() => ({\n    top: addUnit(unref(headerHeight)),\n    bottom: addUnit(props.footerHeight),\n    width: addUnit(props.width),\n  }))\n\n  return {\n    bodyWidth,\n    fixedTableHeight,\n    mainTableHeight,\n    leftTableWidth,\n    rightTableWidth,\n    windowHeight,\n    footerHeight,\n    emptyStyle,\n    rootStyle,\n    headerHeight,\n  }\n}\n\nexport type UseStyleReturn = ReturnType<typeof useStyles>\n","import { onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\n\nimport type { AutoResizerProps } from '../auto-resizer'\n\nconst useAutoResize = (props: AutoResizerProps) => {\n  const sizer = ref<HTMLElement>()\n  const width$ = ref(0)\n  const height$ = ref(0)\n\n  let resizerStopper: ReturnType<typeof useResizeObserver>['stop']\n  onMounted(() => {\n    resizerStopper = useResizeObserver(sizer, ([entry]) => {\n      const { width, height } = entry.contentRect\n      const { paddingLeft, paddingRight, paddingTop, paddingBottom } =\n        getComputedStyle(entry.target)\n\n      const left = Number.parseInt(paddingLeft) || 0\n      const right = Number.parseInt(paddingRight) || 0\n      const top = Number.parseInt(paddingTop) || 0\n      const bottom = Number.parseInt(paddingBottom) || 0\n\n      width$.value = width - left - right\n      height$.value = height - top - bottom\n    }).stop\n  })\n\n  onBeforeUnmount(() => {\n    resizerStopper?.()\n  })\n\n  watch([width$, height$], ([width, height]) => {\n    props.onResize?.({\n      width,\n      height,\n    })\n  })\n\n  return {\n    sizer,\n    width: width$,\n    height: height$,\n  }\n}\n\nexport { useAutoResize }\n","import {\n  computed,\n  getCurrentInstance,\n  ref,\n  shallowRef,\n  toRef,\n  unref,\n  watch,\n} from 'vue'\nimport { isArray, isNumber } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  useColumns,\n  useData,\n  useRow,\n  useScrollbar,\n  useStyles,\n} from './composables'\n\nimport type { TableV2Props } from './table'\nimport type { TableGridInstance } from './table-grid'\n\nfunction useTable(props: TableV2Props) {\n  const mainTableRef = ref<TableGridInstance>()\n  const leftTableRef = ref<TableGridInstance>()\n  const rightTableRef = ref<TableGridInstance>()\n  const {\n    columns,\n    columnsStyles,\n    columnsTotalWidth,\n    fixedColumnsOnLeft,\n    fixedColumnsOnRight,\n    hasFixedColumns,\n    mainColumns,\n\n    onColumnSorted,\n  } = useColumns(props, toRef(props, 'columns'), toRef(props, 'fixed'))\n\n  const {\n    scrollTo,\n    scrollToLeft,\n    scrollToTop,\n    scrollToRow,\n    onScroll,\n    onVerticalScroll,\n    scrollPos,\n  } = useScrollbar(props, {\n    mainTableRef,\n    leftTableRef,\n    rightTableRef,\n\n    onMaybeEndReached,\n  })\n\n  const ns = useNamespace('table-v2')\n  const instance = getCurrentInstance()!\n\n  // state\n  const isScrolling = shallowRef(false)\n\n  const {\n    expandedRowKeys,\n    lastRenderedRowIndex,\n    isDynamic,\n    isResetting,\n    rowHeights,\n    resetAfterIndex,\n    onRowExpanded,\n    onRowHeightChange,\n    onRowHovered,\n    onRowsRendered,\n  } = useRow(props, {\n    mainTableRef,\n    leftTableRef,\n    rightTableRef,\n    tableInstance: instance,\n    ns,\n    isScrolling,\n  })\n\n  const { data, depthMap } = useData(props, {\n    expandedRowKeys,\n    lastRenderedRowIndex,\n    resetAfterIndex,\n  })\n\n  const rowsHeight = computed(() => {\n    const { estimatedRowHeight, rowHeight } = props\n    const _data = unref(data)\n    if (isNumber(estimatedRowHeight)) {\n      // calculate the actual height\n      return Object.values(unref(rowHeights)).reduce(\n        (acc, curr) => acc + curr,\n        0\n      )\n    }\n\n    return _data.length * rowHeight\n  })\n\n  const {\n    bodyWidth,\n    fixedTableHeight,\n    mainTableHeight,\n    leftTableWidth,\n    rightTableWidth,\n    windowHeight,\n    footerHeight,\n    emptyStyle,\n    rootStyle,\n    headerHeight,\n  } = useStyles(props, {\n    columnsTotalWidth,\n    fixedColumnsOnLeft,\n    fixedColumnsOnRight,\n    rowsHeight,\n  })\n\n  // DOM/Component refs\n  const containerRef = ref()\n\n  const showEmpty = computed(() => {\n    const noData = unref(data).length === 0\n\n    return isArray(props.fixedData)\n      ? props.fixedData.length === 0 && noData\n      : noData\n  })\n\n  function getRowHeight(rowIndex: number) {\n    const { estimatedRowHeight, rowHeight, rowKey } = props\n\n    if (!estimatedRowHeight) return rowHeight\n\n    return (\n      unref(rowHeights)[unref(data)[rowIndex][rowKey]] || estimatedRowHeight\n    )\n  }\n\n  const isEndReached = ref(false)\n  function onMaybeEndReached() {\n    const { onEndReached } = props\n    if (!onEndReached) return\n\n    const { scrollTop } = unref(scrollPos)\n\n    const _totalHeight = unref(rowsHeight)\n    const clientHeight = unref(windowHeight)\n\n    const remainDistance =\n      _totalHeight - (scrollTop + clientHeight) + props.hScrollbarSize\n\n    if (\n      !isEndReached.value &&\n      unref(lastRenderedRowIndex) >= 0 &&\n      _totalHeight <= scrollTop + unref(mainTableHeight) - unref(headerHeight)\n    ) {\n      isEndReached.value = true\n      onEndReached(remainDistance)\n    } else {\n      isEndReached.value = false\n    }\n  }\n\n  // events\n\n  watch(\n    () => unref(rowsHeight),\n    () => (isEndReached.value = false)\n  )\n\n  watch(\n    () => props.expandedRowKeys,\n    (val) => (expandedRowKeys.value = val),\n    {\n      deep: true,\n    }\n  )\n\n  return {\n    // models\n    columns,\n    containerRef,\n    mainTableRef,\n    leftTableRef,\n    rightTableRef,\n    // states\n    isDynamic,\n    isResetting,\n    isScrolling,\n    hasFixedColumns,\n    // records\n    columnsStyles,\n    columnsTotalWidth,\n    data,\n    expandedRowKeys,\n    depthMap,\n    fixedColumnsOnLeft,\n    fixedColumnsOnRight,\n    mainColumns,\n    // metadata\n    bodyWidth,\n    emptyStyle,\n    rootStyle,\n    footerHeight,\n    mainTableHeight,\n    fixedTableHeight,\n    leftTableWidth,\n    rightTableWidth,\n    // flags\n    showEmpty,\n\n    // methods\n    getRowHeight,\n\n    // event handlers\n    onColumnSorted,\n    onRowHovered,\n    onRowExpanded,\n    onRowsRendered,\n    onRowHeightChange,\n    // use scrollbars\n    scrollTo,\n    scrollToLeft,\n    scrollToTop,\n    scrollToRow,\n    onScroll,\n    onVerticalScroll,\n  }\n}\n\nexport { useTable }\n\nexport type UseTableReturn = ReturnType<typeof useTable>\n","import type { InjectionKey, Ref } from 'vue'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\n\nexport type TableV2Context = {\n  isScrolling: Ref<boolean>\n  isResetting: Ref<boolean>\n  ns: UseNamespaceReturn\n}\n\nexport const TableV2InjectionKey: InjectionKey<TableV2Context> =\n  Symbol('tableV2')\n\nexport const TABLE_V2_GRID_INJECTION_KEY = 'tableV2GridScrollLeft'\n","import { definePropType, mutable } from '@pit-element-plus/utils'\n\nimport type { CSSProperties } from 'vue'\nimport type { Column, KeyType } from './types'\n\nexport type AnyColumn = Column<any>\n\n/**\n * @Note even though we can use `string[] | string` as the type but for\n * convenience here we only use `string` as the acceptable value here.\n */\nexport const classType = String\n\nexport const columns = {\n  type: definePropType<AnyColumn[]>(Array),\n  required: true,\n} as const\n\nexport const column = {\n  type: definePropType<AnyColumn>(Object),\n} as const\n\nexport const fixedDataType = {\n  type: definePropType<any[]>(Array),\n} as const\n\nexport const dataType = {\n  ...fixedDataType,\n  required: true,\n} as const\n\nexport const expandColumnKey = String\n\nexport const expandKeys = {\n  type: definePropType<KeyType[]>(Array),\n  default: () => mutable([]),\n} as const\n\nexport const requiredNumber = {\n  type: Number,\n  required: true,\n} as const\n\nexport const rowKey = {\n  type: definePropType<KeyType>([String, Number, Symbol]),\n  default: 'id',\n} as const\n\n/**\n * @note even though we can use `StyleValue` but that would be difficult for us to mapping them,\n * so we only use `CSSProperties` as the acceptable value here.\n */\nexport const styleType = {\n  type: definePropType<CSSProperties>(Object),\n}\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { virtualizedGridProps } from '@pit-element-plus/components/virtual-list'\nimport { columns, expandColumnKey, rowKey } from './common'\n\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\nimport type { FixedDirection, KeyType, RowCommonParams } from './types'\n\nexport type RowExpandParams = {\n  expanded: boolean\n  rowKey: KeyType\n} & RowCommonParams\n\nexport type RowHoverParams = {\n  event?: MouseEvent\n  hovered: boolean\n  rowKey: KeyType\n} & Partial<RowCommonParams>\n\nexport type RowEventHandlerParams = {\n  rowKey: KeyType\n  event: Event\n} & RowCommonParams\n\nexport type RowHeightChangedParams = {\n  rowKey: KeyType\n  height: number\n  rowIndex: number\n}\n\nexport type RowExpandHandler = (params: RowExpandParams) => void\nexport type RowHoverHandler = (params: RowHoverParams) => void\nexport type RowEventHandler = (params: RowEventHandlerParams) => void\nexport type RowHeightChangeHandler = (\n  row: RowHeightChangedParams,\n  fixedDirection: boolean | FixedDirection | undefined\n) => void\n\nexport type RowEventHandlers = {\n  onClick?: RowEventHandler\n  onContextmenu?: RowEventHandler\n  onDblclick?: RowEventHandler\n  onMouseenter?: RowEventHandler\n  onMouseleave?: RowEventHandler\n}\n\nexport const tableV2RowProps = buildProps({\n  class: String,\n  columns,\n  columnsStyles: {\n    type: definePropType<Record<KeyType, CSSProperties>>(Object),\n    required: true,\n  },\n  depth: Number,\n  expandColumnKey,\n  estimatedRowHeight: {\n    ...virtualizedGridProps.estimatedRowHeight,\n    default: undefined,\n  },\n  isScrolling: Boolean,\n  onRowExpand: {\n    type: definePropType<RowExpandHandler>(Function),\n  },\n  onRowHover: {\n    type: definePropType<RowHoverHandler>(Function),\n  },\n  onRowHeightChange: {\n    type: definePropType<RowHeightChangeHandler>(Function),\n  },\n  rowData: {\n    type: definePropType<any>(Object),\n    required: true,\n  },\n  rowEventHandlers: {\n    type: definePropType<RowEventHandlers>(Object),\n  },\n  rowIndex: {\n    type: Number,\n    required: true,\n  },\n  /**\n   * Unique item key\n   */\n  rowKey,\n  style: {\n    type: definePropType<CSSProperties>(Object),\n  },\n} as const)\n\nexport type TableV2RowProps = ExtractPropTypes<typeof tableV2RowProps>\nexport type TableV2RowPropsPublic = ExtractPublicPropTypes<\n  typeof tableV2RowProps\n>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { columns } from './common'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nconst requiredNumberType = {\n  type: Number,\n  required: true,\n} as const\n\nexport const tableV2HeaderProps = buildProps({\n  class: String,\n  columns,\n  fixedHeaderData: {\n    type: definePropType<any[]>(Array),\n  },\n  headerData: {\n    type: definePropType<any[]>(Array),\n    required: true,\n  },\n  headerHeight: {\n    type: definePropType<number | number[]>([Number, Array]),\n    default: 50,\n  },\n  rowWidth: requiredNumberType,\n  rowHeight: {\n    type: Number,\n    default: 50,\n  },\n  height: requiredNumberType,\n  width: requiredNumberType,\n} as const)\n\nexport type TableV2HeaderProps = ExtractPropTypes<typeof tableV2HeaderProps>\nexport type TableV2HeaderPropsPublic = ExtractPublicPropTypes<\n  typeof tableV2HeaderProps\n>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport {\n  virtualizedGridProps,\n  virtualizedListProps,\n} from '@pit-element-plus/components/virtual-list'\nimport {\n  classType,\n  columns,\n  dataType,\n  fixedDataType,\n  requiredNumber,\n  styleType,\n} from './common'\nimport { tableV2HeaderProps } from './header'\nimport { tableV2RowProps } from './row'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { ItemSize } from '@pit-element-plus/components/virtual-list'\n\nexport type onRowRenderedParams = {\n  rowCacheStart: number\n  rowCacheEnd: number\n  rowVisibleStart: number\n  rowVisibleEnd: number\n}\n\nexport const tableV2GridProps = buildProps({\n  columns,\n  data: dataType,\n  fixedData: fixedDataType,\n  estimatedRowHeight: tableV2RowProps.estimatedRowHeight,\n\n  /**\n   * Size related attributes\n   */\n  width: requiredNumber,\n  height: requiredNumber,\n\n  headerWidth: requiredNumber,\n  headerHeight: tableV2HeaderProps.headerHeight,\n\n  bodyWidth: requiredNumber,\n  rowHeight: requiredNumber,\n\n  /**\n   * Special attributes\n   */\n  cache: virtualizedListProps.cache,\n  useIsScrolling: Boolean,\n  scrollbarAlwaysOn: virtualizedGridProps.scrollbarAlwaysOn,\n  scrollbarStartGap: virtualizedGridProps.scrollbarStartGap,\n  scrollbarEndGap: virtualizedGridProps.scrollbarEndGap,\n\n  /**\n   * CSS attributes\n   */\n  class: classType,\n  style: styleType,\n  containerStyle: styleType,\n\n  getRowHeight: {\n    type: definePropType<ItemSize>(Function),\n    required: true,\n  },\n  rowKey: tableV2RowProps.rowKey,\n\n  /**\n   * Event handlers\n   */\n  onRowsRendered: {\n    type: definePropType<(params: onRowRenderedParams) => void>(Function),\n  },\n  onScroll: {\n    type: definePropType<(...args: any[]) => void>(Function),\n  },\n} as const)\n\nexport type TableV2GridProps = ExtractPropTypes<typeof tableV2GridProps>\nexport type TableV2GridPropsPublic = ExtractPublicPropTypes<\n  typeof tableV2GridProps\n>\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport {\n  virtualizedGridProps,\n  virtualizedScrollbarProps,\n} from '@pit-element-plus/components/virtual-list'\nimport {\n  classType,\n  columns,\n  dataType,\n  expandKeys,\n  fixedDataType,\n  requiredNumber,\n  rowKey,\n} from './common'\nimport { tableV2RowProps } from './row'\nimport { tableV2HeaderProps } from './header'\nimport { tableV2GridProps } from './grid'\n\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\nimport type { SortOrder } from './constants'\nimport type {\n  Column,\n  ColumnCommonParams,\n  DataGetter,\n  KeyType,\n  RowCommonParams,\n  SortBy,\n  SortState,\n} from './types'\n\n/**\n * Param types\n */\nexport type ColumnSortParams<T> = {\n  column: Column<T>\n  key: KeyType\n  order: SortOrder\n}\n\n/**\n * Renderer/Getter types\n */\n\nexport type ExtraCellPropGetter<T> = (\n  params: ColumnCommonParams<T> &\n    RowCommonParams & { cellData: T; rowData: any }\n) => any\n\nexport type ExtractHeaderPropGetter<T> = (params: {\n  columns: Column<T>[]\n  headerIndex: number\n}) => any\n\nexport type ExtractHeaderCellPropGetter<T> = (\n  params: ColumnCommonParams<T> & { headerIndex: number }\n) => any\n\nexport type ExtractRowPropGetter<T> = (\n  params: { columns: Column<T>[] } & RowCommonParams\n) => any\n\nexport type HeaderClassNameGetter<T> = (params: {\n  columns: Column<T>[]\n  headerIndex: number\n}) => string\n\nexport type RowClassNameGetter<T> = (\n  params: { columns: Column<T>[] } & RowCommonParams\n) => string\n\n/**\n * Handler types\n */\nexport type ColumnSortHandler<T> = (params: ColumnSortParams<T>) => void\nexport type ColumnResizeHandler<T> = (column: Column<T>, width: number) => void\nexport type ExpandedRowsChangeHandler = (expandedRowKeys: KeyType[]) => void\n\nexport const tableV2Props = buildProps({\n  cache: tableV2GridProps.cache,\n  estimatedRowHeight: tableV2RowProps.estimatedRowHeight,\n  rowKey,\n  // Header attributes\n  headerClass: {\n    type: definePropType<string | HeaderClassNameGetter<any>>([\n      String,\n      Function,\n    ]),\n  },\n  headerProps: {\n    type: definePropType<any | ExtractHeaderPropGetter<any>>([\n      Object,\n      Function,\n    ]),\n  },\n  headerCellProps: {\n    type: definePropType<any | ExtractHeaderCellPropGetter<any>>([\n      Object,\n      Function,\n    ]),\n  },\n  headerHeight: tableV2HeaderProps.headerHeight,\n  /**\n   * Footer attributes\n   */\n  footerHeight: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * Row attributes\n   */\n  rowClass: {\n    type: definePropType<string | RowClassNameGetter<any>>([String, Function]),\n  },\n  rowProps: {\n    type: definePropType<ExtractRowPropGetter<any> | any>([Object, Function]),\n  },\n  rowHeight: {\n    type: Number,\n    default: 50,\n  },\n\n  /**\n   * Cell attributes\n   */\n  cellProps: {\n    type: definePropType<Record<string, any> | ExtraCellPropGetter<any>>([\n      Object,\n      Function,\n    ]),\n  },\n  /**\n   * Data models\n   */\n  columns,\n  data: dataType,\n  dataGetter: {\n    type: definePropType<DataGetter<any>>(Function),\n  },\n  fixedData: fixedDataType,\n  /**\n   * Expanded keys\n   */\n  expandColumnKey: tableV2RowProps.expandColumnKey,\n  expandedRowKeys: expandKeys,\n  defaultExpandedRowKeys: expandKeys,\n\n  /**\n   * Attributes\n   */\n  class: classType,\n  // disabled: Boolean,\n  fixed: Boolean,\n  style: {\n    type: definePropType<CSSProperties>(Object),\n  },\n  width: requiredNumber,\n  height: requiredNumber,\n  maxHeight: Number,\n  useIsScrolling: Boolean,\n  indentSize: {\n    type: Number,\n    default: 12,\n  },\n  iconSize: {\n    type: Number,\n    default: 12,\n  },\n  hScrollbarSize: virtualizedGridProps.hScrollbarSize,\n  vScrollbarSize: virtualizedGridProps.vScrollbarSize,\n  scrollbarAlwaysOn: virtualizedScrollbarProps.alwaysOn,\n\n  /**\n   * Sorting\n   */\n  sortBy: {\n    type: definePropType<SortBy>(Object),\n    default: () => ({}) as { key: KeyType; order: SortOrder },\n  },\n  sortState: {\n    type: definePropType<SortState>(Object),\n    default: undefined,\n  },\n\n  /**\n   * Handlers\n   */\n  onColumnSort: {\n    type: definePropType<ColumnSortHandler<any>>(Function),\n  },\n  onExpandedRowsChange: {\n    type: definePropType<ExpandedRowsChangeHandler>(Function),\n  },\n  onEndReached: {\n    type: definePropType<(remainDistance: number) => void>(Function),\n  },\n  onRowExpand: tableV2RowProps.onRowExpand,\n  onScroll: tableV2GridProps.onScroll,\n  onRowsRendered: tableV2GridProps.onRowsRendered,\n  rowEventHandlers: tableV2RowProps.rowEventHandlers,\n} as const)\n\nexport type TableV2Props = ExtractPropTypes<typeof tableV2Props>\nexport type TableV2PropsPublic = ExtractPublicPropTypes<typeof tableV2Props>\n","import { renderSlot } from 'vue'\n\nimport type { FunctionalComponent } from 'vue'\nimport type { TableV2CellProps } from '../cell'\n\nconst TableV2Cell: FunctionalComponent<TableV2CellProps> = (\n  props: TableV2CellProps,\n  { slots }\n) => {\n  const { cellData, style } = props\n  const displayText = cellData?.toString?.() || ''\n  const defaultSlot = renderSlot(slots, 'default', props, () => [displayText])\n  return (\n    <div class={props.class} title={displayText} style={style}>\n      {defaultSlot}\n    </div>\n  )\n}\n\nTableV2Cell.displayName = 'ElTableV2Cell'\nTableV2Cell.inheritAttrs = false\n\nexport default TableV2Cell\n","import { renderSlot } from 'vue'\n\nimport type { FunctionalComponent } from 'vue'\nimport type { TableV2HeaderCell } from '../header-cell'\n\nconst HeaderCell: FunctionalComponent<TableV2HeaderCell> = (props, { slots }) =>\n  renderSlot(slots, 'default', props, () => [\n    <div class={props.class} title={props.column?.title}>\n      {props.column?.title}\n    </div>,\n  ])\n\nHeaderCell.displayName = 'ElTableV2HeaderCell'\nHeaderCell.inheritAttrs = false\n\nexport default HeaderCell\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { columns } from './common'\n\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\nimport type { KeyType } from './types'\n\nexport const tableV2HeaderRowProps = buildProps({\n  class: String,\n  columns,\n  columnsStyles: {\n    type: definePropType<Record<KeyType, CSSProperties>>(Object),\n    required: true,\n  },\n  headerIndex: Number,\n  style: { type: definePropType<CSSProperties>(Object) },\n} as const)\n\nexport type TableV2HeaderRowProps = ExtractPropTypes<\n  typeof tableV2HeaderRowProps\n>\nexport type TableV2HeaderRowPropsPublic = ExtractPublicPropTypes<\n  typeof tableV2HeaderRowProps\n>\n","import { defineComponent } from 'vue'\nimport { isArray } from '@pit-element-plus/utils'\nimport { tableV2HeaderRowProps } from '../header-row'\n\nimport type { CSSProperties } from 'vue'\nimport type { ColumnCellsType } from '../types'\nimport type { TableV2HeaderRowProps } from '../header-row'\n\nconst TableV2HeaderRow = defineComponent({\n  name: 'ElTableV2HeaderRow',\n  props: tableV2HeaderRowProps,\n  setup(props, { slots }) {\n    return () => {\n      const { columns, columnsStyles, headerIndex, style } = props\n      let Cells: ColumnCellsType = columns.map((column, columnIndex) => {\n        return slots.cell!({\n          columns,\n          column,\n          columnIndex,\n          headerIndex,\n          style: columnsStyles[column.key!],\n        })\n      })\n\n      if (slots.header) {\n        Cells = slots.header({\n          cells: Cells.map((node) => {\n            if (isArray(node) && node.length === 1) {\n              return node[0]\n            }\n            return node\n          }),\n          columns,\n          headerIndex,\n        })\n      }\n\n      return (\n        <div class={props.class} style={style} role=\"row\">\n          {Cells}\n        </div>\n      )\n    }\n  },\n})\n\nexport default TableV2HeaderRow\n\nexport type TableV2HeaderRowCellRendererParams = {\n  columns: TableV2HeaderRowProps['columns']\n  column: TableV2HeaderRowProps['columns'][number]\n  columnIndex: number\n  headerIndex: number\n  style: CSSProperties\n}\n\nexport type TableV2HeaderRowRendererParams = {\n  cells: ColumnCellsType\n  columns: TableV2HeaderRowProps['columns']\n  headerIndex: number\n}\n","import {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  onUpdated,\n  ref,\n  unref,\n} from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { ensureArray } from '@pit-element-plus/utils'\nimport { tableV2HeaderProps } from '../header'\nimport { enforceUnit } from '../utils'\nimport { TABLE_V2_GRID_INJECTION_KEY } from '../tokens'\n\nimport type { CSSProperties, Ref, UnwrapRef } from 'vue'\nimport type { TableV2HeaderProps } from '../header'\nimport type { UseColumnsReturn } from '../composables/use-columns'\n\nconst COMPONENT_NAME = 'ElTableV2Header'\nconst TableV2Header = defineComponent({\n  name: COMPONENT_NAME,\n  props: tableV2HeaderProps,\n  setup(props, { slots, expose }) {\n    const ns = useNamespace('table-v2')\n    const scrollLeftInfo = inject<Ref<number>>(TABLE_V2_GRID_INJECTION_KEY)\n\n    const headerRef = ref<HTMLElement>()\n\n    const headerStyle = computed(() =>\n      enforceUnit({\n        width: props.width,\n        height: props.height,\n      })\n    )\n\n    const rowStyle = computed(() =>\n      enforceUnit({\n        width: props.rowWidth,\n        height: props.height,\n      })\n    )\n\n    const headerHeights = computed(() => ensureArray(unref(props.headerHeight)))\n\n    const scrollToLeft = (left?: number) => {\n      const headerEl = unref(headerRef)\n      nextTick(() => {\n        headerEl?.scroll &&\n          headerEl.scroll({\n            left,\n          })\n      })\n    }\n\n    const renderFixedRows = () => {\n      const fixedRowClassName = ns.e('fixed-header-row')\n\n      const { columns, fixedHeaderData, rowHeight } = props\n\n      return fixedHeaderData?.map((fixedRowData, fixedRowIndex) => {\n        const style: CSSProperties = enforceUnit({\n          height: rowHeight,\n          width: '100%',\n        })\n\n        return slots.fixed?.({\n          class: fixedRowClassName,\n          columns,\n          rowData: fixedRowData,\n          rowIndex: -(fixedRowIndex + 1),\n          style,\n        })\n      })\n    }\n\n    const renderDynamicRows = () => {\n      const dynamicRowClassName = ns.e('dynamic-header-row')\n      const { columns } = props\n\n      return unref(headerHeights).map((rowHeight, rowIndex) => {\n        const style: CSSProperties = enforceUnit({\n          width: '100%',\n          height: rowHeight,\n        })\n\n        return slots.dynamic?.({\n          class: dynamicRowClassName,\n          columns,\n          headerIndex: rowIndex,\n          style,\n        })\n      })\n    }\n\n    onUpdated(() => {\n      if (scrollLeftInfo?.value) {\n        scrollToLeft(scrollLeftInfo.value)\n      }\n    })\n    expose({\n      /**\n       * @description scroll to position based on the provided value\n       */\n      scrollToLeft,\n    })\n\n    return () => {\n      if (props.height <= 0) return\n\n      return (\n        <div\n          ref={headerRef}\n          class={props.class}\n          style={unref(headerStyle)}\n          role=\"rowgroup\"\n        >\n          <div style={unref(rowStyle)} class={ns.e('header')}>\n            {renderDynamicRows()}\n            {renderFixedRows()}\n          </div>\n        </div>\n      )\n    }\n  },\n})\n\nexport default TableV2Header\n\nexport type TableV2HeaderInstance = InstanceType<typeof TableV2Header> & {\n  /**\n   * @description scroll to position based on the provided value\n   */\n  scrollToLeft: (left?: number) => void\n}\n\nexport type TableV2HeaderRendererParams = {\n  class: string\n  columns: TableV2HeaderProps['columns']\n  columnsStyles: UnwrapRef<UseColumnsReturn['columnsStyles']>\n  headerIndex: number\n  style: CSSProperties\n}\n\nexport type TableV2HeaderRowRendererParams = {\n  rowData: any\n  rowIndex: number\n} & Omit<TableV2HeaderRendererParams, 'headerIndex'>\n","import {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  onMounted,\n  ref,\n  unref,\n} from 'vue'\nimport { isArray, isFunction, isNumber } from '@pit-element-plus/utils'\nimport { tableV2RowProps } from '../row'\nimport { TableV2InjectionKey } from '../tokens'\nimport { placeholderSign } from '../private'\n\nimport type { CSSProperties, RendererElement, RendererNode, VNode } from 'vue'\nimport type { RowEventHandlers, TableV2RowProps } from '../row'\n\ntype CustomizedCellsType = VNode<\n  RendererNode,\n  RendererElement,\n  {\n    [key: string]: any\n  }\n>[]\n\ntype DefaultCellsType = VNode<\n  RendererNode,\n  RendererElement,\n  {\n    [key: string]: any\n  }\n>[][]\n\ntype ColumnCellsType = DefaultCellsType | CustomizedCellsType\n\nconst useTableRow = (props: TableV2RowProps) => {\n  const { isScrolling } = inject(TableV2InjectionKey)!\n\n  const measured = ref(false)\n  const rowRef = ref<HTMLElement>()\n  const measurable = computed(() => {\n    return isNumber(props.estimatedRowHeight) && props.rowIndex >= 0\n  })\n\n  const doMeasure = (isInit = false) => {\n    const $rowRef = unref(rowRef)\n    if (!$rowRef) return\n    const { columns, onRowHeightChange, rowKey, rowIndex, style } = props\n    const { height } = $rowRef.getBoundingClientRect()\n    measured.value = true\n\n    nextTick(() => {\n      if (isInit || height !== Number.parseInt(style!.height as string)) {\n        const firstColumn = columns[0]\n        const isPlaceholder = firstColumn?.placeholderSign === placeholderSign\n        onRowHeightChange?.(\n          { rowKey, height, rowIndex },\n          firstColumn && !isPlaceholder && firstColumn.fixed\n        )\n      }\n    })\n  }\n\n  const eventHandlers = computed(() => {\n    const { rowData, rowIndex, rowKey, onRowHover } = props\n    const handlers = props.rowEventHandlers || ({} as RowEventHandlers)\n    const eventHandlers = {} as {\n      [key in keyof RowEventHandlers]: (e: Event) => void\n    }\n\n    Object.entries(handlers).forEach(([eventName, handler]) => {\n      if (isFunction(handler)) {\n        eventHandlers[eventName as keyof RowEventHandlers] = (event: Event) => {\n          handler({\n            event,\n            rowData,\n            rowIndex,\n            rowKey,\n          })\n        }\n      }\n    })\n\n    if (onRowHover) {\n      ;(\n        [\n          { name: 'onMouseleave', hovered: false },\n          { name: 'onMouseenter', hovered: true },\n        ] as const\n      ).forEach(({ name, hovered }) => {\n        const existedHandler = eventHandlers[name]\n        eventHandlers[name] = ((event: MouseEvent) => {\n          onRowHover({\n            event,\n            hovered,\n            rowData,\n            rowIndex,\n            rowKey,\n          })\n\n          existedHandler?.(event)\n        }) as any\n      })\n    }\n    return eventHandlers\n  })\n\n  const onExpand = (expanded: boolean) => {\n    const { onRowExpand, rowData, rowIndex, rowKey } = props\n\n    onRowExpand?.({\n      expanded,\n      rowData,\n      rowIndex,\n      rowKey,\n    })\n  }\n\n  onMounted(() => {\n    if (unref(measurable)) {\n      doMeasure(true)\n    }\n  })\n\n  return { isScrolling, measurable, measured, rowRef, eventHandlers, onExpand }\n}\n\nconst COMPONENT_NAME = 'ElTableV2TableRow'\n\nconst TableV2Row = defineComponent({\n  name: COMPONENT_NAME,\n  props: tableV2RowProps,\n  setup(props, { expose, slots, attrs }) {\n    const {\n      eventHandlers,\n      isScrolling,\n      measurable,\n      measured,\n      rowRef,\n\n      onExpand,\n    } = useTableRow(props)\n\n    expose({\n      /**\n       * @description manually dispatching expand action on row.\n       */\n      onExpand,\n    })\n\n    return () => {\n      const {\n        columns,\n        columnsStyles,\n        expandColumnKey,\n        depth,\n        rowData,\n        rowIndex,\n        style,\n      } = props\n\n      let ColumnCells: ColumnCellsType = columns.map((column, columnIndex) => {\n        const expandable =\n          isArray(rowData.children) &&\n          rowData.children.length > 0 &&\n          column.key === expandColumnKey\n\n        return slots.cell!({\n          column,\n          columns,\n          columnIndex,\n          depth,\n          style: columnsStyles[column.key!],\n          rowData,\n          rowIndex,\n          isScrolling: unref(isScrolling),\n          expandIconProps: expandable\n            ? {\n                rowData,\n                rowIndex,\n                onExpand,\n              }\n            : undefined,\n        })\n      })\n\n      if (slots.row) {\n        ColumnCells = slots.row({\n          cells: ColumnCells.map((node) => {\n            if (isArray(node) && node.length === 1) {\n              return node[0]\n            }\n            return node\n          }),\n          style,\n          columns,\n          depth,\n          rowData,\n          rowIndex,\n          isScrolling: unref(isScrolling),\n        })\n      }\n\n      if (unref(measurable)) {\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { height, ...exceptHeightStyle } = style || {}\n        const _measured = unref(measured)\n        return (\n          <div\n            ref={rowRef}\n            class={props.class}\n            style={_measured ? style : exceptHeightStyle}\n            role=\"row\"\n            {...attrs}\n            {...unref(eventHandlers)}\n          >\n            {ColumnCells}\n          </div>\n        )\n      }\n\n      return (\n        <div\n          {...attrs}\n          ref={rowRef}\n          class={props.class}\n          style={style}\n          role=\"row\"\n          {...unref(eventHandlers)}\n        >\n          {ColumnCells}\n        </div>\n      )\n    }\n  },\n})\n\nexport default TableV2Row\n\nexport type TableV2RowCellRenderParam = {\n  column: TableV2RowProps['columns'][number]\n  columns: TableV2RowProps['columns']\n  columnIndex: number\n  depth: number\n  style: CSSProperties\n  rowData: any\n  rowIndex: number\n  isScrolling: boolean\n  expandIconProps?: {\n    rowData: any\n    rowIndex: number\n    onExpand: (expand: boolean) => void\n  }\n}\n","import ElIcon from '@pit-element-plus/components/icon'\nimport { SortDown, SortUp } from 'pit-element-icons'\nimport { SortOrder } from '../constants'\n\nimport type { FunctionalComponent } from 'vue'\n\nexport type SortIconProps = {\n  sortOrder: SortOrder\n  ariaLabel?: string\n  class?: JSX.IntrinsicAttributes['class']\n}\n\nconst SortIcon: FunctionalComponent<SortIconProps> = (props) => {\n  const { sortOrder } = props\n\n  return (\n    <button type=\"button\" aria-label={props.ariaLabel} class={props.class}>\n      <ElIcon size={14}>\n        {sortOrder === SortOrder.ASC ? <SortUp /> : <SortDown />}\n      </ElIcon>\n    </button>\n  )\n}\n\nexport default SortIcon\n","import ElIcon from '@pit-element-plus/components/icon'\nimport { ArrowRight } from 'pit-element-icons'\n\nimport type { StyleValue } from 'vue'\nimport type { TableV2RowCellRenderParam } from './row'\n\nconst ExpandIcon = (\n  props: TableV2RowCellRenderParam['expandIconProps'] & {\n    class?: string | string[]\n    style: StyleValue\n    ariaLabel?: string\n    size: number\n    expanded: boolean\n    expandable: boolean\n  }\n) => {\n  const { expanded, expandable, onExpand, style, size, ariaLabel } = props\n\n  const expandIconProps = {\n    onClick: expandable ? () => onExpand(!expanded) : undefined,\n    ariaLabel,\n    ariaExpanded: expanded,\n    class: props.class,\n  } as any\n\n  return (\n    <button {...expandIconProps} type=\"button\">\n      <ElIcon size={size} style={style}>\n        <ArrowRight />\n      </ElIcon>\n    </button>\n  )\n}\n\nExpandIcon.inheritAttrs = false\n\nexport default ExpandIcon\n\nexport type ExpandIconInstance = ReturnType<typeof ExpandIcon>\n","import {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  onActivated,\n  provide,\n  ref,\n  unref,\n  watch,\n} from 'vue'\nimport {\n  DynamicSizeGrid,\n  FixedSizeGrid,\n} from '@pit-element-plus/components/virtual-list'\nimport { isNumber, isObject } from '@pit-element-plus/utils'\nimport { Header } from './components'\nimport { TABLE_V2_GRID_INJECTION_KEY, TableV2InjectionKey } from './tokens'\nimport { tableV2GridProps } from './grid'\nimport { sum } from './utils'\n\nimport type { UnwrapRef } from 'vue'\nimport type {\n  DynamicSizeGridInstance,\n  GridDefaultSlotParams,\n  GridItemKeyGetter,\n  GridItemRenderedEvtParams,\n  GridScrollOptions,\n  ResetAfterIndex,\n  Alignment as ScrollStrategy,\n} from '@pit-element-plus/components/virtual-list'\nimport type { TableV2HeaderInstance } from './components'\nimport type { TableV2GridProps } from './grid'\n\nconst COMPONENT_NAME = 'ElTableV2Grid'\n\nconst useTableGrid = (props: TableV2GridProps) => {\n  const headerRef = ref<TableV2HeaderInstance>()\n  const bodyRef = ref<DynamicSizeGridInstance>()\n  const scrollLeft = ref(0)\n\n  const totalHeight = computed(() => {\n    const { data, rowHeight, estimatedRowHeight } = props\n\n    if (estimatedRowHeight) {\n      return\n    }\n\n    return data.length * (rowHeight as number)\n  })\n\n  const fixedRowHeight = computed(() => {\n    const { fixedData, rowHeight } = props\n\n    return (fixedData?.length || 0) * (rowHeight as number)\n  })\n\n  const headerHeight = computed(() => sum(props.headerHeight))\n\n  const gridHeight = computed(() => {\n    const { height } = props\n    return Math.max(0, height - unref(headerHeight) - unref(fixedRowHeight))\n  })\n\n  const hasHeader = computed(() => {\n    return unref(headerHeight) + unref(fixedRowHeight) > 0\n  })\n\n  const itemKey: GridItemKeyGetter = ({ data, rowIndex }) =>\n    data[rowIndex][props.rowKey]\n\n  function onItemRendered({\n    rowCacheStart,\n    rowCacheEnd,\n    rowVisibleStart,\n    rowVisibleEnd,\n  }: GridItemRenderedEvtParams) {\n    props.onRowsRendered?.({\n      rowCacheStart,\n      rowCacheEnd,\n      rowVisibleStart,\n      rowVisibleEnd,\n    })\n  }\n\n  function resetAfterRowIndex(index: number, forceUpdate: boolean) {\n    bodyRef.value?.resetAfterRowIndex(index, forceUpdate)\n  }\n\n  function scrollTo(x: number, y: number): void\n  function scrollTo(options: GridScrollOptions): void\n  function scrollTo(leftOrOptions: number | GridScrollOptions, top?: number) {\n    const header$ = unref(headerRef)\n    const body$ = unref(bodyRef)\n\n    if (isObject(leftOrOptions)) {\n      header$?.scrollToLeft(leftOrOptions.scrollLeft)\n      scrollLeft.value = leftOrOptions.scrollLeft!\n      body$?.scrollTo(leftOrOptions)\n    } else {\n      header$?.scrollToLeft(leftOrOptions)\n      scrollLeft.value = leftOrOptions\n      body$?.scrollTo({\n        scrollLeft: leftOrOptions,\n        scrollTop: top,\n      })\n    }\n  }\n\n  function scrollToTop(scrollTop: number) {\n    unref(bodyRef)?.scrollTo({\n      scrollTop,\n    })\n  }\n\n  function scrollToRow(row: number, strategy: ScrollStrategy) {\n    const body = unref(bodyRef)\n    if (!body) return\n\n    const prevScrollLeft = scrollLeft.value\n\n    body.scrollToItem(row, 0, strategy)\n\n    if (prevScrollLeft) {\n      scrollTo({\n        scrollLeft: prevScrollLeft,\n      })\n    }\n  }\n\n  function forceUpdate() {\n    unref(bodyRef)?.$forceUpdate()\n    unref(headerRef)?.$forceUpdate()\n  }\n\n  watch(\n    () => props.bodyWidth,\n    () => {\n      if (isNumber(props.estimatedRowHeight))\n        bodyRef.value?.resetAfter({ columnIndex: 0 }, false)\n    }\n  )\n\n  return {\n    bodyRef,\n    forceUpdate,\n    fixedRowHeight,\n    gridHeight,\n    hasHeader,\n    headerHeight,\n    headerRef,\n    totalHeight,\n\n    itemKey,\n    onItemRendered,\n    resetAfterRowIndex,\n    scrollTo,\n    scrollToTop,\n    scrollToRow,\n    scrollLeft,\n  }\n}\n\nconst TableGrid = defineComponent({\n  name: COMPONENT_NAME,\n  props: tableV2GridProps,\n  setup(props, { slots, expose }) {\n    const { ns } = inject(TableV2InjectionKey)!\n\n    const {\n      bodyRef,\n      fixedRowHeight,\n      gridHeight,\n      hasHeader,\n      headerRef,\n      headerHeight,\n      totalHeight,\n\n      forceUpdate,\n      itemKey,\n      onItemRendered,\n      resetAfterRowIndex,\n      scrollTo,\n      scrollToTop,\n      scrollToRow,\n      scrollLeft,\n    } = useTableGrid(props)\n\n    provide(TABLE_V2_GRID_INJECTION_KEY, scrollLeft)\n\n    onActivated(async () => {\n      await nextTick()\n      const scrollTop = bodyRef.value?.states.scrollTop\n      scrollTop && scrollToTop(Math.round(scrollTop) + 1)\n    })\n\n    expose({\n      forceUpdate,\n      /**\n       * @description fetch total height\n       */\n      totalHeight,\n      /**\n       * @description scroll to a position\n       */\n      scrollTo,\n      /**\n       * @description scroll vertically to position y\n       */\n      scrollToTop,\n      /**\n       * @description scroll to a given row\n       * @params row {Number} which row to scroll to\n       * @params strategy {ScrollStrategy} use what strategy to scroll to\n       */\n      scrollToRow,\n      /**\n       * @description reset rendered state after row index\n       */\n      resetAfterRowIndex,\n    })\n\n    const getColumnWidth = () => props.bodyWidth\n\n    return () => {\n      const {\n        cache,\n        columns,\n        data,\n        fixedData,\n        useIsScrolling,\n        scrollbarAlwaysOn,\n        scrollbarEndGap,\n        scrollbarStartGap,\n        style,\n        rowHeight,\n        bodyWidth,\n        estimatedRowHeight,\n        headerWidth,\n        height,\n        width,\n\n        getRowHeight,\n        onScroll,\n      } = props\n\n      const isDynamicRowEnabled = isNumber(estimatedRowHeight)\n      const Grid = isDynamicRowEnabled ? DynamicSizeGrid : FixedSizeGrid\n      const _headerHeight = unref(headerHeight)\n\n      return (\n        <div role=\"table\" class={[ns.e('table'), props.class]} style={style}>\n          <Grid\n            ref={bodyRef}\n            // special attrs\n            data={data}\n            useIsScrolling={useIsScrolling}\n            itemKey={itemKey}\n            // column attrs\n            columnCache={0}\n            columnWidth={isDynamicRowEnabled ? getColumnWidth : bodyWidth}\n            totalColumn={1}\n            // row attrs\n            totalRow={data.length}\n            rowCache={cache}\n            rowHeight={isDynamicRowEnabled ? getRowHeight : rowHeight}\n            // DOM attrs\n            width={width}\n            height={unref(gridHeight)}\n            class={ns.e('body')}\n            role=\"rowgroup\"\n            scrollbarStartGap={scrollbarStartGap}\n            scrollbarEndGap={scrollbarEndGap}\n            scrollbarAlwaysOn={scrollbarAlwaysOn}\n            // handlers\n            onScroll={onScroll}\n            onItemRendered={onItemRendered}\n            perfMode={false}\n          >\n            {{\n              default: (params: GridDefaultSlotParams) => {\n                const rowData = data[params.rowIndex]\n                return slots.row?.({\n                  ...params,\n                  columns,\n                  rowData,\n                })\n              },\n            }}\n          </Grid>\n          {unref(hasHeader) && (\n            <Header\n              ref={headerRef}\n              class={ns.e('header-wrapper')}\n              columns={columns}\n              headerData={data}\n              headerHeight={props.headerHeight}\n              fixedHeaderData={fixedData}\n              rowWidth={headerWidth}\n              rowHeight={rowHeight}\n              width={width}\n              height={Math.min(_headerHeight + unref(fixedRowHeight), height)}\n            >\n              {{\n                dynamic: slots.header,\n                fixed: slots.row,\n              }}\n            </Header>\n          )}\n        </div>\n      )\n    }\n  },\n})\n\nexport default TableGrid\n\nexport type TableGridRowSlotParams = {\n  columns: TableV2GridProps['columns']\n  rowData: any\n} & GridDefaultSlotParams\n\nexport type TableGridInstance = InstanceType<typeof TableGrid> &\n  UnwrapRef<{\n    forceUpdate: () => void\n    /**\n     * @description fetch total height\n     */\n    totalHeight: number\n\n    /**\n     * @description scrollTo a position\n     * @param { number | ScrollToOptions } arg1\n     * @param { number } arg2\n     */\n    scrollTo(leftOrOptions: number | GridScrollOptions, top?: number): void\n\n    /**\n     * @description scroll vertically to position y\n     */\n    scrollToTop(scrollTop: number): void\n    /**\n     * @description scroll to a given row\n     * @params row {Number} which row to scroll to\n     * @params @optional strategy {ScrollStrategy} use what strategy to scroll to\n     */\n    scrollToRow(row: number, strategy: ScrollStrategy): void\n    /**\n     * @description reset rendered state after row index\n     * @param { number } rowIndex\n     * @param { boolean } forceUpdate\n     */\n    resetAfterRowIndex: ResetAfterIndex\n  }>\n","import Table from '../table-grid'\n\nimport type { FunctionalComponent, Ref } from 'vue'\nimport type { TableV2GridProps } from '../grid'\nimport type { TableGridInstance } from '../table-grid'\n\nexport type MainTableRendererProps = TableV2GridProps & {\n  mainTableRef: Ref<TableGridInstance | undefined>\n}\n\nconst MainTable: FunctionalComponent<MainTableRendererProps> = (\n  props: MainTableRendererProps,\n  { slots }\n) => {\n  const { mainTableRef, ...rest } = props\n  return (\n    <Table ref={mainTableRef} {...rest}>\n      {slots}\n    </Table>\n  )\n}\n\nexport default MainTable\n","import Table from '../table-grid'\n\nimport type { FunctionalComponent, Ref } from 'vue'\nimport type { TableV2GridProps } from '../grid'\nimport type { TableGridInstance } from '../table-grid'\n\ntype LeftTableProps = TableV2GridProps & {\n  leftTableRef: Ref<TableGridInstance | undefined>\n}\n\nconst LeftTable: FunctionalComponent<LeftTableProps> = (props, { slots }) => {\n  if (!props.columns.length) return\n\n  const { leftTableRef, ...rest } = props\n\n  return (\n    <Table ref={leftTableRef} {...rest}>\n      {slots}\n    </Table>\n  )\n}\n\nexport default LeftTable\n","import Table from '../table-grid'\n\nimport type { FunctionalComponent, Ref } from 'vue'\nimport type { TableV2GridProps } from '../grid'\nimport type { TableGridInstance } from '../table-grid'\n\ntype RightTableProps = TableV2GridProps & {\n  rightTableRef: Ref<TableGridInstance | undefined>\n}\n\nconst RightTable: FunctionalComponent<RightTableProps> = (props, { slots }) => {\n  if (!props.columns.length) return\n\n  const { rightTableRef, ...rest } = props\n\n  return (\n    <Table ref={rightTableRef} {...rest}>\n      {slots}\n    </Table>\n  )\n}\n\nexport default RightTable\n","import { Row } from '../components'\nimport { tryCall } from '../utils'\n\nimport type {\n  ComponentInternalInstance,\n  FunctionalComponent,\n  UnwrapNestedRefs,\n} from 'vue'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\nimport type { UseTableReturn } from '../use-table'\nimport type { TableV2Props } from '../table'\nimport type { TableGridRowSlotParams } from '../table-grid'\n\ntype RowRendererProps = TableGridRowSlotParams &\n  Pick<\n    TableV2Props,\n    | 'expandColumnKey'\n    | 'estimatedRowHeight'\n    | 'rowProps'\n    | 'rowClass'\n    | 'rowKey'\n    | 'rowEventHandlers'\n  > &\n  UnwrapNestedRefs<\n    Pick<\n      UseTableReturn,\n      | 'depthMap'\n      | 'expandedRowKeys'\n      | 'hasFixedColumns'\n      | 'onRowHovered'\n      | 'onRowExpanded'\n      | 'columnsStyles'\n    >\n  > & {\n    ns: UseNamespaceReturn\n    tableInstance?: ComponentInternalInstance\n  }\n\nconst RowRenderer: FunctionalComponent<RowRendererProps> = (\n  props,\n  { slots }\n) => {\n  const {\n    columns,\n    columnsStyles,\n    depthMap,\n    expandColumnKey,\n    expandedRowKeys,\n    estimatedRowHeight,\n    hasFixedColumns,\n    rowData,\n    rowIndex,\n    style,\n    isScrolling,\n    rowProps,\n    rowClass,\n    rowKey,\n    rowEventHandlers,\n    ns,\n    onRowHovered,\n    onRowExpanded,\n  } = props\n\n  const rowKls = tryCall(rowClass, { columns, rowData, rowIndex }, '')\n  const additionalProps = tryCall(rowProps, {\n    columns,\n    rowData,\n    rowIndex,\n  })\n  const _rowKey = rowData[rowKey]\n  const depth = depthMap[_rowKey] || 0\n  const canExpand = Boolean(expandColumnKey)\n  const isFixedRow = rowIndex < 0\n  const kls = [\n    ns.e('row'),\n    rowKls,\n    ns.is('expanded', canExpand && expandedRowKeys.includes(_rowKey)),\n    ns.is('fixed', !depth && isFixedRow),\n    ns.is('customized', Boolean(slots.row)),\n    {\n      [ns.e(`row-depth-${depth}`)]: canExpand && rowIndex >= 0,\n    },\n  ]\n\n  const onRowHover = hasFixedColumns ? onRowHovered : undefined\n\n  const _rowProps = {\n    ...additionalProps,\n    columns,\n    columnsStyles,\n    class: kls,\n    depth,\n    expandColumnKey,\n    estimatedRowHeight: isFixedRow ? undefined : estimatedRowHeight,\n    isScrolling,\n    rowIndex,\n    rowData,\n    rowKey: _rowKey,\n    rowEventHandlers,\n    style,\n  }\n\n  const handlerMouseEnter = (e: MouseEvent) => {\n    onRowHover?.({\n      hovered: true,\n      rowKey: _rowKey,\n      event: e,\n      rowData,\n      rowIndex,\n    })\n  }\n\n  const handlerMouseLeave = (e: MouseEvent) => {\n    onRowHover?.({\n      hovered: false,\n      rowKey: _rowKey,\n      event: e,\n      rowData,\n      rowIndex,\n    })\n  }\n\n  return (\n    <Row\n      {..._rowProps}\n      onRowExpand={onRowExpanded}\n      onMouseenter={handlerMouseEnter}\n      onMouseleave={handlerMouseLeave}\n      rowkey={_rowKey}\n    >\n      {slots}\n    </Row>\n  )\n}\n\nexport default RowRenderer\n","import { renderSlot } from 'vue'\nimport { get } from 'lodash-unified'\nimport { isFunction, isObject } from '@pit-element-plus/utils'\nimport { ExpandIcon, TableCell } from '../components'\nimport { Alignment } from '../constants'\nimport { placeholderSign } from '../private'\nimport { componentToSlot, enforceUnit, tryCall } from '../utils'\n\nimport type { FunctionalComponent, UnwrapNestedRefs, VNode } from 'vue'\nimport type { TableV2RowCellRenderParam } from '../components'\nimport type { Translator, UseNamespaceReturn } from '@pit-element-plus/hooks'\nimport type { UseTableReturn } from '../use-table'\nimport type { TableV2Props } from '../table'\n\ntype CellRendererProps = TableV2RowCellRenderParam &\n  Pick<\n    TableV2Props,\n    'cellProps' | 'expandColumnKey' | 'indentSize' | 'iconSize' | 'rowKey'\n  > &\n  UnwrapNestedRefs<Pick<UseTableReturn, 'expandedRowKeys'>> & {\n    ns: UseNamespaceReturn\n    t: Translator\n  }\n\nconst CellRenderer: FunctionalComponent<CellRendererProps> = (\n  {\n    // renderer props\n    columns,\n    column,\n    columnIndex,\n    depth,\n    expandIconProps,\n    isScrolling,\n    rowData,\n    rowIndex,\n    // from use-table\n    style,\n    expandedRowKeys,\n    ns,\n    t,\n    // derived props\n    cellProps: _cellProps,\n    expandColumnKey,\n    indentSize,\n    iconSize,\n    rowKey,\n  },\n  { slots }\n) => {\n  const cellStyle = enforceUnit(style)\n\n  if (column.placeholderSign === placeholderSign) {\n    return <div class={ns.em('row-cell', 'placeholder')} style={cellStyle} />\n  }\n  const { cellRenderer, dataKey, dataGetter } = column\n\n  const cellData = isFunction(dataGetter)\n    ? dataGetter({ columns, column, columnIndex, rowData, rowIndex })\n    : get(rowData, dataKey ?? '')\n\n  const extraCellProps = tryCall(_cellProps, {\n    cellData,\n    columns,\n    column,\n    columnIndex,\n    rowIndex,\n    rowData,\n  })\n\n  const cellProps = {\n    class: ns.e('cell-text'),\n    columns,\n    column,\n    columnIndex,\n    cellData,\n    isScrolling,\n    rowData,\n    rowIndex,\n  }\n  const columnCellRenderer = componentToSlot<typeof cellProps>(cellRenderer)\n  const Cell = columnCellRenderer\n    ? columnCellRenderer(cellProps)\n    : renderSlot(slots, 'default', cellProps, () => [\n        <TableCell {...cellProps}></TableCell>,\n      ])\n\n  const kls = [\n    ns.e('row-cell'),\n    column.class,\n    column.align === Alignment.CENTER && ns.is('align-center'),\n    column.align === Alignment.RIGHT && ns.is('align-right'),\n  ]\n\n  const expandable =\n    rowIndex >= 0 && expandColumnKey && column.key === expandColumnKey\n  const expanded = rowIndex >= 0 && expandedRowKeys.includes(rowData[rowKey])\n\n  let IconOrPlaceholder: VNode | undefined\n  const iconStyle = `margin-inline-start: ${depth * indentSize}px;`\n  if (expandable) {\n    if (isObject(expandIconProps)) {\n      IconOrPlaceholder = (\n        <ExpandIcon\n          {...expandIconProps}\n          class={[ns.e('expand-icon'), ns.is('expanded', expanded)]}\n          size={iconSize}\n          expanded={expanded}\n          ariaLabel={t(\n            expanded ? 'el.table.collapseRowLabel' : 'el.table.expandRowLabel'\n          )}\n          style={iconStyle}\n          expandable\n        />\n      )\n    } else {\n      IconOrPlaceholder = (\n        <div\n          style={[\n            iconStyle,\n            `width: ${iconSize}px; height: ${iconSize}px;`,\n          ].join(' ')}\n        />\n      )\n    }\n  }\n\n  return (\n    <div class={kls} style={cellStyle} {...extraCellProps} role=\"cell\">\n      {IconOrPlaceholder}\n      {Cell}\n    </div>\n  )\n}\n\nCellRenderer.inheritAttrs = false\n\nexport default CellRenderer\n","import { HeaderRow } from '../components'\nimport { tryCall } from '../utils'\n\nimport type { FunctionalComponent } from 'vue'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\nimport type { TableV2HeaderRendererParams } from '../components'\nimport type { TableV2Props } from '../table'\n\ntype HeaderRendererProps = TableV2HeaderRendererParams &\n  Pick<TableV2Props, 'headerClass' | 'headerProps'> & {\n    ns: UseNamespaceReturn\n  }\n\nconst HeaderRenderer: FunctionalComponent<HeaderRendererProps> = (\n  {\n    columns,\n    columnsStyles,\n    headerIndex,\n    style,\n    // derived from root\n    headerClass,\n    headerProps,\n\n    ns,\n  },\n  { slots }\n) => {\n  const param = { columns, headerIndex }\n\n  const kls = [\n    ns.e('header-row'),\n    tryCall(headerClass, param, ''),\n    ns.is('customized', Boolean(slots.header)),\n  ]\n\n  const extraProps = {\n    ...tryCall(headerProps, param),\n    columnsStyles,\n    class: kls,\n    columns,\n    headerIndex,\n    style,\n  }\n\n  return <HeaderRow {...extraProps}>{slots}</HeaderRow>\n}\n\nexport default HeaderRenderer\n","import { renderSlot } from 'vue'\nimport { HeaderCell, SortIcon } from '../components'\n// import ColumnResizer from '../table-column-resizer'\nimport { Alignment, SortOrder, oppositeOrderMap } from '../constants'\nimport { placeholderSign } from '../private'\nimport { componentToSlot, enforceUnit, tryCall } from '../utils'\n\nimport type { FunctionalComponent, UnwrapNestedRefs } from 'vue'\nimport type { Translator, UseNamespaceReturn } from '@pit-element-plus/hooks'\nimport type { TableV2HeaderRowCellRendererParams } from '../components'\nimport type { UseTableReturn } from '../use-table'\nimport type { TableV2Props } from '../table'\n\nexport type HeaderCellRendererProps = TableV2HeaderRowCellRendererParams &\n  UnwrapNestedRefs<Pick<UseTableReturn, 'onColumnSorted'>> &\n  Pick<TableV2Props, 'sortBy' | 'sortState' | 'headerCellProps'> & {\n    ns: UseNamespaceReturn\n    t: Translator\n  }\n\nconst HeaderCellRenderer: FunctionalComponent<HeaderCellRendererProps> = (\n  props,\n  { slots }\n) => {\n  const { column, ns, t, style, onColumnSorted } = props\n\n  const cellStyle = enforceUnit(style)\n\n  if (column.placeholderSign === placeholderSign) {\n    return (\n      <div class={ns.em('header-row-cell', 'placeholder')} style={cellStyle} />\n    )\n  }\n\n  const { headerCellRenderer, headerClass, sortable } = column\n\n  /**\n   * render Cell children\n   */\n\n  const cellProps = {\n    ...props,\n    class: ns.e('header-cell-text'),\n  }\n\n  const columnCellRenderer =\n    componentToSlot<typeof cellProps>(headerCellRenderer)\n\n  const Cell = columnCellRenderer\n    ? columnCellRenderer(cellProps)\n    : renderSlot(slots, 'default', cellProps, () => [\n        <HeaderCell {...cellProps} />,\n      ])\n\n  /**\n   * Render cell container and sort indicator\n   */\n  const { sortBy, sortState, headerCellProps } = props\n\n  let sorting: boolean, sortOrder: SortOrder, ariaSort: string | undefined\n  if (sortState) {\n    const order = sortState[column.key!]\n    sorting = Boolean(oppositeOrderMap[order])\n    sortOrder = sorting ? order : SortOrder.ASC\n  } else {\n    sorting = column.key === sortBy.key\n    sortOrder = sorting ? sortBy.order : SortOrder.ASC\n  }\n  if (sortOrder === SortOrder.ASC) {\n    ariaSort = 'ascending'\n  } else if (sortOrder === SortOrder.DESC) {\n    ariaSort = 'descending'\n  } else {\n    ariaSort = undefined\n  }\n\n  const cellKls = [\n    ns.e('header-cell'),\n    tryCall(headerClass, props, ''),\n    column.align === Alignment.CENTER && ns.is('align-center'),\n    column.align === Alignment.RIGHT && ns.is('align-right'),\n    sortable && ns.is('sortable'),\n  ]\n\n  const cellWrapperProps = {\n    ...tryCall(headerCellProps, props),\n    onClick: column.sortable ? onColumnSorted : undefined,\n    ariaSort: sortable ? ariaSort : undefined,\n    class: cellKls,\n    style: cellStyle,\n    ['data-key']: column.key,\n  }\n\n  // For now we don't deliver resizable column feature since it has some UX issue.\n  return (\n    <div {...cellWrapperProps} role=\"columnheader\">\n      {Cell}\n\n      {sortable && (\n        <SortIcon\n          class={[ns.e('sort-icon'), sorting && ns.is('sorting')]}\n          sortOrder={sortOrder}\n          ariaLabel={t('el.table.sortLabel', { column: column.title || '' })}\n        />\n      )}\n    </div>\n  )\n}\n\nexport default HeaderCellRenderer\nexport type HeaderCellSlotProps = HeaderCellRendererProps & { class: string }\n","import type { CSSProperties, FunctionalComponent } from 'vue'\n\ntype FooterRendererProps = {\n  class?: JSX.IntrinsicAttributes['class']\n  style: CSSProperties\n}\n\nconst Footer: FunctionalComponent<FooterRendererProps> = (props, { slots }) => {\n  return (\n    <div class={props.class} style={props.style}>\n      {slots.default?.()}\n    </div>\n  )\n}\n\nFooter.displayName = 'ElTableV2Footer'\n\nexport default Footer\n","import { renderSlot } from 'vue'\nimport ElEmpty from '@pit-element-plus/components/empty'\n\nimport type { CSSProperties, FunctionalComponent } from 'vue'\n\ntype EmptyRendererProps = {\n  class?: JSX.IntrinsicAttributes['class']\n  style?: CSSProperties\n}\n\nconst Footer: FunctionalComponent<EmptyRendererProps> = (props, { slots }) => {\n  const defaultSlot = renderSlot(slots, 'default', {}, () => [<ElEmpty />])\n  return (\n    <div class={props.class} style={props.style}>\n      {defaultSlot}\n    </div>\n  )\n}\n\nFooter.displayName = 'ElTableV2Empty'\n\nexport default Footer\n","import type { SimpleFunctionalComponent } from '../types'\n\nconst Overlay: SimpleFunctionalComponent = (props, { slots }) => {\n  return (\n    <div class={props.class} style={props.style}>\n      {slots.default?.()}\n    </div>\n  )\n}\n\nOverlay.displayName = 'ElTableV2Overlay'\n\nexport default Overlay\n","import { defineComponent, provide, unref } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { useTable } from './use-table'\nimport { TableV2InjectionKey } from './tokens'\nimport { tableV2Props } from './table'\n// renderers\nimport MainTable from './renderers/main-table'\nimport LeftTable from './renderers/left-table'\nimport RightTable from './renderers/right-table'\nimport Row from './renderers/row'\nimport Cell from './renderers/cell'\nimport Header from './renderers/header'\nimport HeaderCell from './renderers/header-cell'\nimport Footer from './renderers/footer'\nimport Empty from './renderers/empty'\nimport Overlay from './renderers/overlay'\n\nimport type { CSSProperties } from 'vue'\nimport type { TableGridRowSlotParams } from './table-grid'\nimport type { ScrollStrategy } from './composables/use-scrollbar'\nimport type {\n  TableV2HeaderRendererParams,\n  TableV2HeaderRowCellRendererParams,\n  TableV2RowCellRenderParam,\n} from './components'\nimport type { KeyType } from './types'\n\nconst COMPONENT_NAME = 'ElTableV2'\n\nconst TableV2 = defineComponent({\n  name: COMPONENT_NAME,\n  props: tableV2Props,\n  setup(props, { slots, expose }) {\n    const ns = useNamespace('table-v2')\n    const { t } = useLocale()\n\n    const {\n      columnsStyles,\n      fixedColumnsOnLeft,\n      fixedColumnsOnRight,\n      mainColumns,\n      mainTableHeight,\n      fixedTableHeight,\n      leftTableWidth,\n      rightTableWidth,\n      data,\n      depthMap,\n      expandedRowKeys,\n      hasFixedColumns,\n      mainTableRef,\n      leftTableRef,\n      rightTableRef,\n      isDynamic,\n      isResetting,\n      isScrolling,\n\n      bodyWidth,\n      emptyStyle,\n      rootStyle,\n      footerHeight,\n\n      showEmpty,\n\n      // exposes\n      scrollTo,\n      scrollToLeft,\n      scrollToTop,\n      scrollToRow,\n\n      getRowHeight,\n      onColumnSorted,\n      onRowHeightChange,\n      onRowHovered,\n      onRowExpanded,\n      onRowsRendered,\n      onScroll,\n      onVerticalScroll,\n    } = useTable(props)\n\n    expose({\n      /**\n       * @description scroll to a given position\n       * @params params {{ scrollLeft?: number, scrollTop?: number }} where to scroll to.\n       */\n      scrollTo,\n      /**\n       * @description scroll to a given position horizontally\n       * @params scrollLeft {Number} where to scroll to.\n       */\n      scrollToLeft,\n      /**\n       * @description scroll to a given position vertically\n       * @params scrollTop { Number } where to scroll to.\n       */\n      scrollToTop,\n      /**\n       * @description scroll to a given row\n       * @params row {Number} which row to scroll to\n       * @params @optional strategy {ScrollStrategy} use what strategy to scroll to\n       */\n      scrollToRow,\n    })\n\n    provide(TableV2InjectionKey, {\n      ns,\n      isResetting,\n      isScrolling,\n    })\n\n    return () => {\n      const {\n        cache,\n        cellProps,\n        estimatedRowHeight,\n        expandColumnKey,\n        fixedData,\n        headerHeight,\n        headerClass,\n        headerProps,\n        headerCellProps,\n        sortBy,\n        sortState,\n        rowHeight,\n        rowClass,\n        rowEventHandlers,\n        rowKey,\n        rowProps,\n        scrollbarAlwaysOn,\n        indentSize,\n        iconSize,\n        useIsScrolling,\n        vScrollbarSize,\n        width,\n      } = props\n\n      const _data = unref(data)\n\n      const mainTableProps = {\n        cache,\n        class: ns.e('main'),\n        columns: unref(mainColumns),\n        data: _data,\n        fixedData,\n        estimatedRowHeight,\n        bodyWidth: unref(bodyWidth),\n        headerHeight,\n        headerWidth: unref(bodyWidth),\n        height: unref(mainTableHeight),\n        mainTableRef,\n        rowKey,\n        rowHeight,\n        scrollbarAlwaysOn,\n        scrollbarStartGap: 2,\n        scrollbarEndGap: vScrollbarSize,\n        useIsScrolling,\n        width,\n        getRowHeight,\n        onRowsRendered,\n        onScroll,\n      }\n\n      const leftColumnsWidth = unref(leftTableWidth)\n      const _fixedTableHeight = unref(fixedTableHeight)\n\n      const leftTableProps = {\n        cache,\n        class: ns.e('left'),\n        columns: unref(fixedColumnsOnLeft),\n        data: _data,\n        fixedData,\n        estimatedRowHeight,\n        leftTableRef,\n        rowHeight,\n        bodyWidth: leftColumnsWidth,\n        headerWidth: leftColumnsWidth,\n        headerHeight,\n        height: _fixedTableHeight,\n        rowKey,\n        scrollbarAlwaysOn,\n        scrollbarStartGap: 2,\n        scrollbarEndGap: vScrollbarSize,\n        useIsScrolling,\n        width: leftColumnsWidth,\n        getRowHeight,\n        onScroll: onVerticalScroll,\n      }\n\n      const rightColumnsWidth = unref(rightTableWidth)\n\n      const rightTableProps = {\n        cache,\n        class: ns.e('right'),\n        columns: unref(fixedColumnsOnRight),\n        data: _data,\n        fixedData,\n        estimatedRowHeight,\n        rightTableRef,\n        rowHeight,\n        bodyWidth: rightColumnsWidth,\n        headerWidth: rightColumnsWidth,\n        headerHeight,\n        height: _fixedTableHeight,\n        rowKey,\n        scrollbarAlwaysOn,\n        scrollbarStartGap: 2,\n        scrollbarEndGap: vScrollbarSize,\n        width: rightColumnsWidth,\n        style: `${ns.cssVarName(\n          'table-scrollbar-size'\n        )}: ${vScrollbarSize}px` as unknown as CSSProperties,\n        useIsScrolling,\n        getRowHeight,\n        onScroll: onVerticalScroll,\n      }\n      const _columnsStyles = unref(columnsStyles)\n\n      const tableRowProps = {\n        ns,\n        depthMap: unref(depthMap),\n        columnsStyles: _columnsStyles,\n        expandColumnKey,\n        expandedRowKeys: unref(expandedRowKeys),\n        estimatedRowHeight,\n        hasFixedColumns: unref(hasFixedColumns),\n        rowProps,\n        rowClass,\n        rowKey,\n        rowEventHandlers,\n        onRowHovered,\n        onRowExpanded,\n        onRowHeightChange,\n      }\n\n      const tableCellProps = {\n        cellProps,\n        expandColumnKey,\n        indentSize,\n        iconSize,\n        rowKey,\n        expandedRowKeys: unref(expandedRowKeys),\n        ns,\n        t,\n      }\n\n      const tableHeaderProps = {\n        ns,\n        headerClass,\n        headerProps,\n        columnsStyles: _columnsStyles,\n      }\n\n      const tableHeaderCellProps = {\n        ns,\n        t,\n\n        sortBy,\n        sortState,\n        headerCellProps,\n        onColumnSorted,\n      }\n\n      const tableSlots = {\n        row: (props: TableGridRowSlotParams) => (\n          <Row {...props} {...tableRowProps}>\n            {{\n              row: slots.row,\n              cell: (props: TableV2RowCellRenderParam) =>\n                slots.cell ? (\n                  <Cell\n                    {...props}\n                    {...tableCellProps}\n                    style={_columnsStyles[props.column.key as KeyType]}\n                  >\n                    {slots.cell(props)}\n                  </Cell>\n                ) : (\n                  <Cell\n                    {...props}\n                    {...tableCellProps}\n                    style={_columnsStyles[props.column.key as KeyType]}\n                  />\n                ),\n            }}\n          </Row>\n        ),\n        header: (props: TableV2HeaderRendererParams) => (\n          <Header {...props} {...tableHeaderProps}>\n            {{\n              header: slots.header,\n              cell: (props: TableV2HeaderRowCellRendererParams) =>\n                slots['header-cell'] ? (\n                  <HeaderCell\n                    {...props}\n                    {...tableHeaderCellProps}\n                    style={_columnsStyles[props.column.key as KeyType]}\n                  >\n                    {slots['header-cell'](props)}\n                  </HeaderCell>\n                ) : (\n                  <HeaderCell\n                    {...props}\n                    {...tableHeaderCellProps}\n                    style={_columnsStyles[props.column.key as KeyType]}\n                  />\n                ),\n            }}\n          </Header>\n        ),\n      }\n\n      const rootKls = [\n        props.class,\n        ns.b(),\n        ns.e('root'),\n        ns.is('dynamic', unref(isDynamic)),\n      ]\n\n      const footerProps = {\n        class: ns.e('footer'),\n        style: unref(footerHeight),\n      }\n\n      return (\n        <div class={rootKls} style={unref(rootStyle)}>\n          <MainTable {...mainTableProps}>{tableSlots}</MainTable>\n          <LeftTable {...leftTableProps}>{tableSlots}</LeftTable>\n          <RightTable {...rightTableProps}>{tableSlots}</RightTable>\n          {slots.footer && (\n            <Footer {...footerProps}>{{ default: slots.footer }}</Footer>\n          )}\n          {unref(showEmpty) && (\n            <Empty class={ns.e('empty')} style={unref(emptyStyle)}>\n              {{ default: slots.empty }}\n            </Empty>\n          )}\n          {slots.overlay && (\n            <Overlay class={ns.e('overlay')}>\n              {{ default: slots.overlay }}\n            </Overlay>\n          )}\n        </div>\n      )\n    }\n  },\n})\n\nexport default TableV2\n\nexport type TableV2Instance = InstanceType<typeof TableV2> & {\n  /**\n   * @description scroll to a given position\n   * @params params {{ scrollLeft?: number, scrollTop?: number }} where to scroll to.\n   */\n  scrollTo: (param: { scrollLeft?: number; scrollTop?: number }) => void\n  /**\n   * @description scroll to a given position horizontally\n   * @params scrollLeft {Number} where to scroll to.\n   */\n  scrollToLeft: (scrollLeft: number) => void\n  /**\n   * @description scroll to a given position vertically\n   * @params scrollTop { Number } where to scroll to.\n   */\n  scrollToTop: (scrollTop: number) => void\n  /**\n   * @description scroll to a given row\n   * @params row {Number} which row to scroll to\n   * @params strategy {ScrollStrategy} use what strategy to scroll to\n   */\n  scrollToRow(row: number, strategy?: ScrollStrategy): void\n}\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\ntype AutoResizeHandler = (event: { height: number; width: number }) => void\n\nexport const autoResizerProps = buildProps({\n  disableWidth: Boolean,\n  disableHeight: Boolean,\n  onResize: {\n    type: definePropType<AutoResizeHandler>(Function),\n  },\n} as const)\n\nexport type AutoResizerProps = ExtractPropTypes<typeof autoResizerProps>\nexport type AutoResizerPropsPublic = ExtractPublicPropTypes<\n  typeof autoResizerProps\n>\n","import { defineComponent } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { autoResizerProps } from '../auto-resizer'\nimport { useAutoResize } from '../composables'\n\nconst AutoResizer = defineComponent({\n  name: 'ElAutoResizer',\n  props: autoResizerProps,\n  setup(props, { slots }) {\n    const ns = useNamespace('auto-resizer')\n    const { height, width, sizer } = useAutoResize(props)\n    const style = {\n      width: '100%',\n      height: '100%',\n    }\n\n    return () => {\n      return (\n        <div ref={sizer} class={ns.b()} style={style}>\n          {slots.default?.({\n            height: height.value,\n            width: width.value,\n          })}\n        </div>\n      )\n    }\n  },\n})\n\nexport default AutoResizer\n","import { withInstall } from '@pit-element-plus/utils'\nimport TableV2 from './src/table-v2'\nimport AutoResizer from './src/components/auto-resizer'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport {\n  Alignment as TableV2Alignment,\n  FixedDir as TableV2FixedDir,\n  SortOrder as TableV2SortOrder,\n} from './src/constants'\nexport { default as TableV2 } from './src/table-v2'\nexport * from './src/auto-resizer'\nexport { placeholderSign as TableV2Placeholder } from './src/private'\n\nexport const ElTableV2: SFCWithInstall<typeof TableV2> = withInstall(TableV2)\nexport const ElAutoResizer: SFCWithInstall<typeof AutoResizer> =\n  withInstall(AutoResizer)\n\nexport type {\n  Column,\n  Columns,\n  SortBy,\n  SortState,\n  TableV2CustomizedHeaderSlotParam,\n} from './src/types'\nexport type { TableV2Instance } from './src/table-v2'\nexport * from './src/table'\nexport * from './src/row'\n\nexport type { HeaderCellSlotProps } from './src/renderers/header-cell'\n","import type {\n  ComputedRef,\n  InjectionKey,\n  Ref,\n  Slots,\n  UnwrapRef,\n  VNode,\n} from 'vue'\nimport type { TabsProps } from './tabs'\nimport type { TabPaneProps } from './tab-pane'\nimport type { TabNavInstance } from './tab-nav'\n\nexport type TabPaneName = string | number\n\nexport type TabsPaneContext = UnwrapRef<{\n  uid: number\n  getVnode: () => VNode\n  slots: Slots\n  props: TabPaneProps\n  paneName: ComputedRef<TabPaneName | undefined>\n  active: ComputedRef<boolean>\n  index: Ref<string | undefined>\n  isClosable: ComputedRef<boolean>\n  isFocusInsidePane: () => boolean | undefined\n}>\n\nexport interface TabsRootContext {\n  props: TabsProps\n  currentName: Ref<TabPaneName>\n  registerPane: (pane: TabsPaneContext) => void\n  unregisterPane: (pane: TabsPaneContext) => void\n  nav$: Ref<TabNavInstance | undefined>\n}\n\nexport const tabsRootContextKey: InjectionKey<TabsRootContext> =\n  Symbol('tabsRootContextKey')\n","import { buildProps, definePropType, mutable } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { TabPaneName, TabsPaneContext } from './constants'\nimport type TabBar from './tab-bar.vue'\n\n/**\n * @deprecated Removed after 3.0.0, Use `TabBarProps` instead.\n */\nexport const tabBarProps = buildProps({\n  tabs: {\n    type: definePropType<TabsPaneContext[]>(Array),\n    default: () => mutable([] as const),\n  },\n  tabRefs: {\n    type: definePropType<{ [key: TabPaneName]: HTMLDivElement }>(Object),\n    default: () => mutable({} as const),\n  },\n} as const)\n\nexport type TabBarProps = {\n  tabs?: TabsPaneContext[]\n  tabRefs?: { [key: TabPaneName]: HTMLDivElement }\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TabBarProps` instead.\n */\nexport type TabBarPropsPublic = ExtractPublicPropTypes<typeof tabBarProps>\nexport type TabBarInstance = InstanceType<typeof TabBar> & unknown\n","<template>\n  <div\n    v-if=\"renderActiveBar\"\n    ref=\"barRef\"\n    :class=\"[ns.e('active-bar'), ns.is(rootTabs!.props.tabPosition)]\"\n    :style=\"barStyle\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { capitalize, isUndefined, throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\n\nimport type { TabBarProps } from './tab-bar'\nimport type { CSSProperties } from 'vue'\n\nconst COMPONENT_NAME = 'ElTabBar'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<TabBarProps>(), {\n  tabs: () => [],\n  tabRefs: () => ({}),\n})\n\nconst rootTabs = inject(tabsRootContextKey)\nif (!rootTabs) throwError(COMPONENT_NAME, '<el-tabs><el-tab-bar /></el-tabs>')\n\nconst ns = useNamespace('tabs')\n\nconst barRef = ref<HTMLDivElement>()\nconst barStyle = ref<CSSProperties>()\n/**\n * when defaultValue is not set, the bar is always shown.\n *\n * when defaultValue is set, the bar will be hidden until style is calculated\n * to avoid the bar showing in the wrong position on initial render.\n */\nconst renderActiveBar = computed(\n  () =>\n    isUndefined(rootTabs.props.defaultValue) ||\n    Boolean(barStyle.value?.transform)\n)\n\nconst getBarStyle = (): CSSProperties => {\n  let offset = 0\n  let tabSize = 0\n\n  const sizeName = ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n    ? 'width'\n    : 'height'\n  const sizeDir = sizeName === 'width' ? 'x' : 'y'\n  const position = sizeDir === 'x' ? 'left' : 'top'\n\n  props.tabs.every((tab) => {\n    if (isUndefined(tab.paneName)) return false\n    const $el = props.tabRefs[tab.paneName]\n    if (!$el) return false\n\n    if (!tab.active) {\n      return true\n    }\n\n    offset = $el[`offset${capitalize(position)}`]\n    tabSize = $el[`client${capitalize(sizeName)}`]\n\n    const tabStyles = window.getComputedStyle($el)\n\n    if (sizeName === 'width') {\n      tabSize -=\n        Number.parseFloat(tabStyles.paddingLeft) +\n        Number.parseFloat(tabStyles.paddingRight)\n      offset += Number.parseFloat(tabStyles.paddingLeft)\n    }\n    return false\n  })\n\n  return {\n    [sizeName]: `${tabSize}px`,\n    transform: `translate${capitalize(sizeDir)}(${offset}px)`,\n  }\n}\n\nconst update = () => (barStyle.value = getBarStyle())\n\nconst tabObservers = [] as ReturnType<typeof useResizeObserver>[]\nconst observerTabs = () => {\n  tabObservers.forEach((observer) => observer.stop())\n  tabObservers.length = 0\n\n  Object.values(props.tabRefs).forEach((tab) => {\n    tabObservers.push(useResizeObserver(tab, update))\n  })\n}\n\nwatch(\n  () => props.tabs,\n  async () => {\n    await nextTick()\n    update()\n\n    observerTabs()\n  },\n  { immediate: true }\n)\nconst barObserver = useResizeObserver(barRef, () => update())\n\nonBeforeUnmount(() => {\n  tabObservers.forEach((observer) => observer.stop())\n  tabObservers.length = 0\n  barObserver.stop()\n})\n\ndefineExpose({\n  /** @description tab root html element */\n  ref: barRef,\n  /** @description method to manually update tab bar style */\n  update,\n})\n</script>\n","<template>\n  <div\n    v-if=\"renderActiveBar\"\n    ref=\"barRef\"\n    :class=\"[ns.e('active-bar'), ns.is(rootTabs!.props.tabPosition)]\"\n    :style=\"barStyle\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { capitalize, isUndefined, throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\n\nimport type { TabBarProps } from './tab-bar'\nimport type { CSSProperties } from 'vue'\n\nconst COMPONENT_NAME = 'ElTabBar'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<TabBarProps>(), {\n  tabs: () => [],\n  tabRefs: () => ({}),\n})\n\nconst rootTabs = inject(tabsRootContextKey)\nif (!rootTabs) throwError(COMPONENT_NAME, '<el-tabs><el-tab-bar /></el-tabs>')\n\nconst ns = useNamespace('tabs')\n\nconst barRef = ref<HTMLDivElement>()\nconst barStyle = ref<CSSProperties>()\n/**\n * when defaultValue is not set, the bar is always shown.\n *\n * when defaultValue is set, the bar will be hidden until style is calculated\n * to avoid the bar showing in the wrong position on initial render.\n */\nconst renderActiveBar = computed(\n  () =>\n    isUndefined(rootTabs.props.defaultValue) ||\n    Boolean(barStyle.value?.transform)\n)\n\nconst getBarStyle = (): CSSProperties => {\n  let offset = 0\n  let tabSize = 0\n\n  const sizeName = ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n    ? 'width'\n    : 'height'\n  const sizeDir = sizeName === 'width' ? 'x' : 'y'\n  const position = sizeDir === 'x' ? 'left' : 'top'\n\n  props.tabs.every((tab) => {\n    if (isUndefined(tab.paneName)) return false\n    const $el = props.tabRefs[tab.paneName]\n    if (!$el) return false\n\n    if (!tab.active) {\n      return true\n    }\n\n    offset = $el[`offset${capitalize(position)}`]\n    tabSize = $el[`client${capitalize(sizeName)}`]\n\n    const tabStyles = window.getComputedStyle($el)\n\n    if (sizeName === 'width') {\n      tabSize -=\n        Number.parseFloat(tabStyles.paddingLeft) +\n        Number.parseFloat(tabStyles.paddingRight)\n      offset += Number.parseFloat(tabStyles.paddingLeft)\n    }\n    return false\n  })\n\n  return {\n    [sizeName]: `${tabSize}px`,\n    transform: `translate${capitalize(sizeDir)}(${offset}px)`,\n  }\n}\n\nconst update = () => (barStyle.value = getBarStyle())\n\nconst tabObservers = [] as ReturnType<typeof useResizeObserver>[]\nconst observerTabs = () => {\n  tabObservers.forEach((observer) => observer.stop())\n  tabObservers.length = 0\n\n  Object.values(props.tabRefs).forEach((tab) => {\n    tabObservers.push(useResizeObserver(tab, update))\n  })\n}\n\nwatch(\n  () => props.tabs,\n  async () => {\n    await nextTick()\n    update()\n\n    observerTabs()\n  },\n  { immediate: true }\n)\nconst barObserver = useResizeObserver(barRef, () => update())\n\nonBeforeUnmount(() => {\n  tabObservers.forEach((observer) => observer.stop())\n  tabObservers.length = 0\n  barObserver.stop()\n})\n\ndefineExpose({\n  /** @description tab root html element */\n  ref: barRef,\n  /** @description method to manually update tab bar style */\n  update,\n})\n</script>\n","<template>\n  <div\n    v-if=\"renderActiveBar\"\n    ref=\"barRef\"\n    :class=\"[ns.e('active-bar'), ns.is(rootTabs!.props.tabPosition)]\"\n    :style=\"barStyle\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { capitalize, isUndefined, throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\n\nimport type { TabBarProps } from './tab-bar'\nimport type { CSSProperties } from 'vue'\n\nconst COMPONENT_NAME = 'ElTabBar'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<TabBarProps>(), {\n  tabs: () => [],\n  tabRefs: () => ({}),\n})\n\nconst rootTabs = inject(tabsRootContextKey)\nif (!rootTabs) throwError(COMPONENT_NAME, '<el-tabs><el-tab-bar /></el-tabs>')\n\nconst ns = useNamespace('tabs')\n\nconst barRef = ref<HTMLDivElement>()\nconst barStyle = ref<CSSProperties>()\n/**\n * when defaultValue is not set, the bar is always shown.\n *\n * when defaultValue is set, the bar will be hidden until style is calculated\n * to avoid the bar showing in the wrong position on initial render.\n */\nconst renderActiveBar = computed(\n  () =>\n    isUndefined(rootTabs.props.defaultValue) ||\n    Boolean(barStyle.value?.transform)\n)\n\nconst getBarStyle = (): CSSProperties => {\n  let offset = 0\n  let tabSize = 0\n\n  const sizeName = ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n    ? 'width'\n    : 'height'\n  const sizeDir = sizeName === 'width' ? 'x' : 'y'\n  const position = sizeDir === 'x' ? 'left' : 'top'\n\n  props.tabs.every((tab) => {\n    if (isUndefined(tab.paneName)) return false\n    const $el = props.tabRefs[tab.paneName]\n    if (!$el) return false\n\n    if (!tab.active) {\n      return true\n    }\n\n    offset = $el[`offset${capitalize(position)}`]\n    tabSize = $el[`client${capitalize(sizeName)}`]\n\n    const tabStyles = window.getComputedStyle($el)\n\n    if (sizeName === 'width') {\n      tabSize -=\n        Number.parseFloat(tabStyles.paddingLeft) +\n        Number.parseFloat(tabStyles.paddingRight)\n      offset += Number.parseFloat(tabStyles.paddingLeft)\n    }\n    return false\n  })\n\n  return {\n    [sizeName]: `${tabSize}px`,\n    transform: `translate${capitalize(sizeDir)}(${offset}px)`,\n  }\n}\n\nconst update = () => (barStyle.value = getBarStyle())\n\nconst tabObservers = [] as ReturnType<typeof useResizeObserver>[]\nconst observerTabs = () => {\n  tabObservers.forEach((observer) => observer.stop())\n  tabObservers.length = 0\n\n  Object.values(props.tabRefs).forEach((tab) => {\n    tabObservers.push(useResizeObserver(tab, update))\n  })\n}\n\nwatch(\n  () => props.tabs,\n  async () => {\n    await nextTick()\n    update()\n\n    observerTabs()\n  },\n  { immediate: true }\n)\nconst barObserver = useResizeObserver(barRef, () => update())\n\nonBeforeUnmount(() => {\n  tabObservers.forEach((observer) => observer.stop())\n  tabObservers.length = 0\n  barObserver.stop()\n})\n\ndefineExpose({\n  /** @description tab root html element */\n  ref: barRef,\n  /** @description method to manually update tab bar style */\n  update,\n})\n</script>\n","import {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  onMounted,\n  onUpdated,\n  ref,\n  shallowRef,\n  triggerRef,\n  watch,\n} from 'vue'\nimport {\n  useDocumentVisibility,\n  useElementSize,\n  useResizeObserver,\n  useWindowFocus,\n} from '@vueuse/core'\nimport {\n  buildProps,\n  capitalize,\n  definePropType,\n  getEventCode,\n  mutable,\n  rAF,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ArrowLeft, ArrowRight, Close } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport useWheel from '@pit-element-plus/components/virtual-list/src/hooks/use-wheel'\nimport { clamp } from 'lodash-unified'\nimport TabBar from './tab-bar.vue'\nimport { tabsRootContextKey } from './constants'\n\nimport type {\n  CSSProperties,\n  ComponentPublicInstance,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n} from 'vue'\nimport type { TabBarInstance } from './tab-bar'\nimport type { TabPaneName, TabsPaneContext } from './constants'\n\ninterface Scrollable {\n  next?: boolean\n  prev?: number\n}\n\nexport const tabNavProps = buildProps({\n  panes: {\n    type: definePropType<TabsPaneContext[]>(Array),\n    default: () => mutable([] as const),\n  },\n  currentName: {\n    type: [String, Number],\n    default: '',\n  },\n  editable: Boolean,\n  type: {\n    type: String,\n    values: ['card', 'border-card', ''],\n    default: '',\n  },\n  stretch: Boolean,\n  /**\n   * @description tab-nav tabindex\n   */\n  tabindex: {\n    type: [String, Number],\n    default: undefined,\n  },\n} as const)\n\nexport const tabNavEmits = {\n  tabClick: (tab: TabsPaneContext, tabName: TabPaneName, ev: Event) =>\n    ev instanceof Event,\n  tabRemove: (tab: TabsPaneContext, ev: Event) => ev instanceof Event,\n}\n\nexport type TabNavProps = ExtractPropTypes<typeof tabNavProps>\nexport type TabNavPropsPublic = ExtractPublicPropTypes<typeof tabNavProps>\nexport type TabNavEmits = typeof tabNavEmits\n\nconst COMPONENT_NAME = 'ElTabNav'\nconst TabNav = defineComponent({\n  name: COMPONENT_NAME,\n  props: tabNavProps,\n  emits: tabNavEmits,\n  setup(props, { expose, emit }) {\n    const rootTabs = inject(tabsRootContextKey)\n    if (!rootTabs) throwError(COMPONENT_NAME, `<el-tabs><tab-nav /></el-tabs>`)\n\n    const ns = useNamespace('tabs')\n    const visibility = useDocumentVisibility()\n    const focused = useWindowFocus()\n\n    const navScroll$ = ref<HTMLDivElement>()\n    const nav$ = ref<HTMLDivElement>()\n    const el$ = ref<HTMLDivElement>()\n    const tabRefsMap = ref<{ [key: TabPaneName]: HTMLDivElement }>({})\n\n    const tabBarRef = ref<TabBarInstance>()\n\n    const scrollable = ref<false | Scrollable>(false)\n    const navOffset = ref(0)\n    const isFocus = ref(false)\n    const focusable = ref(true)\n    const isWheelScrolling = ref(false)\n    const tracker = shallowRef()\n\n    const isHorizontal = computed(() =>\n      ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n    )\n\n    const sizeName = computed(() => (isHorizontal.value ? 'width' : 'height'))\n    const navStyle = computed<CSSProperties>(() => {\n      const dir = sizeName.value === 'width' ? 'X' : 'Y'\n      return {\n        transition: isWheelScrolling.value ? 'none' : undefined,\n        transform: `translate${dir}(-${navOffset.value}px)`,\n      }\n    })\n\n    const { width: navContainerWidth, height: navContainerHeight } =\n      useElementSize(navScroll$)\n    const { width: navWidth, height: navHeight } = useElementSize(\n      nav$,\n      { width: 0, height: 0 },\n      { box: 'border-box' }\n    )\n\n    const navContainerSize = computed(() =>\n      isHorizontal.value ? navContainerWidth.value : navContainerHeight.value\n    )\n    const navSize = computed(() =>\n      isHorizontal.value ? navWidth.value : navHeight.value\n    )\n\n    const { onWheel } = useWheel(\n      {\n        atStartEdge: computed(() => navOffset.value <= 0),\n        atEndEdge: computed(\n          () => navSize.value - navOffset.value <= navContainerSize.value\n        ),\n        layout: computed(() =>\n          isHorizontal.value ? 'horizontal' : 'vertical'\n        ),\n      },\n      (offset) => {\n        navOffset.value = clamp(\n          navOffset.value + offset,\n          0,\n          navSize.value - navContainerSize.value\n        )\n      }\n    )\n\n    const handleWheel = (event: WheelEvent) => {\n      isWheelScrolling.value = true\n      onWheel(event)\n      rAF(() => {\n        isWheelScrolling.value = false\n      })\n    }\n\n    const scrollPrev = () => {\n      if (!navScroll$.value) return\n\n      const containerSize =\n        navScroll$.value[`offset${capitalize(sizeName.value)}`]\n      const currentOffset = navOffset.value\n\n      if (!currentOffset) return\n\n      const newOffset =\n        currentOffset > containerSize ? currentOffset - containerSize : 0\n\n      navOffset.value = newOffset\n    }\n\n    const scrollNext = () => {\n      if (!navScroll$.value || !nav$.value) return\n\n      const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n      const containerSize =\n        navScroll$.value[`offset${capitalize(sizeName.value)}`]\n      const currentOffset = navOffset.value\n\n      if (navSize - currentOffset <= containerSize) return\n\n      const newOffset =\n        navSize - currentOffset > containerSize * 2\n          ? currentOffset + containerSize\n          : navSize - containerSize\n\n      navOffset.value = newOffset\n    }\n\n    const scrollToActiveTab = async () => {\n      const nav = nav$.value\n      if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return\n\n      await nextTick()\n\n      const activeTab = tabRefsMap.value[props.currentName]\n      if (!activeTab) return\n\n      const navScroll = navScroll$.value\n\n      const activeTabBounding = activeTab.getBoundingClientRect()\n      const navScrollBounding = navScroll.getBoundingClientRect()\n      const maxOffset = isHorizontal.value\n        ? nav.offsetWidth - navScrollBounding.width\n        : nav.offsetHeight - navScrollBounding.height\n      const currentOffset = navOffset.value\n      let newOffset = currentOffset\n\n      if (isHorizontal.value) {\n        if (activeTabBounding.left < navScrollBounding.left) {\n          newOffset =\n            currentOffset - (navScrollBounding.left - activeTabBounding.left)\n        }\n        if (activeTabBounding.right > navScrollBounding.right) {\n          newOffset =\n            currentOffset + activeTabBounding.right - navScrollBounding.right\n        }\n      } else {\n        if (activeTabBounding.top < navScrollBounding.top) {\n          newOffset =\n            currentOffset - (navScrollBounding.top - activeTabBounding.top)\n        }\n        if (activeTabBounding.bottom > navScrollBounding.bottom) {\n          newOffset =\n            currentOffset +\n            (activeTabBounding.bottom - navScrollBounding.bottom)\n        }\n      }\n      newOffset = Math.max(newOffset, 0)\n      navOffset.value = Math.min(newOffset, maxOffset)\n    }\n\n    const update = () => {\n      if (!nav$.value || !navScroll$.value) return\n\n      props.stretch && tabBarRef.value?.update()\n\n      const navSize = nav$.value.getBoundingClientRect()[sizeName.value]\n      const containerSize =\n        navScroll$.value.getBoundingClientRect()[sizeName.value]\n      const currentOffset = navOffset.value\n\n      if (containerSize < navSize) {\n        scrollable.value = scrollable.value || {}\n        scrollable.value.prev = currentOffset\n        scrollable.value.next = currentOffset + containerSize < navSize\n        if (navSize - currentOffset < containerSize) {\n          navOffset.value = navSize - containerSize\n        }\n      } else {\n        scrollable.value = false\n        if (currentOffset > 0) {\n          navOffset.value = 0\n        }\n      }\n    }\n\n    const changeTab = (event: KeyboardEvent) => {\n      const code = getEventCode(event)\n      let step = 0\n\n      switch (code) {\n        case EVENT_CODE.left:\n        case EVENT_CODE.up:\n          step = -1\n          break\n        case EVENT_CODE.right:\n        case EVENT_CODE.down:\n          step = 1\n          break\n        default:\n          return\n      }\n\n      const tabList = Array.from(\n        (\n          event.currentTarget as HTMLDivElement\n        ).querySelectorAll<HTMLDivElement>('[role=tab]:not(.is-disabled)')\n      )\n      const currentIndex = tabList.indexOf(event.target as HTMLDivElement)\n      let nextIndex = currentIndex + step\n\n      if (nextIndex < 0) {\n        nextIndex = tabList.length - 1\n      } else if (nextIndex >= tabList.length) {\n        nextIndex = 0\n      }\n\n      tabList[nextIndex].focus({ preventScroll: true }) // 改变焦点元素\n      tabList[nextIndex].click() // 选中下一个tab\n      setFocus()\n    }\n\n    const setFocus = () => {\n      if (focusable.value) isFocus.value = true\n    }\n    const removeFocus = () => (isFocus.value = false)\n\n    const setRefs = (\n      el: Element | ComponentPublicInstance | null,\n      key: TabPaneName\n    ) => {\n      tabRefsMap.value[key] = el as HTMLDivElement\n    }\n\n    const focusActiveTab = async () => {\n      await nextTick()\n\n      const activeTab = tabRefsMap.value[props.currentName]\n      activeTab?.focus({ preventScroll: true })\n    }\n\n    watch(visibility, (visibility) => {\n      if (visibility === 'hidden') {\n        focusable.value = false\n      } else if (visibility === 'visible') {\n        setTimeout(() => (focusable.value = true), 50)\n      }\n    })\n    watch(focused, (focused) => {\n      if (focused) {\n        setTimeout(() => (focusable.value = true), 50)\n      } else {\n        focusable.value = false\n      }\n    })\n\n    useResizeObserver(el$, () => {\n      rAF(update)\n    })\n\n    onMounted(() => setTimeout(() => scrollToActiveTab(), 0))\n    onUpdated(() => update())\n\n    expose({\n      scrollToActiveTab,\n      removeFocus,\n      focusActiveTab,\n      tabListRef: nav$,\n      tabBarRef,\n      scheduleRender: () => triggerRef(tracker),\n    })\n\n    return () => {\n      const scrollBtn = scrollable.value\n        ? [\n            <span\n              class={[\n                ns.e('nav-prev'),\n                ns.is('disabled', !scrollable.value.prev),\n              ]}\n              onClick={scrollPrev}\n            >\n              <ElIcon>\n                <ArrowLeft />\n              </ElIcon>\n            </span>,\n            <span\n              class={[\n                ns.e('nav-next'),\n                ns.is('disabled', !scrollable.value.next),\n              ]}\n              onClick={scrollNext}\n            >\n              <ElIcon>\n                <ArrowRight />\n              </ElIcon>\n            </span>,\n          ]\n        : null\n\n      const tabs = props.panes.map((pane, index) => {\n        const uid = pane.uid\n        const disabled = pane.props.disabled\n        const tabName = pane.props.name ?? pane.index ?? `${index}`\n        const closable =\n          !disabled &&\n          (pane.isClosable || (pane.props.closable !== false && props.editable))\n        pane.index = `${index}`\n\n        const btnClose = closable ? (\n          <ElIcon\n            class=\"is-icon-close\"\n            // `onClick` not exist when generate dts\n\n            // @ts-ignore\n            onClick={(ev: MouseEvent) => emit('tabRemove', pane, ev)}\n          >\n            <Close />\n          </ElIcon>\n        ) : null\n\n        const tabLabelContent = pane.slots.label?.() || pane.props.label\n        const tabindex =\n          !disabled && pane.active\n            ? (props.tabindex ?? rootTabs.props.tabindex)\n            : -1\n\n        return (\n          <div\n            ref={(el) => setRefs(el, tabName)}\n            class={[\n              ns.e('item'),\n              ns.is(rootTabs.props.tabPosition),\n              ns.is('active', pane.active),\n              ns.is('disabled', disabled),\n              ns.is('closable', closable),\n              ns.is('focus', isFocus.value),\n            ]}\n            id={`tab-${tabName}`}\n            key={`tab-${uid}`}\n            aria-controls={`pane-${tabName}`}\n            role=\"tab\"\n            aria-selected={pane.active}\n            tabindex={tabindex}\n            onFocus={() => setFocus()}\n            onBlur={() => removeFocus()}\n            onClick={(ev: MouseEvent) => {\n              removeFocus()\n              emit('tabClick', pane, tabName, ev)\n            }}\n            onKeydown={(ev: KeyboardEvent) => {\n              const code = getEventCode(ev)\n              if (\n                closable &&\n                (code === EVENT_CODE.delete || code === EVENT_CODE.backspace)\n              ) {\n                emit('tabRemove', pane, ev)\n              }\n            }}\n          >\n            {...[tabLabelContent, btnClose]}\n          </div>\n        )\n      })\n\n      // By tracking the value property, we can schedule a job to re-render `TabNav` when needed.\n      // Unlike `instance.update`, the scheduler ensures the job is queued only once even if we trigger it multiple times.\n      tracker.value\n\n      return (\n        <div\n          ref={el$}\n          class={[\n            ns.e('nav-wrap'),\n            ns.is('scrollable', !!scrollable.value),\n            ns.is(rootTabs.props.tabPosition),\n          ]}\n        >\n          {scrollBtn}\n          <div class={ns.e('nav-scroll')} ref={navScroll$}>\n            {props.panes.length > 0 ? (\n              <div\n                class={[\n                  ns.e('nav'),\n                  ns.is(rootTabs.props.tabPosition),\n                  ns.is(\n                    'stretch',\n                    props.stretch &&\n                      ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n                  ),\n                ]}\n                ref={nav$}\n                style={navStyle.value}\n                role=\"tablist\"\n                onKeydown={changeTab}\n                onWheel={handleWheel}\n              >\n                {...[\n                  !props.type ? (\n                    <TabBar\n                      ref={tabBarRef}\n                      tabs={[...props.panes]}\n                      tabRefs={tabRefsMap.value}\n                    />\n                  ) : null,\n                  tabs,\n                ]}\n              </div>\n            ) : null}\n          </div>\n        </div>\n      )\n    }\n  },\n})\n\nexport type TabNavInstance = InstanceType<typeof TabNav> & {\n  scrollToActiveTab: () => Promise<void>\n  removeFocus: () => void\n  focusActiveTab: () => void\n  scheduleRender: () => void\n  tabListRef: HTMLDivElement | undefined\n  tabBarRef: TabBarInstance | undefined\n}\n\nexport default TabNav\n","import {\n  computed,\n  createVNode,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  provide,\n  ref,\n  renderSlot,\n  watch,\n} from 'vue'\nimport { omit } from 'lodash-unified'\nimport {\n  buildProps,\n  definePropType,\n  getEventCode,\n  isNumber,\n  isString,\n  isUndefined,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { Plus } from 'pit-element-icons'\nimport { useNamespace, useOrderedChildren } from '@pit-element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\nimport TabNav from './tab-nav'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes, VNode } from 'vue'\nimport type { Awaitable } from '@pit-element-plus/utils'\nimport type { TabNavInstance } from './tab-nav'\nimport type { TabPaneName, TabsPaneContext } from './constants'\n\nexport const tabsProps = buildProps({\n  /**\n   * @description type of Tab\n   */\n  type: {\n    type: String,\n    values: ['card', 'border-card', ''],\n    default: '',\n  },\n  /**\n   * @description whether Tab is closable\n   */\n  closable: Boolean,\n  /**\n   * @description whether Tab is addable\n   */\n  addable: Boolean,\n  /**\n   * @description binding value, name of the selected tab\n   */\n  modelValue: {\n    type: [String, Number],\n  },\n  /**\n   * @description initial value when `model-value` is not set\n   */\n  defaultValue: {\n    type: [String, Number],\n  },\n  /**\n   * @description whether Tab is addable and closable\n   */\n  editable: Boolean,\n  /**\n   * @description position of tabs\n   */\n  tabPosition: {\n    type: String,\n    values: ['top', 'right', 'bottom', 'left'],\n    default: 'top',\n  },\n  /**\n   * @description hook function before switching tab. If `false` is returned or a `Promise` is returned and then is rejected, switching will be prevented\n   */\n  beforeLeave: {\n    type: definePropType<\n      (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>\n    >(Function),\n    default: () => true,\n  },\n  /**\n   * @description whether width of tab automatically fits its container\n   */\n  stretch: Boolean,\n  /**\n   * @description tabs tabindex\n   */\n  tabindex: {\n    type: [String, Number],\n    default: 0,\n  },\n} as const)\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>\nexport type TabsPropsPublic = ExtractPublicPropTypes<typeof tabsProps>\n\nconst isPaneName = (value: unknown): value is string | number =>\n  isString(value) || isNumber(value)\n\nexport const tabsEmits = {\n  [UPDATE_MODEL_EVENT]: (name: TabPaneName) => isPaneName(name),\n  tabClick: (pane: TabsPaneContext, ev: Event) => ev instanceof Event,\n  tabChange: (name: TabPaneName) => isPaneName(name),\n  edit: (paneName: TabPaneName | undefined, action: 'remove' | 'add') =>\n    ['remove', 'add'].includes(action),\n  tabRemove: (name: TabPaneName) => isPaneName(name),\n  tabAdd: () => true,\n}\nexport type TabsEmits = typeof tabsEmits\n\nexport type TabsPanes = Record<number, TabsPaneContext>\n\nconst Tabs = defineComponent({\n  name: 'ElTabs',\n\n  props: tabsProps,\n  emits: tabsEmits,\n\n  setup(props, { emit, slots, expose }) {\n    const ns = useNamespace('tabs')\n\n    const isVertical = computed(() =>\n      ['left', 'right'].includes(props.tabPosition)\n    )\n\n    const {\n      children: panes,\n      addChild: registerPane,\n      removeChild: unregisterPane,\n      ChildrenSorter: PanesSorter,\n    } = useOrderedChildren<TabsPaneContext>(getCurrentInstance()!, 'ElTabPane')\n\n    const nav$ = ref<TabNavInstance>()\n    const currentName = ref<TabPaneName>(\n      (isUndefined(props.modelValue) ? props.defaultValue : props.modelValue) ??\n        '0'\n    )\n\n    const setCurrentName = async (value?: TabPaneName, trigger = false) => {\n      // should do nothing.\n      if (currentName.value === value || isUndefined(value)) return\n\n      try {\n        let canLeave\n        if (props.beforeLeave) {\n          const result = props.beforeLeave(value, currentName.value)\n          canLeave = result instanceof Promise ? await result : result\n        } else {\n          canLeave = true\n        }\n\n        if (canLeave !== false) {\n          const isFocusInsidePane = panes.value\n            .find((item) => item.paneName === currentName.value)\n            ?.isFocusInsidePane()\n\n          currentName.value = value\n          if (trigger) {\n            emit(UPDATE_MODEL_EVENT, value)\n            emit('tabChange', value)\n          }\n\n          nav$.value?.removeFocus?.()\n          if (isFocusInsidePane) {\n            nav$.value?.focusActiveTab()\n          }\n        }\n      } catch {}\n    }\n\n    const handleTabClick = (\n      tab: TabsPaneContext,\n      tabName: TabPaneName,\n      event: Event\n    ) => {\n      if (tab.props.disabled) return\n      emit('tabClick', tab, event)\n      setCurrentName(tabName, true)\n    }\n\n    const handleTabRemove = (pane: TabsPaneContext, ev: Event) => {\n      if (pane.props.disabled || isUndefined(pane.props.name)) return\n      ev.stopPropagation()\n      emit('edit', pane.props.name, 'remove')\n      emit('tabRemove', pane.props.name)\n    }\n\n    const handleTabAdd = () => {\n      emit('edit', undefined, 'add')\n      emit('tabAdd')\n    }\n\n    const handleKeydown = (event: KeyboardEvent) => {\n      const code = getEventCode(event)\n      if ([EVENT_CODE.enter, EVENT_CODE.numpadEnter].includes(code))\n        handleTabAdd()\n    }\n\n    const swapChildren = (\n      vnode: VNode & {\n        el: HTMLDivElement\n        children: VNode<HTMLDivElement>[]\n      }\n    ) => {\n      const actualFirstChild = vnode.el.firstChild!\n      const firstChild = ['bottom', 'right'].includes(props.tabPosition)\n        ? vnode.children[0].el!\n        : vnode.children[1].el!\n\n      if (actualFirstChild !== firstChild) {\n        actualFirstChild.before(firstChild)\n      }\n    }\n\n    watch(\n      () => props.modelValue,\n      (modelValue) => setCurrentName(modelValue)\n    )\n\n    watch(currentName, async () => {\n      await nextTick()\n      nav$.value?.scrollToActiveTab()\n    })\n\n    provide(tabsRootContextKey, {\n      props,\n      currentName,\n      registerPane,\n      unregisterPane,\n      nav$,\n    })\n\n    expose({\n      currentName,\n      get tabNavRef() {\n        return omit(nav$.value, ['scheduleRender'])\n      },\n    })\n\n    return () => {\n      const addSlot = slots['add-icon']\n      const newButton =\n        props.editable || props.addable ? (\n          <div\n            class={[\n              ns.e('new-tab'),\n              isVertical.value && ns.e('new-tab-vertical'),\n            ]}\n            tabindex={props.tabindex}\n            onClick={handleTabAdd}\n            onKeydown={handleKeydown}\n          >\n            {addSlot ? (\n              renderSlot(slots, 'add-icon')\n            ) : (\n              <ElIcon class={ns.is('icon-plus')}>\n                <Plus />\n              </ElIcon>\n            )}\n          </div>\n        ) : null\n\n      const tabNav = () => (\n        <TabNav\n          ref={nav$}\n          currentName={currentName.value}\n          editable={props.editable}\n          type={props.type}\n          panes={panes.value}\n          stretch={props.stretch}\n          onTabClick={handleTabClick}\n          onTabRemove={handleTabRemove}\n        />\n      )\n\n      const header = (\n        <div\n          class={[\n            ns.e('header'),\n            isVertical.value && ns.e('header-vertical'),\n            ns.is(props.tabPosition),\n          ]}\n        >\n          {createVNode(PanesSorter, null, {\n            default: tabNav,\n            $stable: true,\n          })}\n          {newButton}\n        </div>\n      )\n\n      const panels = (\n        <div class={ns.e('content')}>{renderSlot(slots, 'default')}</div>\n      )\n\n      return (\n        <div\n          class={[\n            ns.b(),\n            ns.m(props.tabPosition),\n            {\n              [ns.m('card')]: props.type === 'card',\n              [ns.m('border-card')]: props.type === 'border-card',\n            },\n          ]}\n          // @ts-ignore\n          onVnodeMounted={swapChildren}\n          onVnodeUpdated={swapChildren}\n        >\n          {panels}\n          {header}\n        </div>\n      )\n    }\n  },\n})\n\nexport type TabsInstance = InstanceType<typeof Tabs> & {\n  currentName: TabPaneName\n  tabNavRef: TabNavInstance | undefined\n}\n\nexport default Tabs\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type TabPane from './tab-pane.vue'\n\n/**\n * @deprecated Removed after 3.0.0, Use `TabPaneProps` instead.\n */\nexport const tabPaneProps = buildProps({\n  /**\n   * @description title of the tab\n   */\n  label: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description identifier corresponding to the name of Tabs, representing the alias of the tab-pane, the default is ordinal number of the tab-pane in the sequence, e.g. the first tab-pane is '0'\n   */\n  name: {\n    type: [String, Number],\n  },\n  /**\n   * @description whether Tab is closable\n   */\n  closable: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether Tab is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description whether Tab is lazily rendered\n   */\n  lazy: Boolean,\n} as const)\n\nexport type TabPaneProps = {\n  /**\n   * @description title of the tab\n   */\n  label?: string\n  /**\n   * @description identifier corresponding to the name of Tabs, representing the alias of the tab-pane, the default is ordinal number of the tab-pane in the sequence, e.g. the first tab-pane is '0'\n   */\n  name?: string | number\n  /**\n   * @description whether Tab is closable\n   */\n  closable?: boolean\n  /**\n   * @description whether Tab is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description whether Tab is lazily rendered\n   */\n  lazy?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TabPaneProps` instead.\n */\nexport type TabPanePropsPublic = ExtractPublicPropTypes<typeof tabPaneProps>\n\nexport type TabPaneInstance = InstanceType<typeof TabPane> & unknown\n","<template>\n  <div\n    v-if=\"shouldBeRender\"\n    v-show=\"active\"\n    :id=\"`pane-${paneName}`\"\n    ref=\"paneRef\"\n    :class=\"ns.b()\"\n    role=\"tabpanel\"\n    :aria-hidden=\"!active\"\n    :aria-labelledby=\"`tab-${paneName}`\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onBeforeUpdate,\n  reactive,\n  ref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\n\nimport type { TabPaneProps } from './tab-pane'\n\nconst COMPONENT_NAME = 'ElTabPane'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<TabPaneProps>(), {\n  label: '',\n  closable: undefined,\n})\n\nconst instance = getCurrentInstance()!\nconst slots = useSlots()\n\nconst tabsRoot = inject(tabsRootContextKey)\nif (!tabsRoot)\n  throwError(COMPONENT_NAME, 'usage: <el-tabs><el-tab-pane /></el-tabs/>')\n\nconst ns = useNamespace('tab-pane')\n\nconst paneRef = ref<HTMLDivElement>()\nconst index = ref<string>()\nconst isClosable = computed(() => props.closable ?? tabsRoot.props.closable)\nconst active = computed(\n  () => tabsRoot.currentName.value === (props.name ?? index.value)\n)\nconst loaded = ref(active.value)\nconst paneName = computed(() => props.name ?? index.value)\nconst shouldBeRender = computed(\n  () => !props.lazy || loaded.value || active.value\n)\n\nconst isFocusInsidePane = () => {\n  return paneRef.value?.contains(document.activeElement)\n}\n\nwatch(active, (val) => {\n  if (val) loaded.value = true\n})\n\nconst pane = reactive({\n  uid: instance.uid,\n  getVnode: () => instance.vnode,\n  slots,\n  props,\n  paneName,\n  active,\n  index,\n  isClosable,\n  isFocusInsidePane,\n})\n\ntabsRoot.registerPane(pane)\n\nonBeforeUnmount(() => {\n  tabsRoot.unregisterPane(pane)\n})\n\nonBeforeUpdate(() => {\n  if (slots.label) tabsRoot.nav$.value?.scheduleRender()\n})\n</script>\n","<template>\n  <div\n    v-if=\"shouldBeRender\"\n    v-show=\"active\"\n    :id=\"`pane-${paneName}`\"\n    ref=\"paneRef\"\n    :class=\"ns.b()\"\n    role=\"tabpanel\"\n    :aria-hidden=\"!active\"\n    :aria-labelledby=\"`tab-${paneName}`\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onBeforeUpdate,\n  reactive,\n  ref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\n\nimport type { TabPaneProps } from './tab-pane'\n\nconst COMPONENT_NAME = 'ElTabPane'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<TabPaneProps>(), {\n  label: '',\n  closable: undefined,\n})\n\nconst instance = getCurrentInstance()!\nconst slots = useSlots()\n\nconst tabsRoot = inject(tabsRootContextKey)\nif (!tabsRoot)\n  throwError(COMPONENT_NAME, 'usage: <el-tabs><el-tab-pane /></el-tabs/>')\n\nconst ns = useNamespace('tab-pane')\n\nconst paneRef = ref<HTMLDivElement>()\nconst index = ref<string>()\nconst isClosable = computed(() => props.closable ?? tabsRoot.props.closable)\nconst active = computed(\n  () => tabsRoot.currentName.value === (props.name ?? index.value)\n)\nconst loaded = ref(active.value)\nconst paneName = computed(() => props.name ?? index.value)\nconst shouldBeRender = computed(\n  () => !props.lazy || loaded.value || active.value\n)\n\nconst isFocusInsidePane = () => {\n  return paneRef.value?.contains(document.activeElement)\n}\n\nwatch(active, (val) => {\n  if (val) loaded.value = true\n})\n\nconst pane = reactive({\n  uid: instance.uid,\n  getVnode: () => instance.vnode,\n  slots,\n  props,\n  paneName,\n  active,\n  index,\n  isClosable,\n  isFocusInsidePane,\n})\n\ntabsRoot.registerPane(pane)\n\nonBeforeUnmount(() => {\n  tabsRoot.unregisterPane(pane)\n})\n\nonBeforeUpdate(() => {\n  if (slots.label) tabsRoot.nav$.value?.scheduleRender()\n})\n</script>\n","<template>\n  <div\n    v-if=\"shouldBeRender\"\n    v-show=\"active\"\n    :id=\"`pane-${paneName}`\"\n    ref=\"paneRef\"\n    :class=\"ns.b()\"\n    role=\"tabpanel\"\n    :aria-hidden=\"!active\"\n    :aria-labelledby=\"`tab-${paneName}`\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onBeforeUpdate,\n  reactive,\n  ref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { throwError } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\n\nimport type { TabPaneProps } from './tab-pane'\n\nconst COMPONENT_NAME = 'ElTabPane'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<TabPaneProps>(), {\n  label: '',\n  closable: undefined,\n})\n\nconst instance = getCurrentInstance()!\nconst slots = useSlots()\n\nconst tabsRoot = inject(tabsRootContextKey)\nif (!tabsRoot)\n  throwError(COMPONENT_NAME, 'usage: <el-tabs><el-tab-pane /></el-tabs/>')\n\nconst ns = useNamespace('tab-pane')\n\nconst paneRef = ref<HTMLDivElement>()\nconst index = ref<string>()\nconst isClosable = computed(() => props.closable ?? tabsRoot.props.closable)\nconst active = computed(\n  () => tabsRoot.currentName.value === (props.name ?? index.value)\n)\nconst loaded = ref(active.value)\nconst paneName = computed(() => props.name ?? index.value)\nconst shouldBeRender = computed(\n  () => !props.lazy || loaded.value || active.value\n)\n\nconst isFocusInsidePane = () => {\n  return paneRef.value?.contains(document.activeElement)\n}\n\nwatch(active, (val) => {\n  if (val) loaded.value = true\n})\n\nconst pane = reactive({\n  uid: instance.uid,\n  getVnode: () => instance.vnode,\n  slots,\n  props,\n  paneName,\n  active,\n  index,\n  isClosable,\n  isFocusInsidePane,\n})\n\ntabsRoot.registerPane(pane)\n\nonBeforeUnmount(() => {\n  tabsRoot.unregisterPane(pane)\n})\n\nonBeforeUpdate(() => {\n  if (slots.label) tabsRoot.nav$.value?.scheduleRender()\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Tabs from './src/tabs'\nimport TabPane from './src/tab-pane.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTabs: SFCWithInstall<typeof Tabs> & {\n  TabPane: typeof TabPane\n} = withInstall(Tabs, {\n  TabPane,\n})\nexport const ElTabPane: SFCWithInstall<typeof TabPane> =\n  withNoopInstall(TabPane)\nexport default ElTabs\n\nexport * from './src/tabs'\nexport * from './src/tab-bar'\nexport * from './src/tab-nav'\nexport * from './src/tab-pane'\nexport * from './src/constants'\n","import { buildProps } from '@pit-element-plus/utils'\nimport { componentSizes } from '@pit-element-plus/constants'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\n\nexport interface TextProps {\n  /**\n   * @description text type\n   */\n  type?: 'primary' | 'success' | 'info' | 'warning' | 'danger' | ''\n  /**\n   * @description text size\n   */\n  size?: ComponentSize\n  /**\n   * @description render ellipsis\n   */\n  truncated?: boolean\n  /**\n   * @description maximum lines\n   */\n  lineClamp?: number | string\n  /**\n   * @description custom element tag\n   */\n  tag?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TextProps` instead.\n */\nexport const textProps = buildProps({\n  /**\n   * @description text type\n   */\n  type: {\n    type: String,\n    values: ['primary', 'success', 'info', 'warning', 'danger', ''],\n    default: '',\n  },\n  /**\n   * @description text size\n   */\n  size: {\n    type: String,\n    values: componentSizes,\n    default: '',\n  },\n  /**\n   * @description render ellipsis\n   */\n  truncated: Boolean,\n  /**\n   * @description maximum lines\n   */\n  lineClamp: {\n    type: [String, Number],\n  },\n  /**\n   * @description custom element tag\n   */\n  tag: {\n    type: String,\n    default: 'span',\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `TextProps` instead.\n */\nexport type TextPropsPublic = ExtractPublicPropTypes<typeof textProps>\n","<template>\n  <component\n    :is=\"tag\"\n    ref=\"textRef\"\n    :class=\"textKls\"\n    :style=\"{ '-webkit-line-clamp': lineClamp }\"\n  >\n    <slot />\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onMounted, onUpdated, ref, useAttrs } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport { isUndefined } from '@pit-element-plus/utils'\n\nimport type { TextProps } from './text'\n\ndefineOptions({\n  name: 'ElText',\n})\n\nconst props = withDefaults(defineProps<TextProps>(), {\n  type: '',\n  size: '',\n  tag: 'span',\n})\nconst textRef = ref<HTMLElement>()\n\nconst textSize = useFormSize()\nconst ns = useNamespace('text')\n\nconst textKls = computed(() => [\n  ns.b(),\n  ns.m(props.type),\n  ns.m(textSize.value),\n  ns.is('truncated', props.truncated),\n  ns.is('line-clamp', !isUndefined(props.lineClamp)),\n])\n\nconst bindTitle = () => {\n  const inheritTitle = useAttrs().title\n\n  if (inheritTitle) return\n  let shouldAddTitle = false\n  const text = textRef.value?.textContent || ''\n\n  if (props.truncated) {\n    const width = textRef.value?.offsetWidth\n    const scrollWidth = textRef.value?.scrollWidth\n    if (width && scrollWidth && scrollWidth > width) {\n      shouldAddTitle = true\n    }\n  } else if (!isUndefined(props.lineClamp)) {\n    const height = textRef.value?.offsetHeight\n    const scrollHeight = textRef.value?.scrollHeight\n    if (height && scrollHeight && scrollHeight > height) {\n      shouldAddTitle = true\n    }\n  }\n\n  if (shouldAddTitle) {\n    textRef.value?.setAttribute('title', text)\n  } else {\n    textRef.value?.removeAttribute('title')\n  }\n}\n\nonMounted(bindTitle)\nonUpdated(bindTitle)\n</script>\n","<template>\n  <component\n    :is=\"tag\"\n    ref=\"textRef\"\n    :class=\"textKls\"\n    :style=\"{ '-webkit-line-clamp': lineClamp }\"\n  >\n    <slot />\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onMounted, onUpdated, ref, useAttrs } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport { isUndefined } from '@pit-element-plus/utils'\n\nimport type { TextProps } from './text'\n\ndefineOptions({\n  name: 'ElText',\n})\n\nconst props = withDefaults(defineProps<TextProps>(), {\n  type: '',\n  size: '',\n  tag: 'span',\n})\nconst textRef = ref<HTMLElement>()\n\nconst textSize = useFormSize()\nconst ns = useNamespace('text')\n\nconst textKls = computed(() => [\n  ns.b(),\n  ns.m(props.type),\n  ns.m(textSize.value),\n  ns.is('truncated', props.truncated),\n  ns.is('line-clamp', !isUndefined(props.lineClamp)),\n])\n\nconst bindTitle = () => {\n  const inheritTitle = useAttrs().title\n\n  if (inheritTitle) return\n  let shouldAddTitle = false\n  const text = textRef.value?.textContent || ''\n\n  if (props.truncated) {\n    const width = textRef.value?.offsetWidth\n    const scrollWidth = textRef.value?.scrollWidth\n    if (width && scrollWidth && scrollWidth > width) {\n      shouldAddTitle = true\n    }\n  } else if (!isUndefined(props.lineClamp)) {\n    const height = textRef.value?.offsetHeight\n    const scrollHeight = textRef.value?.scrollHeight\n    if (height && scrollHeight && scrollHeight > height) {\n      shouldAddTitle = true\n    }\n  }\n\n  if (shouldAddTitle) {\n    textRef.value?.setAttribute('title', text)\n  } else {\n    textRef.value?.removeAttribute('title')\n  }\n}\n\nonMounted(bindTitle)\nonUpdated(bindTitle)\n</script>\n","<template>\n  <component\n    :is=\"tag\"\n    ref=\"textRef\"\n    :class=\"textKls\"\n    :style=\"{ '-webkit-line-clamp': lineClamp }\"\n  >\n    <slot />\n  </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onMounted, onUpdated, ref, useAttrs } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormSize } from '@pit-element-plus/components/form'\nimport { isUndefined } from '@pit-element-plus/utils'\n\nimport type { TextProps } from './text'\n\ndefineOptions({\n  name: 'ElText',\n})\n\nconst props = withDefaults(defineProps<TextProps>(), {\n  type: '',\n  size: '',\n  tag: 'span',\n})\nconst textRef = ref<HTMLElement>()\n\nconst textSize = useFormSize()\nconst ns = useNamespace('text')\n\nconst textKls = computed(() => [\n  ns.b(),\n  ns.m(props.type),\n  ns.m(textSize.value),\n  ns.is('truncated', props.truncated),\n  ns.is('line-clamp', !isUndefined(props.lineClamp)),\n])\n\nconst bindTitle = () => {\n  const inheritTitle = useAttrs().title\n\n  if (inheritTitle) return\n  let shouldAddTitle = false\n  const text = textRef.value?.textContent || ''\n\n  if (props.truncated) {\n    const width = textRef.value?.offsetWidth\n    const scrollWidth = textRef.value?.scrollWidth\n    if (width && scrollWidth && scrollWidth > width) {\n      shouldAddTitle = true\n    }\n  } else if (!isUndefined(props.lineClamp)) {\n    const height = textRef.value?.offsetHeight\n    const scrollHeight = textRef.value?.scrollHeight\n    if (height && scrollHeight && scrollHeight > height) {\n      shouldAddTitle = true\n    }\n  }\n\n  if (shouldAddTitle) {\n    textRef.value?.setAttribute('title', text)\n  } else {\n    textRef.value?.removeAttribute('title')\n  }\n}\n\nonMounted(bindTitle)\nonUpdated(bindTitle)\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Text from './src/text.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElText: SFCWithInstall<typeof Text> = withInstall(Text)\nexport default ElText\n\nexport * from './src/text'\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { CircleClose, Clock } from 'pit-element-icons'\nimport { useEmptyValuesProps, useSizeProp } from '@pit-element-plus/hooks'\n\nimport type { UseEmptyValuesProps } from '@pit-element-plus/hooks'\nimport type { PopperEffect } from '@pit-element-plus/components/popper'\nimport type TimeSelect from './time-select.vue'\nimport type { CSSProperties, Component, ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type { IconPropType } from '@pit-element-plus/utils'\n\nexport interface TimeSelectProps extends UseEmptyValuesProps {\n  /**\n   * @description set format of time\n   */\n  format?: string\n  /**\n   * @description binding value\n   */\n  modelValue?: string | null\n  /**\n   * @description whether TimeSelect is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description whether the input is editable\n   */\n  editable?: boolean\n  /**\n   * @description Tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect?: PopperEffect\n  /**\n   * @description whether to show clear button\n   */\n  clearable?: boolean\n  /**\n   * @description size of Input\n   */\n  size?: ComponentSize\n  /**\n   * @description placeholder in non-range mode\n   */\n  placeholder?: string\n  /**\n   * @description start time\n   */\n  start?: string\n  /**\n   * @description end time\n   */\n  end?: string\n  /**\n   * @description time step\n   */\n  step?: string\n  /**\n   * @description minimum time, any time before this time will be disabled\n   */\n  minTime?: string | null\n  /**\n   * @description maximum time, any time after this time will be disabled\n   */\n  maxTime?: string | null\n  /**\n   * @description whether `end` is included in options\n   */\n  includeEndTime?: boolean\n  /**\n   * @description same as `name` in native input\n   */\n  name?: string\n  /**\n   * @description custom prefix icon component\n   */\n  prefixIcon?: IconPropType\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon?: IconPropType\n  /**\n   * @description custom class name for TimeSelect's dropdown\n   */\n  popperClass?: string\n  /**\n   * @description custom style for TimeSelect's dropdown\n   */\n  popperStyle?: string | CSSProperties\n}\n\nexport const DEFAULT_STEP = '00:30'\n\n/**\n * @deprecated Removed after 3.0.0, Use `TimeSelectProps` instead.\n */\nexport const timeSelectProps = buildProps({\n  /**\n   * @description set format of time\n   */\n  format: {\n    type: String,\n    default: 'HH:mm',\n  },\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<string | null>(String),\n  },\n  /**\n   * @description whether TimeSelect is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether the input is editable\n   */\n  editable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    type: definePropType<PopperEffect>(String),\n    default: 'light',\n  },\n  /**\n   * @description whether to show clear button\n   */\n  clearable: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description size of Input\n   */\n  size: useSizeProp,\n  /**\n   * @description placeholder in non-range mode\n   */\n  placeholder: String,\n  /**\n   * @description start time\n   */\n  start: {\n    type: String,\n    default: '09:00',\n  },\n  /**\n   * @description end time\n   */\n  end: {\n    type: String,\n    default: '18:00',\n  },\n  /**\n   * @description time step\n   */\n  step: {\n    type: String,\n    default: DEFAULT_STEP,\n  },\n  /**\n   * @description minimum time, any time before this time will be disabled\n   */\n  minTime: {\n    type: definePropType<string | null>(String),\n  },\n  /**\n   * @description maximum time, any time after this time will be disabled\n   */\n  maxTime: {\n    type: definePropType<string | null>(String),\n  },\n  /**\n   * @description whether `end` is included in options\n   */\n  includeEndTime: Boolean,\n  /**\n   * @description same as `name` in native input\n   */\n  name: String,\n  /**\n   * @description custom prefix icon component\n   */\n  prefixIcon: {\n    type: definePropType<string | Component>([String, Object]),\n    default: () => Clock,\n  },\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon: {\n    type: definePropType<string | Component>([String, Object]),\n    default: () => CircleClose,\n  },\n  /**\n   * @description custom class name for TimeSelect's dropdown\n   */\n  popperClass: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description custom style for TimeSelect's dropdown\n   */\n  popperStyle: {\n    type: definePropType<string | CSSProperties>([String, Object]),\n  },\n  ...useEmptyValuesProps,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `TimeSelectProps` instead.\n */\nexport type TimeSelectPropsPublic = ExtractPublicPropTypes<\n  typeof timeSelectProps\n>\n\nexport type TimeSelectInstance = InstanceType<typeof TimeSelect> & unknown\n","interface Time {\n  hours: number\n  minutes: number\n}\n\nexport const parseTime = (time: string): null | Time => {\n  const values = (time || '').split(':')\n  if (values.length >= 2) {\n    let hours = Number.parseInt(values[0], 10)\n    const minutes = Number.parseInt(values[1], 10)\n    const timeUpper = time.toUpperCase()\n    if (timeUpper.includes('AM') && hours === 12) {\n      hours = 0\n    } else if (timeUpper.includes('PM') && hours !== 12) {\n      hours += 12\n    }\n    return {\n      hours,\n      minutes,\n    }\n  }\n\n  return null\n}\n\nexport const compareTime = (time1: string, time2: string): number => {\n  const value1 = parseTime(time1)\n  if (!value1) return -1\n  const value2 = parseTime(time2)\n  if (!value2) return -1\n  const minutes1 = value1.minutes + value1.hours * 60\n  const minutes2 = value2.minutes + value2.hours * 60\n  if (minutes1 === minutes2) {\n    return 0\n  }\n  return minutes1 > minutes2 ? 1 : -1\n}\n\nexport const padTime = (time: number | string) => {\n  return `${time}`.padStart(2, '0')\n}\nexport const formatTime = (time: Time): string => {\n  return `${padTime(time.hours)}:${padTime(time.minutes)}`\n}\n\nexport const nextTime = (time: string, step: string): string => {\n  const timeValue = parseTime(time)\n  if (!timeValue) return ''\n\n  const stepValue = parseTime(step)\n  if (!stepValue) return ''\n\n  const next = {\n    hours: timeValue.hours,\n    minutes: timeValue.minutes,\n  }\n  next.minutes += stepValue.minutes\n  next.hours += stepValue.hours\n  next.hours += Math.floor(next.minutes / 60)\n  next.minutes = next.minutes % 60\n  return formatTime(next)\n}\n","<template>\n  <el-select\n    ref=\"select\"\n    :name=\"name\"\n    :model-value=\"value\"\n    :disabled=\"_disabled\"\n    :clearable=\"clearable\"\n    :clear-icon=\"clearIcon\"\n    :size=\"size\"\n    :effect=\"effect\"\n    :placeholder=\"placeholder\"\n    default-first-option\n    :filterable=\"editable\"\n    :empty-values=\"emptyValues\"\n    :value-on-clear=\"valueOnClear\"\n    :popper-class=\"popperClass\"\n    :popper-style=\"popperStyle\"\n    @update:model-value=\"(event) => $emit(UPDATE_MODEL_EVENT, event)\"\n    @change=\"(event) => $emit(CHANGE_EVENT, event)\"\n    @blur=\"(event) => $emit('blur', event)\"\n    @focus=\"(event) => $emit('focus', event)\"\n    @clear=\"() => $emit('clear')\"\n  >\n    <el-option\n      v-for=\"item in items\"\n      :key=\"item.value\"\n      :label=\"item.value\"\n      :value=\"item.value\"\n      :disabled=\"item.disabled\"\n    />\n    <template #prefix>\n      <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('prefix-icon')\">\n        <component :is=\"prefixIcon\" />\n      </el-icon>\n    </template>\n  </el-select>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js'\nimport ElSelect from '@pit-element-plus/components/select'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { CircleClose, Clock } from 'pit-element-icons'\nimport { compareTime, formatTime, nextTime, parseTime } from './utils'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { DEFAULT_STEP } from './time-select'\n\nimport type { TimeSelectProps } from './time-select'\n\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ndefineOptions({\n  name: 'ElTimeSelect',\n})\n\ndefineEmits([CHANGE_EVENT, 'blur', 'focus', 'clear', UPDATE_MODEL_EVENT])\n\nconst props = withDefaults(defineProps<TimeSelectProps>(), {\n  format: 'HH:mm',\n  disabled: undefined,\n  editable: true,\n  effect: 'light',\n  clearable: true,\n  start: '09:00',\n  end: '18:00',\n  step: DEFAULT_STEP,\n  prefixIcon: () => Clock,\n  clearIcon: () => CircleClose,\n  popperClass: '',\n  valueOnClear: undefined,\n  popperStyle: undefined,\n})\n\nconst nsInput = useNamespace('input')\nconst select = ref<typeof ElSelect>()\n\nconst _disabled = useFormDisabled()\nconst { lang } = useLocale()\n\nconst value = computed(() => props.modelValue)\nconst start = computed(() => {\n  const time = parseTime(props.start)\n  return time ? formatTime(time) : null\n})\n\nconst end = computed(() => {\n  const time = parseTime(props.end)\n  return time ? formatTime(time) : null\n})\n\nconst minTime = computed(() => {\n  const time = parseTime(props.minTime || '')\n  return time ? formatTime(time) : null\n})\n\nconst maxTime = computed(() => {\n  const time = parseTime(props.maxTime || '')\n  return time ? formatTime(time) : null\n})\n\nconst step = computed(() => {\n  const time = parseTime(props.step)\n  const isInvalidStep =\n    !time ||\n    time.hours < 0 ||\n    time.minutes < 0 ||\n    Number.isNaN(time.hours) ||\n    Number.isNaN(time.minutes) ||\n    (time.hours === 0 && time.minutes === 0)\n  if (isInvalidStep) {\n    debugWarn(\n      'ElTimeSelect',\n      `invalid step, fallback to default step (${DEFAULT_STEP}).`\n    )\n  }\n  return !isInvalidStep ? formatTime(time) : DEFAULT_STEP\n})\n\nconst items = computed(() => {\n  const result: { value: string; rawValue: string; disabled: boolean }[] = []\n  const push = (formattedValue: string, rawValue: string) => {\n    result.push({\n      value: formattedValue,\n      rawValue,\n      disabled:\n        compareTime(rawValue, minTime.value || '-1:-1') <= 0 ||\n        compareTime(rawValue, maxTime.value || '100:100') >= 0,\n    })\n  }\n\n  if (props.start && props.end && props.step) {\n    let current = start.value\n    let currentTime: string\n    while (current && end.value && compareTime(current, end.value) <= 0) {\n      currentTime = dayjs(current, 'HH:mm')\n        .locale(lang.value)\n        .format(props.format)\n      push(currentTime, current)\n      current = nextTime(current, step.value!)\n    }\n    if (\n      props.includeEndTime &&\n      end.value &&\n      result[result.length - 1]?.rawValue !== end.value\n    ) {\n      const formattedValue = dayjs(end.value, 'HH:mm')\n        .locale(lang.value)\n        .format(props.format)\n      push(formattedValue, end.value)\n    }\n  }\n  return result\n})\n\nconst blur = () => {\n  select.value?.blur?.()\n}\n\nconst focus = () => {\n  select.value?.focus?.()\n}\n\ndefineExpose({\n  /**\n   * @description blur the Input component\n   */\n  blur,\n  /**\n   * @description focus the Input component\n   */\n  focus,\n})\n</script>\n","<template>\n  <el-select\n    ref=\"select\"\n    :name=\"name\"\n    :model-value=\"value\"\n    :disabled=\"_disabled\"\n    :clearable=\"clearable\"\n    :clear-icon=\"clearIcon\"\n    :size=\"size\"\n    :effect=\"effect\"\n    :placeholder=\"placeholder\"\n    default-first-option\n    :filterable=\"editable\"\n    :empty-values=\"emptyValues\"\n    :value-on-clear=\"valueOnClear\"\n    :popper-class=\"popperClass\"\n    :popper-style=\"popperStyle\"\n    @update:model-value=\"(event) => $emit(UPDATE_MODEL_EVENT, event)\"\n    @change=\"(event) => $emit(CHANGE_EVENT, event)\"\n    @blur=\"(event) => $emit('blur', event)\"\n    @focus=\"(event) => $emit('focus', event)\"\n    @clear=\"() => $emit('clear')\"\n  >\n    <el-option\n      v-for=\"item in items\"\n      :key=\"item.value\"\n      :label=\"item.value\"\n      :value=\"item.value\"\n      :disabled=\"item.disabled\"\n    />\n    <template #prefix>\n      <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('prefix-icon')\">\n        <component :is=\"prefixIcon\" />\n      </el-icon>\n    </template>\n  </el-select>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js'\nimport ElSelect from '@pit-element-plus/components/select'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { CircleClose, Clock } from 'pit-element-icons'\nimport { compareTime, formatTime, nextTime, parseTime } from './utils'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { DEFAULT_STEP } from './time-select'\n\nimport type { TimeSelectProps } from './time-select'\n\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ndefineOptions({\n  name: 'ElTimeSelect',\n})\n\ndefineEmits([CHANGE_EVENT, 'blur', 'focus', 'clear', UPDATE_MODEL_EVENT])\n\nconst props = withDefaults(defineProps<TimeSelectProps>(), {\n  format: 'HH:mm',\n  disabled: undefined,\n  editable: true,\n  effect: 'light',\n  clearable: true,\n  start: '09:00',\n  end: '18:00',\n  step: DEFAULT_STEP,\n  prefixIcon: () => Clock,\n  clearIcon: () => CircleClose,\n  popperClass: '',\n  valueOnClear: undefined,\n  popperStyle: undefined,\n})\n\nconst nsInput = useNamespace('input')\nconst select = ref<typeof ElSelect>()\n\nconst _disabled = useFormDisabled()\nconst { lang } = useLocale()\n\nconst value = computed(() => props.modelValue)\nconst start = computed(() => {\n  const time = parseTime(props.start)\n  return time ? formatTime(time) : null\n})\n\nconst end = computed(() => {\n  const time = parseTime(props.end)\n  return time ? formatTime(time) : null\n})\n\nconst minTime = computed(() => {\n  const time = parseTime(props.minTime || '')\n  return time ? formatTime(time) : null\n})\n\nconst maxTime = computed(() => {\n  const time = parseTime(props.maxTime || '')\n  return time ? formatTime(time) : null\n})\n\nconst step = computed(() => {\n  const time = parseTime(props.step)\n  const isInvalidStep =\n    !time ||\n    time.hours < 0 ||\n    time.minutes < 0 ||\n    Number.isNaN(time.hours) ||\n    Number.isNaN(time.minutes) ||\n    (time.hours === 0 && time.minutes === 0)\n  if (isInvalidStep) {\n    debugWarn(\n      'ElTimeSelect',\n      `invalid step, fallback to default step (${DEFAULT_STEP}).`\n    )\n  }\n  return !isInvalidStep ? formatTime(time) : DEFAULT_STEP\n})\n\nconst items = computed(() => {\n  const result: { value: string; rawValue: string; disabled: boolean }[] = []\n  const push = (formattedValue: string, rawValue: string) => {\n    result.push({\n      value: formattedValue,\n      rawValue,\n      disabled:\n        compareTime(rawValue, minTime.value || '-1:-1') <= 0 ||\n        compareTime(rawValue, maxTime.value || '100:100') >= 0,\n    })\n  }\n\n  if (props.start && props.end && props.step) {\n    let current = start.value\n    let currentTime: string\n    while (current && end.value && compareTime(current, end.value) <= 0) {\n      currentTime = dayjs(current, 'HH:mm')\n        .locale(lang.value)\n        .format(props.format)\n      push(currentTime, current)\n      current = nextTime(current, step.value!)\n    }\n    if (\n      props.includeEndTime &&\n      end.value &&\n      result[result.length - 1]?.rawValue !== end.value\n    ) {\n      const formattedValue = dayjs(end.value, 'HH:mm')\n        .locale(lang.value)\n        .format(props.format)\n      push(formattedValue, end.value)\n    }\n  }\n  return result\n})\n\nconst blur = () => {\n  select.value?.blur?.()\n}\n\nconst focus = () => {\n  select.value?.focus?.()\n}\n\ndefineExpose({\n  /**\n   * @description blur the Input component\n   */\n  blur,\n  /**\n   * @description focus the Input component\n   */\n  focus,\n})\n</script>\n","<template>\n  <el-select\n    ref=\"select\"\n    :name=\"name\"\n    :model-value=\"value\"\n    :disabled=\"_disabled\"\n    :clearable=\"clearable\"\n    :clear-icon=\"clearIcon\"\n    :size=\"size\"\n    :effect=\"effect\"\n    :placeholder=\"placeholder\"\n    default-first-option\n    :filterable=\"editable\"\n    :empty-values=\"emptyValues\"\n    :value-on-clear=\"valueOnClear\"\n    :popper-class=\"popperClass\"\n    :popper-style=\"popperStyle\"\n    @update:model-value=\"(event) => $emit(UPDATE_MODEL_EVENT, event)\"\n    @change=\"(event) => $emit(CHANGE_EVENT, event)\"\n    @blur=\"(event) => $emit('blur', event)\"\n    @focus=\"(event) => $emit('focus', event)\"\n    @clear=\"() => $emit('clear')\"\n  >\n    <el-option\n      v-for=\"item in items\"\n      :key=\"item.value\"\n      :label=\"item.value\"\n      :value=\"item.value\"\n      :disabled=\"item.disabled\"\n    />\n    <template #prefix>\n      <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('prefix-icon')\">\n        <component :is=\"prefixIcon\" />\n      </el-icon>\n    </template>\n  </el-select>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js'\nimport ElSelect from '@pit-element-plus/components/select'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { CircleClose, Clock } from 'pit-element-icons'\nimport { compareTime, formatTime, nextTime, parseTime } from './utils'\nimport { debugWarn } from '@pit-element-plus/utils'\nimport { DEFAULT_STEP } from './time-select'\n\nimport type { TimeSelectProps } from './time-select'\n\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ndefineOptions({\n  name: 'ElTimeSelect',\n})\n\ndefineEmits([CHANGE_EVENT, 'blur', 'focus', 'clear', UPDATE_MODEL_EVENT])\n\nconst props = withDefaults(defineProps<TimeSelectProps>(), {\n  format: 'HH:mm',\n  disabled: undefined,\n  editable: true,\n  effect: 'light',\n  clearable: true,\n  start: '09:00',\n  end: '18:00',\n  step: DEFAULT_STEP,\n  prefixIcon: () => Clock,\n  clearIcon: () => CircleClose,\n  popperClass: '',\n  valueOnClear: undefined,\n  popperStyle: undefined,\n})\n\nconst nsInput = useNamespace('input')\nconst select = ref<typeof ElSelect>()\n\nconst _disabled = useFormDisabled()\nconst { lang } = useLocale()\n\nconst value = computed(() => props.modelValue)\nconst start = computed(() => {\n  const time = parseTime(props.start)\n  return time ? formatTime(time) : null\n})\n\nconst end = computed(() => {\n  const time = parseTime(props.end)\n  return time ? formatTime(time) : null\n})\n\nconst minTime = computed(() => {\n  const time = parseTime(props.minTime || '')\n  return time ? formatTime(time) : null\n})\n\nconst maxTime = computed(() => {\n  const time = parseTime(props.maxTime || '')\n  return time ? formatTime(time) : null\n})\n\nconst step = computed(() => {\n  const time = parseTime(props.step)\n  const isInvalidStep =\n    !time ||\n    time.hours < 0 ||\n    time.minutes < 0 ||\n    Number.isNaN(time.hours) ||\n    Number.isNaN(time.minutes) ||\n    (time.hours === 0 && time.minutes === 0)\n  if (isInvalidStep) {\n    debugWarn(\n      'ElTimeSelect',\n      `invalid step, fallback to default step (${DEFAULT_STEP}).`\n    )\n  }\n  return !isInvalidStep ? formatTime(time) : DEFAULT_STEP\n})\n\nconst items = computed(() => {\n  const result: { value: string; rawValue: string; disabled: boolean }[] = []\n  const push = (formattedValue: string, rawValue: string) => {\n    result.push({\n      value: formattedValue,\n      rawValue,\n      disabled:\n        compareTime(rawValue, minTime.value || '-1:-1') <= 0 ||\n        compareTime(rawValue, maxTime.value || '100:100') >= 0,\n    })\n  }\n\n  if (props.start && props.end && props.step) {\n    let current = start.value\n    let currentTime: string\n    while (current && end.value && compareTime(current, end.value) <= 0) {\n      currentTime = dayjs(current, 'HH:mm')\n        .locale(lang.value)\n        .format(props.format)\n      push(currentTime, current)\n      current = nextTime(current, step.value!)\n    }\n    if (\n      props.includeEndTime &&\n      end.value &&\n      result[result.length - 1]?.rawValue !== end.value\n    ) {\n      const formattedValue = dayjs(end.value, 'HH:mm')\n        .locale(lang.value)\n        .format(props.format)\n      push(formattedValue, end.value)\n    }\n  }\n  return result\n})\n\nconst blur = () => {\n  select.value?.blur?.()\n}\n\nconst focus = () => {\n  select.value?.focus?.()\n}\n\ndefineExpose({\n  /**\n   * @description blur the Input component\n   */\n  blur,\n  /**\n   * @description focus the Input component\n   */\n  focus,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport TimeSelect from './src/time-select.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTimeSelect: SFCWithInstall<typeof TimeSelect> =\n  withInstall(TimeSelect)\nexport default ElTimeSelect\n\nexport * from './src/time-select'\n","import type { Slots } from 'vue'\nimport type { TimelineProps } from './timeline'\n\nexport interface TimelineProvider {\n  props: TimelineProps\n  slots: Slots\n}\n\nexport const TIMELINE_INJECTION_KEY = 'timeline'\n","import { computed, defineComponent, h, provide } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { TIMELINE_INJECTION_KEY } from './tokens'\nimport { buildProps, flattedChildren } from '@pit-element-plus/utils'\n\nimport type { VNodeChildAtom } from '@pit-element-plus/utils'\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { TimelineProvider } from './tokens'\n\nexport const timelineProps = buildProps({\n  /**\n   * @description relative position of timeline and content\n   */\n  mode: {\n    type: String,\n    values: ['start', 'alternate', 'alternate-reverse', 'end'],\n    default: 'start',\n  },\n  /**\n   * @description whether reverse order\n   */\n  reverse: Boolean,\n} as const)\nexport type TimelineProps = ExtractPropTypes<typeof timelineProps>\nexport type TimelinePropsPublic = ExtractPublicPropTypes<typeof timelineProps>\n\nconst Timeline = defineComponent({\n  name: 'ElTimeline',\n  props: timelineProps,\n\n  setup(props, { slots }) {\n    const ns = useNamespace('timeline')\n\n    provide<TimelineProvider>(TIMELINE_INJECTION_KEY, { props, slots })\n\n    const timelineKls = computed(() => [ns.b(), ns.is(props.mode)])\n\n    return () => {\n      const children = flattedChildren(\n        slots.default?.() ?? []\n      ) as VNodeChildAtom[]\n\n      return h(\n        'ul',\n        { class: timelineKls.value },\n        props.reverse ? children.reverse() : children\n      )\n    }\n  },\n})\n\nexport default Timeline\nexport type TimelineInstance = InstanceType<typeof Timeline> & unknown\n","import { buildProps, iconPropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type TimelineItem from './timeline-item.vue'\n\nexport interface TimelineItemProps {\n  /**\n   * @description timestamp content\n   */\n  timestamp?: string\n  /**\n   * @description whether to show timestamp\n   */\n  hideTimestamp?: boolean\n  /**\n   * @description whether vertically centered\n   */\n  center?: boolean\n  /**\n   * @description position of timestamp\n   */\n  placement?: 'top' | 'bottom'\n  /**\n   * @description node type\n   */\n  type?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | ''\n  /**\n   * @description background color of node\n   */\n  color?: string\n  /**\n   * @description node size\n   */\n  size?: 'normal' | 'large'\n  /**\n   * @description icon component\n   */\n  icon?: IconPropType\n  /**\n   * @description icon is hollow\n   */\n  hollow?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TimelineItemProps` instead.\n */\nexport const timelineItemProps = buildProps({\n  /**\n   * @description timestamp content\n   */\n  timestamp: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description whether to show timestamp\n   */\n  hideTimestamp: Boolean,\n  /**\n   * @description whether vertically centered\n   */\n  center: Boolean,\n  /**\n   * @description position of timestamp\n   */\n  placement: {\n    type: String,\n    values: ['top', 'bottom'],\n    default: 'bottom',\n  },\n  /**\n   * @description node type\n   */\n  type: {\n    type: String,\n    values: ['primary', 'success', 'warning', 'danger', 'info'],\n    default: '',\n  },\n  /**\n   * @description background color of node\n   */\n  color: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description node size\n   */\n  size: {\n    type: String,\n    values: ['normal', 'large'],\n    default: 'normal',\n  },\n  /**\n   * @description icon component\n   */\n  icon: {\n    type: iconPropType,\n  },\n  /**\n   * @description icon is hollow\n   */\n  hollow: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `TimelineItemProps` instead.\n */\nexport type TimelineItemPropsPublic = ExtractPublicPropTypes<\n  typeof timelineItemProps\n>\n\nexport type TimelineItemInstance = InstanceType<typeof TimelineItem> & unknown\n","<template>\n  <li :class=\"timelineItemKls\">\n    <div :class=\"ns.e('tail')\" />\n    <div\n      v-if=\"!$slots.dot\"\n      :class=\"defaultNodeKls\"\n      :style=\"{\n        backgroundColor: color,\n      }\"\n    >\n      <el-icon v-if=\"icon\" :class=\"ns.e('icon')\">\n        <component :is=\"icon\" />\n      </el-icon>\n    </div>\n    <div v-if=\"$slots.dot\" :class=\"ns.e('dot')\">\n      <slot name=\"dot\" />\n    </div>\n\n    <div :class=\"ns.e('wrapper')\">\n      <div\n        v-if=\"!hideTimestamp && placement === 'top'\"\n        :class=\"[ns.e('timestamp'), ns.is('top')]\"\n      >\n        {{ timestamp }}\n      </div>\n\n      <div :class=\"ns.e('content')\">\n        <slot />\n      </div>\n\n      <div\n        v-if=\"!hideTimestamp && placement === 'bottom'\"\n        :class=\"[ns.e('timestamp'), ns.is('bottom')]\"\n      >\n        {{ timestamp }}\n      </div>\n    </div>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { TIMELINE_INJECTION_KEY } from './tokens'\n\nimport type { TimelineProvider } from './tokens'\nimport type { TimelineItemProps } from './timeline-item'\n\ndefineOptions({\n  name: 'ElTimelineItem',\n})\n\nconst props = withDefaults(defineProps<TimelineItemProps>(), {\n  timestamp: '',\n  placement: 'bottom',\n  type: '',\n  color: '',\n  size: 'normal',\n})\nconst { props: timelineProps } = inject<TimelineProvider>(\n  TIMELINE_INJECTION_KEY\n)!\n\nconst ns = useNamespace('timeline-item')\nconst defaultNodeKls = computed(() => [\n  ns.e('node'),\n  ns.em('node', props.size || ''),\n  ns.em('node', props.type || ''),\n  ns.is('hollow', props.hollow),\n])\n\nconst timelineItemKls = computed(() => [\n  ns.b(),\n  { [ns.e('center')]: props.center },\n  ns.is(timelineProps.mode),\n])\n</script>\n","<template>\n  <li :class=\"timelineItemKls\">\n    <div :class=\"ns.e('tail')\" />\n    <div\n      v-if=\"!$slots.dot\"\n      :class=\"defaultNodeKls\"\n      :style=\"{\n        backgroundColor: color,\n      }\"\n    >\n      <el-icon v-if=\"icon\" :class=\"ns.e('icon')\">\n        <component :is=\"icon\" />\n      </el-icon>\n    </div>\n    <div v-if=\"$slots.dot\" :class=\"ns.e('dot')\">\n      <slot name=\"dot\" />\n    </div>\n\n    <div :class=\"ns.e('wrapper')\">\n      <div\n        v-if=\"!hideTimestamp && placement === 'top'\"\n        :class=\"[ns.e('timestamp'), ns.is('top')]\"\n      >\n        {{ timestamp }}\n      </div>\n\n      <div :class=\"ns.e('content')\">\n        <slot />\n      </div>\n\n      <div\n        v-if=\"!hideTimestamp && placement === 'bottom'\"\n        :class=\"[ns.e('timestamp'), ns.is('bottom')]\"\n      >\n        {{ timestamp }}\n      </div>\n    </div>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { TIMELINE_INJECTION_KEY } from './tokens'\n\nimport type { TimelineProvider } from './tokens'\nimport type { TimelineItemProps } from './timeline-item'\n\ndefineOptions({\n  name: 'ElTimelineItem',\n})\n\nconst props = withDefaults(defineProps<TimelineItemProps>(), {\n  timestamp: '',\n  placement: 'bottom',\n  type: '',\n  color: '',\n  size: 'normal',\n})\nconst { props: timelineProps } = inject<TimelineProvider>(\n  TIMELINE_INJECTION_KEY\n)!\n\nconst ns = useNamespace('timeline-item')\nconst defaultNodeKls = computed(() => [\n  ns.e('node'),\n  ns.em('node', props.size || ''),\n  ns.em('node', props.type || ''),\n  ns.is('hollow', props.hollow),\n])\n\nconst timelineItemKls = computed(() => [\n  ns.b(),\n  { [ns.e('center')]: props.center },\n  ns.is(timelineProps.mode),\n])\n</script>\n","<template>\n  <li :class=\"timelineItemKls\">\n    <div :class=\"ns.e('tail')\" />\n    <div\n      v-if=\"!$slots.dot\"\n      :class=\"defaultNodeKls\"\n      :style=\"{\n        backgroundColor: color,\n      }\"\n    >\n      <el-icon v-if=\"icon\" :class=\"ns.e('icon')\">\n        <component :is=\"icon\" />\n      </el-icon>\n    </div>\n    <div v-if=\"$slots.dot\" :class=\"ns.e('dot')\">\n      <slot name=\"dot\" />\n    </div>\n\n    <div :class=\"ns.e('wrapper')\">\n      <div\n        v-if=\"!hideTimestamp && placement === 'top'\"\n        :class=\"[ns.e('timestamp'), ns.is('top')]\"\n      >\n        {{ timestamp }}\n      </div>\n\n      <div :class=\"ns.e('content')\">\n        <slot />\n      </div>\n\n      <div\n        v-if=\"!hideTimestamp && placement === 'bottom'\"\n        :class=\"[ns.e('timestamp'), ns.is('bottom')]\"\n      >\n        {{ timestamp }}\n      </div>\n    </div>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { TIMELINE_INJECTION_KEY } from './tokens'\n\nimport type { TimelineProvider } from './tokens'\nimport type { TimelineItemProps } from './timeline-item'\n\ndefineOptions({\n  name: 'ElTimelineItem',\n})\n\nconst props = withDefaults(defineProps<TimelineItemProps>(), {\n  timestamp: '',\n  placement: 'bottom',\n  type: '',\n  color: '',\n  size: 'normal',\n})\nconst { props: timelineProps } = inject<TimelineProvider>(\n  TIMELINE_INJECTION_KEY\n)!\n\nconst ns = useNamespace('timeline-item')\nconst defaultNodeKls = computed(() => [\n  ns.e('node'),\n  ns.em('node', props.size || ''),\n  ns.em('node', props.type || ''),\n  ns.is('hollow', props.hollow),\n])\n\nconst timelineItemKls = computed(() => [\n  ns.b(),\n  { [ns.e('center')]: props.center },\n  ns.is(timelineProps.mode),\n])\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Timeline from './src/timeline'\nimport TimelineItem from './src/timeline-item.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTimeline: SFCWithInstall<typeof Timeline> & {\n  TimelineItem: typeof TimelineItem\n} = withInstall(Timeline, {\n  TimelineItem,\n})\nexport default ElTimeline\nexport const ElTimelineItem: SFCWithInstall<typeof TimelineItem> =\n  withNoopInstall(TimelineItem)\n\nexport * from './src/timeline'\nexport * from './src/timeline-item'\nexport * from './src/tokens'\n","import { isNil } from 'lodash-unified'\nimport {\n  buildProps,\n  definePropType,\n  isArray,\n  mutable,\n} from '@pit-element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\nimport type { ExtractPublicPropTypes, h as H, VNode } from 'vue'\nimport type Transfer from './transfer.vue'\n\nexport type TransferKey = string | number\nexport type TransferDirection = 'left' | 'right'\n\nexport type TransferDataItem = Record<string, any>\n\nexport type renderContent = (\n  h: typeof H,\n  option: TransferDataItem\n) => VNode | VNode[]\n\nexport interface TransferFormat {\n  noChecked?: string\n  hasChecked?: string\n}\n\nexport interface TransferPropsAlias {\n  label?: string\n  key?: string\n  disabled?: string\n}\n\nexport interface TransferCheckedState {\n  leftChecked: TransferKey[]\n  rightChecked: TransferKey[]\n}\n\nexport const LEFT_CHECK_CHANGE_EVENT = 'left-check-change'\nexport const RIGHT_CHECK_CHANGE_EVENT = 'right-check-change'\n\nexport interface TransferProps {\n  /**\n   * @description data source\n   */\n  data?: TransferDataItem[]\n  /**\n   * @description custom list titles\n   */\n  titles?: [string, string]\n  /**\n   * @description custom button texts\n   */\n  buttonTexts?: [string, string]\n  /**\n   * @description placeholder for the filter input\n   */\n  filterPlaceholder?: string\n  /**\n   * @description custom filter method\n   */\n  filterMethod?: (query: string, item: TransferDataItem) => boolean\n  /**\n   * @description key array of initially checked data items of the left list\n   */\n  leftDefaultChecked?: TransferKey[]\n  /**\n   * @description key array of initially checked data items of the right list\n   */\n  rightDefaultChecked?: TransferKey[]\n  /**\n   * @description custom render function for data items\n   */\n  renderContent?: renderContent\n  /**\n   * @description binding value\n   */\n  modelValue?: TransferKey[]\n  /**\n   * @description texts for checking status in list header\n   */\n  format?: TransferFormat\n  /**\n   * @description whether Transfer is filterable\n   */\n  filterable?: boolean\n  /**\n   * @description prop aliases for data source\n   */\n  props?: TransferPropsAlias\n  /**\n   * @description order strategy for elements in the target list. If set to `original`, the elements will keep the same order as the data source. If set to `push`, the newly added elements will be pushed to the bottom. If set to `unshift`, the newly added elements will be inserted on the top\n   */\n  targetOrder?: 'original' | 'push' | 'unshift'\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TransferProps` instead.\n */\nexport const transferProps = buildProps({\n  /**\n   * @description data source\n   */\n  data: {\n    type: definePropType<TransferDataItem[]>(Array),\n    default: () => [],\n  },\n  /**\n   * @description custom list titles\n   */\n  titles: {\n    type: definePropType<[string, string]>(Array),\n    default: () => [],\n  },\n  /**\n   * @description custom button texts\n   */\n  buttonTexts: {\n    type: definePropType<[string, string]>(Array),\n    default: () => [],\n  },\n  /**\n   * @description placeholder for the filter input\n   */\n  filterPlaceholder: String,\n  /**\n   * @description custom filter method\n   */\n  filterMethod: {\n    type: definePropType<(query: string, item: TransferDataItem) => boolean>(\n      Function\n    ),\n  },\n  /**\n   * @description key array of initially checked data items of the left list\n   */\n  leftDefaultChecked: {\n    type: definePropType<TransferKey[]>(Array),\n    default: () => [],\n  },\n  /**\n   * @description key array of initially checked data items of the right list\n   */\n  rightDefaultChecked: {\n    type: definePropType<TransferKey[]>(Array),\n    default: () => [],\n  },\n  /**\n   * @description custom render function for data items\n   */\n  renderContent: {\n    type: definePropType<renderContent>(Function),\n  },\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<TransferKey[]>(Array),\n    default: () => [],\n  },\n  /**\n   * @description texts for checking status in list header\n   */\n  format: {\n    type: definePropType<TransferFormat>(Object),\n    default: () => ({}),\n  },\n  /**\n   * @description whether Transfer is filterable\n   */\n  filterable: Boolean,\n  /**\n   * @description prop aliases for data source\n   */\n  props: {\n    type: definePropType<TransferPropsAlias>(Object),\n    default: () =>\n      mutable({\n        label: 'label',\n        key: 'key',\n        disabled: 'disabled',\n      } as const),\n  },\n  /**\n   * @description order strategy for elements in the target list. If set to `original`, the elements will keep the same order as the data source. If set to `push`, the newly added elements will be pushed to the bottom. If set to `unshift`, the newly added elements will be inserted on the top\n   */\n  targetOrder: {\n    type: String,\n    values: ['original', 'push', 'unshift'],\n    default: 'original',\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `TransferProps` instead.\n */\nexport type TransferPropsPublic = ExtractPublicPropTypes<typeof transferProps>\n\nexport const transferCheckedChangeFn = (\n  value: TransferKey[],\n  movedKeys?: TransferKey[]\n) => [value, movedKeys].every(isArray) || (isArray(value) && isNil(movedKeys))\n\nexport const transferEmits = {\n  [CHANGE_EVENT]: (\n    value: TransferKey[],\n    direction: TransferDirection,\n    movedKeys: TransferKey[]\n  ) =>\n    [value, movedKeys].every(isArray) && ['left', 'right'].includes(direction),\n  [UPDATE_MODEL_EVENT]: (value: TransferKey[]) => isArray(value),\n  [LEFT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn,\n  [RIGHT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn,\n}\nexport type TransferEmits = typeof transferEmits\n\nexport type TransferInstance = InstanceType<typeof Transfer> & unknown\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { transferCheckedChangeFn, transferProps } from './transfer'\n\nimport type { ExtractPublicPropTypes, VNode } from 'vue'\nimport type { TransferDataItem, TransferKey, TransferProps } from './transfer'\nimport type TransferPanel from './transfer-panel.vue'\n\nexport interface TransferPanelState {\n  checked: TransferKey[]\n  allChecked: boolean\n  query: string\n  checkChangeByUser: boolean\n}\n\nexport const CHECKED_CHANGE_EVENT = 'checked-change'\n\nexport interface TransferPanelProps {\n  data?: TransferProps['data']\n  optionRender?: (option: TransferDataItem) => VNode | VNode[]\n  placeholder?: string\n  title?: string\n  filterable?: boolean\n  format?: TransferProps['format']\n  filterMethod?: TransferProps['filterMethod']\n  defaultChecked?: TransferProps['leftDefaultChecked']\n  props?: TransferProps['props']\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TransferPanelProps` instead.\n */\nexport const transferPanelProps = buildProps({\n  data: transferProps.data,\n  optionRender: {\n    type: definePropType<(option: TransferDataItem) => VNode | VNode[]>(\n      Function\n    ),\n  },\n  placeholder: String,\n  title: String,\n  filterable: Boolean,\n  format: transferProps.format,\n  filterMethod: transferProps.filterMethod,\n  defaultChecked: transferProps.leftDefaultChecked,\n  props: transferProps.props,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `TransferPanelProps` instead.\n */\nexport type TransferPanelPropsPublic = ExtractPublicPropTypes<\n  typeof transferPanelProps\n>\n\nexport const transferPanelEmits = {\n  [CHECKED_CHANGE_EVENT]: transferCheckedChangeFn,\n}\nexport type TransferPanelEmits = typeof transferPanelEmits\n\nexport type TransferPanelInstance = InstanceType<typeof TransferPanel> & unknown\n","import { computed } from 'vue'\n\nimport type { TransferProps, TransferPropsAlias } from '../transfer'\n\nexport const usePropsAlias = (props: TransferProps) => {\n  const initProps: Required<TransferPropsAlias> = {\n    label: 'label',\n    key: 'key',\n    disabled: 'disabled',\n  }\n\n  return computed(() => ({\n    ...initProps,\n    ...props.props,\n  }))\n}\n","import { computed, watch } from 'vue'\nimport { isFunction } from '@pit-element-plus/utils'\nimport { CHECKED_CHANGE_EVENT } from '../transfer-panel'\nimport { usePropsAlias } from './use-props-alias'\n\nimport type { SetupContext } from 'vue'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\nimport type { TransferKey } from '../transfer'\nimport type {\n  TransferPanelEmits,\n  TransferPanelProps,\n  TransferPanelState,\n} from '../transfer-panel'\n\nexport const useCheck = (\n  props: Required<\n    Pick<TransferPanelProps, 'data' | 'format' | 'defaultChecked'>\n  > & { filterMethod: TransferPanelProps['filterMethod'] },\n  panelState: TransferPanelState,\n  emit: SetupContext<TransferPanelEmits>['emit']\n) => {\n  const propsAlias = usePropsAlias(props)\n\n  const filteredData = computed(() => {\n    return props.data.filter((item) => {\n      if (isFunction(props.filterMethod)) {\n        return props.filterMethod(panelState.query, item)\n      } else {\n        const label = String(\n          item[propsAlias.value.label] || item[propsAlias.value.key]\n        )\n        return label.toLowerCase().includes(panelState.query.toLowerCase())\n      }\n    })\n  })\n\n  const checkableData = computed(() =>\n    filteredData.value.filter((item) => !item[propsAlias.value.disabled])\n  )\n\n  const checkedSummary = computed(() => {\n    const checkedLength = panelState.checked.length\n    const dataLength = props.data.length\n    const { noChecked, hasChecked } = props.format\n\n    if (noChecked && hasChecked) {\n      return checkedLength > 0\n        ? hasChecked\n            .replace(/\\${checked}/g, checkedLength.toString())\n            .replace(/\\${total}/g, dataLength.toString())\n        : noChecked.replace(/\\${total}/g, dataLength.toString())\n    } else {\n      return `${checkedLength}/${dataLength}`\n    }\n  })\n\n  const isIndeterminate = computed(() => {\n    const checkedLength = panelState.checked.length\n    return checkedLength > 0 && checkedLength < checkableData.value.length\n  })\n\n  const updateAllChecked = () => {\n    const checkableDataKeys = checkableData.value.map(\n      (item) => item[propsAlias.value.key]\n    )\n    panelState.allChecked =\n      checkableDataKeys.length > 0 &&\n      checkableDataKeys.every((item) => panelState.checked.includes(item))\n  }\n\n  const handleAllCheckedChange = (value: CheckboxValueType) => {\n    panelState.checked = value\n      ? checkableData.value.map((item) => item[propsAlias.value.key])\n      : []\n  }\n\n  watch(\n    () => panelState.checked,\n    (val, oldVal) => {\n      updateAllChecked()\n\n      if (panelState.checkChangeByUser) {\n        const movedKeys = val\n          .concat(oldVal)\n          .filter((v) => !val.includes(v) || !oldVal.includes(v))\n        emit(CHECKED_CHANGE_EVENT, val, movedKeys)\n      } else {\n        emit(CHECKED_CHANGE_EVENT, val)\n        panelState.checkChangeByUser = true\n      }\n    }\n  )\n\n  watch(checkableData, () => {\n    updateAllChecked()\n  })\n\n  watch(\n    () => props.data,\n    () => {\n      const checked: TransferKey[] = []\n      const filteredDataKeys = filteredData.value.map(\n        (item) => item[propsAlias.value.key]\n      )\n      panelState.checked.forEach((item) => {\n        if (filteredDataKeys.includes(item)) {\n          checked.push(item)\n        }\n      })\n      panelState.checkChangeByUser = false\n      panelState.checked = checked\n    }\n  )\n\n  watch(\n    () => props.defaultChecked,\n    (val, oldVal) => {\n      if (\n        oldVal &&\n        val.length === oldVal.length &&\n        val.every((item) => oldVal.includes(item))\n      )\n        return\n\n      const checked: TransferKey[] = []\n      const checkableDataKeys = checkableData.value.map(\n        (item) => item[propsAlias.value.key]\n      )\n\n      val.forEach((item) => {\n        if (checkableDataKeys.includes(item)) {\n          checked.push(item)\n        }\n      })\n      panelState.checkChangeByUser = false\n      panelState.checked = checked\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  return {\n    filteredData,\n    checkableData,\n    checkedSummary,\n    isIndeterminate,\n    updateAllChecked,\n    handleAllCheckedChange,\n  }\n}\n","import { LEFT_CHECK_CHANGE_EVENT, RIGHT_CHECK_CHANGE_EVENT } from '../transfer'\n\nimport type { SetupContext } from 'vue'\nimport type {\n  TransferCheckedState,\n  TransferEmits,\n  TransferKey,\n} from '../transfer'\n\nexport const useCheckedChange = (\n  checkedState: TransferCheckedState,\n  emit: SetupContext<TransferEmits>['emit']\n) => {\n  const onSourceCheckedChange = (\n    val: TransferKey[],\n    movedKeys?: TransferKey[]\n  ) => {\n    checkedState.leftChecked = val\n    if (!movedKeys) return\n    emit(LEFT_CHECK_CHANGE_EVENT, val, movedKeys)\n  }\n\n  const onTargetCheckedChange = (\n    val: TransferKey[],\n    movedKeys?: TransferKey[]\n  ) => {\n    checkedState.rightChecked = val\n    if (!movedKeys) return\n    emit(RIGHT_CHECK_CHANGE_EVENT, val, movedKeys)\n  }\n\n  return {\n    onSourceCheckedChange,\n    onTargetCheckedChange,\n  }\n}\n","import { computed } from 'vue'\nimport { usePropsAlias } from './use-props-alias'\n\nimport type { TransferDataItem, TransferKey, TransferProps } from '../transfer'\n\nexport const useComputedData = (\n  props: Required<\n    Omit<TransferProps, 'filterPlaceholder' | 'filterMethod' | 'renderContent'>\n  >\n) => {\n  const propsAlias = usePropsAlias(props)\n\n  const dataObj = computed(() =>\n    props.data.reduce((o, cur) => (o[cur[propsAlias.value.key]] = cur) && o, {})\n  )\n\n  const sourceData = computed(() =>\n    props.data.filter(\n      (item) => !props.modelValue.includes(item[propsAlias.value.key])\n    )\n  )\n\n  const targetData = computed(() => {\n    if (props.targetOrder === 'original') {\n      return props.data.filter((item) =>\n        props.modelValue.includes(item[propsAlias.value.key])\n      )\n    } else {\n      return props.modelValue.reduce(\n        (arr: TransferDataItem[], cur: TransferKey) => {\n          const val = dataObj.value[cur]\n          if (val) {\n            arr.push(val)\n          }\n          return arr\n        },\n        []\n      )\n    }\n  })\n\n  return {\n    sourceData,\n    targetData,\n  }\n}\n","import { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { usePropsAlias } from './use-props-alias'\n\nimport type { SetupContext } from 'vue'\nimport type {\n  TransferCheckedState,\n  TransferDataItem,\n  TransferDirection,\n  TransferEmits,\n  TransferKey,\n  TransferProps,\n} from '../transfer'\n\nexport const useMove = (\n  props: Required<\n    Omit<TransferProps, 'filterPlaceholder' | 'filterMethod' | 'renderContent'>\n  >,\n  checkedState: TransferCheckedState,\n  emit: SetupContext<TransferEmits>['emit']\n) => {\n  const propsAlias = usePropsAlias(props)\n\n  const _emit = (\n    value: TransferKey[],\n    direction: TransferDirection,\n    movedKeys: TransferKey[]\n  ) => {\n    emit(UPDATE_MODEL_EVENT, value)\n    emit(CHANGE_EVENT, value, direction, movedKeys)\n  }\n\n  const addToLeft = () => {\n    const currentValue = props.modelValue.slice()\n\n    checkedState.rightChecked.forEach((item) => {\n      const index = currentValue.indexOf(item)\n      if (index > -1) {\n        currentValue.splice(index, 1)\n      }\n    })\n    _emit(currentValue, 'left', checkedState.rightChecked)\n  }\n\n  const addToRight = () => {\n    let currentValue = props.modelValue.slice()\n\n    const itemsToBeMoved = props.data\n      .filter((item: TransferDataItem) => {\n        const itemKey = item[propsAlias.value.key]\n        return (\n          checkedState.leftChecked.includes(itemKey) &&\n          !props.modelValue.includes(itemKey)\n        )\n      })\n      .map((item) => item[propsAlias.value.key])\n\n    currentValue =\n      props.targetOrder === 'unshift'\n        ? itemsToBeMoved.concat(currentValue)\n        : currentValue.concat(itemsToBeMoved)\n\n    if (props.targetOrder === 'original') {\n      currentValue = props.data\n        .filter((item) => currentValue.includes(item[propsAlias.value.key]))\n        .map((item) => item[propsAlias.value.key])\n    }\n\n    _emit(currentValue, 'right', checkedState.leftChecked)\n  }\n\n  return {\n    addToLeft,\n    addToRight,\n  }\n}\n","<template>\n  <div :class=\"ns.b('panel')\">\n    <p :class=\"ns.be('panel', 'header')\">\n      <el-checkbox\n        v-model=\"allChecked\"\n        :indeterminate=\"isIndeterminate\"\n        :validate-event=\"false\"\n        @change=\"handleAllCheckedChange\"\n      >\n        <span :class=\"ns.be('panel', 'header-title')\">{{ title }}</span>\n        <span :class=\"ns.be('panel', 'header-count')\">\n          {{ checkedSummary }}\n        </span>\n      </el-checkbox>\n    </p>\n\n    <div :class=\"[ns.be('panel', 'body'), ns.is('with-footer', hasFooter)]\">\n      <el-input\n        v-if=\"filterable\"\n        v-model=\"query\"\n        :class=\"ns.be('panel', 'filter')\"\n        size=\"default\"\n        :placeholder=\"placeholder\"\n        :prefix-icon=\"Search\"\n        clearable\n        :validate-event=\"false\"\n      />\n      <el-checkbox-group\n        v-show=\"!hasNoMatch && !isEmpty(data)\"\n        v-model=\"checked\"\n        :validate-event=\"false\"\n        :class=\"[ns.is('filterable', filterable), ns.be('panel', 'list')]\"\n      >\n        <el-checkbox\n          v-for=\"item in filteredData\"\n          :key=\"item[propsAlias.key]\"\n          :class=\"ns.be('panel', 'item')\"\n          :value=\"item[propsAlias.key]\"\n          :disabled=\"item[propsAlias.disabled]\"\n          :validate-event=\"false\"\n        >\n          <option-content :option=\"optionRender?.(item)\" />\n        </el-checkbox>\n      </el-checkbox-group>\n      <div\n        v-show=\"hasNoMatch || isEmpty(data)\"\n        :class=\"ns.be('panel', 'empty')\"\n      >\n        <slot name=\"empty\">\n          {{ hasNoMatch ? t('el.transfer.noMatch') : t('el.transfer.noData') }}\n        </slot>\n      </div>\n    </div>\n    <p v-if=\"hasFooter\" :class=\"ns.be('panel', 'footer')\">\n      <slot />\n    </p>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, toRefs, useSlots } from 'vue'\nimport { isEmpty, mutable } from '@pit-element-plus/utils'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  ElCheckbox,\n  ElCheckboxGroup,\n} from '@pit-element-plus/components/checkbox'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { Search } from 'pit-element-icons'\nimport { transferPanelEmits } from './transfer-panel'\nimport { useCheck, usePropsAlias } from './composables'\n\nimport type { VNode } from 'vue'\nimport type { TransferPanelProps, TransferPanelState } from './transfer-panel'\n\ndefineOptions({\n  name: 'ElTransferPanel',\n})\n\nconst props = withDefaults(defineProps<TransferPanelProps>(), {\n  data: () => [],\n  format: () => ({}),\n  defaultChecked: () => [],\n  props: () =>\n    mutable({\n      label: 'label',\n      key: 'key',\n      disabled: 'disabled',\n    }),\n})\nconst emit = defineEmits(transferPanelEmits)\nconst slots = useSlots()\n\nconst OptionContent = ({ option }: { option?: VNode | VNode[] }) => option\n\nconst { t } = useLocale()\nconst ns = useNamespace('transfer')\n\nconst panelState = reactive<TransferPanelState>({\n  checked: [],\n  allChecked: false,\n  query: '',\n  checkChangeByUser: true,\n})\n\nconst propsAlias = usePropsAlias(props)\n\nconst {\n  filteredData,\n  checkedSummary,\n  isIndeterminate,\n  handleAllCheckedChange,\n} = useCheck(props, panelState, emit)\n\nconst hasNoMatch = computed(\n  () => !isEmpty(panelState.query) && isEmpty(filteredData.value)\n)\n\nconst hasFooter = computed(() => !isEmpty(slots.default!()[0].children))\n\nconst { checked, allChecked, query } = toRefs(panelState)\n\ndefineExpose({\n  /** @description filter keyword */\n  query,\n})\n</script>\n","<template>\n  <div :class=\"ns.b('panel')\">\n    <p :class=\"ns.be('panel', 'header')\">\n      <el-checkbox\n        v-model=\"allChecked\"\n        :indeterminate=\"isIndeterminate\"\n        :validate-event=\"false\"\n        @change=\"handleAllCheckedChange\"\n      >\n        <span :class=\"ns.be('panel', 'header-title')\">{{ title }}</span>\n        <span :class=\"ns.be('panel', 'header-count')\">\n          {{ checkedSummary }}\n        </span>\n      </el-checkbox>\n    </p>\n\n    <div :class=\"[ns.be('panel', 'body'), ns.is('with-footer', hasFooter)]\">\n      <el-input\n        v-if=\"filterable\"\n        v-model=\"query\"\n        :class=\"ns.be('panel', 'filter')\"\n        size=\"default\"\n        :placeholder=\"placeholder\"\n        :prefix-icon=\"Search\"\n        clearable\n        :validate-event=\"false\"\n      />\n      <el-checkbox-group\n        v-show=\"!hasNoMatch && !isEmpty(data)\"\n        v-model=\"checked\"\n        :validate-event=\"false\"\n        :class=\"[ns.is('filterable', filterable), ns.be('panel', 'list')]\"\n      >\n        <el-checkbox\n          v-for=\"item in filteredData\"\n          :key=\"item[propsAlias.key]\"\n          :class=\"ns.be('panel', 'item')\"\n          :value=\"item[propsAlias.key]\"\n          :disabled=\"item[propsAlias.disabled]\"\n          :validate-event=\"false\"\n        >\n          <option-content :option=\"optionRender?.(item)\" />\n        </el-checkbox>\n      </el-checkbox-group>\n      <div\n        v-show=\"hasNoMatch || isEmpty(data)\"\n        :class=\"ns.be('panel', 'empty')\"\n      >\n        <slot name=\"empty\">\n          {{ hasNoMatch ? t('el.transfer.noMatch') : t('el.transfer.noData') }}\n        </slot>\n      </div>\n    </div>\n    <p v-if=\"hasFooter\" :class=\"ns.be('panel', 'footer')\">\n      <slot />\n    </p>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, toRefs, useSlots } from 'vue'\nimport { isEmpty, mutable } from '@pit-element-plus/utils'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  ElCheckbox,\n  ElCheckboxGroup,\n} from '@pit-element-plus/components/checkbox'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { Search } from 'pit-element-icons'\nimport { transferPanelEmits } from './transfer-panel'\nimport { useCheck, usePropsAlias } from './composables'\n\nimport type { VNode } from 'vue'\nimport type { TransferPanelProps, TransferPanelState } from './transfer-panel'\n\ndefineOptions({\n  name: 'ElTransferPanel',\n})\n\nconst props = withDefaults(defineProps<TransferPanelProps>(), {\n  data: () => [],\n  format: () => ({}),\n  defaultChecked: () => [],\n  props: () =>\n    mutable({\n      label: 'label',\n      key: 'key',\n      disabled: 'disabled',\n    }),\n})\nconst emit = defineEmits(transferPanelEmits)\nconst slots = useSlots()\n\nconst OptionContent = ({ option }: { option?: VNode | VNode[] }) => option\n\nconst { t } = useLocale()\nconst ns = useNamespace('transfer')\n\nconst panelState = reactive<TransferPanelState>({\n  checked: [],\n  allChecked: false,\n  query: '',\n  checkChangeByUser: true,\n})\n\nconst propsAlias = usePropsAlias(props)\n\nconst {\n  filteredData,\n  checkedSummary,\n  isIndeterminate,\n  handleAllCheckedChange,\n} = useCheck(props, panelState, emit)\n\nconst hasNoMatch = computed(\n  () => !isEmpty(panelState.query) && isEmpty(filteredData.value)\n)\n\nconst hasFooter = computed(() => !isEmpty(slots.default!()[0].children))\n\nconst { checked, allChecked, query } = toRefs(panelState)\n\ndefineExpose({\n  /** @description filter keyword */\n  query,\n})\n</script>\n","<template>\n  <div :class=\"ns.b('panel')\">\n    <p :class=\"ns.be('panel', 'header')\">\n      <el-checkbox\n        v-model=\"allChecked\"\n        :indeterminate=\"isIndeterminate\"\n        :validate-event=\"false\"\n        @change=\"handleAllCheckedChange\"\n      >\n        <span :class=\"ns.be('panel', 'header-title')\">{{ title }}</span>\n        <span :class=\"ns.be('panel', 'header-count')\">\n          {{ checkedSummary }}\n        </span>\n      </el-checkbox>\n    </p>\n\n    <div :class=\"[ns.be('panel', 'body'), ns.is('with-footer', hasFooter)]\">\n      <el-input\n        v-if=\"filterable\"\n        v-model=\"query\"\n        :class=\"ns.be('panel', 'filter')\"\n        size=\"default\"\n        :placeholder=\"placeholder\"\n        :prefix-icon=\"Search\"\n        clearable\n        :validate-event=\"false\"\n      />\n      <el-checkbox-group\n        v-show=\"!hasNoMatch && !isEmpty(data)\"\n        v-model=\"checked\"\n        :validate-event=\"false\"\n        :class=\"[ns.is('filterable', filterable), ns.be('panel', 'list')]\"\n      >\n        <el-checkbox\n          v-for=\"item in filteredData\"\n          :key=\"item[propsAlias.key]\"\n          :class=\"ns.be('panel', 'item')\"\n          :value=\"item[propsAlias.key]\"\n          :disabled=\"item[propsAlias.disabled]\"\n          :validate-event=\"false\"\n        >\n          <option-content :option=\"optionRender?.(item)\" />\n        </el-checkbox>\n      </el-checkbox-group>\n      <div\n        v-show=\"hasNoMatch || isEmpty(data)\"\n        :class=\"ns.be('panel', 'empty')\"\n      >\n        <slot name=\"empty\">\n          {{ hasNoMatch ? t('el.transfer.noMatch') : t('el.transfer.noData') }}\n        </slot>\n      </div>\n    </div>\n    <p v-if=\"hasFooter\" :class=\"ns.be('panel', 'footer')\">\n      <slot />\n    </p>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, toRefs, useSlots } from 'vue'\nimport { isEmpty, mutable } from '@pit-element-plus/utils'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  ElCheckbox,\n  ElCheckboxGroup,\n} from '@pit-element-plus/components/checkbox'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { Search } from 'pit-element-icons'\nimport { transferPanelEmits } from './transfer-panel'\nimport { useCheck, usePropsAlias } from './composables'\n\nimport type { VNode } from 'vue'\nimport type { TransferPanelProps, TransferPanelState } from './transfer-panel'\n\ndefineOptions({\n  name: 'ElTransferPanel',\n})\n\nconst props = withDefaults(defineProps<TransferPanelProps>(), {\n  data: () => [],\n  format: () => ({}),\n  defaultChecked: () => [],\n  props: () =>\n    mutable({\n      label: 'label',\n      key: 'key',\n      disabled: 'disabled',\n    }),\n})\nconst emit = defineEmits(transferPanelEmits)\nconst slots = useSlots()\n\nconst OptionContent = ({ option }: { option?: VNode | VNode[] }) => option\n\nconst { t } = useLocale()\nconst ns = useNamespace('transfer')\n\nconst panelState = reactive<TransferPanelState>({\n  checked: [],\n  allChecked: false,\n  query: '',\n  checkChangeByUser: true,\n})\n\nconst propsAlias = usePropsAlias(props)\n\nconst {\n  filteredData,\n  checkedSummary,\n  isIndeterminate,\n  handleAllCheckedChange,\n} = useCheck(props, panelState, emit)\n\nconst hasNoMatch = computed(\n  () => !isEmpty(panelState.query) && isEmpty(filteredData.value)\n)\n\nconst hasFooter = computed(() => !isEmpty(slots.default!()[0].children))\n\nconst { checked, allChecked, query } = toRefs(panelState)\n\ndefineExpose({\n  /** @description filter keyword */\n  query,\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <transfer-panel\n      ref=\"leftPanel\"\n      :data=\"sourceData\"\n      :option-render=\"optionRender\"\n      :placeholder=\"panelFilterPlaceholder\"\n      :title=\"leftPanelTitle\"\n      :filterable=\"filterable\"\n      :format=\"format\"\n      :filter-method=\"filterMethod\"\n      :default-checked=\"leftDefaultChecked\"\n      :props=\"props.props\"\n      @checked-change=\"onSourceCheckedChange\"\n    >\n      <template #empty>\n        <slot name=\"left-empty\" />\n      </template>\n      <slot name=\"left-footer\" />\n    </transfer-panel>\n    <div :class=\"ns.e('buttons')\">\n      <el-button\n        type=\"primary\"\n        :class=\"[ns.e('button'), ns.is('with-texts', hasButtonTexts)]\"\n        :disabled=\"isEmpty(checkedState.rightChecked)\"\n        @click=\"addToLeft\"\n      >\n        <el-icon><arrow-left /></el-icon>\n        <span v-if=\"!isUndefined(buttonTexts[0])\">{{ buttonTexts[0] }}</span>\n      </el-button>\n      <el-button\n        type=\"primary\"\n        :class=\"[ns.e('button'), ns.is('with-texts', hasButtonTexts)]\"\n        :disabled=\"isEmpty(checkedState.leftChecked)\"\n        @click=\"addToRight\"\n      >\n        <span v-if=\"!isUndefined(buttonTexts[1])\">{{ buttonTexts[1] }}</span>\n        <el-icon><arrow-right /></el-icon>\n      </el-button>\n    </div>\n    <transfer-panel\n      ref=\"rightPanel\"\n      :data=\"targetData\"\n      :option-render=\"optionRender\"\n      :placeholder=\"panelFilterPlaceholder\"\n      :filterable=\"filterable\"\n      :format=\"format\"\n      :filter-method=\"filterMethod\"\n      :title=\"rightPanelTitle\"\n      :default-checked=\"rightDefaultChecked\"\n      :props=\"props.props\"\n      @checked-change=\"onTargetCheckedChange\"\n    >\n      <template #empty>\n        <slot name=\"right-empty\" />\n      </template>\n      <slot name=\"right-footer\" />\n    </transfer-panel>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Comment, computed, h, reactive, ref, useSlots, watch } from 'vue'\nimport { debugWarn, isEmpty, isUndefined } from '@pit-element-plus/utils'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useFormItem } from '@pit-element-plus/components/form'\nimport { ArrowLeft, ArrowRight } from 'pit-element-icons'\nimport { transferEmits } from './transfer'\nimport {\n  useCheckedChange,\n  useComputedData,\n  useMove,\n  usePropsAlias,\n} from './composables'\nimport TransferPanel from './transfer-panel.vue'\n\nimport type {\n  TransferCheckedState,\n  TransferDataItem,\n  TransferDirection,\n  TransferProps,\n} from './transfer'\nimport type { TransferPanelInstance } from './transfer-panel'\n\ndefineOptions({\n  name: 'ElTransfer',\n})\n\nconst props = withDefaults(defineProps<TransferProps>(), {\n  data: () => [],\n  titles: () => [] as unknown as [string, string],\n  buttonTexts: () => [] as unknown as [string, string],\n  leftDefaultChecked: () => [],\n  rightDefaultChecked: () => [],\n  modelValue: () => [],\n  format: () => ({}),\n  props: () => ({\n    label: 'label',\n    key: 'key',\n    disabled: 'disabled',\n  }),\n  targetOrder: 'original',\n  validateEvent: true,\n})\nconst emit = defineEmits(transferEmits)\nconst slots = useSlots()\n\nconst { t } = useLocale()\nconst ns = useNamespace('transfer')\nconst { formItem } = useFormItem()\n\nconst checkedState = reactive<TransferCheckedState>({\n  leftChecked: [],\n  rightChecked: [],\n})\n\nconst propsAlias = usePropsAlias(props)\n\nconst { sourceData, targetData } = useComputedData(props)\n\nconst { onSourceCheckedChange, onTargetCheckedChange } = useCheckedChange(\n  checkedState,\n  emit\n)\n\nconst { addToLeft, addToRight } = useMove(props, checkedState, emit)\n\nconst leftPanel = ref<TransferPanelInstance>()\nconst rightPanel = ref<TransferPanelInstance>()\n\nconst clearQuery = (which: TransferDirection) => {\n  switch (which) {\n    case 'left':\n      leftPanel.value!.query = ''\n      break\n    case 'right':\n      rightPanel.value!.query = ''\n      break\n  }\n}\n\nconst hasButtonTexts = computed(() => props.buttonTexts.length === 2)\n\nconst leftPanelTitle = computed(\n  () => props.titles[0] || t('el.transfer.titles.0')\n)\n\nconst rightPanelTitle = computed(\n  () => props.titles[1] || t('el.transfer.titles.1')\n)\n\nconst panelFilterPlaceholder = computed(\n  () => props.filterPlaceholder || t('el.transfer.filterPlaceholder')\n)\n\nwatch(\n  () => props.modelValue,\n  () => {\n    if (props.validateEvent) {\n      formItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n\nconst optionRender = computed(() => (option: TransferDataItem) => {\n  if (props.renderContent) return props.renderContent(h, option)\n\n  const defaultSlotVNodes = (slots.default?.({ option }) || []).filter(\n    (node) => node.type !== Comment\n  )\n  if (defaultSlotVNodes.length) {\n    return defaultSlotVNodes\n  }\n\n  return h(\n    'span',\n    option[propsAlias.value.label] || option[propsAlias.value.key]\n  )\n})\n\ndefineExpose({\n  /** @description clear the filter keyword of a certain panel */\n  clearQuery,\n  /** @description left panel ref */\n  leftPanel,\n  /** @description right panel ref */\n  rightPanel,\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <transfer-panel\n      ref=\"leftPanel\"\n      :data=\"sourceData\"\n      :option-render=\"optionRender\"\n      :placeholder=\"panelFilterPlaceholder\"\n      :title=\"leftPanelTitle\"\n      :filterable=\"filterable\"\n      :format=\"format\"\n      :filter-method=\"filterMethod\"\n      :default-checked=\"leftDefaultChecked\"\n      :props=\"props.props\"\n      @checked-change=\"onSourceCheckedChange\"\n    >\n      <template #empty>\n        <slot name=\"left-empty\" />\n      </template>\n      <slot name=\"left-footer\" />\n    </transfer-panel>\n    <div :class=\"ns.e('buttons')\">\n      <el-button\n        type=\"primary\"\n        :class=\"[ns.e('button'), ns.is('with-texts', hasButtonTexts)]\"\n        :disabled=\"isEmpty(checkedState.rightChecked)\"\n        @click=\"addToLeft\"\n      >\n        <el-icon><arrow-left /></el-icon>\n        <span v-if=\"!isUndefined(buttonTexts[0])\">{{ buttonTexts[0] }}</span>\n      </el-button>\n      <el-button\n        type=\"primary\"\n        :class=\"[ns.e('button'), ns.is('with-texts', hasButtonTexts)]\"\n        :disabled=\"isEmpty(checkedState.leftChecked)\"\n        @click=\"addToRight\"\n      >\n        <span v-if=\"!isUndefined(buttonTexts[1])\">{{ buttonTexts[1] }}</span>\n        <el-icon><arrow-right /></el-icon>\n      </el-button>\n    </div>\n    <transfer-panel\n      ref=\"rightPanel\"\n      :data=\"targetData\"\n      :option-render=\"optionRender\"\n      :placeholder=\"panelFilterPlaceholder\"\n      :filterable=\"filterable\"\n      :format=\"format\"\n      :filter-method=\"filterMethod\"\n      :title=\"rightPanelTitle\"\n      :default-checked=\"rightDefaultChecked\"\n      :props=\"props.props\"\n      @checked-change=\"onTargetCheckedChange\"\n    >\n      <template #empty>\n        <slot name=\"right-empty\" />\n      </template>\n      <slot name=\"right-footer\" />\n    </transfer-panel>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Comment, computed, h, reactive, ref, useSlots, watch } from 'vue'\nimport { debugWarn, isEmpty, isUndefined } from '@pit-element-plus/utils'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useFormItem } from '@pit-element-plus/components/form'\nimport { ArrowLeft, ArrowRight } from 'pit-element-icons'\nimport { transferEmits } from './transfer'\nimport {\n  useCheckedChange,\n  useComputedData,\n  useMove,\n  usePropsAlias,\n} from './composables'\nimport TransferPanel from './transfer-panel.vue'\n\nimport type {\n  TransferCheckedState,\n  TransferDataItem,\n  TransferDirection,\n  TransferProps,\n} from './transfer'\nimport type { TransferPanelInstance } from './transfer-panel'\n\ndefineOptions({\n  name: 'ElTransfer',\n})\n\nconst props = withDefaults(defineProps<TransferProps>(), {\n  data: () => [],\n  titles: () => [] as unknown as [string, string],\n  buttonTexts: () => [] as unknown as [string, string],\n  leftDefaultChecked: () => [],\n  rightDefaultChecked: () => [],\n  modelValue: () => [],\n  format: () => ({}),\n  props: () => ({\n    label: 'label',\n    key: 'key',\n    disabled: 'disabled',\n  }),\n  targetOrder: 'original',\n  validateEvent: true,\n})\nconst emit = defineEmits(transferEmits)\nconst slots = useSlots()\n\nconst { t } = useLocale()\nconst ns = useNamespace('transfer')\nconst { formItem } = useFormItem()\n\nconst checkedState = reactive<TransferCheckedState>({\n  leftChecked: [],\n  rightChecked: [],\n})\n\nconst propsAlias = usePropsAlias(props)\n\nconst { sourceData, targetData } = useComputedData(props)\n\nconst { onSourceCheckedChange, onTargetCheckedChange } = useCheckedChange(\n  checkedState,\n  emit\n)\n\nconst { addToLeft, addToRight } = useMove(props, checkedState, emit)\n\nconst leftPanel = ref<TransferPanelInstance>()\nconst rightPanel = ref<TransferPanelInstance>()\n\nconst clearQuery = (which: TransferDirection) => {\n  switch (which) {\n    case 'left':\n      leftPanel.value!.query = ''\n      break\n    case 'right':\n      rightPanel.value!.query = ''\n      break\n  }\n}\n\nconst hasButtonTexts = computed(() => props.buttonTexts.length === 2)\n\nconst leftPanelTitle = computed(\n  () => props.titles[0] || t('el.transfer.titles.0')\n)\n\nconst rightPanelTitle = computed(\n  () => props.titles[1] || t('el.transfer.titles.1')\n)\n\nconst panelFilterPlaceholder = computed(\n  () => props.filterPlaceholder || t('el.transfer.filterPlaceholder')\n)\n\nwatch(\n  () => props.modelValue,\n  () => {\n    if (props.validateEvent) {\n      formItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n\nconst optionRender = computed(() => (option: TransferDataItem) => {\n  if (props.renderContent) return props.renderContent(h, option)\n\n  const defaultSlotVNodes = (slots.default?.({ option }) || []).filter(\n    (node) => node.type !== Comment\n  )\n  if (defaultSlotVNodes.length) {\n    return defaultSlotVNodes\n  }\n\n  return h(\n    'span',\n    option[propsAlias.value.label] || option[propsAlias.value.key]\n  )\n})\n\ndefineExpose({\n  /** @description clear the filter keyword of a certain panel */\n  clearQuery,\n  /** @description left panel ref */\n  leftPanel,\n  /** @description right panel ref */\n  rightPanel,\n})\n</script>\n","<template>\n  <div :class=\"ns.b()\">\n    <transfer-panel\n      ref=\"leftPanel\"\n      :data=\"sourceData\"\n      :option-render=\"optionRender\"\n      :placeholder=\"panelFilterPlaceholder\"\n      :title=\"leftPanelTitle\"\n      :filterable=\"filterable\"\n      :format=\"format\"\n      :filter-method=\"filterMethod\"\n      :default-checked=\"leftDefaultChecked\"\n      :props=\"props.props\"\n      @checked-change=\"onSourceCheckedChange\"\n    >\n      <template #empty>\n        <slot name=\"left-empty\" />\n      </template>\n      <slot name=\"left-footer\" />\n    </transfer-panel>\n    <div :class=\"ns.e('buttons')\">\n      <el-button\n        type=\"primary\"\n        :class=\"[ns.e('button'), ns.is('with-texts', hasButtonTexts)]\"\n        :disabled=\"isEmpty(checkedState.rightChecked)\"\n        @click=\"addToLeft\"\n      >\n        <el-icon><arrow-left /></el-icon>\n        <span v-if=\"!isUndefined(buttonTexts[0])\">{{ buttonTexts[0] }}</span>\n      </el-button>\n      <el-button\n        type=\"primary\"\n        :class=\"[ns.e('button'), ns.is('with-texts', hasButtonTexts)]\"\n        :disabled=\"isEmpty(checkedState.leftChecked)\"\n        @click=\"addToRight\"\n      >\n        <span v-if=\"!isUndefined(buttonTexts[1])\">{{ buttonTexts[1] }}</span>\n        <el-icon><arrow-right /></el-icon>\n      </el-button>\n    </div>\n    <transfer-panel\n      ref=\"rightPanel\"\n      :data=\"targetData\"\n      :option-render=\"optionRender\"\n      :placeholder=\"panelFilterPlaceholder\"\n      :filterable=\"filterable\"\n      :format=\"format\"\n      :filter-method=\"filterMethod\"\n      :title=\"rightPanelTitle\"\n      :default-checked=\"rightDefaultChecked\"\n      :props=\"props.props\"\n      @checked-change=\"onTargetCheckedChange\"\n    >\n      <template #empty>\n        <slot name=\"right-empty\" />\n      </template>\n      <slot name=\"right-footer\" />\n    </transfer-panel>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Comment, computed, h, reactive, ref, useSlots, watch } from 'vue'\nimport { debugWarn, isEmpty, isUndefined } from '@pit-element-plus/utils'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useFormItem } from '@pit-element-plus/components/form'\nimport { ArrowLeft, ArrowRight } from 'pit-element-icons'\nimport { transferEmits } from './transfer'\nimport {\n  useCheckedChange,\n  useComputedData,\n  useMove,\n  usePropsAlias,\n} from './composables'\nimport TransferPanel from './transfer-panel.vue'\n\nimport type {\n  TransferCheckedState,\n  TransferDataItem,\n  TransferDirection,\n  TransferProps,\n} from './transfer'\nimport type { TransferPanelInstance } from './transfer-panel'\n\ndefineOptions({\n  name: 'ElTransfer',\n})\n\nconst props = withDefaults(defineProps<TransferProps>(), {\n  data: () => [],\n  titles: () => [] as unknown as [string, string],\n  buttonTexts: () => [] as unknown as [string, string],\n  leftDefaultChecked: () => [],\n  rightDefaultChecked: () => [],\n  modelValue: () => [],\n  format: () => ({}),\n  props: () => ({\n    label: 'label',\n    key: 'key',\n    disabled: 'disabled',\n  }),\n  targetOrder: 'original',\n  validateEvent: true,\n})\nconst emit = defineEmits(transferEmits)\nconst slots = useSlots()\n\nconst { t } = useLocale()\nconst ns = useNamespace('transfer')\nconst { formItem } = useFormItem()\n\nconst checkedState = reactive<TransferCheckedState>({\n  leftChecked: [],\n  rightChecked: [],\n})\n\nconst propsAlias = usePropsAlias(props)\n\nconst { sourceData, targetData } = useComputedData(props)\n\nconst { onSourceCheckedChange, onTargetCheckedChange } = useCheckedChange(\n  checkedState,\n  emit\n)\n\nconst { addToLeft, addToRight } = useMove(props, checkedState, emit)\n\nconst leftPanel = ref<TransferPanelInstance>()\nconst rightPanel = ref<TransferPanelInstance>()\n\nconst clearQuery = (which: TransferDirection) => {\n  switch (which) {\n    case 'left':\n      leftPanel.value!.query = ''\n      break\n    case 'right':\n      rightPanel.value!.query = ''\n      break\n  }\n}\n\nconst hasButtonTexts = computed(() => props.buttonTexts.length === 2)\n\nconst leftPanelTitle = computed(\n  () => props.titles[0] || t('el.transfer.titles.0')\n)\n\nconst rightPanelTitle = computed(\n  () => props.titles[1] || t('el.transfer.titles.1')\n)\n\nconst panelFilterPlaceholder = computed(\n  () => props.filterPlaceholder || t('el.transfer.filterPlaceholder')\n)\n\nwatch(\n  () => props.modelValue,\n  () => {\n    if (props.validateEvent) {\n      formItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  }\n)\n\nconst optionRender = computed(() => (option: TransferDataItem) => {\n  if (props.renderContent) return props.renderContent(h, option)\n\n  const defaultSlotVNodes = (slots.default?.({ option }) || []).filter(\n    (node) => node.type !== Comment\n  )\n  if (defaultSlotVNodes.length) {\n    return defaultSlotVNodes\n  }\n\n  return h(\n    'span',\n    option[propsAlias.value.label] || option[propsAlias.value.key]\n  )\n})\n\ndefineExpose({\n  /** @description clear the filter keyword of a certain panel */\n  clearQuery,\n  /** @description left panel ref */\n  leftPanel,\n  /** @description right panel ref */\n  rightPanel,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Transfer from './src/transfer.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTransfer: SFCWithInstall<typeof Transfer> = withInstall(Transfer)\nexport default ElTransfer\n\nexport * from './src/transfer'\n","import type Node from './node'\nimport type { TreeEmits } from '../tree'\nimport type { RootTreeType, TreeKey, TreeNodeData } from '../tree.type'\n\nexport const NODE_KEY = '$treeNodeId'\n\nexport const markNodeData = function (\n  node: Node,\n  data: TreeNodeData | null\n): void {\n  if (!data || data[NODE_KEY]) return\n  Object.defineProperty(data, NODE_KEY, {\n    value: node.id,\n    enumerable: false,\n    configurable: false,\n    writable: false,\n  })\n}\n\nexport const getNodeKey = (key: TreeKey | undefined, data: TreeNodeData) =>\n  data?.[key || NODE_KEY]\n\nexport const handleCurrentChange = (\n  store: RootTreeType['store'],\n  emit: TreeEmits,\n  setCurrent: () => void\n) => {\n  const preCurrentNode = store.value.currentNode\n  setCurrent()\n  const currentNode = store.value.currentNode\n  if (preCurrentNode === currentNode) return\n\n  emit('current-change', currentNode ? currentNode.data : null, currentNode)\n}\n","import { reactive } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport {\n  hasOwn,\n  isArray,\n  isBoolean,\n  isFunction,\n  isString,\n  isUndefined,\n} from '@pit-element-plus/utils'\nimport { NODE_KEY, markNodeData } from './util'\n\nimport type TreeStore from './tree-store'\nimport type { Nullable } from '@pit-element-plus/utils'\nimport type {\n  FakeNode,\n  TreeKey,\n  TreeNodeChildState,\n  TreeNodeData,\n  TreeNodeLoadedDefaultProps,\n  TreeNodeOptions,\n} from '../tree.type'\n\nexport const getChildState = (node: Node[]): TreeNodeChildState => {\n  let all = true\n  let none = true\n  let allWithoutDisable = true\n  let isEffectivelyChecked = true\n  for (let i = 0, j = node.length; i < j; i++) {\n    const n = node[i]\n    if (n.checked !== true || n.indeterminate) {\n      all = false\n      if (!n.disabled) {\n        allWithoutDisable = false\n      }\n    }\n    if (n.checked !== false || n.indeterminate) {\n      none = false\n    }\n    if (!n.isEffectivelyChecked) {\n      isEffectivelyChecked = false\n    }\n  }\n\n  return {\n    all,\n    none,\n    allWithoutDisable,\n    half: !all && !none,\n    isEffectivelyChecked,\n  }\n}\n\nconst reInitChecked = function (node: Node): void {\n  if (node.childNodes.length === 0 || node.loading) {\n    node.isEffectivelyChecked = node.disabled || node.checked\n    return\n  }\n\n  const { all, none, half, isEffectivelyChecked } = getChildState(\n    node.childNodes\n  )\n  node.isEffectivelyChecked = isEffectivelyChecked\n  if (all) {\n    node.checked = true\n    node.indeterminate = false\n  } else if (half) {\n    node.checked = false\n    node.indeterminate = true\n  } else if (none) {\n    node.checked = false\n    node.indeterminate = false\n  }\n\n  const parent = node.parent\n  if (!parent || parent.level === 0) return\n\n  if (!node.store.checkStrictly) {\n    reInitChecked(parent)\n  }\n}\n\nconst getPropertyFromData = function (node: Node, prop: string): any {\n  const props = node.store.props\n  const data = node.data || {}\n  const config = (props as any)[prop]\n\n  if (isFunction(config)) {\n    return config(data, node)\n  } else if (isString(config)) {\n    return data[config]\n  } else if (isUndefined(config)) {\n    const dataProp = data[prop]\n    return isUndefined(dataProp) ? '' : dataProp\n  }\n}\n\nconst setCanFocus = function (childNodes: Node[], focus: boolean): void {\n  childNodes.forEach((item) => {\n    item.canFocus = focus\n    setCanFocus(item.childNodes, focus)\n  })\n}\n\nlet nodeIdSeed = 0\n\nclass Node {\n  id: number\n  text: string | null\n  checked: boolean\n  indeterminate: boolean\n  data: TreeNodeData\n  expanded: boolean\n  parent: Node | null\n  visible: boolean\n  isCurrent: boolean\n  store!: TreeStore\n  isLeafByUser: boolean | undefined = undefined\n  isLeaf: boolean | undefined = undefined\n  canFocus: boolean\n\n  level: number\n  loaded: boolean\n  childNodes: Node[]\n  loading: boolean\n\n  /**\n   * Determines whether the current tree node is effectively checked.\n   *\n   * Rules:\n   * 1. A disabled leaf node is always considered checked.\n   * 2. A non-disabled leaf node reflects its actual checked state.\n   * 3. A non-leaf node is considered checked only when:\n   *    - All of its child nodes are effectively checked, and\n   *    - Each child follows the same evaluation rules:\n   *      - Disabled leaf nodes follow rule #1.\n   *      - Non-leaf child nodes are recursively evaluated under this rule (#3).\n   */\n  isEffectivelyChecked: boolean = false\n\n  constructor(options: TreeNodeOptions) {\n    this.id = nodeIdSeed++\n    this.text = null\n    this.checked = false\n    this.indeterminate = false\n    this.data = null as unknown as TreeNodeData\n    this.expanded = false\n    this.parent = null as Node | null\n    this.visible = true\n    this.isCurrent = false\n    this.canFocus = false\n\n    for (const name in options) {\n      if (hasOwn(options, name)) {\n        this[name] = options[name]\n      }\n    }\n\n    // internal\n    this.level = 0\n    this.loaded = false\n    this.childNodes = []\n    this.loading = false\n\n    if (this.parent) {\n      this.level = this.parent.level + 1\n    }\n  }\n\n  initialize() {\n    const store = this.store\n    if (!store) {\n      throw new Error('[Node]store is required!')\n    }\n    store.registerNode(this)\n\n    const props = store.props\n    if (props && typeof props.isLeaf !== 'undefined') {\n      const isLeaf = getPropertyFromData(this, 'isLeaf')\n      if (isBoolean(isLeaf)) {\n        this.isLeafByUser = isLeaf\n      }\n    }\n\n    if (store.lazy !== true && this.data) {\n      this.setData(this.data)\n\n      if (store.defaultExpandAll) {\n        this.expanded = true\n        this.canFocus = true\n      }\n    } else if (\n      this.level > 0 &&\n      store.lazy &&\n      store.defaultExpandAll &&\n      !this.isLeafByUser\n    ) {\n      this.expand()\n    }\n    if (!isArray(this.data)) {\n      markNodeData(this, this.data)\n    }\n    if (!this.data) return\n\n    const defaultExpandedKeys = store.defaultExpandedKeys\n    const key = store.key\n\n    if (\n      key &&\n      !isNil(this.key) &&\n      defaultExpandedKeys &&\n      defaultExpandedKeys.includes(this.key)\n    ) {\n      this.expand(null, store.autoExpandParent)\n    }\n\n    if (\n      key &&\n      store.currentNodeKey !== undefined &&\n      this.key === store.currentNodeKey\n    ) {\n      store.currentNode && (store.currentNode.isCurrent = false)\n      store.currentNode = this\n      store.currentNode.isCurrent = true\n    }\n\n    if (store.lazy) {\n      store._initDefaultCheckedNode(this)\n    }\n\n    this.updateLeafState()\n    if (this.level === 1 || this.parent?.expanded === true) this.canFocus = true\n  }\n\n  setData(data: TreeNodeData): void {\n    if (!isArray(data)) {\n      markNodeData(this, data)\n    }\n\n    this.data = data\n    this.childNodes = []\n\n    let children\n    if (this.level === 0 && isArray(this.data)) {\n      children = this.data\n    } else {\n      children = getPropertyFromData(this, 'children') || []\n    }\n\n    for (let i = 0, j = children.length; i < j; i++) {\n      this.insertChild({ data: children[i] })\n    }\n  }\n\n  get label(): string {\n    return getPropertyFromData(this, 'label')\n  }\n\n  get key(): TreeKey | null | undefined {\n    const nodeKey = this.store.key\n    if (this.data) return this.data[nodeKey]\n    return null\n  }\n\n  get disabled(): boolean {\n    return getPropertyFromData(this, 'disabled')\n  }\n\n  get nextSibling(): Nullable<Node> {\n    const parent = this.parent\n    if (parent) {\n      const index = parent.childNodes.indexOf(this)\n      if (index > -1) {\n        return parent.childNodes[index + 1]\n      }\n    }\n    return null\n  }\n\n  get previousSibling(): Nullable<Node> {\n    const parent = this.parent\n    if (parent) {\n      const index = parent.childNodes.indexOf(this)\n      if (index > -1) {\n        return index > 0 ? parent.childNodes[index - 1] : null\n      }\n    }\n    return null\n  }\n\n  contains(target: Node, deep = true): boolean {\n    return (this.childNodes || []).some(\n      (child) => child === target || (deep && child.contains(target))\n    )\n  }\n\n  remove(): void {\n    const parent = this.parent\n    if (parent) {\n      parent.removeChild(this)\n    }\n  }\n\n  insertChild(child?: FakeNode | Node, index?: number, batch?: boolean): void {\n    if (!child) throw new Error('InsertChild error: child is required.')\n\n    if (!(child instanceof Node)) {\n      if (!batch) {\n        const children = this.getChildren(true)\n        if (!children?.includes(child.data)) {\n          if (isUndefined(index) || index < 0) {\n            children?.push(child.data)\n          } else {\n            children?.splice(index, 0, child.data)\n          }\n        }\n      }\n      Object.assign(child, {\n        parent: this,\n        store: this.store,\n      })\n      child = reactive(new Node(child as TreeNodeOptions))\n      if (child instanceof Node) {\n        child.initialize()\n      }\n    }\n\n    ;(child as Node).level = this.level + 1\n\n    if (isUndefined(index) || index < 0) {\n      this.childNodes.push(child as Node)\n    } else {\n      this.childNodes.splice(index, 0, child as Node)\n    }\n\n    this.updateLeafState()\n  }\n\n  insertBefore(child: FakeNode | Node, ref: Node): void {\n    let index\n    if (ref) {\n      index = this.childNodes.indexOf(ref)\n    }\n    this.insertChild(child, index)\n  }\n\n  insertAfter(child: FakeNode | Node, ref: Node): void {\n    let index\n    if (ref) {\n      index = this.childNodes.indexOf(ref)\n      if (index !== -1) index += 1\n    }\n    this.insertChild(child, index)\n  }\n\n  removeChild(child: Node): void {\n    const children = this.getChildren() || []\n    const dataIndex = children.indexOf(child.data)\n    if (dataIndex > -1) {\n      children.splice(dataIndex, 1)\n    }\n\n    const index = this.childNodes.indexOf(child)\n\n    if (index > -1) {\n      this.store && this.store.deregisterNode(child)\n      child.parent = null\n      this.childNodes.splice(index, 1)\n    }\n\n    this.updateLeafState()\n  }\n\n  removeChildByData(data: TreeNodeData | null): void {\n    const targetNode = this.childNodes.find((child) => child.data === data)\n\n    if (targetNode) {\n      this.removeChild(targetNode)\n    }\n  }\n\n  expand(callback?: (() => void) | null, expandParent?: boolean): void {\n    const done = () => {\n      if (expandParent) {\n        let parent = this.parent\n        while (parent && parent.level > 0) {\n          parent.expanded = true\n          parent = parent.parent\n        }\n      }\n      this.expanded = true\n      if (callback) callback()\n      setCanFocus(this.childNodes, true)\n    }\n\n    if (this.shouldLoadData()) {\n      this.loadData((data) => {\n        if (isArray(data)) {\n          if (this.checked) {\n            this.setChecked(true, true)\n          } else if (!this.store.checkStrictly) {\n            reInitChecked(this)\n          }\n          done()\n        }\n      })\n    } else {\n      done()\n    }\n  }\n\n  doCreateChildren(\n    array: TreeNodeData[],\n    defaultProps: TreeNodeLoadedDefaultProps = {}\n  ): void {\n    array.forEach((item) => {\n      this.insertChild(\n        Object.assign({ data: item }, defaultProps),\n        undefined,\n        true\n      )\n    })\n  }\n\n  collapse(): void {\n    this.expanded = false\n    setCanFocus(this.childNodes, false)\n  }\n\n  shouldLoadData() {\n    return Boolean(this.store.lazy === true && this.store.load && !this.loaded)\n  }\n\n  updateLeafState(): void {\n    if (\n      this.store.lazy === true &&\n      this.loaded !== true &&\n      typeof this.isLeafByUser !== 'undefined'\n    ) {\n      this.isLeaf = this.isLeafByUser\n      this.isEffectivelyChecked = this.isLeaf && this.disabled\n      return\n    }\n    const childNodes = this.childNodes\n    if (\n      !this.store.lazy ||\n      (this.store.lazy === true && this.loaded === true)\n    ) {\n      this.isLeaf = !childNodes || childNodes.length === 0\n      this.isEffectivelyChecked = this.isLeaf && this.disabled\n      return\n    }\n    this.isLeaf = false\n  }\n\n  setChecked(\n    value?: boolean | string,\n    deep?: boolean,\n    recursion?: boolean,\n    passValue?: boolean\n  ) {\n    this.indeterminate = value === 'half'\n    this.checked = value === true\n    this.isEffectivelyChecked =\n      !this.childNodes.length && (this.disabled || this.checked)\n\n    if (this.store.checkStrictly) return\n\n    if (!(this.shouldLoadData() && !this.store.checkDescendants)) {\n      const handleDescendants = (): void => {\n        if (deep) {\n          const childNodes = this.childNodes\n          for (let i = 0, j = childNodes.length; i < j; i++) {\n            const child = childNodes[i]\n            passValue = passValue || value !== false\n            const isCheck =\n              child.disabled && child.isLeaf ? child.checked : passValue\n            child.setChecked(isCheck, deep, true, passValue)\n          }\n          const { half, all, isEffectivelyChecked } = getChildState(childNodes)\n          if (!all) {\n            this.checked = all\n            this.indeterminate = half\n          }\n          this.isEffectivelyChecked = !this.childNodes.length\n            ? this.disabled || this.checked\n            : isEffectivelyChecked\n        }\n      }\n\n      if (this.shouldLoadData()) {\n        // Only work on lazy load data.\n        this.loadData(\n          () => {\n            handleDescendants()\n            reInitChecked(this)\n          },\n          {\n            checked: value !== false,\n          }\n        )\n        return\n      } else {\n        handleDescendants()\n      }\n    }\n\n    const parent = this.parent\n    if (!parent || parent.level === 0) return\n\n    if (!recursion) {\n      reInitChecked(parent)\n    }\n  }\n\n  getChildren(forceInit = false): TreeNodeData | TreeNodeData[] | null {\n    // this is data\n    if (this.level === 0) return this.data\n    const data = this.data\n    if (!data) return null\n\n    const props = this.store.props\n    let children = 'children'\n    if (props) {\n      children = props.children || 'children'\n    }\n\n    if (isUndefined(data[children])) {\n      data[children] = null\n    }\n\n    if (forceInit && !data[children]) {\n      data[children] = []\n    }\n\n    return data[children]\n  }\n\n  updateChildren(): void {\n    const newData = (this.getChildren() || []) as TreeNodeData[]\n    const oldData = this.childNodes.map((node) => node.data)\n\n    const newDataMap: Record<TreeKey, TreeNodeData> = {}\n    const newNodes: TreeNodeData[] = []\n\n    newData.forEach((item, index) => {\n      const key = item[NODE_KEY]\n      const isNodeExists =\n        !!key && oldData.some((data) => data?.[NODE_KEY] === key)\n      if (isNodeExists) {\n        newDataMap[key] = { index, data: item }\n      } else {\n        newNodes.push({ index, data: item })\n      }\n    })\n\n    if (!this.store.lazy) {\n      oldData.forEach((item) => {\n        if (!newDataMap[item?.[NODE_KEY]]) this.removeChildByData(item)\n      })\n    }\n\n    newNodes.forEach(({ index, data }) => {\n      this.insertChild({ data }, index)\n    })\n\n    this.updateLeafState()\n  }\n\n  loadData(\n    callback: (data?: TreeNodeData[]) => void,\n    defaultProps: TreeNodeLoadedDefaultProps = {}\n  ) {\n    if (\n      this.store.lazy === true &&\n      this.store.load &&\n      !this.loaded &&\n      (!this.loading || Object.keys(defaultProps).length)\n    ) {\n      this.loading = true\n\n      const resolve = (children: TreeNodeData[]) => {\n        this.childNodes = []\n\n        this.doCreateChildren(children, defaultProps)\n        this.loaded = true\n        this.loading = false\n\n        this.updateLeafState()\n        if (callback) {\n          callback.call(this, children)\n        }\n      }\n      const reject = () => {\n        this.loading = false\n      }\n\n      this.store.load(this, resolve, reject)\n    } else {\n      if (callback) {\n        callback.call(this)\n      }\n    }\n  }\n\n  eachNode(callback: (node: Node) => void) {\n    const arr: Node[] = [this]\n    while (arr.length) {\n      const node = arr.shift()!\n      arr.unshift(...node.childNodes)\n      callback(node)\n    }\n  }\n\n  reInitChecked() {\n    if (this.store.checkStrictly) return\n    reInitChecked(this)\n  }\n}\n\nexport default Node\n","import { nextTick } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { NOOP, hasOwn, isObject, isPropAbsent } from '@pit-element-plus/utils'\nimport Node from './node'\nimport { getNodeKey } from './util'\n\nimport type {\n  FilterNodeMethodFunction,\n  FilterValue,\n  LoadFunction,\n  TreeData,\n  TreeKey,\n  TreeNodeData,\n  TreeOptionProps,\n  TreeStoreNodesMap,\n  TreeStoreOptions,\n} from '../tree.type'\n\nexport default class TreeStore {\n  currentNode: Node | null\n  currentNodeKey: TreeKey | null\n  nodesMap: TreeStoreNodesMap\n  root!: Node\n  data!: TreeData\n  lazy = false\n  load?: LoadFunction\n  filterNodeMethod?: FilterNodeMethodFunction\n  key!: TreeKey\n  defaultCheckedKeys?: TreeKey[]\n  checkStrictly = false\n  defaultExpandedKeys?: TreeKey[]\n  autoExpandParent = false\n  defaultExpandAll = false\n  checkDescendants = false\n  props!: TreeOptionProps\n\n  constructor(options: TreeStoreOptions) {\n    this.currentNode = null\n    this.currentNodeKey = null\n\n    for (const option in options) {\n      if (hasOwn(options, option)) {\n        this[option] = options[option]\n      }\n    }\n\n    this.nodesMap = {}\n  }\n\n  initialize() {\n    this.root = new Node({\n      data: this.data,\n      store: this,\n    })\n    this.root.initialize()\n\n    if (this.lazy && this.load) {\n      const loadFn = this.load\n      loadFn(\n        this.root,\n        (data) => {\n          this.root.doCreateChildren(data)\n          this._initDefaultCheckedNodes()\n        },\n        NOOP\n      )\n    } else {\n      this._initDefaultCheckedNodes()\n    }\n  }\n\n  filter(value: FilterValue): void {\n    const filterNodeMethod = this.filterNodeMethod\n    const lazy = this.lazy\n    const traverse = async function (node: TreeStore | Node) {\n      const childNodes = (node as TreeStore).root\n        ? (node as TreeStore).root.childNodes\n        : (node as Node).childNodes\n\n      for (const [index, child] of childNodes.entries()) {\n        child.visible = !!filterNodeMethod?.call(\n          child,\n          value,\n          child.data,\n          child\n        )\n\n        if (index % 80 === 0 && index > 0) {\n          await nextTick()\n        }\n        await traverse(child)\n      }\n\n      if (!(node as Node).visible && childNodes.length) {\n        let allHidden = true\n        allHidden = !childNodes.some((child) => child.visible)\n\n        if ((node as TreeStore).root) {\n          ;(node as TreeStore).root.visible = allHidden === false\n        } else {\n          ;(node as Node).visible = allHidden === false\n        }\n      }\n      if (!value) return\n\n      if ((node as Node).visible && !(node as Node).isLeaf) {\n        if (!lazy || (node as Node).loaded) {\n          ;(node as Node).expand()\n        }\n      }\n    }\n\n    traverse(this)\n  }\n\n  setData(newVal: TreeData): void {\n    const instanceChanged = newVal !== this.root.data\n    if (instanceChanged) {\n      this.nodesMap = {}\n      this.root.setData(newVal)\n      this._initDefaultCheckedNodes()\n      this.setCurrentNodeKey(this.currentNodeKey)\n    } else {\n      this.root.updateChildren()\n    }\n  }\n\n  getNode(data: TreeKey | TreeNodeData | Node): Node {\n    if (data instanceof Node) return data\n    const key = isObject(data) ? getNodeKey(this.key, data) : data\n    return this.nodesMap[key] || null\n  }\n\n  insertBefore(\n    data: TreeNodeData,\n    refData: TreeKey | TreeNodeData | Node\n  ): void {\n    const refNode = this.getNode(refData)\n    refNode.parent?.insertBefore({ data }, refNode)\n  }\n\n  insertAfter(\n    data: TreeNodeData,\n    refData: TreeKey | TreeNodeData | Node\n  ): void {\n    const refNode = this.getNode(refData)\n    refNode.parent?.insertAfter({ data }, refNode)\n  }\n\n  remove(data: TreeNodeData | Node): void {\n    const node = this.getNode(data)\n\n    if (node && node.parent) {\n      if (node === this.currentNode) {\n        this.currentNode = null\n      }\n      node.parent.removeChild(node)\n    }\n  }\n\n  append(data: TreeNodeData, parentData: TreeNodeData | TreeKey | Node): void {\n    const parentNode = !isPropAbsent(parentData)\n      ? this.getNode(parentData)\n      : this.root\n\n    if (parentNode) {\n      parentNode.insertChild({ data })\n    }\n  }\n\n  _initDefaultCheckedNodes(): void {\n    const defaultCheckedKeys = this.defaultCheckedKeys || []\n    const nodesMap = this.nodesMap\n\n    defaultCheckedKeys.forEach((checkedKey) => {\n      const node = nodesMap[checkedKey]\n\n      if (node) {\n        node.setChecked(true, !this.checkStrictly)\n      }\n    })\n  }\n\n  _initDefaultCheckedNode(node: Node): void {\n    const defaultCheckedKeys = this.defaultCheckedKeys || []\n\n    if (!isNil(node.key) && defaultCheckedKeys.includes(node.key)) {\n      node.setChecked(true, !this.checkStrictly)\n    }\n  }\n\n  setDefaultCheckedKey(newVal: TreeKey[]): void {\n    if (newVal !== this.defaultCheckedKeys) {\n      this.defaultCheckedKeys = newVal\n      this._initDefaultCheckedNodes()\n    }\n  }\n\n  registerNode(node: Node): void {\n    const key = this.key\n    if (!node || !node.data) return\n\n    if (!key) {\n      this.nodesMap[node.id] = node\n    } else {\n      const nodeKey = node.key\n      if (!isNil(nodeKey)) this.nodesMap[nodeKey] = node\n    }\n  }\n\n  deregisterNode(node: Node): void {\n    const key = this.key\n    if (!key || !node || !node.data) return\n\n    node.childNodes.forEach((child) => {\n      this.deregisterNode(child)\n    })\n\n    delete this.nodesMap[node.key!]\n  }\n\n  getCheckedNodes(\n    leafOnly = false,\n    includeHalfChecked = false\n  ): TreeNodeData[] {\n    const checkedNodes: TreeNodeData[] = []\n    const traverse = function (node: TreeStore | Node) {\n      const childNodes = (node as TreeStore).root\n        ? (node as TreeStore).root.childNodes\n        : (node as Node).childNodes\n\n      childNodes.forEach((child) => {\n        if (\n          (child.checked || (includeHalfChecked && child.indeterminate)) &&\n          (!leafOnly || (leafOnly && child.isLeaf))\n        ) {\n          checkedNodes.push(child.data)\n        }\n\n        traverse(child)\n      })\n    }\n\n    traverse(this)\n\n    return checkedNodes\n  }\n\n  getCheckedKeys(leafOnly = false): TreeKey[] {\n    return this.getCheckedNodes(leafOnly).map((data) => (data || {})[this.key])\n  }\n\n  getHalfCheckedNodes(): TreeNodeData[] {\n    const nodes: TreeNodeData[] = []\n    const traverse = function (node: TreeStore | Node) {\n      const childNodes = (node as TreeStore).root\n        ? (node as TreeStore).root.childNodes\n        : (node as Node).childNodes\n\n      childNodes.forEach((child) => {\n        if (child.indeterminate) {\n          nodes.push(child.data)\n        }\n\n        traverse(child)\n      })\n    }\n\n    traverse(this)\n\n    return nodes\n  }\n\n  getHalfCheckedKeys(): TreeKey[] {\n    return this.getHalfCheckedNodes().map((data) => (data || {})[this.key])\n  }\n\n  _getAllNodes(): Node[] {\n    const allNodes: Node[] = []\n    const nodesMap = this.nodesMap\n    for (const nodeKey in nodesMap) {\n      if (hasOwn(nodesMap, nodeKey)) {\n        allNodes.push(nodesMap[nodeKey])\n      }\n    }\n\n    return allNodes\n  }\n\n  updateChildren(key: TreeKey, data: TreeData): void {\n    const node = this.nodesMap[key]\n    if (!node) return\n    const childNodes = node.childNodes\n    for (let i = childNodes.length - 1; i >= 0; i--) {\n      const child = childNodes[i]\n      this.remove(child.data)\n    }\n    for (let i = 0, j = data.length; i < j; i++) {\n      const child = data[i]\n      this.append(child, node.data)\n    }\n  }\n\n  _setCheckedKeys(\n    key: TreeKey,\n    leafOnly = false,\n    checkedKeys: { [key: string]: boolean }\n  ) {\n    const allNodes = this._getAllNodes().sort((a, b) => a.level - b.level)\n    const cache: Record<TreeKey, boolean> = Object.create(null)\n    const keys = Object.keys(checkedKeys)\n    allNodes.forEach((node) => node.setChecked(false, false))\n    const cacheCheckedChild = (node: Node) => {\n      node.childNodes.forEach((child) => {\n        cache[child.data[key]] = true\n        if (child.childNodes?.length) {\n          cacheCheckedChild(child)\n        }\n      })\n    }\n    for (let i = 0, j = allNodes.length; i < j; i++) {\n      const node = allNodes[i]\n      const nodeKey: string = node.data[key].toString()\n      const checked = keys.includes(nodeKey)\n      if (!checked) {\n        if (node.checked && !cache[nodeKey]) {\n          node.setChecked(false, false)\n        }\n        continue\n      }\n\n      if (node.childNodes.length) {\n        cacheCheckedChild(node)\n      }\n\n      if (node.isLeaf || this.checkStrictly) {\n        node.setChecked(true, false)\n        continue\n      }\n      node.setChecked(true, true)\n\n      if (leafOnly) {\n        node.setChecked(false, false, true)\n        const traverse = function (node: Node): void {\n          const childNodes = node.childNodes\n          childNodes.forEach((child) => {\n            if (!child.isLeaf) {\n              child.setChecked(false, false, true)\n            }\n            traverse(child)\n          })\n          node.reInitChecked()\n        }\n        traverse(node)\n      }\n    }\n  }\n\n  setCheckedNodes(array: Node[], leafOnly = false): void {\n    const key = this.key\n    const checkedKeys: Record<TreeKey, boolean> = {}\n    array.forEach((item) => {\n      checkedKeys[((item || {}) as any)[key]] = true\n    })\n\n    this._setCheckedKeys(key, leafOnly, checkedKeys)\n  }\n\n  setCheckedKeys(keys: TreeKey[], leafOnly = false): void {\n    this.defaultCheckedKeys = keys\n    const key = this.key\n    const checkedKeys: Record<TreeKey, boolean> = {}\n    keys.forEach((key) => {\n      checkedKeys[key] = true\n    })\n\n    this._setCheckedKeys(key, leafOnly, checkedKeys)\n  }\n\n  setDefaultExpandedKeys(keys: TreeKey[]) {\n    keys = keys || []\n    this.defaultExpandedKeys = keys\n    keys.forEach((key) => {\n      const node = this.getNode(key)\n      if (node) node.expand(null, this.autoExpandParent)\n    })\n  }\n\n  setChecked(\n    data: TreeKey | TreeNodeData,\n    checked: boolean,\n    deep: boolean\n  ): void {\n    const node = this.getNode(data)\n\n    if (node) {\n      node.setChecked(!!checked, deep)\n    }\n  }\n\n  getCurrentNode() {\n    return this.currentNode\n  }\n\n  setCurrentNode(currentNode: Node): void {\n    const prevCurrentNode = this.currentNode\n    if (prevCurrentNode) {\n      prevCurrentNode.isCurrent = false\n    }\n    this.currentNode = currentNode\n    this.currentNode.isCurrent = true\n  }\n\n  setUserCurrentNode(node: Node, shouldAutoExpandParent = true): void {\n    const key = (node as any)[this.key]\n    const currNode = this.nodesMap[key]\n    this.setCurrentNode(currNode)\n    if (\n      shouldAutoExpandParent &&\n      this.currentNode &&\n      this.currentNode.level > 1\n    ) {\n      this.currentNode.parent?.expand(null, true)\n    }\n  }\n\n  setCurrentNodeKey(key: TreeKey | null, shouldAutoExpandParent = true): void {\n    this.currentNodeKey = key\n    if (isPropAbsent(key)) {\n      this.currentNode && (this.currentNode.isCurrent = false)\n      this.currentNode = null\n      return\n    }\n    const node = this.getNode(key)\n    if (node) {\n      this.setCurrentNode(node)\n      if (\n        shouldAutoExpandParent &&\n        this.currentNode &&\n        this.currentNode.level > 1\n      ) {\n        this.currentNode.parent?.expand(null, true)\n      }\n    }\n  }\n}\n","export const ROOT_TREE_INJECTION_KEY = 'RootTree'\n\nexport const NODE_INSTANCE_INJECTION_KEY = 'NodeInstance'\n\nexport const TREE_NODE_MAP_INJECTION_KEY = 'TreeNodeMap'\n","<script lang=\"ts\">\nimport { defineComponent, h, inject, renderSlot } from 'vue'\nimport ElText from '@pit-element-plus/components/text'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { NODE_INSTANCE_INJECTION_KEY, ROOT_TREE_INJECTION_KEY } from './tokens'\n\nimport type { ComponentInternalInstance } from 'vue'\nimport type { RootTreeType } from './tree.type'\n\nexport default defineComponent({\n  name: 'ElTreeNodeContent',\n  props: {\n    node: {\n      type: Object,\n      required: true,\n    },\n    renderContent: Function,\n  },\n  setup(props) {\n    const ns = useNamespace('tree')\n    const nodeInstance = inject<ComponentInternalInstance>(\n      NODE_INSTANCE_INJECTION_KEY\n    )\n    const tree = inject<RootTreeType>(ROOT_TREE_INJECTION_KEY)!\n    return () => {\n      const node = props.node\n      const { data, store } = node\n      return props.renderContent\n        ? props.renderContent(h, { _self: nodeInstance, node, data, store })\n        : renderSlot(tree.ctx.slots, 'default', { node, data }, () => [\n            h(\n              ElText,\n              { tag: 'span', truncated: true, class: ns.be('node', 'label') },\n              () => [node.label]\n            ),\n          ])\n    }\n  },\n})\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, inject, renderSlot } from 'vue'\nimport ElText from '@pit-element-plus/components/text'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { NODE_INSTANCE_INJECTION_KEY, ROOT_TREE_INJECTION_KEY } from './tokens'\n\nimport type { ComponentInternalInstance } from 'vue'\nimport type { RootTreeType } from './tree.type'\n\nexport default defineComponent({\n  name: 'ElTreeNodeContent',\n  props: {\n    node: {\n      type: Object,\n      required: true,\n    },\n    renderContent: Function,\n  },\n  setup(props) {\n    const ns = useNamespace('tree')\n    const nodeInstance = inject<ComponentInternalInstance>(\n      NODE_INSTANCE_INJECTION_KEY\n    )\n    const tree = inject<RootTreeType>(ROOT_TREE_INJECTION_KEY)!\n    return () => {\n      const node = props.node\n      const { data, store } = node\n      return props.renderContent\n        ? props.renderContent(h, { _self: nodeInstance, node, data, store })\n        : renderSlot(tree.ctx.slots, 'default', { node, data }, () => [\n            h(\n              ElText,\n              { tag: 'span', truncated: true, class: ns.be('node', 'label') },\n              () => [node.label]\n            ),\n          ])\n    }\n  },\n})\n</script>\n","import { inject, onBeforeUnmount, provide } from 'vue'\nimport { TREE_NODE_MAP_INJECTION_KEY } from '../tokens'\n\nimport type Node from '../model/node'\n\ninterface NodeMap {\n  treeNodeExpand(node?: Node): void\n  children: Set<NodeMap>\n}\n\ninterface Props {\n  node?: Node\n  accordion: boolean\n}\n\nexport function useNodeExpandEventBroadcast(props: Props) {\n  const parentNodeMap = inject(\n    TREE_NODE_MAP_INJECTION_KEY,\n    null\n  ) as NodeMap | null\n  let currentNodeMap: NodeMap | null = {\n    treeNodeExpand: (node) => {\n      if (props.node !== node) {\n        props.node?.collapse()\n      }\n    },\n    children: new Set(),\n  }\n\n  if (parentNodeMap) {\n    parentNodeMap.children.add(currentNodeMap)\n  }\n\n  onBeforeUnmount(() => {\n    if (parentNodeMap) {\n      parentNodeMap.children.delete(currentNodeMap!)\n    }\n    currentNodeMap = null\n  })\n\n  provide(TREE_NODE_MAP_INJECTION_KEY, currentNodeMap)\n\n  return {\n    broadcastExpanded: (node?: Node): void => {\n      if (!props.accordion) return\n      for (const childNode of currentNodeMap!.children) {\n        childNode.treeNodeExpand(node)\n      }\n    },\n  }\n}\n","import { provide, ref } from 'vue'\nimport { addClass, isFunction, removeClass } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nimport type { InjectionKey, Ref, SetupContext } from 'vue'\nimport type {\n  AllowDragFunction,\n  AllowDropFunction,\n  FakeNode,\n  NodeDropType,\n} from '../tree.type'\nimport type TreeStore from './tree-store'\nimport type Node from './node'\nimport type { treeEmits } from '../tree'\n\nexport interface TreeNode {\n  node: Node\n  $el?: HTMLElement\n}\n\ninterface DragOptions {\n  event: DragEvent\n  treeNode: TreeNode\n}\n\ninterface Props {\n  props: {\n    allowDrag?: AllowDragFunction\n    allowDrop?: AllowDropFunction\n  }\n  ctx: SetupContext<typeof treeEmits>\n  el$: Ref<HTMLElement | null>\n  dropIndicator$: Ref<HTMLElement | null>\n  store: Ref<TreeStore>\n}\n\nexport interface DragEvents {\n  treeNodeDragStart: (options: DragOptions) => void\n  treeNodeDragOver: (options: DragOptions) => void\n  treeNodeDragEnd: (event: DragEvent) => void\n}\n\nexport const dragEventsKey: InjectionKey<DragEvents> = Symbol('dragEvents')\n\nexport function useDragNodeHandler({\n  props,\n  ctx,\n  el$,\n  dropIndicator$,\n  store,\n}: Props) {\n  const ns = useNamespace('tree')\n  const dragState = ref<{\n    allowDrop: boolean\n    dropType: NodeDropType | null\n    draggingNode: TreeNode | null\n    showDropIndicator: boolean\n    dropNode: TreeNode | null\n  }>({\n    showDropIndicator: false,\n    draggingNode: null,\n    dropNode: null,\n    allowDrop: true,\n    dropType: null,\n  })\n\n  const treeNodeDragStart = ({ event, treeNode }: DragOptions) => {\n    if (!event.dataTransfer) return\n    if (isFunction(props.allowDrag) && !props.allowDrag(treeNode.node)) {\n      event.preventDefault()\n      return false\n    }\n    event.dataTransfer.effectAllowed = 'move'\n\n    // wrap in try catch to address IE's error when first param is 'text/plain'\n    try {\n      // setData is required for draggable to work in FireFox\n      // the content has to be '' so dragging a node out of the tree won't open a new tab in FireFox\n      event.dataTransfer.setData('text/plain', '')\n    } catch {}\n    dragState.value.draggingNode = treeNode\n    ctx.emit('node-drag-start', treeNode.node, event)\n  }\n\n  const treeNodeDragOver = ({ event, treeNode }: DragOptions) => {\n    if (!event.dataTransfer) return\n    const dropNode = treeNode\n    const oldDropNode = dragState.value.dropNode\n    if (oldDropNode && oldDropNode.node.id !== dropNode.node.id) {\n      removeClass(oldDropNode.$el!, ns.is('drop-inner'))\n    }\n    const draggingNode = dragState.value.draggingNode\n    if (!draggingNode || !dropNode) return\n\n    let dropPrev = true\n    let dropInner = true\n    let dropNext = true\n    let userAllowDropInner = true\n    if (isFunction(props.allowDrop)) {\n      dropPrev = props.allowDrop(draggingNode.node, dropNode.node, 'prev')\n      userAllowDropInner = dropInner = props.allowDrop(\n        draggingNode.node,\n        dropNode.node,\n        'inner'\n      )\n      dropNext = props.allowDrop(draggingNode.node, dropNode.node, 'next')\n    }\n    event.dataTransfer.dropEffect =\n      dropInner || dropPrev || dropNext ? 'move' : 'none'\n    if (\n      (dropPrev || dropInner || dropNext) &&\n      oldDropNode?.node.id !== dropNode.node.id\n    ) {\n      if (oldDropNode) {\n        ctx.emit('node-drag-leave', draggingNode.node, oldDropNode.node, event)\n      }\n      ctx.emit('node-drag-enter', draggingNode.node, dropNode.node, event)\n    }\n\n    if (dropPrev || dropInner || dropNext) {\n      dragState.value.dropNode = dropNode\n    } else {\n      // Reset dragState.value.dropNode to null when allowDrop is transfer from true to false.(For issue #14704)\n      dragState.value.dropNode = null\n    }\n\n    if (dropNode.node.nextSibling === draggingNode.node) {\n      dropNext = false\n    }\n    if (dropNode.node.previousSibling === draggingNode.node) {\n      dropPrev = false\n    }\n    if (dropNode.node.contains(draggingNode.node, false)) {\n      dropInner = false\n    }\n    if (\n      draggingNode.node === dropNode.node ||\n      draggingNode.node.contains(dropNode.node)\n    ) {\n      dropPrev = false\n      dropInner = false\n      dropNext = false\n    }\n    const dropEl = dropNode.$el!\n\n    // find target node without children, just calc content node height\n    const targetPosition = dropEl\n      .querySelector(`.${ns.be('node', 'content')}`)!\n      .getBoundingClientRect()\n    const treePosition = el$.value!.getBoundingClientRect()\n    const treeScrollTop = el$.value!.scrollTop\n    let dropType: NodeDropType\n    const prevPercent = dropPrev\n      ? dropInner\n        ? 0.25\n        : dropNext\n          ? 0.45\n          : 1\n      : Number.NEGATIVE_INFINITY\n    const nextPercent = dropNext\n      ? dropInner\n        ? 0.75\n        : dropPrev\n          ? 0.55\n          : 0\n      : Number.POSITIVE_INFINITY\n\n    let indicatorTop = -9999\n    const distance = event.clientY - targetPosition.top\n    if (distance < targetPosition.height * prevPercent) {\n      dropType = 'before'\n    } else if (distance > targetPosition.height * nextPercent) {\n      dropType = 'after'\n    } else if (dropInner) {\n      dropType = 'inner'\n    } else {\n      dropType = 'none'\n    }\n\n    const iconPosition = dropEl\n      .querySelector(`.${ns.be('node', 'expand-icon')}`)!\n      .getBoundingClientRect()\n    const dropIndicator = dropIndicator$.value\n    if (dropType === 'before') {\n      indicatorTop = iconPosition.top - treePosition.top + treeScrollTop\n    } else if (dropType === 'after') {\n      indicatorTop = iconPosition.bottom - treePosition.top + treeScrollTop\n    }\n    dropIndicator!.style.top = `${indicatorTop}px`\n    dropIndicator!.style.left = `${iconPosition.right - treePosition.left}px`\n\n    if (dropType === 'inner') {\n      addClass(dropEl, ns.is('drop-inner'))\n    } else {\n      removeClass(dropEl, ns.is('drop-inner'))\n    }\n\n    dragState.value.showDropIndicator =\n      dropType === 'before' || dropType === 'after'\n    dragState.value.allowDrop =\n      dragState.value.showDropIndicator || userAllowDropInner\n    dragState.value.dropType = dropType\n    ctx.emit('node-drag-over', draggingNode.node, dropNode.node, event)\n  }\n\n  const treeNodeDragEnd = (event: DragEvent) => {\n    const { draggingNode, dropType, dropNode } = dragState.value\n    event.preventDefault()\n\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=1911486\n    if (event.dataTransfer) {\n      event.dataTransfer.dropEffect = 'move'\n    }\n\n    if (draggingNode?.node.data && dropNode) {\n      const draggingNodeCopy: FakeNode = { data: draggingNode.node.data }\n      if (dropType !== 'none') {\n        draggingNode.node.remove()\n      }\n      if (dropType === 'before') {\n        dropNode.node.parent?.insertBefore(draggingNodeCopy, dropNode.node)\n      } else if (dropType === 'after') {\n        dropNode.node.parent?.insertAfter(draggingNodeCopy, dropNode.node)\n      } else if (dropType === 'inner') {\n        dropNode.node.insertChild(draggingNodeCopy)\n      }\n      if (dropType !== 'none') {\n        store.value.registerNode(draggingNodeCopy as any)\n        if (store.value.key) {\n          //restore checkbox state after dragging\n          draggingNode.node.eachNode((node) => {\n            store.value.nodesMap[node.data[store.value.key]]?.setChecked(\n              node.checked,\n              !store.value.checkStrictly\n            )\n          })\n        }\n      }\n\n      removeClass(dropNode.$el!, ns.is('drop-inner'))\n\n      ctx.emit(\n        'node-drag-end',\n        draggingNode.node,\n        dropNode.node,\n        dropType!,\n        event\n      )\n      if (dropType !== 'none') {\n        ctx.emit(\n          'node-drop',\n          draggingNode.node,\n          dropNode.node,\n          dropType!,\n          event\n        )\n      }\n    }\n    if (draggingNode && !dropNode) {\n      ctx.emit('node-drag-end', draggingNode.node, null, dropType!, event)\n    }\n\n    dragState.value.showDropIndicator = false\n    dragState.value.draggingNode = null\n    dragState.value.dropNode = null\n    dragState.value.allowDrop = true\n  }\n\n  provide(dragEventsKey, {\n    treeNodeDragStart,\n    treeNodeDragOver,\n    treeNodeDragEnd,\n  })\n\n  return {\n    dragState,\n  }\n}\n","<template>\n  <div\n    v-show=\"node.visible\"\n    ref=\"node$\"\n    :class=\"[\n      ns.b('node'),\n      ns.is('expanded', expanded),\n      ns.is('current', node.isCurrent),\n      ns.is('hidden', !node.visible),\n      ns.is('focusable', !node.disabled),\n      ns.is('checked', !node.disabled && node.checked),\n      getNodeClass(node),\n    ]\"\n    role=\"treeitem\"\n    tabindex=\"-1\"\n    :aria-expanded=\"expanded\"\n    :aria-disabled=\"node.disabled\"\n    :aria-checked=\"node.checked\"\n    :draggable=\"tree.props.draggable\"\n    :data-key=\"getNodeKey(node)\"\n    @click.stop=\"handleClick\"\n    @contextmenu=\"handleContextMenu\"\n    @dragstart.stop=\"handleDragStart\"\n    @dragover.stop=\"handleDragOver\"\n    @dragend.stop=\"handleDragEnd\"\n    @drop.stop=\"handleDrop\"\n  >\n    <div\n      :class=\"ns.be('node', 'content')\"\n      :style=\"{ paddingLeft: (node.level - 1) * tree.props.indent + 'px' }\"\n    >\n      <el-icon\n        v-if=\"tree.props.icon || CaretRight\"\n        :class=\"[\n          ns.be('node', 'expand-icon'),\n          ns.is('leaf', node.isLeaf),\n          {\n            expanded: !node.isLeaf && expanded,\n          },\n        ]\"\n        @click.stop=\"handleExpandIconClick\"\n      >\n        <component :is=\"tree.props.icon || CaretRight\" />\n      </el-icon>\n      <el-checkbox\n        v-if=\"showCheckbox\"\n        :model-value=\"node.checked\"\n        :indeterminate=\"node.indeterminate\"\n        :disabled=\"!!node.disabled\"\n        @click.stop\n        @change=\"handleCheckChange\"\n      />\n      <el-icon\n        v-if=\"node.loading\"\n        :class=\"[ns.be('node', 'loading-icon'), ns.is('loading')]\"\n      >\n        <loading />\n      </el-icon>\n      <node-content :node=\"node\" :render-content=\"renderContent\" />\n    </div>\n    <el-collapse-transition>\n      <div\n        v-if=\"!renderAfterExpand || childNodeRendered\"\n        v-show=\"expanded\"\n        :class=\"ns.be('node', 'children')\"\n        role=\"group\"\n        :aria-expanded=\"expanded\"\n        @click.stop\n      >\n        <el-tree-node\n          v-for=\"child in node.childNodes\"\n          :key=\"getNodeKey(child)\"\n          :render-content=\"renderContent\"\n          :render-after-expand=\"renderAfterExpand\"\n          :show-checkbox=\"showCheckbox\"\n          :node=\"child\"\n          :accordion=\"accordion\"\n          :props=\"props\"\n          @node-expand=\"handleChildNodeExpand\"\n        />\n      </div>\n    </el-collapse-transition>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  defineComponent,\n  getCurrentInstance,\n  inject,\n  nextTick,\n  provide,\n  ref,\n  watch,\n} from 'vue'\nimport { debugWarn, isFunction, isString } from '@pit-element-plus/utils'\nimport ElCollapseTransition from '@pit-element-plus/components/collapse-transition'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { CaretRight, Loading } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport NodeContent from './tree-node-content.vue'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { dragEventsKey } from './model/useDragNode'\nimport Node from './model/node'\nimport { NODE_INSTANCE_INJECTION_KEY, ROOT_TREE_INJECTION_KEY } from './tokens'\n\nimport type { ComponentInternalInstance, PropType } from 'vue'\nimport type { RootTreeType, TreeNodeData, TreeOptionProps } from './tree.type'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\n\nexport default defineComponent({\n  name: 'ElTreeNode',\n  components: {\n    ElCollapseTransition,\n    ElCheckbox,\n    NodeContent,\n    ElIcon,\n    Loading,\n  },\n  props: {\n    node: {\n      type: Node,\n      default: () => ({}),\n    },\n    props: {\n      type: Object as PropType<TreeOptionProps>,\n      default: () => ({}),\n    },\n    accordion: Boolean,\n    renderContent: Function,\n    renderAfterExpand: Boolean,\n    showCheckbox: Boolean,\n  },\n  emits: ['node-expand'],\n  setup(props, ctx) {\n    const ns = useNamespace('tree')\n    const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n    const tree = inject<RootTreeType>(ROOT_TREE_INJECTION_KEY)!\n    const expanded = ref(false)\n    const childNodeRendered = ref(false)\n    const oldChecked = ref<boolean>()\n    const oldIndeterminate = ref<boolean>()\n    const node$ = ref<HTMLElement>()\n    const dragEvents = inject(dragEventsKey)!\n    const instance = getCurrentInstance()\n\n    provide(NODE_INSTANCE_INJECTION_KEY, instance)\n    if (!tree) {\n      debugWarn('Tree', \"Can not find node's tree.\")\n    }\n\n    if (props.node.expanded) {\n      expanded.value = true\n      childNodeRendered.value = true\n    }\n\n    const childrenKey = tree.props.props['children'] || 'children'\n    watch(\n      () => {\n        const children = props.node.data?.[childrenKey]\n        return children && [...children]\n      },\n      () => {\n        props.node.updateChildren()\n      }\n    )\n\n    watch(\n      () => props.node.indeterminate,\n      (val) => {\n        handleSelectChange(props.node.checked, val)\n      }\n    )\n\n    watch(\n      () => props.node.checked,\n      (val) => {\n        handleSelectChange(val, props.node.indeterminate)\n      }\n    )\n\n    watch(\n      () => props.node.childNodes.length,\n      () => props.node.reInitChecked()\n    )\n\n    watch(\n      () => props.node.expanded,\n      (val) => {\n        nextTick(() => (expanded.value = val))\n        if (val) {\n          childNodeRendered.value = true\n        }\n      }\n    )\n\n    const getNodeKey = (node: Node): any => {\n      return tree.props.nodeKey\n        ? getNodeKeyUtil(tree.props.nodeKey, node.data)\n        : node.id\n    }\n\n    const getNodeClass = (node: Node) => {\n      const nodeClassFunc = props.props.class\n      if (!nodeClassFunc) {\n        return {}\n      }\n      let className\n      if (isFunction(nodeClassFunc)) {\n        const { data } = node\n        className = nodeClassFunc(data, node)\n      } else {\n        className = nodeClassFunc\n      }\n\n      if (isString(className)) {\n        return { [className]: true }\n      } else {\n        return className\n      }\n    }\n\n    const handleSelectChange = (checked: boolean, indeterminate: boolean) => {\n      if (\n        oldChecked.value !== checked ||\n        oldIndeterminate.value !== indeterminate\n      ) {\n        tree.ctx.emit('check-change', props.node.data, checked, indeterminate)\n      }\n      oldChecked.value = checked\n      oldIndeterminate.value = indeterminate\n    }\n\n    const handleClick = (e: MouseEvent) => {\n      handleCurrentChange(tree.store, tree.ctx.emit, () => {\n        const nodeKeyProp = tree?.props?.nodeKey\n        if (nodeKeyProp) {\n          const curNodeKey = getNodeKey(props.node)\n          tree.store.value.setCurrentNodeKey(curNodeKey)\n        } else {\n          tree.store.value.setCurrentNode(props.node)\n        }\n      })\n      tree.currentNode.value = props.node\n\n      if (tree.props.expandOnClickNode) {\n        handleExpandIconClick()\n      }\n\n      if (\n        (tree.props.checkOnClickNode ||\n          (props.node.isLeaf &&\n            tree.props.checkOnClickLeaf &&\n            props.showCheckbox)) &&\n        !props.node.disabled\n      ) {\n        handleCheckChange(!props.node.checked)\n      }\n      tree.ctx.emit('node-click', props.node.data, props.node, instance, e)\n    }\n\n    const handleContextMenu = (event: Event) => {\n      if (tree.instance.vnode.props?.['onNodeContextmenu']) {\n        event.stopPropagation()\n        event.preventDefault()\n      }\n      tree.ctx.emit(\n        'node-contextmenu',\n        event,\n        props.node.data,\n        props.node,\n        instance\n      )\n    }\n\n    const handleExpandIconClick = () => {\n      if (props.node.isLeaf) return\n      if (expanded.value) {\n        tree.ctx.emit('node-collapse', props.node.data, props.node, instance)\n        props.node.collapse()\n      } else {\n        props.node.expand(() => {\n          ctx.emit('node-expand', props.node.data, props.node, instance)\n        })\n      }\n    }\n\n    const handleCheckChange = (value: CheckboxValueType) => {\n      const checkStrictly = tree?.props.checkStrictly\n      const childNodes = props.node.childNodes\n      if (!checkStrictly && childNodes.length) {\n        value = childNodes.some((node) => !node.isEffectivelyChecked)\n      }\n      props.node.setChecked(value as boolean, !checkStrictly)\n      nextTick(() => {\n        const store = tree.store.value\n        tree.ctx.emit('check', props.node.data, {\n          checkedNodes: store.getCheckedNodes(),\n          checkedKeys: store.getCheckedKeys(),\n          halfCheckedNodes: store.getHalfCheckedNodes(),\n          halfCheckedKeys: store.getHalfCheckedKeys(),\n        })\n      })\n    }\n\n    const handleChildNodeExpand = (\n      nodeData: TreeNodeData,\n      node: Node,\n      instance: ComponentInternalInstance\n    ) => {\n      broadcastExpanded(node)\n      tree.ctx.emit('node-expand', nodeData, node, instance)\n    }\n\n    const handleDragStart = (event: DragEvent) => {\n      if (!tree.props.draggable) return\n      dragEvents.treeNodeDragStart({ event, treeNode: props })\n    }\n\n    const handleDragOver = (event: DragEvent) => {\n      event.preventDefault()\n      if (!tree.props.draggable) return\n      dragEvents.treeNodeDragOver({\n        event,\n        treeNode: { $el: node$.value, node: props.node },\n      })\n    }\n\n    const handleDrop = (event: DragEvent) => {\n      event.preventDefault()\n    }\n\n    const handleDragEnd = (event: DragEvent) => {\n      if (!tree.props.draggable) return\n      dragEvents.treeNodeDragEnd(event)\n    }\n\n    return {\n      ns,\n      node$,\n      tree,\n      expanded,\n      childNodeRendered,\n      oldChecked,\n      oldIndeterminate,\n      getNodeKey,\n      getNodeClass,\n      handleSelectChange,\n      handleClick,\n      handleContextMenu,\n      handleExpandIconClick,\n      handleCheckChange,\n      handleChildNodeExpand,\n      handleDragStart,\n      handleDragOver,\n      handleDrop,\n      handleDragEnd,\n      CaretRight,\n    }\n  },\n})\n</script>\n","<template>\n  <div\n    v-show=\"node.visible\"\n    ref=\"node$\"\n    :class=\"[\n      ns.b('node'),\n      ns.is('expanded', expanded),\n      ns.is('current', node.isCurrent),\n      ns.is('hidden', !node.visible),\n      ns.is('focusable', !node.disabled),\n      ns.is('checked', !node.disabled && node.checked),\n      getNodeClass(node),\n    ]\"\n    role=\"treeitem\"\n    tabindex=\"-1\"\n    :aria-expanded=\"expanded\"\n    :aria-disabled=\"node.disabled\"\n    :aria-checked=\"node.checked\"\n    :draggable=\"tree.props.draggable\"\n    :data-key=\"getNodeKey(node)\"\n    @click.stop=\"handleClick\"\n    @contextmenu=\"handleContextMenu\"\n    @dragstart.stop=\"handleDragStart\"\n    @dragover.stop=\"handleDragOver\"\n    @dragend.stop=\"handleDragEnd\"\n    @drop.stop=\"handleDrop\"\n  >\n    <div\n      :class=\"ns.be('node', 'content')\"\n      :style=\"{ paddingLeft: (node.level - 1) * tree.props.indent + 'px' }\"\n    >\n      <el-icon\n        v-if=\"tree.props.icon || CaretRight\"\n        :class=\"[\n          ns.be('node', 'expand-icon'),\n          ns.is('leaf', node.isLeaf),\n          {\n            expanded: !node.isLeaf && expanded,\n          },\n        ]\"\n        @click.stop=\"handleExpandIconClick\"\n      >\n        <component :is=\"tree.props.icon || CaretRight\" />\n      </el-icon>\n      <el-checkbox\n        v-if=\"showCheckbox\"\n        :model-value=\"node.checked\"\n        :indeterminate=\"node.indeterminate\"\n        :disabled=\"!!node.disabled\"\n        @click.stop\n        @change=\"handleCheckChange\"\n      />\n      <el-icon\n        v-if=\"node.loading\"\n        :class=\"[ns.be('node', 'loading-icon'), ns.is('loading')]\"\n      >\n        <loading />\n      </el-icon>\n      <node-content :node=\"node\" :render-content=\"renderContent\" />\n    </div>\n    <el-collapse-transition>\n      <div\n        v-if=\"!renderAfterExpand || childNodeRendered\"\n        v-show=\"expanded\"\n        :class=\"ns.be('node', 'children')\"\n        role=\"group\"\n        :aria-expanded=\"expanded\"\n        @click.stop\n      >\n        <el-tree-node\n          v-for=\"child in node.childNodes\"\n          :key=\"getNodeKey(child)\"\n          :render-content=\"renderContent\"\n          :render-after-expand=\"renderAfterExpand\"\n          :show-checkbox=\"showCheckbox\"\n          :node=\"child\"\n          :accordion=\"accordion\"\n          :props=\"props\"\n          @node-expand=\"handleChildNodeExpand\"\n        />\n      </div>\n    </el-collapse-transition>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  defineComponent,\n  getCurrentInstance,\n  inject,\n  nextTick,\n  provide,\n  ref,\n  watch,\n} from 'vue'\nimport { debugWarn, isFunction, isString } from '@pit-element-plus/utils'\nimport ElCollapseTransition from '@pit-element-plus/components/collapse-transition'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { CaretRight, Loading } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport NodeContent from './tree-node-content.vue'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { dragEventsKey } from './model/useDragNode'\nimport Node from './model/node'\nimport { NODE_INSTANCE_INJECTION_KEY, ROOT_TREE_INJECTION_KEY } from './tokens'\n\nimport type { ComponentInternalInstance, PropType } from 'vue'\nimport type { RootTreeType, TreeNodeData, TreeOptionProps } from './tree.type'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\n\nexport default defineComponent({\n  name: 'ElTreeNode',\n  components: {\n    ElCollapseTransition,\n    ElCheckbox,\n    NodeContent,\n    ElIcon,\n    Loading,\n  },\n  props: {\n    node: {\n      type: Node,\n      default: () => ({}),\n    },\n    props: {\n      type: Object as PropType<TreeOptionProps>,\n      default: () => ({}),\n    },\n    accordion: Boolean,\n    renderContent: Function,\n    renderAfterExpand: Boolean,\n    showCheckbox: Boolean,\n  },\n  emits: ['node-expand'],\n  setup(props, ctx) {\n    const ns = useNamespace('tree')\n    const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n    const tree = inject<RootTreeType>(ROOT_TREE_INJECTION_KEY)!\n    const expanded = ref(false)\n    const childNodeRendered = ref(false)\n    const oldChecked = ref<boolean>()\n    const oldIndeterminate = ref<boolean>()\n    const node$ = ref<HTMLElement>()\n    const dragEvents = inject(dragEventsKey)!\n    const instance = getCurrentInstance()\n\n    provide(NODE_INSTANCE_INJECTION_KEY, instance)\n    if (!tree) {\n      debugWarn('Tree', \"Can not find node's tree.\")\n    }\n\n    if (props.node.expanded) {\n      expanded.value = true\n      childNodeRendered.value = true\n    }\n\n    const childrenKey = tree.props.props['children'] || 'children'\n    watch(\n      () => {\n        const children = props.node.data?.[childrenKey]\n        return children && [...children]\n      },\n      () => {\n        props.node.updateChildren()\n      }\n    )\n\n    watch(\n      () => props.node.indeterminate,\n      (val) => {\n        handleSelectChange(props.node.checked, val)\n      }\n    )\n\n    watch(\n      () => props.node.checked,\n      (val) => {\n        handleSelectChange(val, props.node.indeterminate)\n      }\n    )\n\n    watch(\n      () => props.node.childNodes.length,\n      () => props.node.reInitChecked()\n    )\n\n    watch(\n      () => props.node.expanded,\n      (val) => {\n        nextTick(() => (expanded.value = val))\n        if (val) {\n          childNodeRendered.value = true\n        }\n      }\n    )\n\n    const getNodeKey = (node: Node): any => {\n      return tree.props.nodeKey\n        ? getNodeKeyUtil(tree.props.nodeKey, node.data)\n        : node.id\n    }\n\n    const getNodeClass = (node: Node) => {\n      const nodeClassFunc = props.props.class\n      if (!nodeClassFunc) {\n        return {}\n      }\n      let className\n      if (isFunction(nodeClassFunc)) {\n        const { data } = node\n        className = nodeClassFunc(data, node)\n      } else {\n        className = nodeClassFunc\n      }\n\n      if (isString(className)) {\n        return { [className]: true }\n      } else {\n        return className\n      }\n    }\n\n    const handleSelectChange = (checked: boolean, indeterminate: boolean) => {\n      if (\n        oldChecked.value !== checked ||\n        oldIndeterminate.value !== indeterminate\n      ) {\n        tree.ctx.emit('check-change', props.node.data, checked, indeterminate)\n      }\n      oldChecked.value = checked\n      oldIndeterminate.value = indeterminate\n    }\n\n    const handleClick = (e: MouseEvent) => {\n      handleCurrentChange(tree.store, tree.ctx.emit, () => {\n        const nodeKeyProp = tree?.props?.nodeKey\n        if (nodeKeyProp) {\n          const curNodeKey = getNodeKey(props.node)\n          tree.store.value.setCurrentNodeKey(curNodeKey)\n        } else {\n          tree.store.value.setCurrentNode(props.node)\n        }\n      })\n      tree.currentNode.value = props.node\n\n      if (tree.props.expandOnClickNode) {\n        handleExpandIconClick()\n      }\n\n      if (\n        (tree.props.checkOnClickNode ||\n          (props.node.isLeaf &&\n            tree.props.checkOnClickLeaf &&\n            props.showCheckbox)) &&\n        !props.node.disabled\n      ) {\n        handleCheckChange(!props.node.checked)\n      }\n      tree.ctx.emit('node-click', props.node.data, props.node, instance, e)\n    }\n\n    const handleContextMenu = (event: Event) => {\n      if (tree.instance.vnode.props?.['onNodeContextmenu']) {\n        event.stopPropagation()\n        event.preventDefault()\n      }\n      tree.ctx.emit(\n        'node-contextmenu',\n        event,\n        props.node.data,\n        props.node,\n        instance\n      )\n    }\n\n    const handleExpandIconClick = () => {\n      if (props.node.isLeaf) return\n      if (expanded.value) {\n        tree.ctx.emit('node-collapse', props.node.data, props.node, instance)\n        props.node.collapse()\n      } else {\n        props.node.expand(() => {\n          ctx.emit('node-expand', props.node.data, props.node, instance)\n        })\n      }\n    }\n\n    const handleCheckChange = (value: CheckboxValueType) => {\n      const checkStrictly = tree?.props.checkStrictly\n      const childNodes = props.node.childNodes\n      if (!checkStrictly && childNodes.length) {\n        value = childNodes.some((node) => !node.isEffectivelyChecked)\n      }\n      props.node.setChecked(value as boolean, !checkStrictly)\n      nextTick(() => {\n        const store = tree.store.value\n        tree.ctx.emit('check', props.node.data, {\n          checkedNodes: store.getCheckedNodes(),\n          checkedKeys: store.getCheckedKeys(),\n          halfCheckedNodes: store.getHalfCheckedNodes(),\n          halfCheckedKeys: store.getHalfCheckedKeys(),\n        })\n      })\n    }\n\n    const handleChildNodeExpand = (\n      nodeData: TreeNodeData,\n      node: Node,\n      instance: ComponentInternalInstance\n    ) => {\n      broadcastExpanded(node)\n      tree.ctx.emit('node-expand', nodeData, node, instance)\n    }\n\n    const handleDragStart = (event: DragEvent) => {\n      if (!tree.props.draggable) return\n      dragEvents.treeNodeDragStart({ event, treeNode: props })\n    }\n\n    const handleDragOver = (event: DragEvent) => {\n      event.preventDefault()\n      if (!tree.props.draggable) return\n      dragEvents.treeNodeDragOver({\n        event,\n        treeNode: { $el: node$.value, node: props.node },\n      })\n    }\n\n    const handleDrop = (event: DragEvent) => {\n      event.preventDefault()\n    }\n\n    const handleDragEnd = (event: DragEvent) => {\n      if (!tree.props.draggable) return\n      dragEvents.treeNodeDragEnd(event)\n    }\n\n    return {\n      ns,\n      node$,\n      tree,\n      expanded,\n      childNodeRendered,\n      oldChecked,\n      oldIndeterminate,\n      getNodeKey,\n      getNodeClass,\n      handleSelectChange,\n      handleClick,\n      handleContextMenu,\n      handleExpandIconClick,\n      handleCheckChange,\n      handleChildNodeExpand,\n      handleDragStart,\n      handleDragOver,\n      handleDrop,\n      handleDragEnd,\n      CaretRight,\n    }\n  },\n})\n</script>\n","import { onMounted, onUpdated } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { getEventCode } from '@pit-element-plus/utils'\n\nimport type TreeStore from './tree-store'\nimport type { Ref } from 'vue'\nimport type { Nullable } from '@pit-element-plus/utils'\n\ninterface UseKeydownOption {\n  el$: Ref<HTMLElement | null>\n}\nexport function useKeydown({ el$ }: UseKeydownOption, store: Ref<TreeStore>) {\n  const ns = useNamespace('tree')\n\n  onMounted(() => {\n    initTabIndex()\n  })\n\n  onUpdated(() => {\n    el$.value?.querySelectorAll('input[type=checkbox]').forEach((checkbox) => {\n      checkbox.setAttribute('tabindex', '-1')\n    })\n  })\n\n  function canNodeFocus(treeItems: HTMLElement[], nextIndex: number): boolean {\n    const currentNode = store.value.getNode(treeItems[nextIndex].dataset.key!)\n    return (\n      currentNode.canFocus &&\n      currentNode.visible &&\n      (currentNode.parent?.expanded || currentNode.parent?.level === 0)\n    )\n  }\n\n  const handleKeydown = (ev: KeyboardEvent): void => {\n    const currentItem = ev.target as HTMLDivElement\n    if (!currentItem.className.includes(ns.b('node'))) return\n    const code = getEventCode(ev)\n    const treeItems: HTMLElement[] = Array.from(\n      el$.value!.querySelectorAll(`.${ns.is('focusable')}[role=treeitem]`)\n    )\n    const currentIndex = treeItems.indexOf(currentItem)\n    let nextIndex\n    if ([EVENT_CODE.up, EVENT_CODE.down].includes(code)) {\n      ev.preventDefault()\n      if (code === EVENT_CODE.up) {\n        nextIndex =\n          currentIndex === -1\n            ? 0\n            : currentIndex !== 0\n              ? currentIndex - 1\n              : treeItems.length - 1\n        const startIndex = nextIndex\n        while (true) {\n          if (canNodeFocus(treeItems, nextIndex)) {\n            break\n          }\n\n          nextIndex--\n          if (nextIndex === startIndex) {\n            nextIndex = -1\n            break\n          }\n          if (nextIndex < 0) {\n            nextIndex = treeItems.length - 1\n          }\n        }\n      } else {\n        nextIndex =\n          currentIndex === -1\n            ? 0\n            : currentIndex < treeItems.length - 1\n              ? currentIndex + 1\n              : 0\n        const startIndex = nextIndex\n        while (true) {\n          if (canNodeFocus(treeItems, nextIndex)) {\n            break\n          }\n\n          nextIndex++\n          if (nextIndex === startIndex) {\n            nextIndex = -1\n            break\n          }\n          if (nextIndex >= treeItems.length) {\n            nextIndex = 0\n          }\n        }\n      }\n      nextIndex !== -1 && treeItems[nextIndex].focus()\n    }\n    if ([EVENT_CODE.left, EVENT_CODE.right].includes(code)) {\n      ev.preventDefault()\n      currentItem.click()\n    }\n    const hasInput = currentItem.querySelector(\n      '[type=\"checkbox\"]'\n    ) as Nullable<HTMLInputElement>\n    if (\n      [EVENT_CODE.enter, EVENT_CODE.numpadEnter, EVENT_CODE.space].includes(\n        code\n      ) &&\n      hasInput\n    ) {\n      ev.preventDefault()\n      hasInput.click()\n    }\n  }\n\n  useEventListener(el$, 'keydown', handleKeydown)\n\n  const initTabIndex = (): void => {\n    if (!el$.value) return\n    const treeItems = Array.from(\n      el$.value.querySelectorAll(`.${ns.is('focusable')}[role=treeitem]`)\n    )\n    const checkboxItems = Array.from(\n      el$.value.querySelectorAll('input[type=checkbox]')\n    )\n    checkboxItems.forEach((checkbox) => {\n      checkbox.setAttribute('tabindex', '-1')\n    })\n    const checkedItem = el$.value.querySelectorAll(\n      `.${ns.is('checked')}[role=treeitem]`\n    )\n    if (checkedItem.length) {\n      checkedItem[0].setAttribute('tabindex', '0')\n      return\n    }\n    treeItems[0]?.setAttribute('tabindex', '0')\n  }\n}\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isBoolean,\n} from '@pit-element-plus/utils'\n\nimport type { ComponentInternalInstance, PropType } from 'vue'\nimport type { EmitFn } from '@pit-element-plus/utils'\nimport type Node from './model/node'\nimport type {\n  AllowDragFunction,\n  AllowDropFunction,\n  CheckedInfo,\n  NodeDropType,\n  RenderContentFunction,\n  TreeComponentProps,\n  TreeData,\n} from './tree.type'\n\nexport const treeProps = buildProps({\n  data: {\n    type: definePropType<TreeData>(Array),\n    default: () => [],\n  },\n  emptyText: {\n    type: String,\n  },\n  renderAfterExpand: {\n    type: Boolean,\n    default: true,\n  },\n  nodeKey: String,\n  checkStrictly: Boolean,\n  defaultExpandAll: Boolean,\n  expandOnClickNode: {\n    type: Boolean,\n    default: true,\n  },\n  checkOnClickNode: Boolean,\n  checkOnClickLeaf: {\n    type: Boolean,\n    default: true,\n  },\n  checkDescendants: Boolean,\n  autoExpandParent: {\n    type: Boolean,\n    default: true,\n  },\n  defaultCheckedKeys: {\n    type: Array as PropType<TreeComponentProps['defaultCheckedKeys']>,\n  },\n  defaultExpandedKeys: {\n    type: Array as PropType<TreeComponentProps['defaultExpandedKeys']>,\n  },\n  currentNodeKey: {\n    type: [String, Number] as PropType<string | number>,\n  },\n  renderContent: {\n    type: definePropType<RenderContentFunction>(Function),\n  },\n  showCheckbox: Boolean,\n  draggable: Boolean,\n  allowDrag: {\n    type: definePropType<AllowDragFunction>(Function),\n  },\n  allowDrop: {\n    type: definePropType<AllowDropFunction>(Function),\n  },\n  props: {\n    type: Object as PropType<TreeComponentProps['props']>,\n    default: () => ({\n      children: 'children',\n      label: 'label',\n      disabled: 'disabled',\n    }),\n  },\n  lazy: Boolean,\n  highlightCurrent: Boolean,\n  load: {\n    type: Function as PropType<TreeComponentProps['load']>,\n  },\n  filterNodeMethod: {\n    type: Function as PropType<TreeComponentProps['filterNodeMethod']>,\n  },\n  accordion: Boolean,\n  indent: {\n    type: Number,\n    default: 18,\n  },\n  icon: {\n    type: iconPropType,\n  },\n} as const)\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const treeEmits = {\n  'check-change': (data: any, checked: boolean, indeterminate: boolean) =>\n    data && isBoolean(checked) && isBoolean(indeterminate),\n  'current-change': (data: any | null, node: Node | null) => true,\n  'node-click': (\n    data: any,\n    node: Node,\n    nodeInstance: ComponentInternalInstance | null,\n    evt: MouseEvent\n  ) => data && node && evt instanceof Event,\n  'node-contextmenu': (\n    evt: Event,\n    data: any,\n    node: Node,\n    nodeInstance: ComponentInternalInstance | null\n  ) => evt instanceof Event && data && node,\n  'node-collapse': (\n    data: any,\n    node: Node,\n    nodeInstance: ComponentInternalInstance | null\n  ) => data && node,\n  'node-expand': (\n    data: any,\n    node: Node,\n    nodeInstance: ComponentInternalInstance | null\n  ) => data && node,\n  check: (data: any, checkedInfo: CheckedInfo) => data && checkedInfo,\n  'node-drag-start': (node: Node, evt: DragEvent) => node && evt,\n  'node-drag-end': (\n    draggingNode: Node,\n    dropNode: Node | null,\n    dropType: NodeDropType,\n    evt: DragEvent\n  ) => draggingNode && evt,\n  'node-drop': (\n    draggingNode: Node,\n    dropNode: Node,\n    dropType: Exclude<NodeDropType, 'none'>,\n    evt: DragEvent\n  ) => draggingNode && dropNode && evt,\n  'node-drag-leave': (draggingNode: Node, oldDropNode: Node, evt: DragEvent) =>\n    draggingNode && oldDropNode && evt,\n  'node-drag-enter': (draggingNode: Node, dropNode: Node, evt: DragEvent) =>\n    draggingNode && dropNode && evt,\n  'node-drag-over': (draggingNode: Node, dropNode: Node, evt: DragEvent) =>\n    draggingNode && dropNode && evt,\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nexport type TreeEmits = EmitFn<typeof treeEmits>\n","<template>\n  <div\n    ref=\"el$\"\n    :class=\"[\n      ns.b(),\n      ns.is('dragging', !!dragState.draggingNode),\n      ns.is('drop-not-allow', !dragState.allowDrop),\n      ns.is('drop-inner', dragState.dropType === 'inner'),\n      { [ns.m('highlight-current')]: highlightCurrent },\n    ]\"\n    role=\"tree\"\n  >\n    <el-tree-node\n      v-for=\"child in root.childNodes\"\n      :key=\"getNodeKey(child)\"\n      :node=\"child\"\n      :props=\"props\"\n      :accordion=\"accordion\"\n      :render-after-expand=\"renderAfterExpand\"\n      :show-checkbox=\"showCheckbox\"\n      :render-content=\"renderContent\"\n      @node-expand=\"handleNodeExpand\"\n    />\n    <div v-if=\"isEmpty\" :class=\"ns.e('empty-block')\">\n      <slot name=\"empty\">\n        <span :class=\"ns.e('empty-text')\">\n          {{ emptyText ?? t('el.tree.emptyText') }}\n        </span>\n      </slot>\n    </div>\n    <div\n      v-show=\"dragState.showDropIndicator\"\n      ref=\"dropIndicator$\"\n      :class=\"ns.e('drop-indicator')\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  provide,\n  ref,\n  watch,\n} from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { formItemContextKey } from '@pit-element-plus/components/form'\nimport TreeStore from './model/tree-store'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport ElTreeNode from './tree-node.vue'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { useDragNodeHandler } from './model/useDragNode'\nimport { useKeydown } from './model/useKeydown'\nimport { ROOT_TREE_INJECTION_KEY } from './tokens'\nimport { treeEmits, treeProps } from './tree'\n\nimport type Node from './model/node'\nimport type { ComponentInternalInstance } from 'vue'\nimport type { Nullable } from '@pit-element-plus/utils'\nimport type { FilterValue, TreeData, TreeKey, TreeNodeData } from './tree.type'\n\nexport default defineComponent({\n  name: 'ElTree',\n  components: { ElTreeNode },\n  props: treeProps,\n  emits: treeEmits,\n  setup(props, ctx) {\n    const { t } = useLocale()\n    const ns = useNamespace('tree')\n\n    const store = ref<TreeStore>(\n      new TreeStore({\n        key: props.nodeKey,\n        data: props.data,\n        lazy: props.lazy,\n        props: props.props,\n        load: props.load,\n        currentNodeKey: props.currentNodeKey,\n        checkStrictly: props.checkStrictly,\n        checkDescendants: props.checkDescendants,\n        defaultCheckedKeys: props.defaultCheckedKeys,\n        defaultExpandedKeys: props.defaultExpandedKeys,\n        autoExpandParent: props.autoExpandParent,\n        defaultExpandAll: props.defaultExpandAll,\n        filterNodeMethod: props.filterNodeMethod,\n      })\n    )\n\n    store.value.initialize()\n\n    const root = ref<Node>(store.value.root)\n    const currentNode = ref<Node | null>(null)\n    const el$ = ref<Nullable<HTMLElement>>(null)\n    const dropIndicator$ = ref<Nullable<HTMLElement>>(null)\n\n    const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n\n    const { dragState } = useDragNodeHandler({\n      props,\n      ctx,\n      el$,\n      dropIndicator$,\n      store,\n    })\n\n    useKeydown({ el$ }, store)\n\n    const instance = getCurrentInstance()\n\n    const isSelectTree = computed(() => {\n      let parent = instance?.parent\n      while (parent) {\n        if (parent.type.name === 'ElTreeSelect') {\n          return true\n        }\n        parent = parent.parent\n      }\n      return false\n    })\n\n    const isEmpty = computed(() => {\n      const { childNodes } = root.value\n      return (\n        (!childNodes ||\n          childNodes.length === 0 ||\n          childNodes.every(({ visible }) => !visible)) &&\n        !isSelectTree.value\n      )\n    })\n\n    watch(\n      () => props.currentNodeKey,\n      (newVal) => {\n        store.value.setCurrentNodeKey(newVal ?? null)\n      }\n    )\n\n    watch(\n      () => props.defaultCheckedKeys,\n      (newVal, oldVal) => {\n        if (isEqual(newVal, oldVal)) return\n\n        store.value.setDefaultCheckedKey(newVal ?? [])\n      }\n    )\n\n    watch(\n      () => props.defaultExpandedKeys,\n      (newVal) => {\n        store.value.setDefaultExpandedKeys(newVal ?? [])\n      }\n    )\n\n    watch(\n      () => props.data,\n      (newVal) => {\n        store.value.setData(newVal)\n      },\n      { deep: true }\n    )\n\n    watch(\n      () => props.checkStrictly,\n      (newVal) => {\n        store.value.checkStrictly = newVal\n      }\n    )\n\n    const filter = (value: FilterValue) => {\n      if (!props.filterNodeMethod)\n        throw new Error('[Tree] filterNodeMethod is required when filter')\n      store.value.filter(value)\n    }\n\n    const getNodeKey = (node: Node) => {\n      return props.nodeKey ? getNodeKeyUtil(props.nodeKey, node.data) : node.id\n    }\n\n    const requireNodeKey = (methodName: string) => {\n      if (!props.nodeKey) {\n        throw new Error(`[Tree] nodeKey is required in ${methodName}`)\n      }\n    }\n\n    const getNodePath = (data: TreeKey | TreeNodeData) => {\n      requireNodeKey('getNodePath')\n\n      const node = store.value.getNode(data)\n      if (!node) return []\n      const path = [node.data]\n      let parent = node.parent\n      while (parent && parent !== root.value) {\n        path.push(parent.data)\n        parent = parent.parent\n      }\n      return path.reverse()\n    }\n\n    const getCheckedNodes = (\n      leafOnly?: boolean,\n      includeHalfChecked?: boolean\n    ): TreeNodeData[] => {\n      return store.value.getCheckedNodes(leafOnly, includeHalfChecked)\n    }\n\n    const getCheckedKeys = (leafOnly?: boolean): TreeKey[] => {\n      return store.value.getCheckedKeys(leafOnly)\n    }\n\n    const getCurrentNode = () => {\n      const currentNode = store.value.getCurrentNode()\n      return currentNode ? currentNode.data : null\n    }\n\n    const getCurrentKey = (): TreeKey | null => {\n      requireNodeKey('getCurrentKey')\n\n      const currentNode = getCurrentNode()\n      return currentNode ? currentNode[props.nodeKey!] : null\n    }\n\n    const setCheckedNodes = (nodes: Node[], leafOnly?: boolean) => {\n      requireNodeKey('setCheckedNodes')\n\n      store.value.setCheckedNodes(nodes, leafOnly)\n    }\n\n    const setCheckedKeys = (keys: TreeKey[], leafOnly?: boolean) => {\n      requireNodeKey('setCheckedKeys')\n\n      store.value.setCheckedKeys(keys, leafOnly)\n    }\n\n    const setChecked = (\n      data: TreeKey | TreeNodeData,\n      checked: boolean,\n      deep: boolean\n    ) => {\n      store.value.setChecked(data, checked, deep)\n    }\n\n    const getHalfCheckedNodes = (): TreeNodeData[] => {\n      return store.value.getHalfCheckedNodes()\n    }\n\n    const getHalfCheckedKeys = (): TreeKey[] => {\n      return store.value.getHalfCheckedKeys()\n    }\n\n    const setCurrentNode = (node: Node, shouldAutoExpandParent = true) => {\n      requireNodeKey('setCurrentNode')\n\n      handleCurrentChange(store, ctx.emit, () => {\n        broadcastExpanded(node)\n        store.value.setUserCurrentNode(node, shouldAutoExpandParent)\n      })\n    }\n\n    const setCurrentKey = (\n      key: TreeKey | null = null,\n      shouldAutoExpandParent = true\n    ) => {\n      requireNodeKey('setCurrentKey')\n\n      handleCurrentChange(store, ctx.emit, () => {\n        broadcastExpanded()\n        store.value.setCurrentNodeKey(key, shouldAutoExpandParent)\n      })\n    }\n\n    const getNode = (data: TreeKey | TreeNodeData): Node => {\n      return store.value.getNode(data)\n    }\n\n    const remove = (data: TreeNodeData | Node) => {\n      store.value.remove(data)\n    }\n\n    const append = (\n      data: TreeNodeData,\n      parentNode: TreeNodeData | TreeKey | Node\n    ) => {\n      store.value.append(data, parentNode)\n    }\n\n    const insertBefore = (\n      data: TreeNodeData,\n      refNode: TreeKey | TreeNodeData | Node\n    ) => {\n      store.value.insertBefore(data, refNode)\n    }\n\n    const insertAfter = (\n      data: TreeNodeData,\n      refNode: TreeKey | TreeNodeData | Node\n    ) => {\n      store.value.insertAfter(data, refNode)\n    }\n\n    const handleNodeExpand = (\n      nodeData: TreeNodeData,\n      node: Node,\n      instance: ComponentInternalInstance\n    ) => {\n      broadcastExpanded(node)\n      ctx.emit('node-expand', nodeData, node, instance)\n    }\n\n    const updateKeyChildren = (key: TreeKey, data: TreeData) => {\n      requireNodeKey('updateKeyChildren')\n\n      store.value.updateChildren(key, data)\n    }\n\n    provide(ROOT_TREE_INJECTION_KEY, {\n      ctx,\n      props,\n      store,\n      root,\n      currentNode,\n      instance,\n    })\n\n    provide(formItemContextKey, undefined)\n\n    return {\n      ns,\n      // ref\n      store,\n      root,\n      currentNode,\n      dragState,\n      el$,\n      dropIndicator$,\n\n      // computed\n      isEmpty,\n\n      // methods\n      filter,\n      getNodeKey,\n      getNodePath,\n      getCheckedNodes,\n      getCheckedKeys,\n      getCurrentNode,\n      getCurrentKey,\n      setCheckedNodes,\n      setCheckedKeys,\n      setChecked,\n      getHalfCheckedNodes,\n      getHalfCheckedKeys,\n      setCurrentNode,\n      setCurrentKey,\n      t,\n      getNode,\n      remove,\n      append,\n      insertBefore,\n      insertAfter,\n      handleNodeExpand,\n      updateKeyChildren,\n    }\n  },\n})\n</script>\n","<template>\n  <div\n    ref=\"el$\"\n    :class=\"[\n      ns.b(),\n      ns.is('dragging', !!dragState.draggingNode),\n      ns.is('drop-not-allow', !dragState.allowDrop),\n      ns.is('drop-inner', dragState.dropType === 'inner'),\n      { [ns.m('highlight-current')]: highlightCurrent },\n    ]\"\n    role=\"tree\"\n  >\n    <el-tree-node\n      v-for=\"child in root.childNodes\"\n      :key=\"getNodeKey(child)\"\n      :node=\"child\"\n      :props=\"props\"\n      :accordion=\"accordion\"\n      :render-after-expand=\"renderAfterExpand\"\n      :show-checkbox=\"showCheckbox\"\n      :render-content=\"renderContent\"\n      @node-expand=\"handleNodeExpand\"\n    />\n    <div v-if=\"isEmpty\" :class=\"ns.e('empty-block')\">\n      <slot name=\"empty\">\n        <span :class=\"ns.e('empty-text')\">\n          {{ emptyText ?? t('el.tree.emptyText') }}\n        </span>\n      </slot>\n    </div>\n    <div\n      v-show=\"dragState.showDropIndicator\"\n      ref=\"dropIndicator$\"\n      :class=\"ns.e('drop-indicator')\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  provide,\n  ref,\n  watch,\n} from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { formItemContextKey } from '@pit-element-plus/components/form'\nimport TreeStore from './model/tree-store'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport ElTreeNode from './tree-node.vue'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { useDragNodeHandler } from './model/useDragNode'\nimport { useKeydown } from './model/useKeydown'\nimport { ROOT_TREE_INJECTION_KEY } from './tokens'\nimport { treeEmits, treeProps } from './tree'\n\nimport type Node from './model/node'\nimport type { ComponentInternalInstance } from 'vue'\nimport type { Nullable } from '@pit-element-plus/utils'\nimport type { FilterValue, TreeData, TreeKey, TreeNodeData } from './tree.type'\n\nexport default defineComponent({\n  name: 'ElTree',\n  components: { ElTreeNode },\n  props: treeProps,\n  emits: treeEmits,\n  setup(props, ctx) {\n    const { t } = useLocale()\n    const ns = useNamespace('tree')\n\n    const store = ref<TreeStore>(\n      new TreeStore({\n        key: props.nodeKey,\n        data: props.data,\n        lazy: props.lazy,\n        props: props.props,\n        load: props.load,\n        currentNodeKey: props.currentNodeKey,\n        checkStrictly: props.checkStrictly,\n        checkDescendants: props.checkDescendants,\n        defaultCheckedKeys: props.defaultCheckedKeys,\n        defaultExpandedKeys: props.defaultExpandedKeys,\n        autoExpandParent: props.autoExpandParent,\n        defaultExpandAll: props.defaultExpandAll,\n        filterNodeMethod: props.filterNodeMethod,\n      })\n    )\n\n    store.value.initialize()\n\n    const root = ref<Node>(store.value.root)\n    const currentNode = ref<Node | null>(null)\n    const el$ = ref<Nullable<HTMLElement>>(null)\n    const dropIndicator$ = ref<Nullable<HTMLElement>>(null)\n\n    const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n\n    const { dragState } = useDragNodeHandler({\n      props,\n      ctx,\n      el$,\n      dropIndicator$,\n      store,\n    })\n\n    useKeydown({ el$ }, store)\n\n    const instance = getCurrentInstance()\n\n    const isSelectTree = computed(() => {\n      let parent = instance?.parent\n      while (parent) {\n        if (parent.type.name === 'ElTreeSelect') {\n          return true\n        }\n        parent = parent.parent\n      }\n      return false\n    })\n\n    const isEmpty = computed(() => {\n      const { childNodes } = root.value\n      return (\n        (!childNodes ||\n          childNodes.length === 0 ||\n          childNodes.every(({ visible }) => !visible)) &&\n        !isSelectTree.value\n      )\n    })\n\n    watch(\n      () => props.currentNodeKey,\n      (newVal) => {\n        store.value.setCurrentNodeKey(newVal ?? null)\n      }\n    )\n\n    watch(\n      () => props.defaultCheckedKeys,\n      (newVal, oldVal) => {\n        if (isEqual(newVal, oldVal)) return\n\n        store.value.setDefaultCheckedKey(newVal ?? [])\n      }\n    )\n\n    watch(\n      () => props.defaultExpandedKeys,\n      (newVal) => {\n        store.value.setDefaultExpandedKeys(newVal ?? [])\n      }\n    )\n\n    watch(\n      () => props.data,\n      (newVal) => {\n        store.value.setData(newVal)\n      },\n      { deep: true }\n    )\n\n    watch(\n      () => props.checkStrictly,\n      (newVal) => {\n        store.value.checkStrictly = newVal\n      }\n    )\n\n    const filter = (value: FilterValue) => {\n      if (!props.filterNodeMethod)\n        throw new Error('[Tree] filterNodeMethod is required when filter')\n      store.value.filter(value)\n    }\n\n    const getNodeKey = (node: Node) => {\n      return props.nodeKey ? getNodeKeyUtil(props.nodeKey, node.data) : node.id\n    }\n\n    const requireNodeKey = (methodName: string) => {\n      if (!props.nodeKey) {\n        throw new Error(`[Tree] nodeKey is required in ${methodName}`)\n      }\n    }\n\n    const getNodePath = (data: TreeKey | TreeNodeData) => {\n      requireNodeKey('getNodePath')\n\n      const node = store.value.getNode(data)\n      if (!node) return []\n      const path = [node.data]\n      let parent = node.parent\n      while (parent && parent !== root.value) {\n        path.push(parent.data)\n        parent = parent.parent\n      }\n      return path.reverse()\n    }\n\n    const getCheckedNodes = (\n      leafOnly?: boolean,\n      includeHalfChecked?: boolean\n    ): TreeNodeData[] => {\n      return store.value.getCheckedNodes(leafOnly, includeHalfChecked)\n    }\n\n    const getCheckedKeys = (leafOnly?: boolean): TreeKey[] => {\n      return store.value.getCheckedKeys(leafOnly)\n    }\n\n    const getCurrentNode = () => {\n      const currentNode = store.value.getCurrentNode()\n      return currentNode ? currentNode.data : null\n    }\n\n    const getCurrentKey = (): TreeKey | null => {\n      requireNodeKey('getCurrentKey')\n\n      const currentNode = getCurrentNode()\n      return currentNode ? currentNode[props.nodeKey!] : null\n    }\n\n    const setCheckedNodes = (nodes: Node[], leafOnly?: boolean) => {\n      requireNodeKey('setCheckedNodes')\n\n      store.value.setCheckedNodes(nodes, leafOnly)\n    }\n\n    const setCheckedKeys = (keys: TreeKey[], leafOnly?: boolean) => {\n      requireNodeKey('setCheckedKeys')\n\n      store.value.setCheckedKeys(keys, leafOnly)\n    }\n\n    const setChecked = (\n      data: TreeKey | TreeNodeData,\n      checked: boolean,\n      deep: boolean\n    ) => {\n      store.value.setChecked(data, checked, deep)\n    }\n\n    const getHalfCheckedNodes = (): TreeNodeData[] => {\n      return store.value.getHalfCheckedNodes()\n    }\n\n    const getHalfCheckedKeys = (): TreeKey[] => {\n      return store.value.getHalfCheckedKeys()\n    }\n\n    const setCurrentNode = (node: Node, shouldAutoExpandParent = true) => {\n      requireNodeKey('setCurrentNode')\n\n      handleCurrentChange(store, ctx.emit, () => {\n        broadcastExpanded(node)\n        store.value.setUserCurrentNode(node, shouldAutoExpandParent)\n      })\n    }\n\n    const setCurrentKey = (\n      key: TreeKey | null = null,\n      shouldAutoExpandParent = true\n    ) => {\n      requireNodeKey('setCurrentKey')\n\n      handleCurrentChange(store, ctx.emit, () => {\n        broadcastExpanded()\n        store.value.setCurrentNodeKey(key, shouldAutoExpandParent)\n      })\n    }\n\n    const getNode = (data: TreeKey | TreeNodeData): Node => {\n      return store.value.getNode(data)\n    }\n\n    const remove = (data: TreeNodeData | Node) => {\n      store.value.remove(data)\n    }\n\n    const append = (\n      data: TreeNodeData,\n      parentNode: TreeNodeData | TreeKey | Node\n    ) => {\n      store.value.append(data, parentNode)\n    }\n\n    const insertBefore = (\n      data: TreeNodeData,\n      refNode: TreeKey | TreeNodeData | Node\n    ) => {\n      store.value.insertBefore(data, refNode)\n    }\n\n    const insertAfter = (\n      data: TreeNodeData,\n      refNode: TreeKey | TreeNodeData | Node\n    ) => {\n      store.value.insertAfter(data, refNode)\n    }\n\n    const handleNodeExpand = (\n      nodeData: TreeNodeData,\n      node: Node,\n      instance: ComponentInternalInstance\n    ) => {\n      broadcastExpanded(node)\n      ctx.emit('node-expand', nodeData, node, instance)\n    }\n\n    const updateKeyChildren = (key: TreeKey, data: TreeData) => {\n      requireNodeKey('updateKeyChildren')\n\n      store.value.updateChildren(key, data)\n    }\n\n    provide(ROOT_TREE_INJECTION_KEY, {\n      ctx,\n      props,\n      store,\n      root,\n      currentNode,\n      instance,\n    })\n\n    provide(formItemContextKey, undefined)\n\n    return {\n      ns,\n      // ref\n      store,\n      root,\n      currentNode,\n      dragState,\n      el$,\n      dropIndicator$,\n\n      // computed\n      isEmpty,\n\n      // methods\n      filter,\n      getNodeKey,\n      getNodePath,\n      getCheckedNodes,\n      getCheckedKeys,\n      getCurrentNode,\n      getCurrentKey,\n      setCheckedNodes,\n      setCheckedKeys,\n      setChecked,\n      getHalfCheckedNodes,\n      getHalfCheckedKeys,\n      setCurrentNode,\n      setCurrentKey,\n      t,\n      getNode,\n      remove,\n      append,\n      insertBefore,\n      insertAfter,\n      handleNodeExpand,\n      updateKeyChildren,\n    }\n  },\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Tree from './src/tree.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTree: SFCWithInstall<typeof Tree> = withInstall(Tree)\n\nexport default ElTree\n\nexport * from './src/tree.type'\nexport * from './src/instance'\nexport * from './src/tokens'\nexport * from './src/tree'\n","// @ts-nocheck\nimport { computed, nextTick, onMounted, toRefs, watch } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { pick } from 'lodash-unified'\nimport ElSelect from '@pit-element-plus/components/select'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { getEventCode } from '@pit-element-plus/utils'\n\nimport type { Ref } from 'vue'\nimport type { SelectInstance } from '@pit-element-plus/components/select'\nimport type { TreeInstance } from '@pit-element-plus/components/tree'\n\nexport const useSelect = (\n  props,\n  { attrs, emit },\n  {\n    select,\n    tree,\n    key,\n  }: {\n    select: Ref<SelectInstance | undefined>\n    tree: Ref<TreeInstance | undefined>\n    key: Ref<string>\n  }\n) => {\n  const ns = useNamespace('tree-select')\n\n  // update tree data when use filterMethod/remoteMethod\n  watch(\n    () => props.data,\n    () => {\n      if (props.filterable) {\n        nextTick(() => {\n          // let tree node expand only, same with tree filter\n          tree.value?.filter(select.value?.states.inputValue)\n        })\n      }\n    },\n    { flush: 'post' }\n  )\n\n  const focusLastNode = (listNode) => {\n    const lastNode = listNode.at(-1)\n    if (lastNode.expanded && lastNode.childNodes.at(-1)) {\n      focusLastNode([lastNode.childNodes.at(-1)])\n    } else {\n      const el = tree.value.el$?.querySelector(\n        `[data-key=\"${listNode.at(-1).key}\"]`\n      )\n      el?.focus({ preventScroll: true })\n      return\n    }\n  }\n\n  onMounted(() => {\n    useEventListener(\n      () => select.value?.$el,\n      'keydown',\n      async (evt) => {\n        const code = getEventCode(evt)\n        const { dropdownMenuVisible } = select.value!\n        if (\n          [EVENT_CODE.down, EVENT_CODE.up].includes(code) &&\n          dropdownMenuVisible\n        ) {\n          await nextTick()\n          // wait navigateOption to finish\n          setTimeout(() => {\n            if (EVENT_CODE.up === code) {\n              const listNode = tree.value.store.root.childNodes\n              focusLastNode(listNode)\n              return\n            }\n            // el-select-dropdown__item => el-tree-node__content => el-tree-node__content\n            select.value.optionsArray[\n              select.value.states.hoveringIndex\n            ].$el?.parentNode?.parentNode?.focus({ preventScroll: true })\n          })\n        }\n      },\n      {\n        capture: true,\n      }\n    )\n  })\n\n  const result = {\n    ...pick(toRefs(props), Object.keys(ElSelect.props)),\n    ...attrs,\n    class: computed(() => attrs.class),\n    style: computed(() => attrs.style),\n    // attrs is not reactive, when v-model binding source changes,\n    // this listener is still old, see the bug(or test 'v-model source change'):\n    // https://github.com/element-plus/element-plus/issues/14204\n    'onUpdate:modelValue': (value) => emit(UPDATE_MODEL_EVENT, value),\n    valueKey: key,\n    popperClass: computed(() => {\n      const classes = [ns.e('popper')]\n      if (props.popperClass) classes.push(props.popperClass)\n      return classes.join(' ')\n    }),\n    filterMethod: (keyword = '') => {\n      if (props.filterMethod) {\n        props.filterMethod(keyword)\n      } else if (props.remoteMethod) {\n        props.remoteMethod(keyword)\n      } else {\n        // let tree node expand only, same with tree filter\n        tree.value?.filter(keyword)\n      }\n    },\n  }\n\n  return result\n}\n","import { defineComponent, getCurrentInstance, nextTick, watch } from 'vue'\nimport { ElOption } from '@pit-element-plus/components/select'\n\nconst component = defineComponent({\n  extends: ElOption,\n  setup(props, ctx) {\n    const result = (ElOption.setup as NonNullable<any>)(props, ctx)\n\n    // use methods.selectOptionClick\n    delete result.selectOptionClick\n\n    const vm = (getCurrentInstance() as NonNullable<any>).proxy\n\n    // Fix: https://github.com/element-plus/element-plus/issues/7917\n    // `el-option` will delete the cache before unmount,\n    // This is normal for flat arrays `<el-select><el-option v-for=\"3\"></el-select>`,\n    // Because the same node key does not create a difference node,\n    // But in tree data, the same key at different levels will create diff nodes,\n    // So the destruction of `el-option` in `nextTick` will be slower than\n    // the creation of new `el-option`, which will delete the new node,\n    // here restore the deleted node.\n    // @link https://github.com/element-plus/element-plus/blob/6df6e49db07b38d6cc3b5e9a960782bd30879c11/packages/components/select/src/option.vue#L78\n    nextTick(() => {\n      if (!result.select.states.cachedOptions.get(vm.value)) {\n        result.select.onOptionCreate(vm)\n      }\n    })\n\n    watch(\n      () => ctx.attrs.visible,\n      (val) => {\n        nextTick(() => {\n          result.states.visible = val\n        })\n      },\n      {\n        immediate: true,\n      }\n    )\n\n    return result\n  },\n  methods: {\n    selectOptionClick() {\n      // $el.parentElement => el-tree-node__content\n      this.$el.parentElement.click()\n    },\n  },\n})\n\nexport default component\n","import { isArray } from '@pit-element-plus/utils'\n\nimport type { TreeNodeData } from '@pit-element-plus/components/tree/src/tree.type'\n\nexport function isValidValue(val: any) {\n  return val || val === 0\n}\n\nexport function isValidArray(val: any) {\n  return isArray(val) && val.length\n}\n\nexport function toValidArray(val: any) {\n  return isArray(val) ? val : isValidValue(val) ? [val] : []\n}\n\ntype TreeCallback<T extends TreeNodeData, R> = (\n  data: T,\n  index: number,\n  array: T[],\n  parent?: T\n) => R\n\ntype TreeFindCallback<T extends TreeNodeData> = TreeCallback<T, boolean>\n\nexport function treeFind<T extends TreeNodeData>(\n  treeData: T[],\n  findCallback: TreeFindCallback<T>,\n  getChildren: (data: T) => T[]\n): T | undefined\nexport function treeFind<T extends TreeNodeData, R>(\n  treeData: T[],\n  findCallback: TreeFindCallback<T>,\n  getChildren: (data: T) => T[],\n  resultCallback?: TreeCallback<T, R>,\n  parent?: T\n): R | undefined\nexport function treeFind<T extends TreeNodeData, R>(\n  treeData: T[],\n  findCallback: TreeFindCallback<T>,\n  getChildren: (data: T) => T[],\n  resultCallback?: TreeCallback<T, R>,\n  parent?: T\n): T | R | undefined {\n  for (let i = 0; i < treeData.length; i++) {\n    const data = treeData[i]\n    if (findCallback(data, i, treeData, parent)) {\n      return resultCallback ? resultCallback(data, i, treeData, parent) : data\n    } else {\n      const children = getChildren(data)\n      if (isValidArray(children)) {\n        const find = treeFind(\n          children,\n          findCallback,\n          getChildren,\n          resultCallback,\n          data\n        )\n        if (find) return find\n      }\n    }\n  }\n}\n\nexport function treeEach<T extends TreeNodeData>(\n  treeData: T[],\n  callback: TreeCallback<T, void>,\n  getChildren: (data: T) => T[],\n  parent?: T\n) {\n  for (let i = 0; i < treeData.length; i++) {\n    const data = treeData[i]\n    callback(data, i, treeData, parent)\n\n    const children = getChildren(data)\n    if (isValidArray(children)) {\n      treeEach(children, callback, getChildren, data)\n    }\n  }\n}\n","// @ts-nocheck\nimport { computed, nextTick, toRefs, watch } from 'vue'\nimport { isEqual, isNil, pick } from 'lodash-unified'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport {\n  escapeStringRegexp,\n  isEmpty,\n  isFunction,\n} from '@pit-element-plus/utils'\nimport ElTree from '@pit-element-plus/components/tree'\nimport TreeSelectOption from './tree-select-option'\nimport {\n  isValidArray,\n  isValidValue,\n  toValidArray,\n  treeEach,\n  treeFind,\n} from './utils'\n\nimport type { CacheOption } from './cache-options'\nimport type { Ref } from 'vue'\nimport type { SelectInstance } from '@pit-element-plus/components/select'\nimport type Node from '@pit-element-plus/components/tree/src/model/node'\nimport type { TreeNodeData } from '@pit-element-plus/components/tree/src/tree.type'\nimport type { TreeInstance } from '@pit-element-plus/components/tree'\n\nexport const useTree = (\n  props,\n  { attrs, slots, emit },\n  {\n    select,\n    tree,\n    key,\n  }: {\n    select: Ref<SelectInstance | undefined>\n    tree: Ref<TreeInstance | undefined>\n    key: Ref<string>\n  }\n) => {\n  watch(\n    [() => props.modelValue, tree],\n    () => {\n      if (props.showCheckbox) {\n        nextTick(() => {\n          const treeInstance = tree.value\n          if (\n            treeInstance &&\n            !isEqual(\n              treeInstance.getCheckedKeys(),\n              toValidArray(props.modelValue)\n            )\n          ) {\n            treeInstance.setCheckedKeys(toValidArray(props.modelValue))\n          }\n        })\n      }\n    },\n    {\n      immediate: true,\n      deep: true,\n    }\n  )\n\n  const propsMap = computed(() => ({\n    value: key.value,\n    label: 'label',\n    children: 'children',\n    disabled: 'disabled',\n    isLeaf: 'isLeaf',\n    ...props.props,\n  }))\n\n  const getNodeValByProp = (\n    prop: 'value' | 'label' | 'children' | 'disabled' | 'isLeaf',\n    data: TreeNodeData\n  ) => {\n    const propVal = propsMap.value[prop]\n    if (isFunction(propVal)) {\n      return propVal(\n        data,\n        tree.value?.getNode(getNodeValByProp('value', data)) as Node\n      )\n    } else {\n      return data[propVal as string]\n    }\n  }\n\n  const defaultExpandedParentKeys = toValidArray(props.modelValue)\n    .map((value) => {\n      return treeFind(\n        props.data || [],\n        (data) => getNodeValByProp('value', data) === value,\n        (data) => getNodeValByProp('children', data),\n        (data, index, array, parent) =>\n          parent && getNodeValByProp('value', parent)\n      )\n    })\n    .filter((item) => isValidValue(item))\n\n  const cacheOptions = computed(() => {\n    if (!props.renderAfterExpand && !props.lazy) return []\n\n    const options: CacheOption[] = []\n\n    treeEach(\n      props.data.concat(props.cacheData),\n      (node) => {\n        const value = getNodeValByProp('value', node)\n        options.push({\n          value,\n          currentLabel: getNodeValByProp('label', node),\n          isDisabled: getNodeValByProp('disabled', node),\n        })\n      },\n      (data) => getNodeValByProp('children', data)\n    )\n\n    return options\n  })\n\n  const getChildCheckedKeys = () => {\n    return tree.value?.getCheckedKeys().filter((checkedKey) => {\n      const node = tree.value?.getNode(checkedKey) as Node\n      return !isNil(node) && isEmpty(node.childNodes)\n    })\n  }\n\n  const emitChange = (val: any | any[]) => {\n    if (!isEqual(props.modelValue, val)) {\n      emit(CHANGE_EVENT, val)\n    }\n  }\n\n  function update(val) {\n    emit(UPDATE_MODEL_EVENT, val)\n    emitChange(val)\n  }\n\n  return {\n    ...pick(toRefs(props), Object.keys(ElTree.props)),\n    ...attrs,\n    nodeKey: key,\n\n    // only expand on click node when the `check-strictly` is false\n    expandOnClickNode: computed(() => {\n      return !props.checkStrictly && props.expandOnClickNode\n    }),\n\n    // show current selected node only first time,\n    // fix the problem of expanding multiple nodes when checking multiple nodes\n    defaultExpandedKeys: computed(() => {\n      return props.defaultExpandedKeys\n        ? props.defaultExpandedKeys.concat(defaultExpandedParentKeys)\n        : defaultExpandedParentKeys\n    }),\n\n    renderContent: (h, { node, data, store }) => {\n      return h(\n        TreeSelectOption,\n        {\n          value: getNodeValByProp('value', data),\n          label: getNodeValByProp('label', data),\n          disabled: getNodeValByProp('disabled', data),\n          visible: node.visible,\n        },\n        props.renderContent\n          ? () => props.renderContent(h, { node, data, store })\n          : slots.default\n            ? () => slots.default({ node, data, store })\n            : undefined\n      )\n    },\n    filterNodeMethod: (value, data, node) => {\n      if (props.filterNodeMethod)\n        return props.filterNodeMethod(value, data, node)\n      if (!value) return true\n      const regexp = new RegExp(escapeStringRegexp(value), 'i')\n      return regexp.test(getNodeValByProp('label', data) || '')\n    },\n    onNodeClick: (data, node, e) => {\n      attrs.onNodeClick?.(data, node, e)\n\n      // `onCheck` is trigger when `checkOnClickNode`\n      if (props.showCheckbox && props.checkOnClickNode) return\n\n      // now `checkOnClickNode` is false, only no checkbox and `checkStrictly` or `isLeaf`\n      if (!props.showCheckbox && (props.checkStrictly || node.isLeaf)) {\n        if (!getNodeValByProp('disabled', data)) {\n          const option = select.value?.states.options.get(\n            getNodeValByProp('value', data)\n          )\n          select.value?.handleOptionSelect(option)\n        }\n      } else if (props.expandOnClickNode) {\n        e.proxy.handleExpandIconClick()\n      }\n    },\n    onCheck: (data, params) => {\n      // ignore when no checkbox, like only `checkOnClickNode` is true\n      if (!props.showCheckbox) return\n\n      const dataValue = getNodeValByProp('value', data)\n      const dataMap = {}\n      treeEach(\n        [tree.value.store.root],\n        (node) => (dataMap[node.key] = node),\n        (node) => node.childNodes\n      )\n\n      // fix: checkedKeys has not cached keys\n      const uncachedCheckedKeys = params.checkedKeys\n      const cachedKeys = props.multiple\n        ? toValidArray(props.modelValue).filter(\n            (item) => !(item in dataMap) && !uncachedCheckedKeys.includes(item)\n          )\n        : []\n      const checkedKeys = cachedKeys.concat(uncachedCheckedKeys)\n\n      if (props.checkStrictly) {\n        // Checking for changes may come from `check-on-node-click`\n        update(\n          props.multiple\n            ? checkedKeys\n            : checkedKeys.includes(dataValue)\n              ? dataValue\n              : undefined\n        )\n      }\n      // only can select leaf node\n      else if (props.multiple) {\n        const childKeys = getChildCheckedKeys()\n        update(cachedKeys.concat(childKeys))\n      } else {\n        // select first leaf node when check parent\n        const firstLeaf = treeFind(\n          [data],\n          (data) =>\n            !isValidArray(getNodeValByProp('children', data)) &&\n            !getNodeValByProp('disabled', data),\n          (data) => getNodeValByProp('children', data)\n        )\n        const firstLeafKey = firstLeaf\n          ? getNodeValByProp('value', firstLeaf)\n          : undefined\n\n        // unselect when any child checked\n        const hasCheckedChild =\n          isValidValue(props.modelValue) &&\n          !!treeFind(\n            [data],\n            (data) => getNodeValByProp('value', data) === props.modelValue,\n            (data) => getNodeValByProp('children', data)\n          )\n\n        update(\n          firstLeafKey === props.modelValue || hasCheckedChild\n            ? undefined\n            : firstLeafKey\n        )\n      }\n\n      nextTick(() => {\n        const checkedKeys = toValidArray(props.modelValue)\n        tree.value.setCheckedKeys(checkedKeys)\n\n        attrs.onCheck?.(data, {\n          checkedKeys: tree.value.getCheckedKeys(),\n          checkedNodes: tree.value.getCheckedNodes(),\n          halfCheckedKeys: tree.value.getHalfCheckedKeys(),\n          halfCheckedNodes: tree.value.getHalfCheckedNodes(),\n        })\n      })\n\n      select.value?.focus()\n    },\n\n    onNodeExpand: (data, node, e) => {\n      attrs.onNodeExpand?.(data, node, e)\n      nextTick(() => {\n        if (\n          !props.checkStrictly &&\n          props.lazy &&\n          props.multiple &&\n          node.checked\n        ) {\n          const dataMap = {}\n          const uncachedCheckedKeys = (\n            tree.value as TreeInstance\n          ).getCheckedKeys()\n\n          treeEach(\n            [tree.value.store.root],\n            (node) => (dataMap[node.key] = node),\n            (node) => node.childNodes\n          )\n\n          const cachedKeys = toValidArray(props.modelValue).filter(\n            (item) => !(item in dataMap) && !uncachedCheckedKeys.includes(item)\n          )\n\n          const childKeys = getChildCheckedKeys()\n          update(cachedKeys.concat(childKeys))\n        }\n      })\n    },\n    // else\n    cacheOptions,\n  }\n}\n","import { defineComponent, inject, watch } from 'vue'\nimport { selectKey } from '@pit-element-plus/components/select'\nimport { isClient } from '@pit-element-plus/utils'\n\nimport type { SelectContext } from '@pit-element-plus/components/select'\nimport type { PropType } from 'vue'\n\n// same as el-option instance,\n// these are required for `cachedOptions`\nexport type CacheOption = {\n  value: string | number | boolean | object\n  currentLabel: string | number\n  isDisabled: boolean\n}\n\nexport default defineComponent({\n  props: {\n    data: {\n      type: Array as PropType<CacheOption[]>,\n      default: () => [],\n    },\n  },\n  setup(props) {\n    const select = inject(selectKey) as NonNullable<SelectContext>\n\n    watch(\n      () => props.data,\n      () => {\n        props.data.forEach((item) => {\n          if (!select.states.cachedOptions.has(item.value)) {\n            // TODO: the type of 'item' is not compatible with the type of 'cachedOptions',\n            // which may indicate potential runtime issues.\n            // @ts-expect-error\n            select.states.cachedOptions.set(item.value, item)\n          }\n        })\n\n        // fork from packages/select/src/useSelect.ts#330\n        const inputs = select.selectRef?.querySelectorAll('input') || []\n        if (\n          isClient &&\n          !Array.from(inputs).includes(\n            document.activeElement as HTMLInputElement\n          )\n        ) {\n          select.setSelected()\n        }\n      },\n      { flush: 'post', immediate: true }\n    )\n\n    return () => undefined\n  },\n})\n","<script lang=\"ts\">\nimport { computed, defineComponent, h, onMounted, reactive, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport { ElSelect, selectProps } from '@pit-element-plus/components/select'\nimport { ElTree, treeProps } from '@pit-element-plus/components/tree'\nimport { useSelect } from './select'\nimport { useTree } from './tree'\nimport CacheOptions from './cache-options'\n\nimport type { TreeInstance } from '@pit-element-plus/components/tree'\nimport type { SelectInstance } from '@pit-element-plus/components/select'\n\nexport default defineComponent({\n  name: 'ElTreeSelect',\n  // disable `ElSelect` inherit current attrs\n  inheritAttrs: false,\n  props: {\n    ...selectProps,\n    ...treeProps,\n    /**\n     * @description The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data\n     */\n    cacheData: {\n      type: Array,\n      default: () => [],\n    },\n  },\n  setup(props, context) {\n    const { slots, expose, emit, attrs } = context\n    const childAttrs = {\n      ...attrs,\n      onChange: undefined,\n    }\n\n    const select = ref<SelectInstance>()\n    const tree = ref<TreeInstance>()\n\n    const key = computed(() => props.nodeKey || props.valueKey || 'value')\n\n    const selectProps = useSelect(props, { attrs, emit }, { select, tree, key })\n    const { cacheOptions, ...treeProps } = useTree(\n      props,\n      { attrs: childAttrs, slots, emit },\n      {\n        select,\n        tree,\n        key,\n      }\n    )\n\n    // expose ElTree/ElSelect methods\n    const methods = reactive({})\n    expose(methods)\n    onMounted(() => {\n      Object.assign(methods, {\n        //TODO: let only tree and select in 3.0\n        ...pick(tree.value, [\n          'filter',\n          'updateKeyChildren',\n          'getCheckedNodes',\n          'setCheckedNodes',\n          'getCheckedKeys',\n          'setCheckedKeys',\n          'setChecked',\n          'getHalfCheckedNodes',\n          'getHalfCheckedKeys',\n          'getCurrentKey',\n          'getCurrentNode',\n          'setCurrentKey',\n          'setCurrentNode',\n          'getNode',\n          'remove',\n          'append',\n          'insertBefore',\n          'insertAfter',\n        ]),\n        ...pick(select.value, ['focus', 'blur', 'selectedLabel']),\n        treeRef: tree.value,\n        selectRef: select.value,\n      })\n    })\n\n    return () =>\n      h(\n        ElSelect,\n        /**\n         * 1. The `props` is processed into `Refs`, but `v-bind` and\n         * render function props cannot read `Refs`, so use `reactive`\n         * unwrap the `Refs` and keep reactive.\n         * 2. The keyword `ref` requires `Ref`, but `reactive` broke it,\n         * so use function.\n         */\n        reactive({\n          ...selectProps,\n          ref: (ref: SelectInstance) => (select.value = ref),\n        }),\n        {\n          ...slots,\n          default: () => [\n            h(CacheOptions, { data: cacheOptions.value }),\n            h(\n              ElTree,\n              reactive({\n                ...treeProps,\n                ref: (ref: TreeInstance) => (tree.value = ref),\n              })\n            ),\n          ],\n        }\n      )\n  },\n})\n</script>\n","<script lang=\"ts\">\nimport { computed, defineComponent, h, onMounted, reactive, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport { ElSelect, selectProps } from '@pit-element-plus/components/select'\nimport { ElTree, treeProps } from '@pit-element-plus/components/tree'\nimport { useSelect } from './select'\nimport { useTree } from './tree'\nimport CacheOptions from './cache-options'\n\nimport type { TreeInstance } from '@pit-element-plus/components/tree'\nimport type { SelectInstance } from '@pit-element-plus/components/select'\n\nexport default defineComponent({\n  name: 'ElTreeSelect',\n  // disable `ElSelect` inherit current attrs\n  inheritAttrs: false,\n  props: {\n    ...selectProps,\n    ...treeProps,\n    /**\n     * @description The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data\n     */\n    cacheData: {\n      type: Array,\n      default: () => [],\n    },\n  },\n  setup(props, context) {\n    const { slots, expose, emit, attrs } = context\n    const childAttrs = {\n      ...attrs,\n      onChange: undefined,\n    }\n\n    const select = ref<SelectInstance>()\n    const tree = ref<TreeInstance>()\n\n    const key = computed(() => props.nodeKey || props.valueKey || 'value')\n\n    const selectProps = useSelect(props, { attrs, emit }, { select, tree, key })\n    const { cacheOptions, ...treeProps } = useTree(\n      props,\n      { attrs: childAttrs, slots, emit },\n      {\n        select,\n        tree,\n        key,\n      }\n    )\n\n    // expose ElTree/ElSelect methods\n    const methods = reactive({})\n    expose(methods)\n    onMounted(() => {\n      Object.assign(methods, {\n        //TODO: let only tree and select in 3.0\n        ...pick(tree.value, [\n          'filter',\n          'updateKeyChildren',\n          'getCheckedNodes',\n          'setCheckedNodes',\n          'getCheckedKeys',\n          'setCheckedKeys',\n          'setChecked',\n          'getHalfCheckedNodes',\n          'getHalfCheckedKeys',\n          'getCurrentKey',\n          'getCurrentNode',\n          'setCurrentKey',\n          'setCurrentNode',\n          'getNode',\n          'remove',\n          'append',\n          'insertBefore',\n          'insertAfter',\n        ]),\n        ...pick(select.value, ['focus', 'blur', 'selectedLabel']),\n        treeRef: tree.value,\n        selectRef: select.value,\n      })\n    })\n\n    return () =>\n      h(\n        ElSelect,\n        /**\n         * 1. The `props` is processed into `Refs`, but `v-bind` and\n         * render function props cannot read `Refs`, so use `reactive`\n         * unwrap the `Refs` and keep reactive.\n         * 2. The keyword `ref` requires `Ref`, but `reactive` broke it,\n         * so use function.\n         */\n        reactive({\n          ...selectProps,\n          ref: (ref: SelectInstance) => (select.value = ref),\n        }),\n        {\n          ...slots,\n          default: () => [\n            h(CacheOptions, { data: cacheOptions.value }),\n            h(\n              ElTree,\n              reactive({\n                ...treeProps,\n                ref: (ref: TreeInstance) => (tree.value = ref),\n              })\n            ),\n          ],\n        }\n      )\n  },\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport TreeSelect from './src/tree-select.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTreeSelect: SFCWithInstall<typeof TreeSelect> =\n  withInstall(TreeSelect)\n\nexport default ElTreeSelect\n\nexport type { TreeSelectInstance } from './src/instance'\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isBoolean,\n  mutable,\n} from '@pit-element-plus/utils'\n\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\nimport type { InjectionKey } from 'vue'\nimport type { TreeNodeData } from '@pit-element-plus/components/tree/src/tree.type'\nimport type {\n  CheckedInfo,\n  FilterMethod,\n  TreeContext,\n  TreeData,\n  TreeKey,\n  TreeNode,\n  TreeOptionProps,\n} from './types'\n\n// constants\nexport const ROOT_TREE_INJECTION_KEY: InjectionKey<TreeContext> = Symbol()\nexport const EMPTY_NODE = {\n  key: -1,\n  level: -1,\n  data: {},\n} as const\n\n// enums\nexport enum TreeOptionsEnum {\n  KEY = 'id',\n  LABEL = 'label',\n  CHILDREN = 'children',\n  DISABLED = 'disabled',\n  CLASS = '',\n}\n\nexport const enum SetOperationEnum {\n  ADD = 'add',\n  DELETE = 'delete',\n}\n\nconst itemSize = {\n  type: Number,\n  default: 26,\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TreeProps` instead.\n */\nexport const treeProps = buildProps({\n  data: {\n    type: definePropType<TreeData>(Array),\n    default: () => mutable([] as const),\n  },\n  emptyText: {\n    type: String,\n  },\n  height: {\n    type: Number,\n    default: 200,\n  },\n  props: {\n    type: definePropType<TreeOptionProps>(Object),\n    default: () =>\n      mutable({\n        children: TreeOptionsEnum.CHILDREN,\n        label: TreeOptionsEnum.LABEL,\n        disabled: TreeOptionsEnum.DISABLED,\n        value: TreeOptionsEnum.KEY,\n        class: TreeOptionsEnum.CLASS,\n      } as const),\n  },\n  highlightCurrent: Boolean,\n  showCheckbox: Boolean,\n  defaultCheckedKeys: {\n    type: definePropType<TreeKey[]>(Array),\n    default: () => mutable([] as const),\n  },\n  // Whether checked state of a node not affects its father and\n  // child nodes when show-checkbox is true\n  checkStrictly: Boolean,\n  defaultExpandedKeys: {\n    type: definePropType<TreeKey[]>(Array),\n    default: () => mutable([] as const),\n  },\n  indent: {\n    type: Number,\n    default: 16,\n  },\n  itemSize,\n  icon: {\n    type: iconPropType,\n  },\n  expandOnClickNode: {\n    type: Boolean,\n    default: true,\n  },\n  checkOnClickNode: Boolean,\n  checkOnClickLeaf: {\n    type: Boolean,\n    default: true,\n  },\n  currentNodeKey: {\n    type: definePropType<TreeKey>([String, Number]),\n  },\n  // TODO need to optimization\n  accordion: Boolean,\n  filterMethod: {\n    type: definePropType<FilterMethod>(Function),\n  },\n  // Performance mode will increase memory usage, but scrolling will be smoother\n  perfMode: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description always show scrollbar\n   */\n  scrollbarAlwaysOn: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `TreeNodeProps` instead.\n */\nexport const treeNodeProps = buildProps({\n  node: {\n    type: definePropType<TreeNode>(Object),\n    default: () => mutable(EMPTY_NODE),\n  },\n  expanded: Boolean,\n  checked: Boolean,\n  indeterminate: Boolean,\n  showCheckbox: Boolean,\n  disabled: Boolean,\n  current: Boolean,\n  hiddenExpandIcon: Boolean,\n  itemSize,\n} as const)\n\nexport const treeNodeContentProps = buildProps({\n  node: {\n    type: definePropType<TreeNode>(Object),\n    required: true,\n  },\n} as const)\n\n// emits\nexport const NODE_CLICK = 'node-click'\nexport const NODE_DROP = 'node-drop'\nexport const NODE_EXPAND = 'node-expand'\nexport const NODE_COLLAPSE = 'node-collapse'\nexport const CURRENT_CHANGE = 'current-change'\nexport const NODE_CHECK = 'check'\nexport const NODE_CHECK_CHANGE = 'check-change'\nexport const NODE_CONTEXTMENU = 'node-contextmenu'\n\nexport const treeEmits = {\n  [NODE_CLICK]: (data: TreeNodeData, node: TreeNode, e: MouseEvent) =>\n    data && node && e,\n  [NODE_DROP]: (data: TreeNodeData, node: TreeNode, e: DragEvent) =>\n    data && node && e,\n  [NODE_EXPAND]: (data: TreeNodeData, node: TreeNode) => data && node,\n  [NODE_COLLAPSE]: (data: TreeNodeData, node: TreeNode) => data && node,\n  [CURRENT_CHANGE]: (data: TreeNodeData, node: TreeNode) => data && node,\n  [NODE_CHECK]: (data: TreeNodeData, checkedInfo: CheckedInfo) =>\n    data && checkedInfo,\n  [NODE_CHECK_CHANGE]: (data: TreeNodeData, checked: boolean) =>\n    data && isBoolean(checked),\n  [NODE_CONTEXTMENU]: (evt: Event, data: TreeNodeData, node: TreeNode) =>\n    evt && data && node,\n}\n\nexport const treeNodeEmits = {\n  click: (node: TreeNode, e: MouseEvent) => !!(node && e),\n  drop: (node: TreeNode, e: DragEvent) => !!(node && e),\n  toggle: (node: TreeNode) => !!node,\n  check: (node: TreeNode, checked: CheckboxValueType) =>\n    node && isBoolean(checked),\n}\n","import { getCurrentInstance, nextTick, ref, watch } from 'vue'\nimport {\n  NODE_CHECK,\n  NODE_CHECK_CHANGE,\n  SetOperationEnum,\n} from '../virtual-tree'\n\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\nimport type { Ref } from 'vue'\nimport type { Tree, TreeKey, TreeNode, TreeNodeData, TreeProps } from '../types'\n\nexport function useCheck(props: TreeProps, tree: Ref<Tree | undefined>) {\n  const checkedKeys = ref<Set<TreeKey>>(new Set())\n  const indeterminateKeys = ref<Set<TreeKey>>(new Set())\n  const { emit } = getCurrentInstance()!\n\n  watch(\n    [() => tree.value, () => props.defaultCheckedKeys],\n    () => {\n      return nextTick(() => {\n        _setCheckedKeys(props.defaultCheckedKeys!)\n      })\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  const updateCheckedKeys = () => {\n    if (!tree.value || !props.showCheckbox || props.checkStrictly) {\n      return\n    }\n    const { levelTreeNodeMap, maxLevel } = tree.value\n    const checkedKeySet = checkedKeys.value\n    const indeterminateKeySet = new Set<TreeKey>()\n    // It is easier to determine the indeterminate state by\n    // traversing from bottom to top\n    // leaf nodes not have indeterminate status and can be skipped\n    for (let level = maxLevel; level >= 1; --level) {\n      const nodes = levelTreeNodeMap.get(level)\n      if (!nodes) continue\n      nodes.forEach((node) => {\n        const children = node.children\n        let isEffectivelyChecked =\n          !node.isLeaf || node.disabled || checkedKeySet.has(node.key)\n        if (children) {\n          // Whether all child nodes are selected\n          let allChecked = true\n          // Whether a child node is selected\n          let hasChecked = false\n          for (const childNode of children) {\n            const key = childNode.key\n            if (!childNode.isEffectivelyChecked) {\n              isEffectivelyChecked = false\n            }\n            if (checkedKeySet.has(key)) {\n              hasChecked = true\n            } else if (indeterminateKeySet.has(key)) {\n              allChecked = false\n              hasChecked = true\n              break\n            } else {\n              allChecked = false\n            }\n          }\n          if (allChecked) {\n            checkedKeySet.add(node.key)\n          } else if (hasChecked) {\n            indeterminateKeySet.add(node.key)\n            checkedKeySet.delete(node.key)\n          } else {\n            checkedKeySet.delete(node.key)\n            indeterminateKeySet.delete(node.key)\n          }\n        }\n        node.isEffectivelyChecked = isEffectivelyChecked\n      })\n    }\n    indeterminateKeys.value = indeterminateKeySet\n  }\n\n  const isChecked = (node: TreeNode) => checkedKeys.value.has(node.key)\n\n  const isIndeterminate = (node: TreeNode) =>\n    indeterminateKeys.value.has(node.key)\n\n  const toggleCheckbox = (\n    node: TreeNode,\n    isChecked: CheckboxValueType,\n    nodeClick = true,\n    immediateUpdate = true\n  ) => {\n    const checkedKeySet = checkedKeys.value\n    const children = node.children\n    if (!props.checkStrictly && nodeClick && children?.length) {\n      isChecked = children.some((node) => !node.isEffectivelyChecked)\n    }\n\n    const toggle = (node: TreeNode, checked: CheckboxValueType) => {\n      checkedKeySet[checked ? SetOperationEnum.ADD : SetOperationEnum.DELETE](\n        node.key\n      )\n      const children = node.children\n      if (!props.checkStrictly && children) {\n        children.forEach((childNode) => {\n          if (!childNode.disabled || childNode.children) {\n            toggle(childNode, checked)\n          }\n        })\n      }\n    }\n    toggle(node, isChecked)\n    if (immediateUpdate) {\n      updateCheckedKeys()\n    }\n    if (nodeClick) {\n      afterNodeCheck(node, isChecked)\n    }\n  }\n\n  const afterNodeCheck = (node: TreeNode, checked: CheckboxValueType) => {\n    const { checkedNodes, checkedKeys } = getChecked()\n    const { halfCheckedNodes, halfCheckedKeys } = getHalfChecked()\n    emit(NODE_CHECK, node.data, {\n      checkedKeys,\n      checkedNodes,\n      halfCheckedKeys,\n      halfCheckedNodes,\n    })\n    emit(NODE_CHECK_CHANGE, node.data, checked)\n  }\n\n  // expose\n  function getCheckedKeys(leafOnly = false): TreeKey[] {\n    return getChecked(leafOnly).checkedKeys\n  }\n\n  function getCheckedNodes(leafOnly = false): TreeNodeData[] {\n    return getChecked(leafOnly).checkedNodes\n  }\n\n  function getHalfCheckedKeys(): TreeKey[] {\n    return getHalfChecked().halfCheckedKeys\n  }\n\n  function getHalfCheckedNodes(): TreeNodeData[] {\n    return getHalfChecked().halfCheckedNodes\n  }\n\n  function getChecked(leafOnly = false): {\n    checkedKeys: TreeKey[]\n    checkedNodes: TreeNodeData[]\n  } {\n    const checkedNodes: TreeNodeData[] = []\n    const keys: TreeKey[] = []\n    if (tree?.value && props.showCheckbox) {\n      const { treeNodeMap } = tree.value\n      checkedKeys.value.forEach((key) => {\n        const node = treeNodeMap.get(key)\n        if (node && (!leafOnly || (leafOnly && node.isLeaf))) {\n          keys.push(key)\n          checkedNodes.push(node.data)\n        }\n      })\n    }\n    return {\n      checkedKeys: keys,\n      checkedNodes,\n    }\n  }\n\n  function getHalfChecked(): {\n    halfCheckedKeys: TreeKey[]\n    halfCheckedNodes: TreeNodeData[]\n  } {\n    const halfCheckedNodes: TreeNodeData[] = []\n    const halfCheckedKeys: TreeKey[] = []\n    if (tree?.value && props.showCheckbox) {\n      const { treeNodeMap } = tree.value\n      indeterminateKeys.value.forEach((key) => {\n        const node = treeNodeMap.get(key)\n        if (node) {\n          halfCheckedKeys.push(key)\n          halfCheckedNodes.push(node.data)\n        }\n      })\n    }\n    return {\n      halfCheckedNodes,\n      halfCheckedKeys,\n    }\n  }\n\n  function setCheckedKeys(keys: TreeKey[]) {\n    checkedKeys.value.clear()\n    indeterminateKeys.value.clear()\n    nextTick(() => {\n      _setCheckedKeys(keys)\n    })\n  }\n\n  function setChecked(key: TreeKey, isChecked: boolean) {\n    if (tree?.value && props.showCheckbox) {\n      const node = tree.value.treeNodeMap.get(key)\n      if (node) {\n        toggleCheckbox(node, isChecked, false)\n      }\n    }\n  }\n\n  function _setCheckedKeys(keys: TreeKey[]) {\n    if (tree?.value) {\n      const { treeNodeMap } = tree.value\n      if (props.showCheckbox && treeNodeMap && keys?.length > 0) {\n        for (const key of keys) {\n          const node = treeNodeMap.get(key)\n          if (node && !isChecked(node)) {\n            toggleCheckbox(node, true, false, false)\n          }\n        }\n        updateCheckedKeys()\n      }\n    }\n  }\n\n  return {\n    updateCheckedKeys,\n    toggleCheckbox,\n    isChecked,\n    isIndeterminate,\n    // expose\n    getCheckedKeys,\n    getCheckedNodes,\n    getHalfCheckedKeys,\n    getHalfCheckedNodes,\n    setChecked,\n    setCheckedKeys,\n  }\n}\n","import { computed, ref } from 'vue'\nimport { isFunction } from '@pit-element-plus/utils'\n\nimport type { Ref } from 'vue'\nimport type { Tree, TreeKey, TreeNode, TreeProps } from '../types'\n\n// When the data volume is very large using filter will cause lag\n// I haven't found a better way to optimize it for now\n// Maybe this problem should be left to the server side\nexport function useFilter(props: TreeProps, tree: Ref<Tree | undefined>) {\n  const hiddenNodeKeySet = ref<Set<TreeKey>>(new Set([]))\n  const hiddenExpandIconKeySet = ref<Set<TreeKey>>(new Set([]))\n\n  const filterable = computed(() => {\n    return isFunction(props.filterMethod)\n  })\n\n  function doFilter(query: string) {\n    if (!filterable.value) {\n      return\n    }\n    const expandKeySet = new Set<TreeKey>()\n    const hiddenExpandIconKeys = hiddenExpandIconKeySet.value\n    const hiddenKeys = hiddenNodeKeySet.value\n    const family: TreeNode[] = []\n    const nodes = tree.value?.treeNodes || []\n    const filter = props.filterMethod\n    hiddenKeys.clear()\n    function traverse(nodes: TreeNode[]) {\n      nodes.forEach((node) => {\n        family.push(node)\n        if (filter?.(query, node.data, node)) {\n          family.forEach((member) => {\n            expandKeySet.add(member.key)\n            member.expanded = true\n          })\n        } else {\n          node.expanded = false\n          if (node.isLeaf) {\n            hiddenKeys.add(node.key)\n          }\n        }\n        const children = node.children\n        if (children) {\n          traverse(children)\n        }\n        if (!node.isLeaf) {\n          if (!expandKeySet.has(node.key)) {\n            hiddenKeys.add(node.key)\n          } else if (children) {\n            // If all child nodes are hidden, then the expand icon will be hidden\n            let allHidden = true\n            for (const childNode of children) {\n              if (!hiddenKeys.has(childNode.key)) {\n                allHidden = false\n                break\n              }\n            }\n            if (allHidden) {\n              hiddenExpandIconKeys.add(node.key)\n            } else {\n              hiddenExpandIconKeys.delete(node.key)\n            }\n          }\n        }\n        family.pop()\n      })\n    }\n    traverse(nodes)\n    return expandKeySet\n  }\n\n  function isForceHiddenExpandIcon(node: TreeNode): boolean {\n    return hiddenExpandIconKeySet.value.has(node.key)\n  }\n\n  return {\n    hiddenExpandIconKeySet,\n    hiddenNodeKeySet,\n    doFilter,\n    isForceHiddenExpandIcon,\n  }\n}\n","import { computed, ref, shallowRef, watch } from 'vue'\nimport { isObject } from '@pit-element-plus/utils'\nimport {\n  CURRENT_CHANGE,\n  NODE_CLICK,\n  NODE_COLLAPSE,\n  NODE_DROP,\n  NODE_EXPAND,\n  TreeOptionsEnum,\n} from '../virtual-tree'\nimport { useCheck } from './useCheck'\nimport { useFilter } from './useFilter'\n\nimport type {\n  FixedSizeList,\n  Alignment as ScrollStrategy,\n} from '@pit-element-plus/components/virtual-list'\nimport type { SetupContext } from 'vue'\nimport type { treeEmits } from '../virtual-tree'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\nimport type {\n  Tree,\n  TreeData,\n  TreeKey,\n  TreeNode,\n  TreeNodeData,\n  TreeProps,\n} from '../types'\n\nexport function useTree(\n  props: TreeProps,\n  emit: SetupContext<typeof treeEmits>['emit']\n) {\n  const expandedKeySet = ref<Set<TreeKey>>(new Set())\n  const currentKey = ref<TreeKey | undefined>()\n  const tree = shallowRef<Tree | undefined>()\n  const listRef = ref<typeof FixedSizeList | undefined>()\n\n  const {\n    isIndeterminate,\n    isChecked,\n    toggleCheckbox,\n    getCheckedKeys,\n    getCheckedNodes,\n    getHalfCheckedKeys,\n    getHalfCheckedNodes,\n    setChecked,\n    setCheckedKeys,\n  } = useCheck(props, tree)\n\n  const { doFilter, hiddenNodeKeySet, isForceHiddenExpandIcon } = useFilter(\n    props,\n    tree\n  )\n\n  const valueKey = computed(() => {\n    return props.props?.value || TreeOptionsEnum.KEY\n  })\n  const childrenKey = computed(() => {\n    return props.props?.children || TreeOptionsEnum.CHILDREN\n  })\n  const disabledKey = computed(() => {\n    return props.props?.disabled || TreeOptionsEnum.DISABLED\n  })\n  const labelKey = computed(() => {\n    return props.props?.label || TreeOptionsEnum.LABEL\n  })\n\n  const flattenTree = computed(() => {\n    const expandedKeys = expandedKeySet.value\n    const hiddenKeys = hiddenNodeKeySet.value\n    const flattenNodes: TreeNode[] = []\n    const nodes = tree.value?.treeNodes || []\n\n    const stack: TreeNode[] = []\n    for (let i = nodes.length - 1; i >= 0; --i) {\n      stack.push(nodes[i])\n    }\n    while (stack.length) {\n      const node = stack.pop()!\n      if (hiddenKeys.has(node.key)) continue\n\n      flattenNodes.push(node)\n      if (node.children && expandedKeys.has(node.key)) {\n        for (let i = node.children.length - 1; i >= 0; --i) {\n          stack.push(node.children[i])\n        }\n      }\n    }\n\n    return flattenNodes\n  })\n\n  const isNotEmpty = computed(() => {\n    return flattenTree.value.length > 0\n  })\n\n  function createTree(data: TreeData): Tree {\n    const treeNodeMap: Map<TreeKey, TreeNode> = new Map()\n    const levelTreeNodeMap: Map<number, TreeNode[]> = new Map()\n    let maxLevel = 1\n    function traverse(\n      nodes: TreeData,\n      level = 1,\n      parent: TreeNode | undefined = undefined\n    ) {\n      const siblings: TreeNode[] = []\n      for (const rawNode of nodes) {\n        const value = getKey(rawNode)\n        const node: TreeNode = {\n          level,\n          key: value,\n          data: rawNode,\n        }\n        node.label = getLabel(rawNode)\n        node.parent = parent\n        const children = getChildren(rawNode)\n        node.disabled = getDisabled(rawNode)\n        node.isLeaf = !children || children.length === 0\n        node.expanded = expandedKeySet.value.has(value)\n        if (children && children.length) {\n          node.children = traverse(children, level + 1, node)\n        }\n        siblings.push(node)\n        treeNodeMap.set(value, node)\n        if (!levelTreeNodeMap.has(level)) {\n          levelTreeNodeMap.set(level, [])\n        }\n        levelTreeNodeMap.get(level)?.push(node)\n      }\n      if (level > maxLevel) {\n        maxLevel = level\n      }\n      return siblings\n    }\n    const treeNodes: TreeNode[] = traverse(data)\n    return {\n      treeNodeMap,\n      levelTreeNodeMap,\n      maxLevel,\n      treeNodes,\n    }\n  }\n\n  function filter(query: string) {\n    const keys = doFilter(query)\n    if (keys) {\n      expandedKeySet.value = keys\n    }\n  }\n\n  function getChildren(node: TreeNodeData): TreeNodeData[] {\n    return node[childrenKey.value]\n  }\n\n  function getKey(node: TreeNodeData): TreeKey {\n    if (!node) {\n      return ''\n    }\n    return node[valueKey.value]\n  }\n\n  function getDisabled(node: TreeNodeData): boolean {\n    return node[disabledKey.value]\n  }\n\n  function getLabel(node: TreeNodeData): string {\n    return node[labelKey.value]\n  }\n\n  function toggleExpand(node: TreeNode) {\n    const expandedKeys = expandedKeySet.value\n    if (expandedKeys.has(node.key)) {\n      collapseNode(node)\n    } else {\n      expandNode(node)\n    }\n  }\n\n  function setExpandedKeys(keys: TreeKey[]) {\n    const expandedKeys = new Set<TreeKey>()\n    const nodeMap = tree.value!.treeNodeMap\n\n    expandedKeySet.value.forEach((key) => {\n      const node = nodeMap.get(key)!\n      expandedKeySet.value.delete(node.key)\n      node.expanded = false\n    })\n\n    keys.forEach((k) => {\n      let node = nodeMap.get(k)\n      while (node && !expandedKeys.has(node.key)) {\n        expandedKeys.add(node.key)\n        node.expanded = true\n        node = node.parent\n      }\n    })\n\n    expandedKeySet.value = expandedKeys\n  }\n\n  function handleNodeClick(node: TreeNode, e: MouseEvent) {\n    emit(NODE_CLICK, node.data, node, e)\n    handleCurrentChange(node)\n    if (props.expandOnClickNode) {\n      toggleExpand(node)\n    }\n    if (\n      props.showCheckbox &&\n      (props.checkOnClickNode || (node.isLeaf && props.checkOnClickLeaf)) &&\n      !node.disabled\n    ) {\n      toggleCheckbox(node, !isChecked(node), true)\n    }\n  }\n\n  function handleNodeDrop(node: TreeNode, e: DragEvent) {\n    emit(NODE_DROP, node.data, node, e)\n  }\n\n  function handleCurrentChange(node: TreeNode) {\n    if (!isCurrent(node)) {\n      currentKey.value = node.key\n      emit(CURRENT_CHANGE, node.data, node)\n    }\n  }\n\n  function handleNodeCheck(node: TreeNode, checked: CheckboxValueType) {\n    toggleCheckbox(node, checked)\n  }\n\n  function expandNode(node: TreeNode) {\n    const keySet = expandedKeySet.value\n    if (tree.value && props.accordion) {\n      // whether only one node among the same level can be expanded at one time\n      const { treeNodeMap } = tree.value\n      keySet.forEach((key) => {\n        const treeNode = treeNodeMap.get(key)\n        if (node && node.level === treeNode?.level) {\n          keySet.delete(key)\n          treeNode.expanded = false\n        }\n      })\n    }\n    keySet.add(node.key)\n    const _node = getNode(node.key)\n    if (_node) {\n      _node.expanded = true\n      emit(NODE_EXPAND, _node.data, _node)\n    }\n  }\n\n  function collapseNode(node: TreeNode) {\n    expandedKeySet.value.delete(node.key)\n    const _node = getNode(node.key)\n    if (_node) {\n      _node.expanded = false\n      emit(NODE_COLLAPSE, _node.data, _node)\n    }\n  }\n\n  function isDisabled(node: TreeNode): boolean {\n    return !!node.disabled\n  }\n\n  function isCurrent(node: TreeNode): boolean {\n    const current = currentKey.value\n    return current !== undefined && current === node.key\n  }\n\n  function getCurrentNode(): TreeNodeData | undefined {\n    if (!currentKey.value) return undefined\n    return tree.value?.treeNodeMap.get(currentKey.value)?.data\n  }\n\n  function getCurrentKey(): TreeKey | undefined {\n    return currentKey.value\n  }\n\n  function setCurrentKey(key: TreeKey): void {\n    currentKey.value = key\n  }\n\n  function setData(data: TreeData) {\n    tree.value = createTree(data)\n  }\n\n  function getNode(data: TreeKey | TreeNodeData) {\n    const key = isObject(data) ? getKey(data) : data\n    return tree.value?.treeNodeMap.get(key)\n  }\n\n  function scrollToNode(key: TreeKey, strategy: ScrollStrategy = 'auto') {\n    const node = getNode(key)\n    if (node && listRef.value) {\n      listRef.value.scrollToItem(flattenTree.value.indexOf(node), strategy)\n    }\n  }\n\n  function scrollTo(offset: number) {\n    listRef.value?.scrollTo(offset)\n  }\n\n  watch(\n    () => props.currentNodeKey,\n    (key) => {\n      currentKey.value = key\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  watch(\n    () => props.defaultExpandedKeys,\n    (key) => {\n      expandedKeySet.value = new Set<TreeKey>(key)\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  watch(\n    () => props.data!,\n    (data: TreeData) => {\n      setData(data)\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  return {\n    tree,\n    flattenTree,\n    isNotEmpty,\n    listRef,\n    getKey,\n    getChildren,\n    toggleExpand,\n    toggleCheckbox,\n    isChecked,\n    isIndeterminate,\n    isDisabled,\n    isCurrent,\n    isForceHiddenExpandIcon,\n    handleNodeClick,\n    handleNodeDrop,\n    handleNodeCheck,\n    // expose\n    getCurrentNode,\n    getCurrentKey,\n    setCurrentKey,\n    getCheckedKeys,\n    getCheckedNodes,\n    getHalfCheckedKeys,\n    getHalfCheckedNodes,\n    setChecked,\n    setCheckedKeys,\n    filter,\n    setData,\n    getNode,\n    expandNode,\n    collapseNode,\n    setExpandedKeys,\n    scrollToNode,\n    scrollTo,\n  }\n}\n","import { defineComponent, h, inject } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport ElText from '@pit-element-plus/components/text'\nimport { ROOT_TREE_INJECTION_KEY, treeNodeContentProps } from './virtual-tree'\n\nexport default defineComponent({\n  name: 'ElTreeNodeContent',\n  props: treeNodeContentProps,\n  setup(props) {\n    const tree = inject(ROOT_TREE_INJECTION_KEY)\n    const ns = useNamespace('tree')\n    return () => {\n      const node = props.node\n      const { data } = node!\n      return tree?.ctx.slots.default\n        ? tree.ctx.slots.default({ node, data })\n        : h(\n            ElText,\n            { tag: 'span', truncated: true, class: ns.be('node', 'label') },\n            () => [node?.label]\n          )\n    }\n  },\n})\n","<template>\n  <div\n    ref=\"node$\"\n    :class=\"[\n      ns.b('node'),\n      ns.is('expanded', expanded),\n      ns.is('current', current),\n      ns.is('focusable', !disabled),\n      ns.is('checked', !disabled && checked),\n      getNodeClass(node),\n    ]\"\n    role=\"treeitem\"\n    tabindex=\"-1\"\n    :aria-expanded=\"expanded\"\n    :aria-disabled=\"disabled\"\n    :aria-checked=\"checked\"\n    :data-key=\"node?.key\"\n    @click.stop=\"handleClick\"\n    @contextmenu=\"handleContextMenu\"\n    @dragover.prevent\n    @dragenter.prevent\n    @drop.stop=\"handleDrop\"\n  >\n    <div\n      :class=\"ns.be('node', 'content')\"\n      :style=\"{\n        paddingLeft: `${(node.level - 1) * indent}px`,\n        height: itemSize + 'px',\n      }\"\n    >\n      <el-icon\n        v-if=\"icon\"\n        :class=\"[\n          ns.is('leaf', !!node?.isLeaf),\n          ns.is('hidden', hiddenExpandIcon),\n          {\n            expanded: !node?.isLeaf && expanded,\n          },\n          ns.be('node', 'expand-icon'),\n        ]\"\n        @click.stop=\"handleExpandIconClick\"\n      >\n        <component :is=\"icon\" />\n      </el-icon>\n      <el-checkbox\n        v-if=\"showCheckbox\"\n        :model-value=\"checked\"\n        :indeterminate=\"indeterminate\"\n        :disabled=\"disabled\"\n        @change=\"handleCheckChange\"\n        @click.stop\n      />\n      <el-node-content :node=\"{ ...node, expanded }\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { CaretRight } from 'pit-element-icons'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isString, mutable } from '@pit-element-plus/utils'\nimport ElNodeContent from './tree-node-content'\nimport {\n  EMPTY_NODE,\n  NODE_CONTEXTMENU,\n  ROOT_TREE_INJECTION_KEY,\n  treeNodeEmits,\n} from './virtual-tree'\n\nimport type { TreeNode, TreeNodeProps } from './types'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\n\ndefineOptions({\n  name: 'ElTreeNode',\n})\n\nconst props = withDefaults(defineProps<TreeNodeProps>(), {\n  node: () => mutable(EMPTY_NODE),\n  itemSize: 26,\n})\nconst emit = defineEmits(treeNodeEmits)\n\nconst tree = inject(ROOT_TREE_INJECTION_KEY)\nconst ns = useNamespace('tree')\n\nconst indent = computed(() => tree?.props.indent ?? 16)\nconst icon = computed(() => tree?.props.icon ?? CaretRight)\n\nconst getNodeClass = (node: TreeNode) => {\n  const nodeClassFunc = tree?.props.props?.class\n  if (!nodeClassFunc) return {}\n\n  let className\n  if (isFunction(nodeClassFunc)) {\n    const { data } = node\n    className = nodeClassFunc(data, node)\n  } else {\n    className = nodeClassFunc\n  }\n\n  return isString(className) ? { [className]: true } : className\n}\n\nconst handleClick = (e: MouseEvent) => {\n  emit('click', props.node, e)\n}\nconst handleDrop = (e: DragEvent) => {\n  emit('drop', props.node, e)\n}\nconst handleExpandIconClick = () => {\n  emit('toggle', props.node)\n}\nconst handleCheckChange = (value: CheckboxValueType) => {\n  emit('check', props.node, value)\n}\n\nconst handleContextMenu = (event: Event) => {\n  if (tree?.instance?.vnode?.props?.['onNodeContextmenu']) {\n    event.stopPropagation()\n    event.preventDefault()\n  }\n  tree?.ctx.emit(NODE_CONTEXTMENU, event, props.node?.data, props.node)\n}\n</script>\n","<template>\n  <div\n    ref=\"node$\"\n    :class=\"[\n      ns.b('node'),\n      ns.is('expanded', expanded),\n      ns.is('current', current),\n      ns.is('focusable', !disabled),\n      ns.is('checked', !disabled && checked),\n      getNodeClass(node),\n    ]\"\n    role=\"treeitem\"\n    tabindex=\"-1\"\n    :aria-expanded=\"expanded\"\n    :aria-disabled=\"disabled\"\n    :aria-checked=\"checked\"\n    :data-key=\"node?.key\"\n    @click.stop=\"handleClick\"\n    @contextmenu=\"handleContextMenu\"\n    @dragover.prevent\n    @dragenter.prevent\n    @drop.stop=\"handleDrop\"\n  >\n    <div\n      :class=\"ns.be('node', 'content')\"\n      :style=\"{\n        paddingLeft: `${(node.level - 1) * indent}px`,\n        height: itemSize + 'px',\n      }\"\n    >\n      <el-icon\n        v-if=\"icon\"\n        :class=\"[\n          ns.is('leaf', !!node?.isLeaf),\n          ns.is('hidden', hiddenExpandIcon),\n          {\n            expanded: !node?.isLeaf && expanded,\n          },\n          ns.be('node', 'expand-icon'),\n        ]\"\n        @click.stop=\"handleExpandIconClick\"\n      >\n        <component :is=\"icon\" />\n      </el-icon>\n      <el-checkbox\n        v-if=\"showCheckbox\"\n        :model-value=\"checked\"\n        :indeterminate=\"indeterminate\"\n        :disabled=\"disabled\"\n        @change=\"handleCheckChange\"\n        @click.stop\n      />\n      <el-node-content :node=\"{ ...node, expanded }\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { CaretRight } from 'pit-element-icons'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isString, mutable } from '@pit-element-plus/utils'\nimport ElNodeContent from './tree-node-content'\nimport {\n  EMPTY_NODE,\n  NODE_CONTEXTMENU,\n  ROOT_TREE_INJECTION_KEY,\n  treeNodeEmits,\n} from './virtual-tree'\n\nimport type { TreeNode, TreeNodeProps } from './types'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\n\ndefineOptions({\n  name: 'ElTreeNode',\n})\n\nconst props = withDefaults(defineProps<TreeNodeProps>(), {\n  node: () => mutable(EMPTY_NODE),\n  itemSize: 26,\n})\nconst emit = defineEmits(treeNodeEmits)\n\nconst tree = inject(ROOT_TREE_INJECTION_KEY)\nconst ns = useNamespace('tree')\n\nconst indent = computed(() => tree?.props.indent ?? 16)\nconst icon = computed(() => tree?.props.icon ?? CaretRight)\n\nconst getNodeClass = (node: TreeNode) => {\n  const nodeClassFunc = tree?.props.props?.class\n  if (!nodeClassFunc) return {}\n\n  let className\n  if (isFunction(nodeClassFunc)) {\n    const { data } = node\n    className = nodeClassFunc(data, node)\n  } else {\n    className = nodeClassFunc\n  }\n\n  return isString(className) ? { [className]: true } : className\n}\n\nconst handleClick = (e: MouseEvent) => {\n  emit('click', props.node, e)\n}\nconst handleDrop = (e: DragEvent) => {\n  emit('drop', props.node, e)\n}\nconst handleExpandIconClick = () => {\n  emit('toggle', props.node)\n}\nconst handleCheckChange = (value: CheckboxValueType) => {\n  emit('check', props.node, value)\n}\n\nconst handleContextMenu = (event: Event) => {\n  if (tree?.instance?.vnode?.props?.['onNodeContextmenu']) {\n    event.stopPropagation()\n    event.preventDefault()\n  }\n  tree?.ctx.emit(NODE_CONTEXTMENU, event, props.node?.data, props.node)\n}\n</script>\n","<template>\n  <div\n    ref=\"node$\"\n    :class=\"[\n      ns.b('node'),\n      ns.is('expanded', expanded),\n      ns.is('current', current),\n      ns.is('focusable', !disabled),\n      ns.is('checked', !disabled && checked),\n      getNodeClass(node),\n    ]\"\n    role=\"treeitem\"\n    tabindex=\"-1\"\n    :aria-expanded=\"expanded\"\n    :aria-disabled=\"disabled\"\n    :aria-checked=\"checked\"\n    :data-key=\"node?.key\"\n    @click.stop=\"handleClick\"\n    @contextmenu=\"handleContextMenu\"\n    @dragover.prevent\n    @dragenter.prevent\n    @drop.stop=\"handleDrop\"\n  >\n    <div\n      :class=\"ns.be('node', 'content')\"\n      :style=\"{\n        paddingLeft: `${(node.level - 1) * indent}px`,\n        height: itemSize + 'px',\n      }\"\n    >\n      <el-icon\n        v-if=\"icon\"\n        :class=\"[\n          ns.is('leaf', !!node?.isLeaf),\n          ns.is('hidden', hiddenExpandIcon),\n          {\n            expanded: !node?.isLeaf && expanded,\n          },\n          ns.be('node', 'expand-icon'),\n        ]\"\n        @click.stop=\"handleExpandIconClick\"\n      >\n        <component :is=\"icon\" />\n      </el-icon>\n      <el-checkbox\n        v-if=\"showCheckbox\"\n        :model-value=\"checked\"\n        :indeterminate=\"indeterminate\"\n        :disabled=\"disabled\"\n        @change=\"handleCheckChange\"\n        @click.stop\n      />\n      <el-node-content :node=\"{ ...node, expanded }\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport ElIcon from '@pit-element-plus/components/icon'\nimport { CaretRight } from 'pit-element-icons'\nimport ElCheckbox from '@pit-element-plus/components/checkbox'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { isFunction, isString, mutable } from '@pit-element-plus/utils'\nimport ElNodeContent from './tree-node-content'\nimport {\n  EMPTY_NODE,\n  NODE_CONTEXTMENU,\n  ROOT_TREE_INJECTION_KEY,\n  treeNodeEmits,\n} from './virtual-tree'\n\nimport type { TreeNode, TreeNodeProps } from './types'\nimport type { CheckboxValueType } from '@pit-element-plus/components/checkbox'\n\ndefineOptions({\n  name: 'ElTreeNode',\n})\n\nconst props = withDefaults(defineProps<TreeNodeProps>(), {\n  node: () => mutable(EMPTY_NODE),\n  itemSize: 26,\n})\nconst emit = defineEmits(treeNodeEmits)\n\nconst tree = inject(ROOT_TREE_INJECTION_KEY)\nconst ns = useNamespace('tree')\n\nconst indent = computed(() => tree?.props.indent ?? 16)\nconst icon = computed(() => tree?.props.icon ?? CaretRight)\n\nconst getNodeClass = (node: TreeNode) => {\n  const nodeClassFunc = tree?.props.props?.class\n  if (!nodeClassFunc) return {}\n\n  let className\n  if (isFunction(nodeClassFunc)) {\n    const { data } = node\n    className = nodeClassFunc(data, node)\n  } else {\n    className = nodeClassFunc\n  }\n\n  return isString(className) ? { [className]: true } : className\n}\n\nconst handleClick = (e: MouseEvent) => {\n  emit('click', props.node, e)\n}\nconst handleDrop = (e: DragEvent) => {\n  emit('drop', props.node, e)\n}\nconst handleExpandIconClick = () => {\n  emit('toggle', props.node)\n}\nconst handleCheckChange = (value: CheckboxValueType) => {\n  emit('check', props.node, value)\n}\n\nconst handleContextMenu = (event: Event) => {\n  if (tree?.instance?.vnode?.props?.['onNodeContextmenu']) {\n    event.stopPropagation()\n    event.preventDefault()\n  }\n  tree?.ctx.emit(NODE_CONTEXTMENU, event, props.node?.data, props.node)\n}\n</script>\n","<template>\n  <div\n    :class=\"[ns.b(), { [ns.m('highlight-current')]: highlightCurrent }]\"\n    role=\"tree\"\n  >\n    <fixed-size-list\n      v-if=\"isNotEmpty\"\n      ref=\"listRef\"\n      :class-name=\"ns.b('virtual-list')\"\n      :data=\"flattenTree\"\n      :total=\"flattenTree.length\"\n      :height=\"height\"\n      :item-size=\"treeNodeSize\"\n      :perf-mode=\"perfMode\"\n      :scrollbar-always-on=\"scrollbarAlwaysOn\"\n    >\n      <template #default=\"{ data, index, style }\">\n        <el-tree-node\n          :key=\"data[index].key\"\n          :style=\"style\"\n          :node=\"data[index]\"\n          :expanded=\"data[index].expanded\"\n          :show-checkbox=\"showCheckbox\"\n          :checked=\"isChecked(data[index])\"\n          :indeterminate=\"isIndeterminate(data[index])\"\n          :item-size=\"treeNodeSize\"\n          :disabled=\"isDisabled(data[index])\"\n          :current=\"isCurrent(data[index])\"\n          :hidden-expand-icon=\"isForceHiddenExpandIcon(data[index])\"\n          @click=\"handleNodeClick\"\n          @toggle=\"toggleExpand\"\n          @check=\"handleNodeCheck\"\n          @drop=\"handleNodeDrop\"\n        />\n      </template>\n    </fixed-size-list>\n    <div v-else :class=\"ns.e('empty-block')\">\n      <slot name=\"empty\">\n        <span :class=\"ns.e('empty-text')\">\n          {{ emptyText ?? t('el.tree.emptyText') }}\n        </span>\n      </slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, getCurrentInstance, provide, useSlots } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { formItemContextKey } from '@pit-element-plus/components/form'\nimport { FixedSizeList } from '@pit-element-plus/components/virtual-list'\nimport { useTree } from './composables/useTree'\nimport ElTreeNode from './tree-node.vue'\nimport {\n  ROOT_TREE_INJECTION_KEY,\n  TreeOptionsEnum,\n  treeEmits,\n} from './virtual-tree'\nimport { mutable } from '@pit-element-plus/utils'\n\nimport type { TreeProps } from './types'\n\ndefineOptions({\n  name: 'ElTreeV2',\n})\n\nconst props = withDefaults(defineProps<TreeProps>(), {\n  data: () => mutable([]),\n  height: 200,\n  props: () =>\n    mutable({\n      children: TreeOptionsEnum.CHILDREN,\n      label: TreeOptionsEnum.LABEL,\n      disabled: TreeOptionsEnum.DISABLED,\n      value: TreeOptionsEnum.KEY,\n      class: TreeOptionsEnum.CLASS,\n    }),\n  defaultCheckedKeys: () => mutable([]),\n  defaultExpandedKeys: () => mutable([]),\n  indent: 16,\n  itemSize: 26,\n  expandOnClickNode: true,\n  checkOnClickLeaf: true,\n  perfMode: true,\n})\nconst emit = defineEmits(treeEmits)\n\nconst slots = useSlots()\n\nconst treeNodeSize = computed(() => props.itemSize)\n\nprovide(ROOT_TREE_INJECTION_KEY, {\n  ctx: {\n    emit,\n    slots,\n  },\n  props,\n  instance: getCurrentInstance()!,\n})\nprovide(formItemContextKey, undefined)\nconst { t } = useLocale()\nconst ns = useNamespace('tree')\nconst {\n  flattenTree,\n  isNotEmpty,\n  listRef,\n  toggleExpand,\n  isIndeterminate,\n  isChecked,\n  isDisabled,\n  isCurrent,\n  isForceHiddenExpandIcon,\n  handleNodeClick,\n  handleNodeDrop,\n  handleNodeCheck,\n  // expose\n  toggleCheckbox,\n  getCurrentNode,\n  getCurrentKey,\n  setCurrentKey,\n  getCheckedKeys,\n  getCheckedNodes,\n  getHalfCheckedKeys,\n  getHalfCheckedNodes,\n  setChecked,\n  setCheckedKeys,\n  filter,\n  setData,\n  getNode,\n  expandNode,\n  collapseNode,\n  setExpandedKeys,\n  scrollToNode,\n  scrollTo,\n} = useTree(props, emit)\n\ndefineExpose({\n  toggleCheckbox,\n  getCurrentNode,\n  getCurrentKey,\n  setCurrentKey,\n  getCheckedKeys,\n  getCheckedNodes,\n  getHalfCheckedKeys,\n  getHalfCheckedNodes,\n  setChecked,\n  setCheckedKeys,\n  filter,\n  setData,\n  getNode,\n  expandNode,\n  collapseNode,\n  setExpandedKeys,\n  scrollToNode,\n  scrollTo,\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b(), { [ns.m('highlight-current')]: highlightCurrent }]\"\n    role=\"tree\"\n  >\n    <fixed-size-list\n      v-if=\"isNotEmpty\"\n      ref=\"listRef\"\n      :class-name=\"ns.b('virtual-list')\"\n      :data=\"flattenTree\"\n      :total=\"flattenTree.length\"\n      :height=\"height\"\n      :item-size=\"treeNodeSize\"\n      :perf-mode=\"perfMode\"\n      :scrollbar-always-on=\"scrollbarAlwaysOn\"\n    >\n      <template #default=\"{ data, index, style }\">\n        <el-tree-node\n          :key=\"data[index].key\"\n          :style=\"style\"\n          :node=\"data[index]\"\n          :expanded=\"data[index].expanded\"\n          :show-checkbox=\"showCheckbox\"\n          :checked=\"isChecked(data[index])\"\n          :indeterminate=\"isIndeterminate(data[index])\"\n          :item-size=\"treeNodeSize\"\n          :disabled=\"isDisabled(data[index])\"\n          :current=\"isCurrent(data[index])\"\n          :hidden-expand-icon=\"isForceHiddenExpandIcon(data[index])\"\n          @click=\"handleNodeClick\"\n          @toggle=\"toggleExpand\"\n          @check=\"handleNodeCheck\"\n          @drop=\"handleNodeDrop\"\n        />\n      </template>\n    </fixed-size-list>\n    <div v-else :class=\"ns.e('empty-block')\">\n      <slot name=\"empty\">\n        <span :class=\"ns.e('empty-text')\">\n          {{ emptyText ?? t('el.tree.emptyText') }}\n        </span>\n      </slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, getCurrentInstance, provide, useSlots } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { formItemContextKey } from '@pit-element-plus/components/form'\nimport { FixedSizeList } from '@pit-element-plus/components/virtual-list'\nimport { useTree } from './composables/useTree'\nimport ElTreeNode from './tree-node.vue'\nimport {\n  ROOT_TREE_INJECTION_KEY,\n  TreeOptionsEnum,\n  treeEmits,\n} from './virtual-tree'\nimport { mutable } from '@pit-element-plus/utils'\n\nimport type { TreeProps } from './types'\n\ndefineOptions({\n  name: 'ElTreeV2',\n})\n\nconst props = withDefaults(defineProps<TreeProps>(), {\n  data: () => mutable([]),\n  height: 200,\n  props: () =>\n    mutable({\n      children: TreeOptionsEnum.CHILDREN,\n      label: TreeOptionsEnum.LABEL,\n      disabled: TreeOptionsEnum.DISABLED,\n      value: TreeOptionsEnum.KEY,\n      class: TreeOptionsEnum.CLASS,\n    }),\n  defaultCheckedKeys: () => mutable([]),\n  defaultExpandedKeys: () => mutable([]),\n  indent: 16,\n  itemSize: 26,\n  expandOnClickNode: true,\n  checkOnClickLeaf: true,\n  perfMode: true,\n})\nconst emit = defineEmits(treeEmits)\n\nconst slots = useSlots()\n\nconst treeNodeSize = computed(() => props.itemSize)\n\nprovide(ROOT_TREE_INJECTION_KEY, {\n  ctx: {\n    emit,\n    slots,\n  },\n  props,\n  instance: getCurrentInstance()!,\n})\nprovide(formItemContextKey, undefined)\nconst { t } = useLocale()\nconst ns = useNamespace('tree')\nconst {\n  flattenTree,\n  isNotEmpty,\n  listRef,\n  toggleExpand,\n  isIndeterminate,\n  isChecked,\n  isDisabled,\n  isCurrent,\n  isForceHiddenExpandIcon,\n  handleNodeClick,\n  handleNodeDrop,\n  handleNodeCheck,\n  // expose\n  toggleCheckbox,\n  getCurrentNode,\n  getCurrentKey,\n  setCurrentKey,\n  getCheckedKeys,\n  getCheckedNodes,\n  getHalfCheckedKeys,\n  getHalfCheckedNodes,\n  setChecked,\n  setCheckedKeys,\n  filter,\n  setData,\n  getNode,\n  expandNode,\n  collapseNode,\n  setExpandedKeys,\n  scrollToNode,\n  scrollTo,\n} = useTree(props, emit)\n\ndefineExpose({\n  toggleCheckbox,\n  getCurrentNode,\n  getCurrentKey,\n  setCurrentKey,\n  getCheckedKeys,\n  getCheckedNodes,\n  getHalfCheckedKeys,\n  getHalfCheckedNodes,\n  setChecked,\n  setCheckedKeys,\n  filter,\n  setData,\n  getNode,\n  expandNode,\n  collapseNode,\n  setExpandedKeys,\n  scrollToNode,\n  scrollTo,\n})\n</script>\n","<template>\n  <div\n    :class=\"[ns.b(), { [ns.m('highlight-current')]: highlightCurrent }]\"\n    role=\"tree\"\n  >\n    <fixed-size-list\n      v-if=\"isNotEmpty\"\n      ref=\"listRef\"\n      :class-name=\"ns.b('virtual-list')\"\n      :data=\"flattenTree\"\n      :total=\"flattenTree.length\"\n      :height=\"height\"\n      :item-size=\"treeNodeSize\"\n      :perf-mode=\"perfMode\"\n      :scrollbar-always-on=\"scrollbarAlwaysOn\"\n    >\n      <template #default=\"{ data, index, style }\">\n        <el-tree-node\n          :key=\"data[index].key\"\n          :style=\"style\"\n          :node=\"data[index]\"\n          :expanded=\"data[index].expanded\"\n          :show-checkbox=\"showCheckbox\"\n          :checked=\"isChecked(data[index])\"\n          :indeterminate=\"isIndeterminate(data[index])\"\n          :item-size=\"treeNodeSize\"\n          :disabled=\"isDisabled(data[index])\"\n          :current=\"isCurrent(data[index])\"\n          :hidden-expand-icon=\"isForceHiddenExpandIcon(data[index])\"\n          @click=\"handleNodeClick\"\n          @toggle=\"toggleExpand\"\n          @check=\"handleNodeCheck\"\n          @drop=\"handleNodeDrop\"\n        />\n      </template>\n    </fixed-size-list>\n    <div v-else :class=\"ns.e('empty-block')\">\n      <slot name=\"empty\">\n        <span :class=\"ns.e('empty-text')\">\n          {{ emptyText ?? t('el.tree.emptyText') }}\n        </span>\n      </slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, getCurrentInstance, provide, useSlots } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { formItemContextKey } from '@pit-element-plus/components/form'\nimport { FixedSizeList } from '@pit-element-plus/components/virtual-list'\nimport { useTree } from './composables/useTree'\nimport ElTreeNode from './tree-node.vue'\nimport {\n  ROOT_TREE_INJECTION_KEY,\n  TreeOptionsEnum,\n  treeEmits,\n} from './virtual-tree'\nimport { mutable } from '@pit-element-plus/utils'\n\nimport type { TreeProps } from './types'\n\ndefineOptions({\n  name: 'ElTreeV2',\n})\n\nconst props = withDefaults(defineProps<TreeProps>(), {\n  data: () => mutable([]),\n  height: 200,\n  props: () =>\n    mutable({\n      children: TreeOptionsEnum.CHILDREN,\n      label: TreeOptionsEnum.LABEL,\n      disabled: TreeOptionsEnum.DISABLED,\n      value: TreeOptionsEnum.KEY,\n      class: TreeOptionsEnum.CLASS,\n    }),\n  defaultCheckedKeys: () => mutable([]),\n  defaultExpandedKeys: () => mutable([]),\n  indent: 16,\n  itemSize: 26,\n  expandOnClickNode: true,\n  checkOnClickLeaf: true,\n  perfMode: true,\n})\nconst emit = defineEmits(treeEmits)\n\nconst slots = useSlots()\n\nconst treeNodeSize = computed(() => props.itemSize)\n\nprovide(ROOT_TREE_INJECTION_KEY, {\n  ctx: {\n    emit,\n    slots,\n  },\n  props,\n  instance: getCurrentInstance()!,\n})\nprovide(formItemContextKey, undefined)\nconst { t } = useLocale()\nconst ns = useNamespace('tree')\nconst {\n  flattenTree,\n  isNotEmpty,\n  listRef,\n  toggleExpand,\n  isIndeterminate,\n  isChecked,\n  isDisabled,\n  isCurrent,\n  isForceHiddenExpandIcon,\n  handleNodeClick,\n  handleNodeDrop,\n  handleNodeCheck,\n  // expose\n  toggleCheckbox,\n  getCurrentNode,\n  getCurrentKey,\n  setCurrentKey,\n  getCheckedKeys,\n  getCheckedNodes,\n  getHalfCheckedKeys,\n  getHalfCheckedNodes,\n  setChecked,\n  setCheckedKeys,\n  filter,\n  setData,\n  getNode,\n  expandNode,\n  collapseNode,\n  setExpandedKeys,\n  scrollToNode,\n  scrollTo,\n} = useTree(props, emit)\n\ndefineExpose({\n  toggleCheckbox,\n  getCurrentNode,\n  getCurrentKey,\n  setCurrentKey,\n  getCheckedKeys,\n  getCheckedNodes,\n  getHalfCheckedKeys,\n  getHalfCheckedNodes,\n  setChecked,\n  setCheckedKeys,\n  filter,\n  setData,\n  getNode,\n  expandNode,\n  collapseNode,\n  setExpandedKeys,\n  scrollToNode,\n  scrollTo,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport TreeV2 from './src/tree.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTreeV2: SFCWithInstall<typeof TreeV2> = withInstall(TreeV2)\nexport default ElTreeV2\n\nexport type { TreeV2Instance } from './src/instance'\n","import { isNil } from 'lodash-unified'\nimport { isArray, isString, throwError } from '@pit-element-plus/utils'\n\nimport type {\n  UploadProgressEvent,\n  UploadRequestHandler,\n  UploadRequestOptions,\n} from './upload'\n\nconst SCOPE = 'ElUpload'\n\nexport class UploadAjaxError extends Error {\n  name = 'UploadAjaxError'\n  status: number\n  method: string\n  url: string\n\n  constructor(message: string, status: number, method: string, url: string) {\n    super(message)\n    this.status = status\n    this.method = method\n    this.url = url\n  }\n}\n\nfunction getError(\n  action: string,\n  option: UploadRequestOptions,\n  xhr: XMLHttpRequest\n) {\n  let msg: string\n  if (xhr.response) {\n    msg = `${xhr.response.error || xhr.response}`\n  } else if (xhr.responseText) {\n    msg = `${xhr.responseText}`\n  } else {\n    msg = `fail to ${option.method} ${action} ${xhr.status}`\n  }\n\n  return new UploadAjaxError(msg, xhr.status, option.method, action)\n}\n\nfunction getBody(xhr: XMLHttpRequest): XMLHttpRequestResponseType {\n  const text = xhr.responseText || xhr.response\n  if (!text) {\n    return text\n  }\n\n  try {\n    return JSON.parse(text)\n  } catch {\n    return text\n  }\n}\n\nexport const ajaxUpload: UploadRequestHandler = (option) => {\n  if (typeof XMLHttpRequest === 'undefined')\n    throwError(SCOPE, 'XMLHttpRequest is undefined')\n\n  const xhr = new XMLHttpRequest()\n  const action = option.action\n\n  if (xhr.upload) {\n    xhr.upload.addEventListener('progress', (evt) => {\n      const progressEvt = evt as UploadProgressEvent\n      progressEvt.percent = evt.total > 0 ? (evt.loaded / evt.total) * 100 : 0\n      option.onProgress(progressEvt)\n    })\n  }\n\n  const formData = new FormData()\n  if (option.data) {\n    for (const [key, value] of Object.entries(option.data)) {\n      if (isArray(value)) {\n        if (\n          value.length === 2 &&\n          value[0] instanceof Blob &&\n          isString(value[1])\n        ) {\n          formData.append(key, value[0], value[1])\n        } else {\n          value.forEach((item) => {\n            formData.append(key, item)\n          })\n        }\n      } else formData.append(key, value)\n    }\n  }\n  formData.append(option.filename, option.file, option.file.name)\n\n  xhr.addEventListener('error', () => {\n    option.onError(getError(action, option, xhr))\n  })\n\n  xhr.addEventListener('load', () => {\n    if (xhr.status < 200 || xhr.status >= 300) {\n      return option.onError(getError(action, option, xhr))\n    }\n    option.onSuccess(getBody(xhr))\n  })\n\n  xhr.open(option.method, action, true)\n\n  if (option.withCredentials && 'withCredentials' in xhr) {\n    xhr.withCredentials = true\n  }\n\n  const headers = option.headers || {}\n  if (headers instanceof Headers) {\n    headers.forEach((value, key) => xhr.setRequestHeader(key, value))\n  } else {\n    for (const [key, value] of Object.entries(headers)) {\n      if (isNil(value)) continue\n      xhr.setRequestHeader(key, String(value))\n    }\n  }\n\n  xhr.send(formData)\n  return xhr\n}\n","import {\n  NOOP,\n  buildProps,\n  definePropType,\n  mutable,\n} from '@pit-element-plus/utils'\nimport { ajaxUpload } from './ajax'\n\nimport type { Awaitable, Mutable } from '@pit-element-plus/utils'\nimport type { UploadAjaxError } from './ajax'\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Upload from './upload.vue'\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadProps` instead.\n */\nexport const uploadListTypes = ['text', 'picture', 'picture-card'] as const\n\nlet fileId = 1\nexport const genFileId = () => Date.now() + fileId++\n\nexport type UploadStatus = 'ready' | 'uploading' | 'success' | 'fail'\nexport interface UploadProgressEvent extends ProgressEvent {\n  percent: number\n}\n\nexport interface UploadRequestOptions {\n  action: string\n  method: string\n  data: Record<string, string | Blob | [string | Blob, string] | string[]>\n  filename: string\n  file: UploadRawFile\n  headers: Headers | Record<string, string | number | null | undefined>\n  onError: (evt: UploadAjaxError) => void\n  onProgress: (evt: UploadProgressEvent) => void\n  onSuccess: (response: any) => void\n  withCredentials: boolean\n}\nexport interface UploadFile {\n  name: string\n  percentage?: number\n  status: UploadStatus\n  size?: number\n  response?: unknown\n  uid: number\n  url?: string\n  raw?: UploadRawFile\n}\nexport type UploadUserFile = Omit<UploadFile, 'status' | 'uid'> &\n  Partial<Pick<UploadFile, 'status' | 'uid'>>\n\nexport type UploadFiles = UploadFile[]\nexport interface UploadRawFile extends File {\n  uid: number\n  isDirectory?: boolean\n}\nexport type UploadRequestHandler = (\n  options: UploadRequestOptions\n) => XMLHttpRequest | Promise<unknown>\nexport interface UploadHooks {\n  beforeUpload: (\n    rawFile: UploadRawFile\n  ) => Awaitable<void | undefined | null | boolean | File | Blob>\n  beforeRemove: (\n    uploadFile: UploadFile,\n    uploadFiles: UploadFiles\n  ) => Awaitable<boolean>\n  onRemove: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void\n  onChange: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void\n  onPreview: (uploadFile: UploadFile) => void\n  onSuccess: (\n    response: any,\n    uploadFile: UploadFile,\n    uploadFiles: UploadFiles\n  ) => void\n  onProgress: (\n    evt: UploadProgressEvent,\n    uploadFile: UploadFile,\n    uploadFiles: UploadFiles\n  ) => void\n  onError: (\n    error: Error,\n    uploadFile: UploadFile,\n    uploadFiles: UploadFiles\n  ) => void\n  onExceed: (files: File[], uploadFiles: UploadUserFile[]) => void\n}\n\nexport type UploadData = Mutable<Record<string, any>>\n\nexport type ListType = 'text' | 'picture' | 'picture-card'\nexport type Crossorigin = 'anonymous' | 'use-credentials' | ''\n\nexport interface UploadBaseProps {\n  /**\n   * @description request URL\n   */\n  action?: string\n  /**\n   * @description request headers\n   */\n  headers?: Headers | Record<string, any>\n  /**\n   * @description set upload request method\n   */\n  method?: string\n  /**\n   * @description additions options of request\n   */\n  data?:\n    | Awaitable<UploadData>\n    | ((rawFile: UploadRawFile) => Awaitable<UploadData>)\n  /**\n   * @description whether uploading multiple files is permitted\n   */\n  multiple?: boolean\n  /**\n   * @description key name for uploaded file\n   */\n  name?: string\n  /**\n   * @description whether to activate drag and drop mode\n   */\n  drag?: boolean\n  /**\n   * @description whether cookies are sent\n   */\n  withCredentials?: boolean\n  /**\n   * @description whether to show the uploaded file list\n   */\n  showFileList?: boolean\n  /**\n   * @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true`\n   */\n  accept?: string\n  /**\n   * @description default uploaded files\n   */\n  fileList?: UploadUserFile[]\n  /**\n   * @description whether to auto upload file\n   */\n  autoUpload?: boolean\n  /**\n   * @description type of file list\n   */\n  listType?: ListType\n  /**\n   * @description override default xhr behavior, allowing you to implement your own upload-file's request\n   */\n  httpRequest?: UploadRequestHandler\n  /**\n   * @description whether to disable upload\n   */\n  disabled?: boolean\n  /**\n   * @description maximum number of uploads allowed\n   */\n  limit?: number\n  /**\n   * @description whether to support uploading directory\n   */\n  directory?: boolean\n}\n\nexport interface UploadProps extends UploadBaseProps {\n  /**\n   * @description hook function before uploading with the file to be uploaded as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, uploading will be aborted\n   */\n  beforeUpload?: UploadHooks['beforeUpload']\n  /**\n   * @description hook function before removing a file with the file and file list as its parameters. If `false` is returned or a `Promise` is returned and then is rejected, removing will be aborted\n   */\n  beforeRemove?: UploadHooks['beforeRemove']\n  /**\n   * @description hook function when files are removed\n   */\n  onRemove?: UploadHooks['onRemove']\n  /**\n   * @description hook function when select file or upload file success or upload file fail\n   */\n  onChange?: UploadHooks['onChange']\n  /**\n   * @description hook function when clicking the uploaded files\n   */\n  onPreview?: UploadHooks['onPreview']\n  /**\n   * @description hook function when uploaded successfully\n   */\n  onSuccess?: UploadHooks['onSuccess']\n  /**\n   * @description hook function when some progress occurs\n   */\n  onProgress?: UploadHooks['onProgress']\n  /**\n   * @description hook function when some errors occurs\n   */\n  onError?: UploadHooks['onError']\n  /**\n   * @description hook function when limit is exceeded\n   */\n  onExceed?: UploadHooks['onExceed']\n  /**\n   * @description set HTML attribute: crossorigin.\n   */\n  crossorigin?: Crossorigin\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadBaseProps` instead.\n */\nexport const uploadBaseProps = buildProps({\n  /**\n   * @description request URL\n   */\n  action: {\n    type: String,\n    default: '#',\n  },\n  /**\n   * @description request headers\n   */\n  headers: {\n    type: definePropType<Headers | Record<string, any>>(Object),\n  },\n  /**\n   * @description set upload request method\n   */\n  method: {\n    type: String,\n    default: 'post',\n  },\n  /**\n   * @description additions options of request\n   */\n  data: {\n    type: definePropType<\n      | Awaitable<UploadData>\n      | ((rawFile: UploadRawFile) => Awaitable<UploadData>)\n    >([Object, Function, Promise]),\n    default: () => mutable({} as const),\n  },\n  /**\n   * @description whether uploading multiple files is permitted\n   */\n  multiple: Boolean,\n  /**\n   * @description key name for uploaded file\n   */\n  name: {\n    type: String,\n    default: 'file',\n  },\n  /**\n   * @description whether to activate drag and drop mode\n   */\n  drag: Boolean,\n  /**\n   * @description whether cookies are sent\n   */\n  withCredentials: Boolean,\n  /**\n   * @description whether to show the uploaded file list\n   */\n  showFileList: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true`\n   */\n  accept: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description default uploaded files\n   */\n  fileList: {\n    type: definePropType<UploadUserFile[]>(Array),\n    default: () => mutable([] as const),\n  },\n  /**\n   * @description whether to auto upload file\n   */\n  autoUpload: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description type of file list\n   */\n  listType: {\n    type: String,\n    values: uploadListTypes,\n    default: 'text',\n  },\n  /**\n   * @description override default xhr behavior, allowing you to implement your own upload-file's request\n   */\n  httpRequest: {\n    type: definePropType<UploadRequestHandler>(Function),\n    default: ajaxUpload,\n  },\n  /**\n   * @description whether to disable upload\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description maximum number of uploads allowed\n   */\n  limit: Number,\n  /**\n   * @description whether to support uploading directory\n   */\n  directory: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadProps` instead.\n */\nexport const uploadProps = buildProps({\n  ...uploadBaseProps,\n  /**\n   * @description hook function before uploading with the file to be uploaded as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, uploading will be aborted\n   */\n  beforeUpload: {\n    type: definePropType<UploadHooks['beforeUpload']>(Function),\n    default: NOOP,\n  },\n  /**\n   * @description hook function before removing a file with the file and file list as its parameters. If `false` is returned or a `Promise` is returned and then is rejected, removing will be aborted\n   */\n  beforeRemove: {\n    type: definePropType<UploadHooks['beforeRemove']>(Function),\n  },\n  /**\n   * @description hook function when files are removed\n   */\n  onRemove: {\n    type: definePropType<UploadHooks['onRemove']>(Function),\n    default: NOOP,\n  },\n  /**\n   * @description hook function when select file or upload file success or upload file fail\n   */\n  onChange: {\n    type: definePropType<UploadHooks['onChange']>(Function),\n    default: NOOP,\n  },\n  /**\n   * @description hook function when clicking the uploaded files\n   */\n  onPreview: {\n    type: definePropType<UploadHooks['onPreview']>(Function),\n    default: NOOP,\n  },\n  /**\n   * @description hook function when uploaded successfully\n   */\n  onSuccess: {\n    type: definePropType<UploadHooks['onSuccess']>(Function),\n    default: NOOP,\n  },\n  /**\n   * @description hook function when some progress occurs\n   */\n  onProgress: {\n    type: definePropType<UploadHooks['onProgress']>(Function),\n    default: NOOP,\n  },\n  /**\n   * @description hook function when some errors occurs\n   */\n  onError: {\n    type: definePropType<UploadHooks['onError']>(Function),\n    default: NOOP,\n  },\n  /**\n   * @description hook function when limit is exceeded\n   */\n  onExceed: {\n    type: definePropType<UploadHooks['onExceed']>(Function),\n    default: NOOP,\n  },\n  /**\n   * @description set HTML attribute: crossorigin.\n   */\n  crossorigin: {\n    type: definePropType<'anonymous' | 'use-credentials' | ''>(String),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadProps` instead.\n */\nexport type UploadPropsPublic = ExtractPublicPropTypes<typeof uploadProps>\n\nexport type UploadInstance = InstanceType<typeof Upload> & unknown\n\nexport const uploadBasePropsDefaults = {\n  action: '#',\n  method: 'post',\n  data: () => mutable({}),\n  name: 'file',\n  showFileList: true,\n  accept: '',\n  fileList: () => mutable([]),\n  autoUpload: true,\n  listType: 'text',\n  httpRequest: ajaxUpload,\n  disabled: undefined,\n} as const\n\nexport const uploadPropsDefaults = {\n  ...uploadBasePropsDefaults,\n  beforeUpload: NOOP,\n  onRemove: NOOP,\n  onChange: NOOP,\n  onPreview: NOOP,\n  onSuccess: NOOP,\n  onProgress: NOOP,\n  onError: NOOP,\n  onExceed: NOOP,\n} as const\n","import type { InjectionKey, Ref } from 'vue'\n\nexport interface UploadContext {\n  accept: Ref<string>\n}\n\nexport const uploadContextKey: InjectionKey<UploadContext> =\n  Symbol('uploadContextKey')\n","import {\n  NOOP,\n  buildProps,\n  definePropType,\n  mutable,\n} from '@pit-element-plus/utils'\nimport { uploadListTypes } from './upload'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type {\n  Crossorigin,\n  ListType,\n  UploadFile,\n  UploadFiles,\n  UploadHooks,\n} from './upload'\nimport type UploadList from './upload-list.vue'\n\nexport interface UploadListProps {\n  files?: UploadFiles\n  disabled?: boolean\n  handlePreview?: UploadHooks['onPreview']\n  listType?: ListType\n  /**\n   * @description set HTML attribute: crossorigin.\n   */\n  crossorigin?: Crossorigin\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadListProps` instead.\n */\nexport const uploadListProps = buildProps({\n  files: {\n    type: definePropType<UploadFiles>(Array),\n    default: () => mutable([]),\n  },\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  handlePreview: {\n    type: definePropType<UploadHooks['onPreview']>(Function),\n    default: NOOP,\n  },\n  listType: {\n    type: String,\n    values: uploadListTypes,\n    default: 'text',\n  },\n  /**\n   * @description set HTML attribute: crossorigin.\n   */\n  crossorigin: {\n    type: definePropType<'anonymous' | 'use-credentials' | ''>(String),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadListProps` instead.\n */\nexport type UploadListPropsPublic = ExtractPublicPropTypes<\n  typeof uploadListProps\n>\nexport const uploadListEmits = {\n  remove: (file: UploadFile) => !!file,\n}\nexport type UploadListEmits = typeof uploadListEmits\nexport type UploadListInstance = InstanceType<typeof UploadList> & unknown\n","<template>\n  <transition-group tag=\"ul\" :class=\"containerKls\" :name=\"nsList.b()\">\n    <li\n      v-for=\"(file, index) in files\"\n      :key=\"file.uid || file.name\"\n      :class=\"[\n        nsUpload.be('list', 'item'),\n        nsUpload.is(file.status),\n        { focusing },\n      ]\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      role=\"button\"\n      @keydown.delete=\"!disabled && handleRemove(file)\"\n      @focus=\"focusing = true\"\n      @blur=\"focusing = false\"\n      @click=\"focusing = false\"\n    >\n      <slot :file=\"file\" :index=\"index\">\n        <img\n          v-if=\"\n            listType === 'picture' ||\n            (file.status !== 'uploading' && listType === 'picture-card')\n          \"\n          :class=\"nsUpload.be('list', 'item-thumbnail')\"\n          :src=\"file.url\"\n          :crossorigin=\"crossorigin\"\n          alt=\"\"\n        />\n        <div\n          v-if=\"file.status === 'uploading' || listType !== 'picture-card'\"\n          :class=\"nsUpload.be('list', 'item-info')\"\n        >\n          <a\n            :class=\"nsUpload.be('list', 'item-name')\"\n            @click.prevent=\"handlePreview(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('document')\">\n              <Document />\n            </el-icon>\n            <span\n              :class=\"nsUpload.be('list', 'item-file-name')\"\n              :title=\"file.name\"\n            >\n              {{ file.name }}\n            </span>\n          </a>\n          <el-progress\n            v-if=\"file.status === 'uploading'\"\n            :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n            :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n            :percentage=\"Number(file.percentage)\"\n            :style=\"listType === 'picture-card' ? '' : 'margin-top: 0.5rem'\"\n          />\n        </div>\n\n        <label :class=\"nsUpload.be('list', 'item-status-label')\">\n          <el-icon\n            v-if=\"listType === 'text'\"\n            :class=\"[nsIcon.m('upload-success'), nsIcon.m('circle-check')]\"\n          >\n            <circle-check />\n          </el-icon>\n          <el-icon\n            v-else-if=\"['picture-card', 'picture'].includes(listType)\"\n            :class=\"[nsIcon.m('upload-success'), nsIcon.m('check')]\"\n          >\n            <Check />\n          </el-icon>\n        </label>\n        <el-icon\n          v-if=\"!disabled\"\n          :class=\"nsIcon.m('close')\"\n          :aria-label=\"t('el.upload.delete')\"\n          role=\"button\"\n          tabindex=\"0\"\n          @click=\"handleRemove(file)\"\n          @keydown.enter.space.prevent=\"handleRemove(file)\"\n        >\n          <Close />\n        </el-icon>\n        <i v-if=\"!disabled\" :class=\"nsIcon.m('close-tip')\">{{\n          t('el.upload.deleteTip')\n        }}</i>\n        <span\n          v-if=\"listType === 'picture-card'\"\n          :class=\"nsUpload.be('list', 'item-actions')\"\n        >\n          <span\n            :class=\"nsUpload.be('list', 'item-preview')\"\n            @click=\"handlePreview(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('zoom-in')\"><zoom-in /></el-icon>\n          </span>\n          <span\n            v-if=\"!disabled\"\n            :class=\"nsUpload.be('list', 'item-delete')\"\n            @click=\"handleRemove(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('delete')\">\n              <Delete />\n            </el-icon>\n          </span>\n        </span>\n      </slot>\n    </li>\n    <slot name=\"append\" />\n  </transition-group>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  Check,\n  CircleCheck,\n  Close,\n  Delete,\n  Document,\n  ZoomIn,\n} from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElProgress from '@pit-element-plus/components/progress'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { uploadListEmits } from './upload-list'\nimport { NOOP, mutable } from '@pit-element-plus/utils'\n\nimport type { UploadListProps } from './upload-list'\nimport type { UploadFile } from './upload'\n\ndefineOptions({\n  name: 'ElUploadList',\n})\n\nconst props = withDefaults(defineProps<UploadListProps>(), {\n  files: () => mutable([]),\n  disabled: undefined,\n  handlePreview: NOOP,\n  listType: 'text',\n})\nconst emit = defineEmits(uploadListEmits)\n\nconst { t } = useLocale()\nconst nsUpload = useNamespace('upload')\nconst nsIcon = useNamespace('icon')\nconst nsList = useNamespace('list')\nconst disabled = useFormDisabled()\n\nconst focusing = ref(false)\n\nconst containerKls = computed(() => [\n  nsUpload.b('list'),\n  nsUpload.bm('list', props.listType),\n  nsUpload.is('disabled', disabled.value),\n])\n\nconst handleRemove = (file: UploadFile) => {\n  emit('remove', file)\n}\n</script>\n","<template>\n  <transition-group tag=\"ul\" :class=\"containerKls\" :name=\"nsList.b()\">\n    <li\n      v-for=\"(file, index) in files\"\n      :key=\"file.uid || file.name\"\n      :class=\"[\n        nsUpload.be('list', 'item'),\n        nsUpload.is(file.status),\n        { focusing },\n      ]\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      role=\"button\"\n      @keydown.delete=\"!disabled && handleRemove(file)\"\n      @focus=\"focusing = true\"\n      @blur=\"focusing = false\"\n      @click=\"focusing = false\"\n    >\n      <slot :file=\"file\" :index=\"index\">\n        <img\n          v-if=\"\n            listType === 'picture' ||\n            (file.status !== 'uploading' && listType === 'picture-card')\n          \"\n          :class=\"nsUpload.be('list', 'item-thumbnail')\"\n          :src=\"file.url\"\n          :crossorigin=\"crossorigin\"\n          alt=\"\"\n        />\n        <div\n          v-if=\"file.status === 'uploading' || listType !== 'picture-card'\"\n          :class=\"nsUpload.be('list', 'item-info')\"\n        >\n          <a\n            :class=\"nsUpload.be('list', 'item-name')\"\n            @click.prevent=\"handlePreview(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('document')\">\n              <Document />\n            </el-icon>\n            <span\n              :class=\"nsUpload.be('list', 'item-file-name')\"\n              :title=\"file.name\"\n            >\n              {{ file.name }}\n            </span>\n          </a>\n          <el-progress\n            v-if=\"file.status === 'uploading'\"\n            :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n            :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n            :percentage=\"Number(file.percentage)\"\n            :style=\"listType === 'picture-card' ? '' : 'margin-top: 0.5rem'\"\n          />\n        </div>\n\n        <label :class=\"nsUpload.be('list', 'item-status-label')\">\n          <el-icon\n            v-if=\"listType === 'text'\"\n            :class=\"[nsIcon.m('upload-success'), nsIcon.m('circle-check')]\"\n          >\n            <circle-check />\n          </el-icon>\n          <el-icon\n            v-else-if=\"['picture-card', 'picture'].includes(listType)\"\n            :class=\"[nsIcon.m('upload-success'), nsIcon.m('check')]\"\n          >\n            <Check />\n          </el-icon>\n        </label>\n        <el-icon\n          v-if=\"!disabled\"\n          :class=\"nsIcon.m('close')\"\n          :aria-label=\"t('el.upload.delete')\"\n          role=\"button\"\n          tabindex=\"0\"\n          @click=\"handleRemove(file)\"\n          @keydown.enter.space.prevent=\"handleRemove(file)\"\n        >\n          <Close />\n        </el-icon>\n        <i v-if=\"!disabled\" :class=\"nsIcon.m('close-tip')\">{{\n          t('el.upload.deleteTip')\n        }}</i>\n        <span\n          v-if=\"listType === 'picture-card'\"\n          :class=\"nsUpload.be('list', 'item-actions')\"\n        >\n          <span\n            :class=\"nsUpload.be('list', 'item-preview')\"\n            @click=\"handlePreview(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('zoom-in')\"><zoom-in /></el-icon>\n          </span>\n          <span\n            v-if=\"!disabled\"\n            :class=\"nsUpload.be('list', 'item-delete')\"\n            @click=\"handleRemove(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('delete')\">\n              <Delete />\n            </el-icon>\n          </span>\n        </span>\n      </slot>\n    </li>\n    <slot name=\"append\" />\n  </transition-group>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  Check,\n  CircleCheck,\n  Close,\n  Delete,\n  Document,\n  ZoomIn,\n} from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElProgress from '@pit-element-plus/components/progress'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { uploadListEmits } from './upload-list'\nimport { NOOP, mutable } from '@pit-element-plus/utils'\n\nimport type { UploadListProps } from './upload-list'\nimport type { UploadFile } from './upload'\n\ndefineOptions({\n  name: 'ElUploadList',\n})\n\nconst props = withDefaults(defineProps<UploadListProps>(), {\n  files: () => mutable([]),\n  disabled: undefined,\n  handlePreview: NOOP,\n  listType: 'text',\n})\nconst emit = defineEmits(uploadListEmits)\n\nconst { t } = useLocale()\nconst nsUpload = useNamespace('upload')\nconst nsIcon = useNamespace('icon')\nconst nsList = useNamespace('list')\nconst disabled = useFormDisabled()\n\nconst focusing = ref(false)\n\nconst containerKls = computed(() => [\n  nsUpload.b('list'),\n  nsUpload.bm('list', props.listType),\n  nsUpload.is('disabled', disabled.value),\n])\n\nconst handleRemove = (file: UploadFile) => {\n  emit('remove', file)\n}\n</script>\n","<template>\n  <transition-group tag=\"ul\" :class=\"containerKls\" :name=\"nsList.b()\">\n    <li\n      v-for=\"(file, index) in files\"\n      :key=\"file.uid || file.name\"\n      :class=\"[\n        nsUpload.be('list', 'item'),\n        nsUpload.is(file.status),\n        { focusing },\n      ]\"\n      :tabindex=\"disabled ? undefined : 0\"\n      :aria-disabled=\"disabled\"\n      role=\"button\"\n      @keydown.delete=\"!disabled && handleRemove(file)\"\n      @focus=\"focusing = true\"\n      @blur=\"focusing = false\"\n      @click=\"focusing = false\"\n    >\n      <slot :file=\"file\" :index=\"index\">\n        <img\n          v-if=\"\n            listType === 'picture' ||\n            (file.status !== 'uploading' && listType === 'picture-card')\n          \"\n          :class=\"nsUpload.be('list', 'item-thumbnail')\"\n          :src=\"file.url\"\n          :crossorigin=\"crossorigin\"\n          alt=\"\"\n        />\n        <div\n          v-if=\"file.status === 'uploading' || listType !== 'picture-card'\"\n          :class=\"nsUpload.be('list', 'item-info')\"\n        >\n          <a\n            :class=\"nsUpload.be('list', 'item-name')\"\n            @click.prevent=\"handlePreview(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('document')\">\n              <Document />\n            </el-icon>\n            <span\n              :class=\"nsUpload.be('list', 'item-file-name')\"\n              :title=\"file.name\"\n            >\n              {{ file.name }}\n            </span>\n          </a>\n          <el-progress\n            v-if=\"file.status === 'uploading'\"\n            :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n            :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n            :percentage=\"Number(file.percentage)\"\n            :style=\"listType === 'picture-card' ? '' : 'margin-top: 0.5rem'\"\n          />\n        </div>\n\n        <label :class=\"nsUpload.be('list', 'item-status-label')\">\n          <el-icon\n            v-if=\"listType === 'text'\"\n            :class=\"[nsIcon.m('upload-success'), nsIcon.m('circle-check')]\"\n          >\n            <circle-check />\n          </el-icon>\n          <el-icon\n            v-else-if=\"['picture-card', 'picture'].includes(listType)\"\n            :class=\"[nsIcon.m('upload-success'), nsIcon.m('check')]\"\n          >\n            <Check />\n          </el-icon>\n        </label>\n        <el-icon\n          v-if=\"!disabled\"\n          :class=\"nsIcon.m('close')\"\n          :aria-label=\"t('el.upload.delete')\"\n          role=\"button\"\n          tabindex=\"0\"\n          @click=\"handleRemove(file)\"\n          @keydown.enter.space.prevent=\"handleRemove(file)\"\n        >\n          <Close />\n        </el-icon>\n        <i v-if=\"!disabled\" :class=\"nsIcon.m('close-tip')\">{{\n          t('el.upload.deleteTip')\n        }}</i>\n        <span\n          v-if=\"listType === 'picture-card'\"\n          :class=\"nsUpload.be('list', 'item-actions')\"\n        >\n          <span\n            :class=\"nsUpload.be('list', 'item-preview')\"\n            @click=\"handlePreview(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('zoom-in')\"><zoom-in /></el-icon>\n          </span>\n          <span\n            v-if=\"!disabled\"\n            :class=\"nsUpload.be('list', 'item-delete')\"\n            @click=\"handleRemove(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('delete')\">\n              <Delete />\n            </el-icon>\n          </span>\n        </span>\n      </slot>\n    </li>\n    <slot name=\"append\" />\n  </transition-group>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  Check,\n  CircleCheck,\n  Close,\n  Delete,\n  Document,\n  ZoomIn,\n} from 'pit-element-icons'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport ElProgress from '@pit-element-plus/components/progress'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { uploadListEmits } from './upload-list'\nimport { NOOP, mutable } from '@pit-element-plus/utils'\n\nimport type { UploadListProps } from './upload-list'\nimport type { UploadFile } from './upload'\n\ndefineOptions({\n  name: 'ElUploadList',\n})\n\nconst props = withDefaults(defineProps<UploadListProps>(), {\n  files: () => mutable([]),\n  disabled: undefined,\n  handlePreview: NOOP,\n  listType: 'text',\n})\nconst emit = defineEmits(uploadListEmits)\n\nconst { t } = useLocale()\nconst nsUpload = useNamespace('upload')\nconst nsIcon = useNamespace('icon')\nconst nsList = useNamespace('list')\nconst disabled = useFormDisabled()\n\nconst focusing = ref(false)\n\nconst containerKls = computed(() => [\n  nsUpload.b('list'),\n  nsUpload.bm('list', props.listType),\n  nsUpload.is('disabled', disabled.value),\n])\n\nconst handleRemove = (file: UploadFile) => {\n  emit('remove', file)\n}\n</script>\n","import { NOOP, buildProps, definePropType } from '@pit-element-plus/utils'\nimport {\n  UploadBaseProps,\n  uploadBaseProps,\n  uploadBasePropsDefaults,\n} from './upload'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type {\n  UploadFile,\n  UploadHooks,\n  UploadProgressEvent,\n  UploadRawFile,\n} from './upload'\nimport type UploadContent from './upload-content.vue'\nimport type { UploadAjaxError } from './ajax'\n\nexport interface UploadContentProps extends UploadBaseProps {\n  beforeUpload?: UploadHooks['beforeUpload']\n  onRemove?: (file: UploadFile | UploadRawFile) => void\n  onStart?: (rawFile: UploadRawFile) => void\n  onSuccess?: (response: any, rawFile: UploadRawFile) => unknown\n  onProgress?: (evt: UploadProgressEvent, rawFile: UploadRawFile) => void\n  onError?: (err: UploadAjaxError, rawFile: UploadRawFile) => void\n  onExceed?: UploadHooks['onExceed']\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadContentProps` instead.\n */\nexport const uploadContentProps = buildProps({\n  ...uploadBaseProps,\n\n  beforeUpload: {\n    type: definePropType<UploadHooks['beforeUpload']>(Function),\n    default: NOOP,\n  },\n  onRemove: {\n    type: definePropType<(file: UploadFile | UploadRawFile) => void>(Function),\n    default: NOOP,\n  },\n  onStart: {\n    type: definePropType<(rawFile: UploadRawFile) => void>(Function),\n    default: NOOP,\n  },\n  onSuccess: {\n    type: definePropType<(response: any, rawFile: UploadRawFile) => unknown>(\n      Function\n    ),\n    default: NOOP,\n  },\n  onProgress: {\n    type: definePropType<\n      (evt: UploadProgressEvent, rawFile: UploadRawFile) => void\n    >(Function),\n    default: NOOP,\n  },\n  onError: {\n    type: definePropType<\n      (err: UploadAjaxError, rawFile: UploadRawFile) => void\n    >(Function),\n    default: NOOP,\n  },\n  onExceed: {\n    type: definePropType<UploadHooks['onExceed']>(Function),\n    default: NOOP,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadContentProps` instead.\n */\nexport type UploadContentPropsPublic = ExtractPublicPropTypes<\n  typeof uploadContentProps\n>\n\nexport type UploadContentInstance = InstanceType<typeof UploadContent> & unknown\n\nexport const uploadContentPropsDefaults = {\n  ...uploadBasePropsDefaults,\n  beforeUpload: NOOP,\n  onRemove: NOOP,\n  onStart: NOOP,\n  onSuccess: NOOP,\n  onProgress: NOOP,\n  onError: NOOP,\n  onExceed: NOOP,\n} as const\n","import { buildProps, isArray } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type UploadDragger from './upload-dragger.vue'\n\nexport interface UploadDraggerProps {\n  disabled?: boolean\n  directory?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadDraggerProps` instead.\n */\nexport const uploadDraggerProps = buildProps({\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  directory: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadDraggerProps` instead.\n */\nexport type UploadDraggerPropsPublic = ExtractPublicPropTypes<\n  typeof uploadDraggerProps\n>\n\nexport const uploadDraggerEmits = {\n  file: (file: File[]) => isArray(file),\n}\nexport type UploadDraggerEmits = typeof uploadDraggerEmits\n\nexport type UploadDraggerInstance = InstanceType<typeof UploadDragger> & unknown\n","<template>\n  <div\n    :class=\"[ns.b('dragger'), ns.is('dragover', dragover)]\"\n    @drop.prevent=\"onDrop\"\n    @dragover.prevent=\"onDragover\"\n    @dragleave.prevent=\"onDragleave\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { throwError } from '@pit-element-plus/utils/error'\nimport { flatten } from 'lodash-unified'\nimport { uploadContextKey } from './constants'\nimport { uploadDraggerEmits } from './upload-dragger'\n\nimport type { UploadDraggerProps } from './upload-dragger'\nimport type { UploadRawFile } from './upload'\n\nconst COMPONENT_NAME = 'ElUploadDrag'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<UploadDraggerProps>(), {\n  disabled: undefined,\n})\nconst emit = defineEmits(uploadDraggerEmits)\n\nconst uploaderContext = inject(uploadContextKey)\nif (!uploaderContext) {\n  throwError(\n    COMPONENT_NAME,\n    'usage: <el-upload><el-upload-dragger /></el-upload>'\n  )\n}\n\nconst ns = useNamespace('upload')\nconst dragover = ref(false)\nconst disabled = useFormDisabled()\n\nconst getFile = (entry: FileSystemFileEntry): Promise<File> => {\n  return new Promise((resolve, reject) => entry.file(resolve, reject))\n}\n\nconst getAllFiles = async (\n  entry: FileSystemEntry\n): Promise<UploadRawFile[]> => {\n  try {\n    if (entry.isFile) {\n      const file = (await getFile(\n        entry as FileSystemFileEntry\n      )) as UploadRawFile\n      file.isDirectory = false\n      return [file]\n    }\n    if (entry.isDirectory) {\n      const dirReader = (entry as FileSystemDirectoryEntry).createReader()\n      const getEntries = (): Promise<FileSystemEntry[]> => {\n        return new Promise((resolve, reject) =>\n          dirReader.readEntries(resolve, reject)\n        )\n      }\n\n      const entries: FileSystemEntry[] = []\n      let readEntries = await getEntries()\n      /**\n       * In Chromium-based browsers, readEntries() will only return the first 100 FileSystemEntry instances.\n       * https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries#:~:text=In%20Chromium%2Dbased%20browsers%2C%20readEntries()%20will%20only%20return%20the%20first%20100%20FileSystemEntry%20instances.%20In%20order%20to%20obtain%20all%20of%20the%20instances%2C%20readEntries()%20must%20be%20called%20multiple%20times.\n       */\n      while (readEntries.length > 0) {\n        entries.push(...readEntries)\n        readEntries = await getEntries()\n      }\n\n      const filePromises = entries.map((entry) =>\n        getAllFiles(entry).catch(() => [])\n      )\n\n      const files = await Promise.all(filePromises)\n      return flatten(files)\n    }\n  } catch {\n    return []\n  }\n  return []\n}\n\nconst onDrop = async (e: DragEvent) => {\n  if (disabled.value) return\n  dragover.value = false\n\n  e.stopPropagation()\n\n  const files = Array.from(e.dataTransfer!.files) as UploadRawFile[]\n  const items = e.dataTransfer!.items || []\n\n  if (props.directory) {\n    const entries = Array.from(items)\n      .map((item) => item?.webkitGetAsEntry?.())\n      .filter((entry) => entry) as FileSystemEntry[]\n\n    const allFiles = await Promise.all(entries.map(getAllFiles))\n    emit('file', flatten(allFiles))\n    return\n  }\n\n  files.forEach((file, index) => {\n    const item = items[index]\n    const entry = item?.webkitGetAsEntry?.()\n    if (entry) {\n      file.isDirectory = entry.isDirectory\n    }\n  })\n  emit('file', files)\n}\n\nconst onDragover = () => {\n  if (!disabled.value) dragover.value = true\n}\n\nconst onDragleave = (e: DragEvent) => {\n  if (!(e.currentTarget as Element).contains(e.relatedTarget as Element))\n    dragover.value = false\n}\n</script>\n","<template>\n  <div\n    :class=\"[ns.b('dragger'), ns.is('dragover', dragover)]\"\n    @drop.prevent=\"onDrop\"\n    @dragover.prevent=\"onDragover\"\n    @dragleave.prevent=\"onDragleave\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { throwError } from '@pit-element-plus/utils/error'\nimport { flatten } from 'lodash-unified'\nimport { uploadContextKey } from './constants'\nimport { uploadDraggerEmits } from './upload-dragger'\n\nimport type { UploadDraggerProps } from './upload-dragger'\nimport type { UploadRawFile } from './upload'\n\nconst COMPONENT_NAME = 'ElUploadDrag'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<UploadDraggerProps>(), {\n  disabled: undefined,\n})\nconst emit = defineEmits(uploadDraggerEmits)\n\nconst uploaderContext = inject(uploadContextKey)\nif (!uploaderContext) {\n  throwError(\n    COMPONENT_NAME,\n    'usage: <el-upload><el-upload-dragger /></el-upload>'\n  )\n}\n\nconst ns = useNamespace('upload')\nconst dragover = ref(false)\nconst disabled = useFormDisabled()\n\nconst getFile = (entry: FileSystemFileEntry): Promise<File> => {\n  return new Promise((resolve, reject) => entry.file(resolve, reject))\n}\n\nconst getAllFiles = async (\n  entry: FileSystemEntry\n): Promise<UploadRawFile[]> => {\n  try {\n    if (entry.isFile) {\n      const file = (await getFile(\n        entry as FileSystemFileEntry\n      )) as UploadRawFile\n      file.isDirectory = false\n      return [file]\n    }\n    if (entry.isDirectory) {\n      const dirReader = (entry as FileSystemDirectoryEntry).createReader()\n      const getEntries = (): Promise<FileSystemEntry[]> => {\n        return new Promise((resolve, reject) =>\n          dirReader.readEntries(resolve, reject)\n        )\n      }\n\n      const entries: FileSystemEntry[] = []\n      let readEntries = await getEntries()\n      /**\n       * In Chromium-based browsers, readEntries() will only return the first 100 FileSystemEntry instances.\n       * https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries#:~:text=In%20Chromium%2Dbased%20browsers%2C%20readEntries()%20will%20only%20return%20the%20first%20100%20FileSystemEntry%20instances.%20In%20order%20to%20obtain%20all%20of%20the%20instances%2C%20readEntries()%20must%20be%20called%20multiple%20times.\n       */\n      while (readEntries.length > 0) {\n        entries.push(...readEntries)\n        readEntries = await getEntries()\n      }\n\n      const filePromises = entries.map((entry) =>\n        getAllFiles(entry).catch(() => [])\n      )\n\n      const files = await Promise.all(filePromises)\n      return flatten(files)\n    }\n  } catch {\n    return []\n  }\n  return []\n}\n\nconst onDrop = async (e: DragEvent) => {\n  if (disabled.value) return\n  dragover.value = false\n\n  e.stopPropagation()\n\n  const files = Array.from(e.dataTransfer!.files) as UploadRawFile[]\n  const items = e.dataTransfer!.items || []\n\n  if (props.directory) {\n    const entries = Array.from(items)\n      .map((item) => item?.webkitGetAsEntry?.())\n      .filter((entry) => entry) as FileSystemEntry[]\n\n    const allFiles = await Promise.all(entries.map(getAllFiles))\n    emit('file', flatten(allFiles))\n    return\n  }\n\n  files.forEach((file, index) => {\n    const item = items[index]\n    const entry = item?.webkitGetAsEntry?.()\n    if (entry) {\n      file.isDirectory = entry.isDirectory\n    }\n  })\n  emit('file', files)\n}\n\nconst onDragover = () => {\n  if (!disabled.value) dragover.value = true\n}\n\nconst onDragleave = (e: DragEvent) => {\n  if (!(e.currentTarget as Element).contains(e.relatedTarget as Element))\n    dragover.value = false\n}\n</script>\n","<template>\n  <div\n    :class=\"[ns.b('dragger'), ns.is('dragover', dragover)]\"\n    @drop.prevent=\"onDrop\"\n    @dragover.prevent=\"onDragover\"\n    @dragleave.prevent=\"onDragleave\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref } from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { throwError } from '@pit-element-plus/utils/error'\nimport { flatten } from 'lodash-unified'\nimport { uploadContextKey } from './constants'\nimport { uploadDraggerEmits } from './upload-dragger'\n\nimport type { UploadDraggerProps } from './upload-dragger'\nimport type { UploadRawFile } from './upload'\n\nconst COMPONENT_NAME = 'ElUploadDrag'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<UploadDraggerProps>(), {\n  disabled: undefined,\n})\nconst emit = defineEmits(uploadDraggerEmits)\n\nconst uploaderContext = inject(uploadContextKey)\nif (!uploaderContext) {\n  throwError(\n    COMPONENT_NAME,\n    'usage: <el-upload><el-upload-dragger /></el-upload>'\n  )\n}\n\nconst ns = useNamespace('upload')\nconst dragover = ref(false)\nconst disabled = useFormDisabled()\n\nconst getFile = (entry: FileSystemFileEntry): Promise<File> => {\n  return new Promise((resolve, reject) => entry.file(resolve, reject))\n}\n\nconst getAllFiles = async (\n  entry: FileSystemEntry\n): Promise<UploadRawFile[]> => {\n  try {\n    if (entry.isFile) {\n      const file = (await getFile(\n        entry as FileSystemFileEntry\n      )) as UploadRawFile\n      file.isDirectory = false\n      return [file]\n    }\n    if (entry.isDirectory) {\n      const dirReader = (entry as FileSystemDirectoryEntry).createReader()\n      const getEntries = (): Promise<FileSystemEntry[]> => {\n        return new Promise((resolve, reject) =>\n          dirReader.readEntries(resolve, reject)\n        )\n      }\n\n      const entries: FileSystemEntry[] = []\n      let readEntries = await getEntries()\n      /**\n       * In Chromium-based browsers, readEntries() will only return the first 100 FileSystemEntry instances.\n       * https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries#:~:text=In%20Chromium%2Dbased%20browsers%2C%20readEntries()%20will%20only%20return%20the%20first%20100%20FileSystemEntry%20instances.%20In%20order%20to%20obtain%20all%20of%20the%20instances%2C%20readEntries()%20must%20be%20called%20multiple%20times.\n       */\n      while (readEntries.length > 0) {\n        entries.push(...readEntries)\n        readEntries = await getEntries()\n      }\n\n      const filePromises = entries.map((entry) =>\n        getAllFiles(entry).catch(() => [])\n      )\n\n      const files = await Promise.all(filePromises)\n      return flatten(files)\n    }\n  } catch {\n    return []\n  }\n  return []\n}\n\nconst onDrop = async (e: DragEvent) => {\n  if (disabled.value) return\n  dragover.value = false\n\n  e.stopPropagation()\n\n  const files = Array.from(e.dataTransfer!.files) as UploadRawFile[]\n  const items = e.dataTransfer!.items || []\n\n  if (props.directory) {\n    const entries = Array.from(items)\n      .map((item) => item?.webkitGetAsEntry?.())\n      .filter((entry) => entry) as FileSystemEntry[]\n\n    const allFiles = await Promise.all(entries.map(getAllFiles))\n    emit('file', flatten(allFiles))\n    return\n  }\n\n  files.forEach((file, index) => {\n    const item = items[index]\n    const entry = item?.webkitGetAsEntry?.()\n    if (entry) {\n      file.isDirectory = entry.isDirectory\n    }\n  })\n  emit('file', files)\n}\n\nconst onDragover = () => {\n  if (!disabled.value) dragover.value = true\n}\n\nconst onDragleave = (e: DragEvent) => {\n  if (!(e.currentTarget as Element).contains(e.relatedTarget as Element))\n    dragover.value = false\n}\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(listType),\n      ns.is('drag', drag),\n      ns.is('disabled', disabled),\n    ]\"\n    :tabindex=\"disabled ? undefined : 0\"\n    :aria-disabled=\"disabled\"\n    role=\"button\"\n    @click=\"handleClick\"\n    @keydown.self.enter.space=\"handleKeydown\"\n  >\n    <template v-if=\"drag\">\n      <upload-dragger\n        :disabled=\"disabled\"\n        :directory=\"directory\"\n        @file=\"uploadFiles\"\n      >\n        <slot />\n      </upload-dragger>\n    </template>\n    <template v-else>\n      <slot />\n    </template>\n    <input\n      ref=\"inputRef\"\n      :class=\"ns.e('input')\"\n      :name=\"name\"\n      :disabled=\"disabled\"\n      :multiple=\"multiple\"\n      :accept=\"accept\"\n      :webkitdirectory=\"directory || undefined\"\n      type=\"file\"\n      @change=\"handleChange\"\n      @click.stop\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { shallowRef } from 'vue'\nimport { cloneDeep, isEqual } from 'lodash-unified'\nimport { entriesOf, isFunction, isPlainObject } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport UploadDragger from './upload-dragger.vue'\nimport { genFileId } from './upload'\nimport { uploadContentPropsDefaults } from './upload-content'\n\nimport type { UploadContentProps } from './upload-content'\nimport type {\n  UploadFile,\n  UploadHooks,\n  UploadRawFile,\n  UploadRequestOptions,\n} from './upload'\n\ndefineOptions({\n  name: 'ElUploadContent',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<UploadContentProps>(),\n  uploadContentPropsDefaults\n)\nconst ns = useNamespace('upload')\nconst disabled = useFormDisabled()\n\nconst requests = shallowRef<Record<string, XMLHttpRequest | Promise<unknown>>>(\n  {}\n)\nconst inputRef = shallowRef<HTMLInputElement>()\n\nconst uploadFiles = (files: File[]) => {\n  if (files.length === 0) return\n\n  const { autoUpload, limit, fileList, multiple, onStart, onExceed } = props\n\n  if (limit && fileList.length + files.length > limit) {\n    onExceed(files, fileList)\n    return\n  }\n\n  if (!multiple) {\n    files = files.slice(0, 1)\n  }\n\n  for (const file of files) {\n    const rawFile = file as UploadRawFile\n    rawFile.uid = genFileId()\n    onStart(rawFile)\n    if (autoUpload) upload(rawFile)\n  }\n}\n\nconst upload = async (rawFile: UploadRawFile): Promise<void> => {\n  inputRef.value!.value = ''\n\n  if (!props.beforeUpload) {\n    return doUpload(rawFile)\n  }\n\n  let hookResult: Exclude<ReturnType<UploadHooks['beforeUpload']>, Promise<any>>\n  let beforeData: UploadContentProps['data'] = {}\n\n  try {\n    // origin data: Handle data changes after synchronization tasks are executed\n    const originData = props.data\n    const beforeUploadPromise = props.beforeUpload(rawFile)\n    beforeData = isPlainObject(props.data) ? cloneDeep(props.data) : props.data\n    hookResult = await beforeUploadPromise\n    if (isPlainObject(props.data) && isEqual(originData, beforeData)) {\n      beforeData = cloneDeep(props.data)\n    }\n  } catch {\n    hookResult = false\n  }\n\n  if (hookResult === false) {\n    props.onRemove(rawFile)\n    return\n  }\n\n  let file: File = rawFile\n  if (hookResult instanceof Blob) {\n    if (hookResult instanceof File) {\n      file = hookResult\n    } else {\n      file = new File([hookResult], rawFile.name, {\n        type: rawFile.type,\n      })\n    }\n  }\n\n  doUpload(\n    Object.assign(file, {\n      uid: rawFile.uid,\n    }),\n    beforeData\n  )\n}\n\nconst resolveData = async (\n  data: UploadContentProps['data'],\n  rawFile: UploadRawFile\n): Promise<Record<string, any>> => {\n  if (isFunction(data)) {\n    return data(rawFile)\n  }\n\n  return data!\n}\n\nconst doUpload = async (\n  rawFile: UploadRawFile,\n  beforeData?: UploadContentProps['data']\n) => {\n  const {\n    headers,\n    data,\n    method,\n    withCredentials,\n    name: filename,\n    action,\n    onProgress,\n    onSuccess,\n    onError,\n    httpRequest,\n  } = props\n\n  try {\n    beforeData = await resolveData(beforeData ?? data, rawFile)\n  } catch {\n    props.onRemove(rawFile)\n    return\n  }\n\n  const { uid } = rawFile\n  const options: UploadRequestOptions = {\n    headers: headers || {},\n    withCredentials,\n    file: rawFile,\n    data: beforeData,\n    method,\n    filename,\n    action,\n    onProgress: (evt) => {\n      onProgress(evt, rawFile)\n    },\n    onSuccess: (res) => {\n      onSuccess(res, rawFile)\n      delete requests.value[uid]\n    },\n    onError: (err) => {\n      onError(err, rawFile)\n      delete requests.value[uid]\n    },\n  }\n  const request = httpRequest(options)\n  requests.value[uid] = request\n  if (request instanceof Promise) {\n    request.then(options.onSuccess, options.onError)\n  }\n}\n\nconst handleChange = (e: Event) => {\n  const files = (e.target as HTMLInputElement).files\n  if (!files) return\n  uploadFiles(Array.from(files))\n}\n\nconst handleClick = () => {\n  if (!disabled.value) {\n    inputRef.value!.value = ''\n    inputRef.value!.click()\n  }\n}\n\nconst handleKeydown = () => {\n  handleClick()\n}\n\nconst abort = (file?: UploadFile) => {\n  const _reqs = entriesOf(requests.value).filter(\n    file ? ([uid]) => String(file.uid) === uid : () => true\n  )\n  _reqs.forEach(([uid, req]) => {\n    if (req instanceof XMLHttpRequest) req.abort()\n    delete requests.value[uid]\n  })\n}\n\ndefineExpose({\n  abort,\n  upload,\n})\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(listType),\n      ns.is('drag', drag),\n      ns.is('disabled', disabled),\n    ]\"\n    :tabindex=\"disabled ? undefined : 0\"\n    :aria-disabled=\"disabled\"\n    role=\"button\"\n    @click=\"handleClick\"\n    @keydown.self.enter.space=\"handleKeydown\"\n  >\n    <template v-if=\"drag\">\n      <upload-dragger\n        :disabled=\"disabled\"\n        :directory=\"directory\"\n        @file=\"uploadFiles\"\n      >\n        <slot />\n      </upload-dragger>\n    </template>\n    <template v-else>\n      <slot />\n    </template>\n    <input\n      ref=\"inputRef\"\n      :class=\"ns.e('input')\"\n      :name=\"name\"\n      :disabled=\"disabled\"\n      :multiple=\"multiple\"\n      :accept=\"accept\"\n      :webkitdirectory=\"directory || undefined\"\n      type=\"file\"\n      @change=\"handleChange\"\n      @click.stop\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { shallowRef } from 'vue'\nimport { cloneDeep, isEqual } from 'lodash-unified'\nimport { entriesOf, isFunction, isPlainObject } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport UploadDragger from './upload-dragger.vue'\nimport { genFileId } from './upload'\nimport { uploadContentPropsDefaults } from './upload-content'\n\nimport type { UploadContentProps } from './upload-content'\nimport type {\n  UploadFile,\n  UploadHooks,\n  UploadRawFile,\n  UploadRequestOptions,\n} from './upload'\n\ndefineOptions({\n  name: 'ElUploadContent',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<UploadContentProps>(),\n  uploadContentPropsDefaults\n)\nconst ns = useNamespace('upload')\nconst disabled = useFormDisabled()\n\nconst requests = shallowRef<Record<string, XMLHttpRequest | Promise<unknown>>>(\n  {}\n)\nconst inputRef = shallowRef<HTMLInputElement>()\n\nconst uploadFiles = (files: File[]) => {\n  if (files.length === 0) return\n\n  const { autoUpload, limit, fileList, multiple, onStart, onExceed } = props\n\n  if (limit && fileList.length + files.length > limit) {\n    onExceed(files, fileList)\n    return\n  }\n\n  if (!multiple) {\n    files = files.slice(0, 1)\n  }\n\n  for (const file of files) {\n    const rawFile = file as UploadRawFile\n    rawFile.uid = genFileId()\n    onStart(rawFile)\n    if (autoUpload) upload(rawFile)\n  }\n}\n\nconst upload = async (rawFile: UploadRawFile): Promise<void> => {\n  inputRef.value!.value = ''\n\n  if (!props.beforeUpload) {\n    return doUpload(rawFile)\n  }\n\n  let hookResult: Exclude<ReturnType<UploadHooks['beforeUpload']>, Promise<any>>\n  let beforeData: UploadContentProps['data'] = {}\n\n  try {\n    // origin data: Handle data changes after synchronization tasks are executed\n    const originData = props.data\n    const beforeUploadPromise = props.beforeUpload(rawFile)\n    beforeData = isPlainObject(props.data) ? cloneDeep(props.data) : props.data\n    hookResult = await beforeUploadPromise\n    if (isPlainObject(props.data) && isEqual(originData, beforeData)) {\n      beforeData = cloneDeep(props.data)\n    }\n  } catch {\n    hookResult = false\n  }\n\n  if (hookResult === false) {\n    props.onRemove(rawFile)\n    return\n  }\n\n  let file: File = rawFile\n  if (hookResult instanceof Blob) {\n    if (hookResult instanceof File) {\n      file = hookResult\n    } else {\n      file = new File([hookResult], rawFile.name, {\n        type: rawFile.type,\n      })\n    }\n  }\n\n  doUpload(\n    Object.assign(file, {\n      uid: rawFile.uid,\n    }),\n    beforeData\n  )\n}\n\nconst resolveData = async (\n  data: UploadContentProps['data'],\n  rawFile: UploadRawFile\n): Promise<Record<string, any>> => {\n  if (isFunction(data)) {\n    return data(rawFile)\n  }\n\n  return data!\n}\n\nconst doUpload = async (\n  rawFile: UploadRawFile,\n  beforeData?: UploadContentProps['data']\n) => {\n  const {\n    headers,\n    data,\n    method,\n    withCredentials,\n    name: filename,\n    action,\n    onProgress,\n    onSuccess,\n    onError,\n    httpRequest,\n  } = props\n\n  try {\n    beforeData = await resolveData(beforeData ?? data, rawFile)\n  } catch {\n    props.onRemove(rawFile)\n    return\n  }\n\n  const { uid } = rawFile\n  const options: UploadRequestOptions = {\n    headers: headers || {},\n    withCredentials,\n    file: rawFile,\n    data: beforeData,\n    method,\n    filename,\n    action,\n    onProgress: (evt) => {\n      onProgress(evt, rawFile)\n    },\n    onSuccess: (res) => {\n      onSuccess(res, rawFile)\n      delete requests.value[uid]\n    },\n    onError: (err) => {\n      onError(err, rawFile)\n      delete requests.value[uid]\n    },\n  }\n  const request = httpRequest(options)\n  requests.value[uid] = request\n  if (request instanceof Promise) {\n    request.then(options.onSuccess, options.onError)\n  }\n}\n\nconst handleChange = (e: Event) => {\n  const files = (e.target as HTMLInputElement).files\n  if (!files) return\n  uploadFiles(Array.from(files))\n}\n\nconst handleClick = () => {\n  if (!disabled.value) {\n    inputRef.value!.value = ''\n    inputRef.value!.click()\n  }\n}\n\nconst handleKeydown = () => {\n  handleClick()\n}\n\nconst abort = (file?: UploadFile) => {\n  const _reqs = entriesOf(requests.value).filter(\n    file ? ([uid]) => String(file.uid) === uid : () => true\n  )\n  _reqs.forEach(([uid, req]) => {\n    if (req instanceof XMLHttpRequest) req.abort()\n    delete requests.value[uid]\n  })\n}\n\ndefineExpose({\n  abort,\n  upload,\n})\n</script>\n","<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(listType),\n      ns.is('drag', drag),\n      ns.is('disabled', disabled),\n    ]\"\n    :tabindex=\"disabled ? undefined : 0\"\n    :aria-disabled=\"disabled\"\n    role=\"button\"\n    @click=\"handleClick\"\n    @keydown.self.enter.space=\"handleKeydown\"\n  >\n    <template v-if=\"drag\">\n      <upload-dragger\n        :disabled=\"disabled\"\n        :directory=\"directory\"\n        @file=\"uploadFiles\"\n      >\n        <slot />\n      </upload-dragger>\n    </template>\n    <template v-else>\n      <slot />\n    </template>\n    <input\n      ref=\"inputRef\"\n      :class=\"ns.e('input')\"\n      :name=\"name\"\n      :disabled=\"disabled\"\n      :multiple=\"multiple\"\n      :accept=\"accept\"\n      :webkitdirectory=\"directory || undefined\"\n      type=\"file\"\n      @change=\"handleChange\"\n      @click.stop\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { shallowRef } from 'vue'\nimport { cloneDeep, isEqual } from 'lodash-unified'\nimport { entriesOf, isFunction, isPlainObject } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport UploadDragger from './upload-dragger.vue'\nimport { genFileId } from './upload'\nimport { uploadContentPropsDefaults } from './upload-content'\n\nimport type { UploadContentProps } from './upload-content'\nimport type {\n  UploadFile,\n  UploadHooks,\n  UploadRawFile,\n  UploadRequestOptions,\n} from './upload'\n\ndefineOptions({\n  name: 'ElUploadContent',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(\n  defineProps<UploadContentProps>(),\n  uploadContentPropsDefaults\n)\nconst ns = useNamespace('upload')\nconst disabled = useFormDisabled()\n\nconst requests = shallowRef<Record<string, XMLHttpRequest | Promise<unknown>>>(\n  {}\n)\nconst inputRef = shallowRef<HTMLInputElement>()\n\nconst uploadFiles = (files: File[]) => {\n  if (files.length === 0) return\n\n  const { autoUpload, limit, fileList, multiple, onStart, onExceed } = props\n\n  if (limit && fileList.length + files.length > limit) {\n    onExceed(files, fileList)\n    return\n  }\n\n  if (!multiple) {\n    files = files.slice(0, 1)\n  }\n\n  for (const file of files) {\n    const rawFile = file as UploadRawFile\n    rawFile.uid = genFileId()\n    onStart(rawFile)\n    if (autoUpload) upload(rawFile)\n  }\n}\n\nconst upload = async (rawFile: UploadRawFile): Promise<void> => {\n  inputRef.value!.value = ''\n\n  if (!props.beforeUpload) {\n    return doUpload(rawFile)\n  }\n\n  let hookResult: Exclude<ReturnType<UploadHooks['beforeUpload']>, Promise<any>>\n  let beforeData: UploadContentProps['data'] = {}\n\n  try {\n    // origin data: Handle data changes after synchronization tasks are executed\n    const originData = props.data\n    const beforeUploadPromise = props.beforeUpload(rawFile)\n    beforeData = isPlainObject(props.data) ? cloneDeep(props.data) : props.data\n    hookResult = await beforeUploadPromise\n    if (isPlainObject(props.data) && isEqual(originData, beforeData)) {\n      beforeData = cloneDeep(props.data)\n    }\n  } catch {\n    hookResult = false\n  }\n\n  if (hookResult === false) {\n    props.onRemove(rawFile)\n    return\n  }\n\n  let file: File = rawFile\n  if (hookResult instanceof Blob) {\n    if (hookResult instanceof File) {\n      file = hookResult\n    } else {\n      file = new File([hookResult], rawFile.name, {\n        type: rawFile.type,\n      })\n    }\n  }\n\n  doUpload(\n    Object.assign(file, {\n      uid: rawFile.uid,\n    }),\n    beforeData\n  )\n}\n\nconst resolveData = async (\n  data: UploadContentProps['data'],\n  rawFile: UploadRawFile\n): Promise<Record<string, any>> => {\n  if (isFunction(data)) {\n    return data(rawFile)\n  }\n\n  return data!\n}\n\nconst doUpload = async (\n  rawFile: UploadRawFile,\n  beforeData?: UploadContentProps['data']\n) => {\n  const {\n    headers,\n    data,\n    method,\n    withCredentials,\n    name: filename,\n    action,\n    onProgress,\n    onSuccess,\n    onError,\n    httpRequest,\n  } = props\n\n  try {\n    beforeData = await resolveData(beforeData ?? data, rawFile)\n  } catch {\n    props.onRemove(rawFile)\n    return\n  }\n\n  const { uid } = rawFile\n  const options: UploadRequestOptions = {\n    headers: headers || {},\n    withCredentials,\n    file: rawFile,\n    data: beforeData,\n    method,\n    filename,\n    action,\n    onProgress: (evt) => {\n      onProgress(evt, rawFile)\n    },\n    onSuccess: (res) => {\n      onSuccess(res, rawFile)\n      delete requests.value[uid]\n    },\n    onError: (err) => {\n      onError(err, rawFile)\n      delete requests.value[uid]\n    },\n  }\n  const request = httpRequest(options)\n  requests.value[uid] = request\n  if (request instanceof Promise) {\n    request.then(options.onSuccess, options.onError)\n  }\n}\n\nconst handleChange = (e: Event) => {\n  const files = (e.target as HTMLInputElement).files\n  if (!files) return\n  uploadFiles(Array.from(files))\n}\n\nconst handleClick = () => {\n  if (!disabled.value) {\n    inputRef.value!.value = ''\n    inputRef.value!.click()\n  }\n}\n\nconst handleKeydown = () => {\n  handleClick()\n}\n\nconst abort = (file?: UploadFile) => {\n  const _reqs = entriesOf(requests.value).filter(\n    file ? ([uid]) => String(file.uid) === uid : () => true\n  )\n  _reqs.forEach(([uid, req]) => {\n    if (req instanceof XMLHttpRequest) req.abort()\n    delete requests.value[uid]\n  })\n}\n\ndefineExpose({\n  abort,\n  upload,\n})\n</script>\n","import { nextTick, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { useVModel } from '@vueuse/core'\nimport { debugWarn, throwError } from '@pit-element-plus/utils'\nimport { genFileId } from './upload'\n\nimport type { ShallowRef } from 'vue'\nimport type {\n  UploadContentInstance,\n  UploadContentProps,\n} from './upload-content'\nimport type {\n  UploadFile,\n  UploadFiles,\n  UploadProps,\n  UploadRawFile,\n  UploadStatus,\n} from './upload'\n\nconst SCOPE = 'ElUpload'\n\nconst revokeFileObjectURL = (file: UploadFile) => {\n  if (file.url?.startsWith('blob:')) {\n    URL.revokeObjectURL(file.url)\n  }\n}\n\nexport const useHandlers = (\n  props: UploadProps &\n    Required<\n      Pick<\n        UploadProps,\n        | 'listType'\n        | 'onChange'\n        | 'onError'\n        | 'onProgress'\n        | 'onSuccess'\n        | 'onRemove'\n      >\n    >,\n  uploadRef: ShallowRef<UploadContentInstance | undefined>\n) => {\n  const uploadFiles = useVModel(\n    props as Omit<UploadProps, 'fileList'> & { fileList: UploadFiles },\n    'fileList',\n    undefined,\n    { passive: true }\n  )\n\n  const getFile = (rawFile: UploadRawFile) =>\n    uploadFiles.value.find((file) => file.uid === rawFile.uid)\n\n  function abort(file?: UploadFile) {\n    uploadRef.value?.abort(file)\n  }\n\n  function clearFiles(\n    /** @default ['ready', 'uploading', 'success', 'fail'] */\n    states: UploadStatus[] = ['ready', 'uploading', 'success', 'fail']\n  ) {\n    uploadFiles.value = uploadFiles.value.filter(\n      (row) => !states.includes(row.status)\n    )\n  }\n\n  function removeFile(file: UploadFile) {\n    uploadFiles.value = uploadFiles.value.filter(\n      (uploadFile) => uploadFile.uid !== file.uid\n    )\n  }\n\n  const emitChange = (file: UploadFile) => {\n    nextTick(() => props.onChange(file, uploadFiles.value))\n  }\n\n  const handleError: UploadContentProps['onError'] = (err, rawFile) => {\n    const file = getFile(rawFile)\n    if (!file) return\n\n    console.error(err)\n    file.status = 'fail'\n    removeFile(file)\n    props.onError(err, file, uploadFiles.value)\n    emitChange(file)\n  }\n\n  const handleProgress: UploadContentProps['onProgress'] = (evt, rawFile) => {\n    const file = getFile(rawFile)\n    if (!file) return\n\n    props.onProgress(evt, file, uploadFiles.value)\n    file.status = 'uploading'\n    file.percentage = Math.round(evt.percent)\n  }\n\n  const handleSuccess: UploadContentProps['onSuccess'] = (\n    response,\n    rawFile\n  ) => {\n    const file = getFile(rawFile)\n    if (!file) return\n\n    file.status = 'success'\n    file.response = response\n    props.onSuccess(response, file, uploadFiles.value)\n    emitChange(file)\n  }\n\n  const handleStart: UploadContentProps['onStart'] = (file) => {\n    if (isNil(file.uid)) file.uid = genFileId()\n    const uploadFile: UploadFile = {\n      name: file.name,\n      percentage: 0,\n      status: 'ready',\n      size: file.size,\n      raw: file,\n      uid: file.uid,\n    }\n    if (props.listType === 'picture-card' || props.listType === 'picture') {\n      try {\n        uploadFile.url = URL.createObjectURL(file)\n      } catch (err: unknown) {\n        debugWarn(SCOPE, (err as Error).message)\n        props.onError(err as Error, uploadFile, uploadFiles.value)\n      }\n    }\n    uploadFiles.value = [...uploadFiles.value, uploadFile]\n    emitChange(uploadFile)\n  }\n\n  const handleRemove: UploadContentProps['onRemove'] = async (\n    file\n  ): Promise<void> => {\n    const uploadFile = file instanceof File ? getFile(file) : file\n    if (!uploadFile) throwError(SCOPE, 'file to be removed not found')\n\n    const doRemove = (file: UploadFile) => {\n      abort(file)\n      removeFile(file)\n      props.onRemove(file, uploadFiles.value)\n      revokeFileObjectURL(file)\n    }\n\n    if (props.beforeRemove) {\n      const before = await props.beforeRemove(uploadFile, uploadFiles.value)\n      if (before !== false) doRemove(uploadFile)\n    } else {\n      doRemove(uploadFile)\n    }\n  }\n\n  function submit() {\n    uploadFiles.value\n      .filter(({ status }) => status === 'ready')\n      .forEach(({ raw }) => raw && uploadRef.value?.upload(raw))\n  }\n\n  watch(\n    () => props.listType,\n    (val) => {\n      if (val !== 'picture-card' && val !== 'picture') {\n        return\n      }\n\n      uploadFiles.value = uploadFiles.value.map((file) => {\n        const { raw, url } = file\n        if (!url && raw) {\n          try {\n            file.url = URL.createObjectURL(raw)\n          } catch (err: unknown) {\n            props.onError(err as Error, file, uploadFiles.value)\n          }\n        }\n        return file\n      })\n    }\n  )\n\n  watch(\n    uploadFiles,\n    (files) => {\n      for (const file of files) {\n        file.uid ||= genFileId()\n        file.status ||= 'success'\n      }\n    },\n    { immediate: true, deep: true }\n  )\n\n  return {\n    /** @description two-way binding ref from props `fileList` */\n    uploadFiles,\n    abort,\n    clearFiles,\n    handleError,\n    handleProgress,\n    handleStart,\n    handleSuccess,\n    handleRemove,\n    submit,\n    revokeFileObjectURL,\n  }\n}\n","<template>\n  <div>\n    <upload-list\n      v-if=\"isPictureCard && showFileList\"\n      :disabled=\"disabled\"\n      :list-type=\"listType\"\n      :files=\"uploadFiles\"\n      :crossorigin=\"crossorigin\"\n      :handle-preview=\"onPreview\"\n      @remove=\"handleRemove\"\n    >\n      <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n        <slot name=\"file\" :file=\"file\" :index=\"index\" />\n      </template>\n      <template #append>\n        <upload-content ref=\"uploadRef\" v-bind=\"uploadContentProps\">\n          <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n          <slot v-if=\"!$slots.trigger && $slots.default\" />\n        </upload-content>\n      </template>\n    </upload-list>\n\n    <upload-content\n      v-if=\"!isPictureCard || (isPictureCard && !showFileList)\"\n      ref=\"uploadRef\"\n      v-bind=\"uploadContentProps\"\n    >\n      <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n      <slot v-if=\"!$slots.trigger && $slots.default\" />\n    </upload-content>\n\n    <slot v-if=\"$slots.trigger\" />\n    <slot name=\"tip\" />\n    <upload-list\n      v-if=\"!isPictureCard && showFileList\"\n      :disabled=\"disabled\"\n      :list-type=\"listType\"\n      :files=\"uploadFiles\"\n      :crossorigin=\"crossorigin\"\n      :handle-preview=\"onPreview\"\n      @remove=\"handleRemove\"\n    >\n      <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n        <slot name=\"file\" :file=\"file\" :index=\"index\" />\n      </template>\n    </upload-list>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, provide, shallowRef, toRef } from 'vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { uploadContextKey } from './constants'\nimport UploadList from './upload-list.vue'\nimport UploadContent from './upload-content.vue'\nimport { useHandlers } from './use-handlers'\nimport { uploadPropsDefaults } from './upload'\n\nimport type { UploadProps } from './upload'\nimport type {\n  UploadContentInstance,\n  UploadContentProps,\n} from './upload-content'\n\ndefineOptions({\n  name: 'ElUpload',\n})\n\nconst props = withDefaults(defineProps<UploadProps>(), uploadPropsDefaults)\n\nconst disabled = useFormDisabled()\n\nconst uploadRef = shallowRef<UploadContentInstance>()\nconst {\n  abort,\n  submit,\n  clearFiles,\n  uploadFiles,\n  handleStart,\n  handleError,\n  handleRemove,\n  handleSuccess,\n  handleProgress,\n  revokeFileObjectURL,\n} = useHandlers(props, uploadRef)\n\nconst isPictureCard = computed(() => props.listType === 'picture-card')\n\nconst uploadContentProps = computed<UploadContentProps>(() => ({\n  ...props,\n  fileList: uploadFiles.value,\n  onStart: handleStart,\n  onProgress: handleProgress,\n  onSuccess: handleSuccess,\n  onError: handleError,\n  onRemove: handleRemove,\n}))\n\nonBeforeUnmount(() => {\n  uploadFiles.value.forEach(revokeFileObjectURL)\n})\n\nprovide(uploadContextKey, {\n  accept: toRef(props, 'accept'),\n})\n\ndefineExpose({\n  /** @description cancel upload request */\n  abort,\n  /** @description upload the file list manually */\n  submit,\n  /** @description clear the file list  */\n  clearFiles,\n  /** @description select the file manually */\n  handleStart,\n  /** @description remove the file manually */\n  handleRemove,\n})\n</script>\n","<template>\n  <div>\n    <upload-list\n      v-if=\"isPictureCard && showFileList\"\n      :disabled=\"disabled\"\n      :list-type=\"listType\"\n      :files=\"uploadFiles\"\n      :crossorigin=\"crossorigin\"\n      :handle-preview=\"onPreview\"\n      @remove=\"handleRemove\"\n    >\n      <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n        <slot name=\"file\" :file=\"file\" :index=\"index\" />\n      </template>\n      <template #append>\n        <upload-content ref=\"uploadRef\" v-bind=\"uploadContentProps\">\n          <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n          <slot v-if=\"!$slots.trigger && $slots.default\" />\n        </upload-content>\n      </template>\n    </upload-list>\n\n    <upload-content\n      v-if=\"!isPictureCard || (isPictureCard && !showFileList)\"\n      ref=\"uploadRef\"\n      v-bind=\"uploadContentProps\"\n    >\n      <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n      <slot v-if=\"!$slots.trigger && $slots.default\" />\n    </upload-content>\n\n    <slot v-if=\"$slots.trigger\" />\n    <slot name=\"tip\" />\n    <upload-list\n      v-if=\"!isPictureCard && showFileList\"\n      :disabled=\"disabled\"\n      :list-type=\"listType\"\n      :files=\"uploadFiles\"\n      :crossorigin=\"crossorigin\"\n      :handle-preview=\"onPreview\"\n      @remove=\"handleRemove\"\n    >\n      <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n        <slot name=\"file\" :file=\"file\" :index=\"index\" />\n      </template>\n    </upload-list>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, provide, shallowRef, toRef } from 'vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { uploadContextKey } from './constants'\nimport UploadList from './upload-list.vue'\nimport UploadContent from './upload-content.vue'\nimport { useHandlers } from './use-handlers'\nimport { uploadPropsDefaults } from './upload'\n\nimport type { UploadProps } from './upload'\nimport type {\n  UploadContentInstance,\n  UploadContentProps,\n} from './upload-content'\n\ndefineOptions({\n  name: 'ElUpload',\n})\n\nconst props = withDefaults(defineProps<UploadProps>(), uploadPropsDefaults)\n\nconst disabled = useFormDisabled()\n\nconst uploadRef = shallowRef<UploadContentInstance>()\nconst {\n  abort,\n  submit,\n  clearFiles,\n  uploadFiles,\n  handleStart,\n  handleError,\n  handleRemove,\n  handleSuccess,\n  handleProgress,\n  revokeFileObjectURL,\n} = useHandlers(props, uploadRef)\n\nconst isPictureCard = computed(() => props.listType === 'picture-card')\n\nconst uploadContentProps = computed<UploadContentProps>(() => ({\n  ...props,\n  fileList: uploadFiles.value,\n  onStart: handleStart,\n  onProgress: handleProgress,\n  onSuccess: handleSuccess,\n  onError: handleError,\n  onRemove: handleRemove,\n}))\n\nonBeforeUnmount(() => {\n  uploadFiles.value.forEach(revokeFileObjectURL)\n})\n\nprovide(uploadContextKey, {\n  accept: toRef(props, 'accept'),\n})\n\ndefineExpose({\n  /** @description cancel upload request */\n  abort,\n  /** @description upload the file list manually */\n  submit,\n  /** @description clear the file list  */\n  clearFiles,\n  /** @description select the file manually */\n  handleStart,\n  /** @description remove the file manually */\n  handleRemove,\n})\n</script>\n","<template>\n  <div>\n    <upload-list\n      v-if=\"isPictureCard && showFileList\"\n      :disabled=\"disabled\"\n      :list-type=\"listType\"\n      :files=\"uploadFiles\"\n      :crossorigin=\"crossorigin\"\n      :handle-preview=\"onPreview\"\n      @remove=\"handleRemove\"\n    >\n      <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n        <slot name=\"file\" :file=\"file\" :index=\"index\" />\n      </template>\n      <template #append>\n        <upload-content ref=\"uploadRef\" v-bind=\"uploadContentProps\">\n          <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n          <slot v-if=\"!$slots.trigger && $slots.default\" />\n        </upload-content>\n      </template>\n    </upload-list>\n\n    <upload-content\n      v-if=\"!isPictureCard || (isPictureCard && !showFileList)\"\n      ref=\"uploadRef\"\n      v-bind=\"uploadContentProps\"\n    >\n      <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n      <slot v-if=\"!$slots.trigger && $slots.default\" />\n    </upload-content>\n\n    <slot v-if=\"$slots.trigger\" />\n    <slot name=\"tip\" />\n    <upload-list\n      v-if=\"!isPictureCard && showFileList\"\n      :disabled=\"disabled\"\n      :list-type=\"listType\"\n      :files=\"uploadFiles\"\n      :crossorigin=\"crossorigin\"\n      :handle-preview=\"onPreview\"\n      @remove=\"handleRemove\"\n    >\n      <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n        <slot name=\"file\" :file=\"file\" :index=\"index\" />\n      </template>\n    </upload-list>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, provide, shallowRef, toRef } from 'vue'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { uploadContextKey } from './constants'\nimport UploadList from './upload-list.vue'\nimport UploadContent from './upload-content.vue'\nimport { useHandlers } from './use-handlers'\nimport { uploadPropsDefaults } from './upload'\n\nimport type { UploadProps } from './upload'\nimport type {\n  UploadContentInstance,\n  UploadContentProps,\n} from './upload-content'\n\ndefineOptions({\n  name: 'ElUpload',\n})\n\nconst props = withDefaults(defineProps<UploadProps>(), uploadPropsDefaults)\n\nconst disabled = useFormDisabled()\n\nconst uploadRef = shallowRef<UploadContentInstance>()\nconst {\n  abort,\n  submit,\n  clearFiles,\n  uploadFiles,\n  handleStart,\n  handleError,\n  handleRemove,\n  handleSuccess,\n  handleProgress,\n  revokeFileObjectURL,\n} = useHandlers(props, uploadRef)\n\nconst isPictureCard = computed(() => props.listType === 'picture-card')\n\nconst uploadContentProps = computed<UploadContentProps>(() => ({\n  ...props,\n  fileList: uploadFiles.value,\n  onStart: handleStart,\n  onProgress: handleProgress,\n  onSuccess: handleSuccess,\n  onError: handleError,\n  onRemove: handleRemove,\n}))\n\nonBeforeUnmount(() => {\n  uploadFiles.value.forEach(revokeFileObjectURL)\n})\n\nprovide(uploadContextKey, {\n  accept: toRef(props, 'accept'),\n})\n\ndefineExpose({\n  /** @description cancel upload request */\n  abort,\n  /** @description upload the file list manually */\n  submit,\n  /** @description clear the file list  */\n  clearFiles,\n  /** @description select the file manually */\n  handleStart,\n  /** @description remove the file manually */\n  handleRemove,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Upload from './src/upload.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElUpload: SFCWithInstall<typeof Upload> = withInstall(Upload)\nexport default ElUpload\n\nexport * from './src/upload'\nexport * from './src/upload-content'\nexport * from './src/upload-list'\nexport * from './src/upload-dragger'\nexport * from './src/constants'\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Watermark from './watermark.vue'\n\nexport interface WatermarkFontType {\n  color?: string\n  fontSize?: number | string\n  fontWeight?: 'normal' | 'bold' | 'lighter' | 'bolder' | number\n  fontStyle?: 'none' | 'normal' | 'italic' | 'oblique'\n  fontFamily?: string\n  fontGap?: number\n  textAlign?: 'start' | 'end' | 'left' | 'right' | 'center'\n  textBaseline?:\n    | 'top'\n    | 'hanging'\n    | 'middle'\n    | 'alphabetic'\n    | 'ideographic'\n    | 'bottom'\n}\n\nexport interface WatermarkProps {\n  /**\n   * @description The z-index of the appended watermark element\n   */\n  zIndex?: number\n  /**\n   * @description The rotation angle of the watermark\n   */\n  rotate?: number\n  /**\n   * @description The width of the watermark\n   */\n  width?: number\n  /**\n   * @description The height of the watermark\n   */\n  height?: number\n  /**\n   * @description Image source, it is recommended to export 2x or 3x image, high priority (support base64 format)\n   */\n  image?: string\n  /**\n   * @description Watermark text content\n   */\n  content?: string | string[]\n  /**\n   * @description Text style\n   */\n  font?: WatermarkFontType\n  /**\n   * @description The spacing between watermarks\n   */\n  gap?: [number, number]\n  /**\n   * @description The offset of the watermark from the upper left corner of the container. The default is gap/2\n   */\n  offset?: [number, number]\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `WatermarkProps` instead.\n */\nexport const watermarkProps = buildProps({\n  /**\n   * @description The z-index of the appended watermark element\n   */\n  zIndex: {\n    type: Number,\n    default: 9,\n  },\n  /**\n   * @description The rotation angle of the watermark\n   */\n  rotate: {\n    type: Number,\n    default: -22,\n  },\n  /**\n   * @description The width of the watermark\n   */\n  width: Number,\n  /**\n   * @description The height of the watermark\n   */\n  height: Number,\n  /**\n   * @description Image source, it is recommended to export 2x or 3x image, high priority (support base64 format)\n   */\n  image: String,\n  /**\n   * @description Watermark text content\n   */\n  content: {\n    type: definePropType<string | string[]>([String, Array]),\n    default: 'Element Plus',\n  },\n  /**\n   * @description Text style\n   */\n  font: {\n    type: definePropType<WatermarkFontType>(Object),\n  },\n  /**\n   * @description The spacing between watermarks\n   */\n  gap: {\n    type: definePropType<[number, number]>(Array),\n    default: () => [100, 100],\n  },\n  /**\n   * @description The offset of the watermark from the upper left corner of the container. The default is gap/2\n   */\n  offset: {\n    type: definePropType<[number, number]>(Array),\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `WatermarkProps` instead.\n */\nexport type WatermarkPropsPublic = ExtractPublicPropTypes<typeof watermarkProps>\nexport type WatermarkInstance = InstanceType<typeof Watermark> & unknown\n","import type { CSSProperties } from 'vue'\n\n/** converting camel-cased strings to be lowercase and link it with Separator */\nexport function toLowercaseSeparator(key: string) {\n  return key.replace(/([A-Z])/g, '-$1').toLowerCase()\n}\n\nexport function getStyleStr(style: CSSProperties): string {\n  return Object.keys(style)\n    .map(\n      (key) =>\n        `${toLowercaseSeparator(key)}: ${style[key as keyof CSSProperties]};`\n    )\n    .join(' ')\n}\n\n/** Returns the ratio of the device's physical pixel resolution to the css pixel resolution */\nexport function getPixelRatio() {\n  return window.devicePixelRatio || 1\n}\n\n/** Whether to re-render the watermark */\nexport const reRendering = (\n  mutation: MutationRecord,\n  watermarkElement?: HTMLElement\n) => {\n  let flag = false\n  // Whether to delete the watermark node\n  if (mutation.removedNodes.length && watermarkElement) {\n    flag = Array.from(mutation.removedNodes).includes(watermarkElement)\n  }\n  // Whether the watermark dom property value has been modified\n  if (mutation.type === 'attributes' && mutation.target === watermarkElement) {\n    flag = true\n  }\n  return flag\n}\n","import { isArray } from '@pit-element-plus/utils'\n\nimport type { WatermarkProps } from './watermark'\n\n// [alignRatio, spaceRatio]\nconst TEXT_ALIGN_RATIO_MAP = {\n  left: [0, 0.5],\n  start: [0, 0.5],\n  center: [0.5, 0],\n  right: [1, -0.5],\n  end: [1, -0.5],\n} as const\n\nfunction prepareCanvas(\n  width: number,\n  height: number,\n  ratio = 1\n): [\n  ctx: CanvasRenderingContext2D,\n  canvas: HTMLCanvasElement,\n  realWidth: number,\n  realHeight: number,\n] {\n  const canvas = document.createElement('canvas')\n  const ctx = canvas.getContext('2d')!\n  const realWidth = width * ratio\n  const realHeight = height * ratio\n  canvas.setAttribute('width', `${realWidth}px`)\n  canvas.setAttribute('height', `${realHeight}px`)\n  ctx.save()\n\n  return [ctx, canvas, realWidth, realHeight]\n}\n\n/**\n * Get the clips of text content.\n * This is a lazy hook function since SSR no need this\n */\nexport default function useClips() {\n  // Get single clips\n  function getClips(\n    content: NonNullable<WatermarkProps['content']> | HTMLImageElement,\n    rotate: number,\n    ratio: number,\n    width: number,\n    height: number,\n    font: Required<NonNullable<WatermarkProps['font']>>,\n    gapX: number,\n    gapY: number,\n    space: number\n  ): [dataURL: string, finalWidth: number, finalHeight: number] {\n    // ================= Text / Image =================\n    const [ctx, canvas, contentWidth, contentHeight] = prepareCanvas(\n      width,\n      height,\n      ratio\n    )\n    let baselineOffset = 0\n    if (content instanceof HTMLImageElement) {\n      // Image\n      ctx.drawImage(content, 0, 0, contentWidth, contentHeight)\n    } else {\n      // Text\n      const {\n        color,\n        fontSize,\n        fontStyle,\n        fontWeight,\n        fontFamily,\n        textAlign,\n        textBaseline,\n      } = font\n      const mergedFontSize = Number(fontSize) * ratio\n\n      ctx.font = `${fontStyle} normal ${fontWeight} ${mergedFontSize}px/${height}px ${fontFamily}`\n      ctx.fillStyle = color\n      ctx.textAlign = textAlign\n      ctx.textBaseline = textBaseline\n      const contents = isArray(content) ? content : [content]\n      if (textBaseline !== 'top' && contents[0]) {\n        const argumentMetrics = ctx.measureText(contents[0])\n        ctx.textBaseline = 'top'\n        const topMetrics = ctx.measureText(contents[0])\n        baselineOffset =\n          argumentMetrics.actualBoundingBoxAscent -\n          topMetrics.actualBoundingBoxAscent\n      }\n      contents?.forEach((item, index) => {\n        const [alignRatio, spaceRatio] = TEXT_ALIGN_RATIO_MAP[textAlign]\n        ctx.fillText(\n          item ?? '',\n          contentWidth * alignRatio + space * spaceRatio,\n          index * (mergedFontSize + font.fontGap * ratio)\n        )\n      })\n    }\n\n    // ==================== Rotate ====================\n    const angle = (Math.PI / 180) * Number(rotate)\n    const maxSize = Math.max(width, height)\n    const [rCtx, rCanvas, realMaxSize] = prepareCanvas(maxSize, maxSize, ratio)\n\n    // Copy from `ctx` and rotate\n    rCtx.translate(realMaxSize / 2, realMaxSize / 2)\n    rCtx.rotate(angle)\n    if (contentWidth > 0 && contentHeight > 0) {\n      rCtx.drawImage(canvas, -contentWidth / 2, -contentHeight / 2)\n    }\n\n    // Get boundary of rotated text\n    function getRotatePos(x: number, y: number) {\n      const targetX = x * Math.cos(angle) - y * Math.sin(angle)\n      const targetY = x * Math.sin(angle) + y * Math.cos(angle)\n      return [targetX, targetY]\n    }\n\n    let left = 0\n    let right = 0\n    let top = 0\n    let bottom = 0\n\n    const halfWidth = contentWidth / 2\n    const halfHeight = contentHeight / 2\n    const points = [\n      [0 - halfWidth, 0 - halfHeight],\n      [0 + halfWidth, 0 - halfHeight],\n      [0 + halfWidth, 0 + halfHeight],\n      [0 - halfWidth, 0 + halfHeight],\n    ]\n    points.forEach(([x, y]) => {\n      const [targetX, targetY] = getRotatePos(x, y)\n      left = Math.min(left, targetX)\n      right = Math.max(right, targetX)\n      top = Math.min(top, targetY)\n      bottom = Math.max(bottom, targetY)\n    })\n\n    const cutLeft = left + realMaxSize / 2\n    const cutTop = top + realMaxSize / 2\n    const cutWidth = right - left\n    const cutHeight = bottom - top\n\n    // ================ Fill Alternate ================\n    const realGapX = gapX * ratio\n    const realGapY = gapY * ratio\n    const filledWidth = (cutWidth + realGapX) * 2\n    const filledHeight = cutHeight + realGapY\n\n    const [fCtx, fCanvas] = prepareCanvas(filledWidth, filledHeight)\n\n    function drawImg(targetX = 0, targetY = 0) {\n      fCtx.drawImage(\n        rCanvas,\n        cutLeft,\n        cutTop,\n        cutWidth,\n        cutHeight,\n        targetX,\n        targetY + baselineOffset,\n        cutWidth,\n        cutHeight\n      )\n    }\n    drawImg()\n    drawImg(cutWidth + realGapX, -cutHeight / 2 - realGapY / 2)\n    drawImg(cutWidth + realGapX, +cutHeight / 2 + realGapY / 2)\n\n    return [fCanvas.toDataURL(), filledWidth / ratio, filledHeight / ratio]\n  }\n\n  return getClips\n}\n","<template>\n  <div ref=\"containerRef\" :style=\"[style]\">\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue'\nimport { useMutationObserver } from '@vueuse/core'\nimport { isArray, isUndefined } from '@pit-element-plus/utils'\nimport { getPixelRatio, getStyleStr, reRendering } from './utils'\nimport useClips from './useClips'\n\nimport type { WatermarkProps } from './watermark'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElWatermark',\n})\n\nconst style: CSSProperties = {\n  position: 'relative',\n}\n\nconst props = withDefaults(defineProps<WatermarkProps>(), {\n  zIndex: 9,\n  rotate: -22,\n  content: 'Element Plus',\n  gap: () => [100, 100],\n})\nconst fontGap = computed(() => props.font?.fontGap ?? 3)\nconst color = computed(() => props.font?.color ?? 'rgba(0,0,0,.15)')\nconst fontSize = computed(() => props.font?.fontSize ?? 16)\nconst fontWeight = computed(() => props.font?.fontWeight ?? 'normal')\nconst fontStyle = computed(() => props.font?.fontStyle ?? 'normal')\nconst fontFamily = computed(() => props.font?.fontFamily ?? 'sans-serif')\nconst textAlign = computed(() => props.font?.textAlign ?? 'center')\nconst textBaseline = computed(() => props.font?.textBaseline ?? 'hanging')\n\nconst gapX = computed(() => props.gap[0])\nconst gapY = computed(() => props.gap[1])\nconst gapXCenter = computed(() => gapX.value / 2)\nconst gapYCenter = computed(() => gapY.value / 2)\nconst offsetLeft = computed(() => props.offset?.[0] ?? gapXCenter.value)\nconst offsetTop = computed(() => props.offset?.[1] ?? gapYCenter.value)\n\nconst getMarkStyle = () => {\n  const markStyle: CSSProperties = {\n    zIndex: props.zIndex,\n    position: 'absolute',\n    left: 0,\n    top: 0,\n    width: '100%',\n    height: '100%',\n    pointerEvents: 'none',\n    backgroundRepeat: 'repeat',\n  }\n\n  /** Calculate the style of the offset */\n  let positionLeft = offsetLeft.value - gapXCenter.value\n  let positionTop = offsetTop.value - gapYCenter.value\n  if (positionLeft > 0) {\n    markStyle.left = `${positionLeft}px`\n    markStyle.width = `calc(100% - ${positionLeft}px)`\n    positionLeft = 0\n  }\n  if (positionTop > 0) {\n    markStyle.top = `${positionTop}px`\n    markStyle.height = `calc(100% - ${positionTop}px)`\n    positionTop = 0\n  }\n  markStyle.backgroundPosition = `${positionLeft}px ${positionTop}px`\n\n  return markStyle\n}\n\nconst containerRef = shallowRef<HTMLDivElement | null>(null)\nconst watermarkRef = shallowRef<HTMLDivElement>()\nconst stopObservation = ref(false)\n\nconst destroyWatermark = () => {\n  if (watermarkRef.value) {\n    watermarkRef.value.remove()\n    watermarkRef.value = undefined\n  }\n}\nconst appendWatermark = (base64Url: string, markWidth: number) => {\n  if (containerRef.value && watermarkRef.value) {\n    stopObservation.value = true\n    watermarkRef.value.setAttribute(\n      'style',\n      getStyleStr({\n        ...getMarkStyle(),\n        backgroundImage: `url('${base64Url}')`,\n        backgroundSize: `${Math.floor(markWidth)}px`,\n      })\n    )\n    containerRef.value?.append(watermarkRef.value)\n    // Delayed execution\n    setTimeout(() => {\n      stopObservation.value = false\n    })\n  }\n}\n\n/**\n * Get the width and height of the watermark. The default values are as follows\n * Image: [120, 64]; Content: It's calculated by content;\n */\nconst getMarkSize = (ctx: CanvasRenderingContext2D) => {\n  let defaultWidth = 120\n  let defaultHeight = 64\n  let space = 0\n\n  const { image, content, width, height, rotate } = props\n\n  if (!image && ctx.measureText) {\n    ctx.font = `${Number(fontSize.value)}px ${fontFamily.value}`\n\n    const contents = isArray(content) ? content : [content]\n    let maxWidth = 0\n    let maxHeight = 0\n\n    contents.forEach((item) => {\n      const {\n        width,\n        fontBoundingBoxAscent,\n        fontBoundingBoxDescent,\n        actualBoundingBoxAscent,\n        actualBoundingBoxDescent,\n      } = ctx.measureText(item!)\n      // Using `actualBoundingBoxAscent` to be compatible with lower version browsers (eg: Firefox < 116)\n      const height = isUndefined(fontBoundingBoxAscent)\n        ? actualBoundingBoxAscent + actualBoundingBoxDescent\n        : fontBoundingBoxAscent + fontBoundingBoxDescent\n\n      if (width > maxWidth) maxWidth = Math.ceil(width)\n      if (height > maxHeight) maxHeight = Math.ceil(height)\n    })\n\n    defaultWidth = maxWidth\n    defaultHeight =\n      maxHeight * contents.length + (contents.length - 1) * fontGap.value\n\n    const angle = (Math.PI / 180) * Number(rotate)\n    space = Math.ceil(Math.abs(Math.sin(angle) * defaultHeight) / 2)\n\n    defaultWidth += space\n  }\n\n  return [width ?? defaultWidth, height ?? defaultHeight, space] as const\n}\n\nconst getClips = useClips()\n\nconst renderWatermark = () => {\n  const canvas = document.createElement('canvas')\n  const ctx = canvas.getContext('2d')\n  const image = props.image\n  const content = props.content\n  const rotate = props.rotate\n\n  if (ctx) {\n    if (!watermarkRef.value) {\n      watermarkRef.value = document.createElement('div')\n    }\n\n    const ratio = getPixelRatio()\n    const [markWidth, markHeight, space] = getMarkSize(ctx)\n\n    const drawCanvas = (\n      drawContent?: NonNullable<WatermarkProps['content']> | HTMLImageElement\n    ) => {\n      const [textClips, clipWidth] = getClips(\n        drawContent || '',\n        rotate,\n        ratio,\n        markWidth,\n        markHeight,\n        {\n          color: color.value,\n          fontSize: fontSize.value,\n          fontStyle: fontStyle.value,\n          fontWeight: fontWeight.value,\n          fontFamily: fontFamily.value,\n          fontGap: fontGap.value,\n          textAlign: textAlign.value,\n          textBaseline: textBaseline.value,\n        },\n        gapX.value,\n        gapY.value,\n        space\n      )\n\n      appendWatermark(textClips, clipWidth)\n    }\n\n    if (image) {\n      const img = new Image()\n      img.onload = () => {\n        drawCanvas(img)\n      }\n      img.onerror = () => {\n        drawCanvas(content)\n      }\n      img.crossOrigin = 'anonymous'\n      img.referrerPolicy = 'no-referrer'\n      img.src = image\n    } else {\n      drawCanvas(content)\n    }\n  }\n}\n\nonMounted(() => {\n  renderWatermark()\n})\n\nwatch(\n  () => props,\n  () => {\n    renderWatermark()\n  },\n  {\n    deep: true,\n    flush: 'post',\n  }\n)\n\nonBeforeUnmount(() => {\n  destroyWatermark()\n})\n\nconst onMutate = (mutations: MutationRecord[]) => {\n  if (stopObservation.value) {\n    return\n  }\n  mutations.forEach((mutation) => {\n    if (reRendering(mutation, watermarkRef.value)) {\n      destroyWatermark()\n      renderWatermark()\n    }\n  })\n}\n\nuseMutationObserver(containerRef, onMutate, {\n  attributes: true,\n  subtree: true,\n  childList: true,\n})\n</script>\n","<template>\n  <div ref=\"containerRef\" :style=\"[style]\">\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue'\nimport { useMutationObserver } from '@vueuse/core'\nimport { isArray, isUndefined } from '@pit-element-plus/utils'\nimport { getPixelRatio, getStyleStr, reRendering } from './utils'\nimport useClips from './useClips'\n\nimport type { WatermarkProps } from './watermark'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElWatermark',\n})\n\nconst style: CSSProperties = {\n  position: 'relative',\n}\n\nconst props = withDefaults(defineProps<WatermarkProps>(), {\n  zIndex: 9,\n  rotate: -22,\n  content: 'Element Plus',\n  gap: () => [100, 100],\n})\nconst fontGap = computed(() => props.font?.fontGap ?? 3)\nconst color = computed(() => props.font?.color ?? 'rgba(0,0,0,.15)')\nconst fontSize = computed(() => props.font?.fontSize ?? 16)\nconst fontWeight = computed(() => props.font?.fontWeight ?? 'normal')\nconst fontStyle = computed(() => props.font?.fontStyle ?? 'normal')\nconst fontFamily = computed(() => props.font?.fontFamily ?? 'sans-serif')\nconst textAlign = computed(() => props.font?.textAlign ?? 'center')\nconst textBaseline = computed(() => props.font?.textBaseline ?? 'hanging')\n\nconst gapX = computed(() => props.gap[0])\nconst gapY = computed(() => props.gap[1])\nconst gapXCenter = computed(() => gapX.value / 2)\nconst gapYCenter = computed(() => gapY.value / 2)\nconst offsetLeft = computed(() => props.offset?.[0] ?? gapXCenter.value)\nconst offsetTop = computed(() => props.offset?.[1] ?? gapYCenter.value)\n\nconst getMarkStyle = () => {\n  const markStyle: CSSProperties = {\n    zIndex: props.zIndex,\n    position: 'absolute',\n    left: 0,\n    top: 0,\n    width: '100%',\n    height: '100%',\n    pointerEvents: 'none',\n    backgroundRepeat: 'repeat',\n  }\n\n  /** Calculate the style of the offset */\n  let positionLeft = offsetLeft.value - gapXCenter.value\n  let positionTop = offsetTop.value - gapYCenter.value\n  if (positionLeft > 0) {\n    markStyle.left = `${positionLeft}px`\n    markStyle.width = `calc(100% - ${positionLeft}px)`\n    positionLeft = 0\n  }\n  if (positionTop > 0) {\n    markStyle.top = `${positionTop}px`\n    markStyle.height = `calc(100% - ${positionTop}px)`\n    positionTop = 0\n  }\n  markStyle.backgroundPosition = `${positionLeft}px ${positionTop}px`\n\n  return markStyle\n}\n\nconst containerRef = shallowRef<HTMLDivElement | null>(null)\nconst watermarkRef = shallowRef<HTMLDivElement>()\nconst stopObservation = ref(false)\n\nconst destroyWatermark = () => {\n  if (watermarkRef.value) {\n    watermarkRef.value.remove()\n    watermarkRef.value = undefined\n  }\n}\nconst appendWatermark = (base64Url: string, markWidth: number) => {\n  if (containerRef.value && watermarkRef.value) {\n    stopObservation.value = true\n    watermarkRef.value.setAttribute(\n      'style',\n      getStyleStr({\n        ...getMarkStyle(),\n        backgroundImage: `url('${base64Url}')`,\n        backgroundSize: `${Math.floor(markWidth)}px`,\n      })\n    )\n    containerRef.value?.append(watermarkRef.value)\n    // Delayed execution\n    setTimeout(() => {\n      stopObservation.value = false\n    })\n  }\n}\n\n/**\n * Get the width and height of the watermark. The default values are as follows\n * Image: [120, 64]; Content: It's calculated by content;\n */\nconst getMarkSize = (ctx: CanvasRenderingContext2D) => {\n  let defaultWidth = 120\n  let defaultHeight = 64\n  let space = 0\n\n  const { image, content, width, height, rotate } = props\n\n  if (!image && ctx.measureText) {\n    ctx.font = `${Number(fontSize.value)}px ${fontFamily.value}`\n\n    const contents = isArray(content) ? content : [content]\n    let maxWidth = 0\n    let maxHeight = 0\n\n    contents.forEach((item) => {\n      const {\n        width,\n        fontBoundingBoxAscent,\n        fontBoundingBoxDescent,\n        actualBoundingBoxAscent,\n        actualBoundingBoxDescent,\n      } = ctx.measureText(item!)\n      // Using `actualBoundingBoxAscent` to be compatible with lower version browsers (eg: Firefox < 116)\n      const height = isUndefined(fontBoundingBoxAscent)\n        ? actualBoundingBoxAscent + actualBoundingBoxDescent\n        : fontBoundingBoxAscent + fontBoundingBoxDescent\n\n      if (width > maxWidth) maxWidth = Math.ceil(width)\n      if (height > maxHeight) maxHeight = Math.ceil(height)\n    })\n\n    defaultWidth = maxWidth\n    defaultHeight =\n      maxHeight * contents.length + (contents.length - 1) * fontGap.value\n\n    const angle = (Math.PI / 180) * Number(rotate)\n    space = Math.ceil(Math.abs(Math.sin(angle) * defaultHeight) / 2)\n\n    defaultWidth += space\n  }\n\n  return [width ?? defaultWidth, height ?? defaultHeight, space] as const\n}\n\nconst getClips = useClips()\n\nconst renderWatermark = () => {\n  const canvas = document.createElement('canvas')\n  const ctx = canvas.getContext('2d')\n  const image = props.image\n  const content = props.content\n  const rotate = props.rotate\n\n  if (ctx) {\n    if (!watermarkRef.value) {\n      watermarkRef.value = document.createElement('div')\n    }\n\n    const ratio = getPixelRatio()\n    const [markWidth, markHeight, space] = getMarkSize(ctx)\n\n    const drawCanvas = (\n      drawContent?: NonNullable<WatermarkProps['content']> | HTMLImageElement\n    ) => {\n      const [textClips, clipWidth] = getClips(\n        drawContent || '',\n        rotate,\n        ratio,\n        markWidth,\n        markHeight,\n        {\n          color: color.value,\n          fontSize: fontSize.value,\n          fontStyle: fontStyle.value,\n          fontWeight: fontWeight.value,\n          fontFamily: fontFamily.value,\n          fontGap: fontGap.value,\n          textAlign: textAlign.value,\n          textBaseline: textBaseline.value,\n        },\n        gapX.value,\n        gapY.value,\n        space\n      )\n\n      appendWatermark(textClips, clipWidth)\n    }\n\n    if (image) {\n      const img = new Image()\n      img.onload = () => {\n        drawCanvas(img)\n      }\n      img.onerror = () => {\n        drawCanvas(content)\n      }\n      img.crossOrigin = 'anonymous'\n      img.referrerPolicy = 'no-referrer'\n      img.src = image\n    } else {\n      drawCanvas(content)\n    }\n  }\n}\n\nonMounted(() => {\n  renderWatermark()\n})\n\nwatch(\n  () => props,\n  () => {\n    renderWatermark()\n  },\n  {\n    deep: true,\n    flush: 'post',\n  }\n)\n\nonBeforeUnmount(() => {\n  destroyWatermark()\n})\n\nconst onMutate = (mutations: MutationRecord[]) => {\n  if (stopObservation.value) {\n    return\n  }\n  mutations.forEach((mutation) => {\n    if (reRendering(mutation, watermarkRef.value)) {\n      destroyWatermark()\n      renderWatermark()\n    }\n  })\n}\n\nuseMutationObserver(containerRef, onMutate, {\n  attributes: true,\n  subtree: true,\n  childList: true,\n})\n</script>\n","<template>\n  <div ref=\"containerRef\" :style=\"[style]\">\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue'\nimport { useMutationObserver } from '@vueuse/core'\nimport { isArray, isUndefined } from '@pit-element-plus/utils'\nimport { getPixelRatio, getStyleStr, reRendering } from './utils'\nimport useClips from './useClips'\n\nimport type { WatermarkProps } from './watermark'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n  name: 'ElWatermark',\n})\n\nconst style: CSSProperties = {\n  position: 'relative',\n}\n\nconst props = withDefaults(defineProps<WatermarkProps>(), {\n  zIndex: 9,\n  rotate: -22,\n  content: 'Element Plus',\n  gap: () => [100, 100],\n})\nconst fontGap = computed(() => props.font?.fontGap ?? 3)\nconst color = computed(() => props.font?.color ?? 'rgba(0,0,0,.15)')\nconst fontSize = computed(() => props.font?.fontSize ?? 16)\nconst fontWeight = computed(() => props.font?.fontWeight ?? 'normal')\nconst fontStyle = computed(() => props.font?.fontStyle ?? 'normal')\nconst fontFamily = computed(() => props.font?.fontFamily ?? 'sans-serif')\nconst textAlign = computed(() => props.font?.textAlign ?? 'center')\nconst textBaseline = computed(() => props.font?.textBaseline ?? 'hanging')\n\nconst gapX = computed(() => props.gap[0])\nconst gapY = computed(() => props.gap[1])\nconst gapXCenter = computed(() => gapX.value / 2)\nconst gapYCenter = computed(() => gapY.value / 2)\nconst offsetLeft = computed(() => props.offset?.[0] ?? gapXCenter.value)\nconst offsetTop = computed(() => props.offset?.[1] ?? gapYCenter.value)\n\nconst getMarkStyle = () => {\n  const markStyle: CSSProperties = {\n    zIndex: props.zIndex,\n    position: 'absolute',\n    left: 0,\n    top: 0,\n    width: '100%',\n    height: '100%',\n    pointerEvents: 'none',\n    backgroundRepeat: 'repeat',\n  }\n\n  /** Calculate the style of the offset */\n  let positionLeft = offsetLeft.value - gapXCenter.value\n  let positionTop = offsetTop.value - gapYCenter.value\n  if (positionLeft > 0) {\n    markStyle.left = `${positionLeft}px`\n    markStyle.width = `calc(100% - ${positionLeft}px)`\n    positionLeft = 0\n  }\n  if (positionTop > 0) {\n    markStyle.top = `${positionTop}px`\n    markStyle.height = `calc(100% - ${positionTop}px)`\n    positionTop = 0\n  }\n  markStyle.backgroundPosition = `${positionLeft}px ${positionTop}px`\n\n  return markStyle\n}\n\nconst containerRef = shallowRef<HTMLDivElement | null>(null)\nconst watermarkRef = shallowRef<HTMLDivElement>()\nconst stopObservation = ref(false)\n\nconst destroyWatermark = () => {\n  if (watermarkRef.value) {\n    watermarkRef.value.remove()\n    watermarkRef.value = undefined\n  }\n}\nconst appendWatermark = (base64Url: string, markWidth: number) => {\n  if (containerRef.value && watermarkRef.value) {\n    stopObservation.value = true\n    watermarkRef.value.setAttribute(\n      'style',\n      getStyleStr({\n        ...getMarkStyle(),\n        backgroundImage: `url('${base64Url}')`,\n        backgroundSize: `${Math.floor(markWidth)}px`,\n      })\n    )\n    containerRef.value?.append(watermarkRef.value)\n    // Delayed execution\n    setTimeout(() => {\n      stopObservation.value = false\n    })\n  }\n}\n\n/**\n * Get the width and height of the watermark. The default values are as follows\n * Image: [120, 64]; Content: It's calculated by content;\n */\nconst getMarkSize = (ctx: CanvasRenderingContext2D) => {\n  let defaultWidth = 120\n  let defaultHeight = 64\n  let space = 0\n\n  const { image, content, width, height, rotate } = props\n\n  if (!image && ctx.measureText) {\n    ctx.font = `${Number(fontSize.value)}px ${fontFamily.value}`\n\n    const contents = isArray(content) ? content : [content]\n    let maxWidth = 0\n    let maxHeight = 0\n\n    contents.forEach((item) => {\n      const {\n        width,\n        fontBoundingBoxAscent,\n        fontBoundingBoxDescent,\n        actualBoundingBoxAscent,\n        actualBoundingBoxDescent,\n      } = ctx.measureText(item!)\n      // Using `actualBoundingBoxAscent` to be compatible with lower version browsers (eg: Firefox < 116)\n      const height = isUndefined(fontBoundingBoxAscent)\n        ? actualBoundingBoxAscent + actualBoundingBoxDescent\n        : fontBoundingBoxAscent + fontBoundingBoxDescent\n\n      if (width > maxWidth) maxWidth = Math.ceil(width)\n      if (height > maxHeight) maxHeight = Math.ceil(height)\n    })\n\n    defaultWidth = maxWidth\n    defaultHeight =\n      maxHeight * contents.length + (contents.length - 1) * fontGap.value\n\n    const angle = (Math.PI / 180) * Number(rotate)\n    space = Math.ceil(Math.abs(Math.sin(angle) * defaultHeight) / 2)\n\n    defaultWidth += space\n  }\n\n  return [width ?? defaultWidth, height ?? defaultHeight, space] as const\n}\n\nconst getClips = useClips()\n\nconst renderWatermark = () => {\n  const canvas = document.createElement('canvas')\n  const ctx = canvas.getContext('2d')\n  const image = props.image\n  const content = props.content\n  const rotate = props.rotate\n\n  if (ctx) {\n    if (!watermarkRef.value) {\n      watermarkRef.value = document.createElement('div')\n    }\n\n    const ratio = getPixelRatio()\n    const [markWidth, markHeight, space] = getMarkSize(ctx)\n\n    const drawCanvas = (\n      drawContent?: NonNullable<WatermarkProps['content']> | HTMLImageElement\n    ) => {\n      const [textClips, clipWidth] = getClips(\n        drawContent || '',\n        rotate,\n        ratio,\n        markWidth,\n        markHeight,\n        {\n          color: color.value,\n          fontSize: fontSize.value,\n          fontStyle: fontStyle.value,\n          fontWeight: fontWeight.value,\n          fontFamily: fontFamily.value,\n          fontGap: fontGap.value,\n          textAlign: textAlign.value,\n          textBaseline: textBaseline.value,\n        },\n        gapX.value,\n        gapY.value,\n        space\n      )\n\n      appendWatermark(textClips, clipWidth)\n    }\n\n    if (image) {\n      const img = new Image()\n      img.onload = () => {\n        drawCanvas(img)\n      }\n      img.onerror = () => {\n        drawCanvas(content)\n      }\n      img.crossOrigin = 'anonymous'\n      img.referrerPolicy = 'no-referrer'\n      img.src = image\n    } else {\n      drawCanvas(content)\n    }\n  }\n}\n\nonMounted(() => {\n  renderWatermark()\n})\n\nwatch(\n  () => props,\n  () => {\n    renderWatermark()\n  },\n  {\n    deep: true,\n    flush: 'post',\n  }\n)\n\nonBeforeUnmount(() => {\n  destroyWatermark()\n})\n\nconst onMutate = (mutations: MutationRecord[]) => {\n  if (stopObservation.value) {\n    return\n  }\n  mutations.forEach((mutation) => {\n    if (reRendering(mutation, watermarkRef.value)) {\n      destroyWatermark()\n      renderWatermark()\n    }\n  })\n}\n\nuseMutationObserver(containerRef, onMutate, {\n  attributes: true,\n  subtree: true,\n  childList: true,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Watermark from './src/watermark.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElWatermark: SFCWithInstall<typeof Watermark> =\n  withInstall(Watermark)\nexport default ElWatermark\n\nexport * from './src/watermark'\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { Placement, Strategy, VirtualElement } from '@floating-ui/dom'\n\nexport const tourStrategies = ['absolute', 'fixed'] as const\n\nexport const tourPlacements = [\n  'top-start',\n  'top-end',\n  'top',\n  'bottom-start',\n  'bottom-end',\n  'bottom',\n  'left-start',\n  'left-end',\n  'left',\n  'right-start',\n  'right-end',\n  'right',\n] as const\n\nexport interface TourContentProps {\n  /**\n   * @description position of the guide card relative to the target element\n   */\n  placement?: Placement\n  /**\n   * @description the reference dom\n   */\n  reference?: HTMLElement | VirtualElement | null\n  /**\n   * @description position strategy of the content\n   */\n  strategy?: Strategy\n  /**\n   * @description offset of the arrow\n   */\n  offset?: number\n  /**\n   * @description whether to show the arrow\n   */\n  showArrow?: boolean\n  /**\n   * @description content's zIndex\n   */\n  zIndex?: number\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TourContentProps` instead.\n */\nexport const tourContentProps = buildProps({\n  /**\n   * @description position of the guide card relative to the target element\n   */\n  placement: {\n    type: definePropType<Placement>(String),\n    values: tourPlacements,\n    default: 'bottom',\n  },\n  /**\n   * @description the reference dom\n   */\n  reference: {\n    type: definePropType<HTMLElement | VirtualElement | null>(Object),\n    default: null,\n  },\n  /**\n   * @description position strategy of the content\n   */\n  strategy: {\n    type: definePropType<Strategy>(String),\n    values: tourStrategies,\n    default: 'absolute',\n  },\n  /**\n   * @description offset of the arrow\n   */\n  offset: {\n    type: Number,\n    default: 10,\n  },\n  /**\n   * @description whether to show the arrow\n   */\n  showArrow: Boolean,\n  /**\n   * @description content's zIndex\n   */\n  zIndex: {\n    type: Number,\n    default: 2001,\n  },\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `TourContentProps` instead.\n */\nexport type TourContentPropsPublic = ExtractPublicPropTypes<\n  typeof tourContentProps\n>\n\nexport const tourContentEmits = {\n  close: () => true,\n}\nexport type TourContentEmits = typeof tourContentEmits\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isBoolean,\n  isNumber,\n} from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { teleportProps } from '@pit-element-plus/components/teleport'\nimport { tourContentProps } from './content'\n\nimport type { TourContentProps } from './content'\nimport type { CSSProperties, ExtractPublicPropTypes } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type Tour from './tour.vue'\nimport type { TourGap, TourMask } from './types'\n\nexport interface TourProps {\n  /**\n   * @description open tour\n   */\n  modelValue?: boolean\n  /**\n   * @description what is the current step\n   */\n  current?: number\n  /**\n   * @description whether to show the arrow\n   */\n  showArrow?: boolean\n  /**\n   * @description whether to show a close button\n   */\n  showClose?: boolean\n  /**\n   * @description custom close icon\n   */\n  closeIcon?: IconPropType\n  /**\n   * @description position of the guide card relative to the target element\n   */\n  placement?: TourContentProps['placement']\n  /**\n   * @description custom style for content\n   */\n  contentStyle?: CSSProperties\n  /**\n   * @description whether to enable masking, change mask style and fill color by pass custom props\n   */\n  mask?: TourMask\n  /**\n   * @description transparent gap between mask and target\n   */\n  gap?: TourGap\n  /**\n   * @description tour's zIndex\n   */\n  zIndex?: number\n  /**\n   * @description support pass custom scrollIntoView options\n   */\n  scrollIntoViewOptions?: boolean | ScrollIntoViewOptions\n  /**\n   * @description type, affects the background color and text color\n   */\n  type?: 'default' | 'primary'\n  /**\n   * @description which element the TourContent appends to\n   */\n  appendTo?: string | HTMLElement\n  /**\n   * @description whether the Tour can be closed by pressing ESC\n   */\n  closeOnPressEscape?: boolean\n  /**\n   * @description whether the target element can be clickable, when using mask\n   */\n  targetAreaClickable?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TourProps` instead.\n */\nexport const tourProps = buildProps({\n  /**\n   * @description open tour\n   */\n  modelValue: Boolean,\n  /**\n   * @description what is the current step\n   */\n  current: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description whether to show the arrow\n   */\n  showArrow: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether to show a close button\n   */\n  showClose: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description custom close icon\n   */\n  closeIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description position of the guide card relative to the target element\n   */\n  placement: tourContentProps.placement,\n  /**\n   * @description custom style for content\n   */\n  contentStyle: {\n    type: definePropType<CSSProperties>([Object]),\n  },\n  /**\n   * @description whether to enable masking, change mask style and fill color by pass custom props\n   */\n  mask: {\n    type: definePropType<TourMask>([Boolean, Object]),\n    default: true,\n  },\n  /**\n   * @description transparent gap between mask and target\n   */\n  gap: {\n    type: definePropType<TourGap>(Object),\n    default: () => ({\n      offset: 6,\n      radius: 2,\n    }),\n  },\n  /**\n   * @description tour's zIndex\n   */\n  zIndex: {\n    type: Number,\n  },\n  /**\n   * @description support pass custom scrollIntoView options\n   */\n  scrollIntoViewOptions: {\n    type: definePropType<boolean | ScrollIntoViewOptions>([Boolean, Object]),\n    default: () => ({\n      block: 'center',\n    }),\n  },\n  /**\n   * @description type, affects the background color and text color\n   */\n  type: {\n    type: definePropType<'default' | 'primary'>(String),\n  },\n  /**\n   * @description which element the TourContent appends to\n   */\n  appendTo: {\n    type: teleportProps.to.type,\n    default: 'body',\n  },\n  /**\n   * @description whether the Tour can be closed by pressing ESC\n   */\n  closeOnPressEscape: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description whether the target element can be clickable, when using mask\n   */\n  targetAreaClickable: {\n    type: Boolean,\n    default: true,\n  },\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `TourProps` instead.\n */\nexport type TourPropsPublic = ExtractPublicPropTypes<typeof tourProps>\nexport type TourInstance = InstanceType<typeof Tour> & unknown\n\nexport const tourEmits = {\n  [UPDATE_MODEL_EVENT]: (value: boolean) => isBoolean(value),\n  ['update:current']: (current: number) => isNumber(current),\n  close: (current: number) => isNumber(current),\n  finish: () => true,\n  change: (current: number) => isNumber(current),\n}\nexport type TourEmits = typeof tourEmits\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { PosInfo } from './types'\n\nexport interface MaskProps {\n  /**\n   * @description mask's zIndex\n   */\n  zIndex?: number\n  /**\n   * @description whether to show the mask\n   */\n  visible?: boolean\n  /**\n   * @description mask's fill\n   */\n  fill?: string\n  /***\n   * @description mask's transparent space position\n   */\n  pos?: PosInfo | null\n  /**\n   * @description whether the target element can be clickable, when using mask\n   */\n  targetAreaClickable?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `MaskProps` instead.\n */\nexport const maskProps = buildProps({\n  /**\n   * @description mask's zIndex\n   */\n  zIndex: {\n    type: Number,\n    default: 1001,\n  },\n  /**\n   * @description whether to show the mask\n   */\n  visible: Boolean,\n  /**\n   * @description mask's fill\n   */\n  fill: {\n    type: String,\n    default: 'rgba(0,0,0,0.5)',\n  },\n  /***\n   * @description mask's transparent space position\n   */\n  pos: {\n    type: definePropType<PosInfo | null>(Object),\n  },\n  /**\n   * @description whether the target element can be clickable, when using mask\n   */\n  targetAreaClickable: {\n    type: Boolean,\n    default: true,\n  },\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `MaskProps` instead.\n */\nexport type MaskPropsPublic = ExtractPublicPropTypes<typeof maskProps>\n","import {\n  computed,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  unref,\n  watch,\n  watchEffect,\n} from 'vue'\nimport {\n  arrow,\n  autoUpdate,\n  computePosition,\n  detectOverflow,\n  flip,\n  offset as offsetMiddleware,\n  shift,\n} from '@floating-ui/dom'\nimport {\n  isArray,\n  isClient,\n  isFunction,\n  isString,\n  keysOf,\n} from '@pit-element-plus/utils'\n\nimport type {\n  CSSProperties,\n  Component,\n  InjectionKey,\n  Ref,\n  SetupContext,\n} from 'vue'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\nimport type { PosInfo, TourGap, TourMask } from './types'\nimport type {\n  ComputePositionReturn,\n  Middleware,\n  Placement,\n  Strategy,\n  VirtualElement,\n} from '@floating-ui/dom'\nimport type { TourStepProps } from './step'\n\nexport const useTarget = (\n  target: Ref<\n    string | HTMLElement | (() => HTMLElement | null) | null | undefined\n  >,\n  open: Ref<boolean>,\n  gap: Ref<TourGap>,\n  mergedMask: Ref<TourMask>,\n  scrollIntoViewOptions: Ref<boolean | ScrollIntoViewOptions>\n) => {\n  const posInfo: Ref<PosInfo | null> = ref(null)\n\n  const getTargetEl = () => {\n    let targetEl: HTMLElement | null | undefined\n    if (isString(target.value)) {\n      targetEl = document.querySelector<HTMLElement>(target.value)\n    } else if (isFunction(target.value)) {\n      targetEl = target.value()\n    } else {\n      targetEl = target.value\n    }\n    return targetEl\n  }\n\n  const updatePosInfo = () => {\n    const targetEl = getTargetEl()\n    if (!targetEl || !open.value) {\n      posInfo.value = null\n      return\n    }\n    if (!isInViewPort(targetEl)) {\n      targetEl.scrollIntoView(scrollIntoViewOptions.value)\n    }\n    const { left, top, width, height } = targetEl.getBoundingClientRect()\n    posInfo.value = {\n      left,\n      top,\n      width,\n      height,\n      radius: 0,\n    }\n  }\n\n  onMounted(() => {\n    watch(\n      [open, target],\n      () => {\n        updatePosInfo()\n      },\n      {\n        immediate: true,\n      }\n    )\n    window.addEventListener('resize', updatePosInfo)\n  })\n\n  onBeforeUnmount(() => {\n    window.removeEventListener('resize', updatePosInfo)\n  })\n\n  const getGapOffset = (index: number) =>\n    (isArray(gap.value.offset) ? gap.value.offset[index] : gap.value.offset) ??\n    6\n\n  const mergedPosInfo = computed(() => {\n    if (!posInfo.value) return posInfo.value\n\n    const gapOffsetX = getGapOffset(0)\n    const gapOffsetY = getGapOffset(1)\n    const gapRadius = gap.value?.radius || 2\n\n    return {\n      left: posInfo.value.left - gapOffsetX,\n      top: posInfo.value.top - gapOffsetY,\n      width: posInfo.value.width + gapOffsetX * 2,\n      height: posInfo.value.height + gapOffsetY * 2,\n      radius: gapRadius,\n    }\n  })\n\n  const triggerTarget = computed(() => {\n    const targetEl = getTargetEl()\n    if (!mergedMask.value || !targetEl || !window.DOMRect) {\n      return targetEl || undefined\n    }\n\n    return {\n      getBoundingClientRect() {\n        return window.DOMRect.fromRect({\n          width: mergedPosInfo.value?.width || 0,\n          height: mergedPosInfo.value?.height || 0,\n          x: mergedPosInfo.value?.left || 0,\n          y: mergedPosInfo.value?.top || 0,\n        })\n      },\n    }\n  })\n\n  return {\n    mergedPosInfo,\n    triggerTarget,\n  }\n}\n\nexport interface TourContext {\n  currentStep: Ref<TourStepProps | undefined>\n  current: Ref<number>\n  total: Ref<number>\n  showClose: Ref<boolean>\n  closeIcon: Ref<string | Component | undefined>\n  mergedType: Ref<'default' | 'primary' | undefined>\n  ns: UseNamespaceReturn\n  slots: SetupContext['slots']\n  updateModelValue(modelValue: boolean): void\n  onClose(): void\n  onFinish(): void\n  onChange(): void\n}\n\nexport const tourKey: InjectionKey<TourContext> = Symbol('ElTour')\n\nfunction isInViewPort(element: HTMLElement) {\n  const viewWidth = window.innerWidth || document.documentElement.clientWidth\n  const viewHeight = window.innerHeight || document.documentElement.clientHeight\n  const { top, right, bottom, left } = element.getBoundingClientRect()\n\n  return top >= 0 && left >= 0 && right <= viewWidth && bottom <= viewHeight\n}\n\nexport const useFloating = (\n  referenceRef: Ref<HTMLElement | VirtualElement | null>,\n  contentRef: Ref<HTMLElement | null>,\n  arrowRef: Ref<HTMLElement | null>,\n  placement: Ref<Placement | undefined>,\n  strategy: Ref<Strategy>,\n  offset: Ref<number>,\n  zIndex: Ref<number>,\n  showArrow: Ref<boolean>\n) => {\n  const x = ref<number>()\n  const y = ref<number>()\n  const middlewareData = ref<ComputePositionReturn['middlewareData']>({})\n\n  const states = {\n    x,\n    y,\n    placement,\n    strategy,\n    middlewareData,\n  } as const\n\n  const middleware = computed(() => {\n    const _middleware: Middleware[] = [\n      offsetMiddleware(unref(offset)),\n      flip(),\n      shift(),\n      overflowMiddleware(),\n    ]\n\n    if (unref(showArrow) && unref(arrowRef)) {\n      _middleware.push(\n        arrow({\n          element: unref(arrowRef)!,\n        })\n      )\n    }\n    return _middleware\n  })\n\n  const update = async () => {\n    if (!isClient) return\n\n    const referenceEl = unref(referenceRef)\n    const contentEl = unref(contentRef)\n    if (!referenceEl || !contentEl) return\n\n    const data = await computePosition(referenceEl, contentEl, {\n      placement: unref(placement),\n      strategy: unref(strategy),\n      middleware: unref(middleware),\n    })\n\n    keysOf(states).forEach((key) => {\n      states[key].value = data[key]\n    })\n  }\n\n  const contentStyle = computed<CSSProperties>(() => {\n    if (!unref(referenceRef)) {\n      return {\n        position: 'fixed',\n        top: '50%',\n        left: '50%',\n        transform: 'translate3d(-50%, -50%, 0)',\n        maxWidth: '100vw',\n        zIndex: unref(zIndex),\n      }\n    }\n\n    const { overflow } = unref(middlewareData)\n\n    return {\n      position: unref(strategy),\n      zIndex: unref(zIndex),\n      top: unref(y) != null ? `${unref(y)}px` : '',\n      left: unref(x) != null ? `${unref(x)}px` : '',\n      maxWidth: overflow?.maxWidth ? `${overflow?.maxWidth}px` : '',\n    }\n  })\n\n  const arrowStyle = computed<CSSProperties>(() => {\n    if (!unref(showArrow)) return {}\n\n    const { arrow } = unref(middlewareData)\n    return {\n      left: arrow?.x != null ? `${arrow?.x}px` : '',\n      top: arrow?.y != null ? `${arrow?.y}px` : '',\n    }\n  })\n\n  let cleanup: any\n  onMounted(() => {\n    const referenceEl = unref(referenceRef)\n    const contentEl = unref(contentRef)\n    if (referenceEl && contentEl) {\n      cleanup = autoUpdate(referenceEl, contentEl, update)\n    }\n\n    watchEffect(() => {\n      update()\n    })\n  })\n\n  onBeforeUnmount(() => {\n    cleanup && cleanup()\n  })\n\n  return {\n    update,\n    contentStyle,\n    arrowStyle,\n  }\n}\n\nconst overflowMiddleware = (): Middleware => {\n  return {\n    name: 'overflow',\n    async fn(state) {\n      const overflow = await detectOverflow(state)\n      let overWidth = 0\n      if (overflow.left > 0) overWidth = overflow.left\n      if (overflow.right > 0) overWidth = overflow.right\n      const floatingWidth = state.rects.floating.width\n      return {\n        data: {\n          maxWidth: floatingWidth - overWidth,\n        },\n      }\n    },\n  }\n}\n","<template>\n  <div v-if=\"visible\" :class=\"ns.e('mask')\" :style=\"maskStyle\" v-bind=\"$attrs\">\n    <svg\n      :style=\"{\n        width: '100%',\n        height: '100%',\n      }\"\n    >\n      <path :class=\"ns.e('hollow')\" :style=\"pathStyle\" :d=\"path\" />\n    </svg>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, toRef } from 'vue'\nimport { useLockscreen } from '@pit-element-plus/hooks'\nimport { useWindowSize } from '@vueuse/core'\nimport { tourKey } from './helper'\n\nimport type { CSSProperties } from 'vue'\nimport type { MaskProps } from './mask'\n\ndefineOptions({\n  name: 'ElTourMask',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MaskProps>(), {\n  zIndex: 1001,\n  fill: 'rgba(0,0,0,0.5)',\n  targetAreaClickable: true,\n})\n\nconst { ns } = inject(tourKey)!\nconst radius = computed(() => props.pos?.radius ?? 2)\nconst roundInfo = computed(() => {\n  const v = radius.value\n  const baseInfo = `a${v},${v} 0 0 1`\n  return {\n    topRight: `${baseInfo} ${v},${v}`,\n    bottomRight: `${baseInfo} ${-v},${v}`,\n    bottomLeft: `${baseInfo} ${-v},${-v}`,\n    topLeft: `${baseInfo} ${v},${-v}`,\n  }\n})\n\nconst { width: windowWidth, height: windowHeight } = useWindowSize()\n\nconst path = computed(() => {\n  const width = windowWidth.value\n  const height = windowHeight.value\n  const info = roundInfo.value\n  const _path = `M${width},0 L0,0 L0,${height} L${width},${height} L${width},0 Z`\n  const _radius = radius.value\n  return props.pos\n    ? `${_path} M${props.pos.left + _radius},${props.pos.top} h${\n        props.pos.width - _radius * 2\n      } ${info.topRight} v${props.pos.height - _radius * 2} ${\n        info.bottomRight\n      } h${-props.pos.width + _radius * 2} ${info.bottomLeft} v${\n        -props.pos.height + _radius * 2\n      } ${info.topLeft} z`\n    : _path\n})\n\nconst maskStyle = computed<CSSProperties>(() => ({\n  position: 'fixed',\n  left: 0,\n  right: 0,\n  top: 0,\n  bottom: 0,\n  zIndex: props.zIndex,\n  pointerEvents: props.pos && props.targetAreaClickable ? 'none' : 'auto',\n}))\n\nconst pathStyle = computed<CSSProperties>(() => ({\n  fill: props.fill,\n  pointerEvents: 'auto',\n  cursor: 'auto',\n}))\n\nuseLockscreen(toRef(props, 'visible'), {\n  ns,\n})\n</script>\n","<template>\n  <div v-if=\"visible\" :class=\"ns.e('mask')\" :style=\"maskStyle\" v-bind=\"$attrs\">\n    <svg\n      :style=\"{\n        width: '100%',\n        height: '100%',\n      }\"\n    >\n      <path :class=\"ns.e('hollow')\" :style=\"pathStyle\" :d=\"path\" />\n    </svg>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, toRef } from 'vue'\nimport { useLockscreen } from '@pit-element-plus/hooks'\nimport { useWindowSize } from '@vueuse/core'\nimport { tourKey } from './helper'\n\nimport type { CSSProperties } from 'vue'\nimport type { MaskProps } from './mask'\n\ndefineOptions({\n  name: 'ElTourMask',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MaskProps>(), {\n  zIndex: 1001,\n  fill: 'rgba(0,0,0,0.5)',\n  targetAreaClickable: true,\n})\n\nconst { ns } = inject(tourKey)!\nconst radius = computed(() => props.pos?.radius ?? 2)\nconst roundInfo = computed(() => {\n  const v = radius.value\n  const baseInfo = `a${v},${v} 0 0 1`\n  return {\n    topRight: `${baseInfo} ${v},${v}`,\n    bottomRight: `${baseInfo} ${-v},${v}`,\n    bottomLeft: `${baseInfo} ${-v},${-v}`,\n    topLeft: `${baseInfo} ${v},${-v}`,\n  }\n})\n\nconst { width: windowWidth, height: windowHeight } = useWindowSize()\n\nconst path = computed(() => {\n  const width = windowWidth.value\n  const height = windowHeight.value\n  const info = roundInfo.value\n  const _path = `M${width},0 L0,0 L0,${height} L${width},${height} L${width},0 Z`\n  const _radius = radius.value\n  return props.pos\n    ? `${_path} M${props.pos.left + _radius},${props.pos.top} h${\n        props.pos.width - _radius * 2\n      } ${info.topRight} v${props.pos.height - _radius * 2} ${\n        info.bottomRight\n      } h${-props.pos.width + _radius * 2} ${info.bottomLeft} v${\n        -props.pos.height + _radius * 2\n      } ${info.topLeft} z`\n    : _path\n})\n\nconst maskStyle = computed<CSSProperties>(() => ({\n  position: 'fixed',\n  left: 0,\n  right: 0,\n  top: 0,\n  bottom: 0,\n  zIndex: props.zIndex,\n  pointerEvents: props.pos && props.targetAreaClickable ? 'none' : 'auto',\n}))\n\nconst pathStyle = computed<CSSProperties>(() => ({\n  fill: props.fill,\n  pointerEvents: 'auto',\n  cursor: 'auto',\n}))\n\nuseLockscreen(toRef(props, 'visible'), {\n  ns,\n})\n</script>\n","<template>\n  <div v-if=\"visible\" :class=\"ns.e('mask')\" :style=\"maskStyle\" v-bind=\"$attrs\">\n    <svg\n      :style=\"{\n        width: '100%',\n        height: '100%',\n      }\"\n    >\n      <path :class=\"ns.e('hollow')\" :style=\"pathStyle\" :d=\"path\" />\n    </svg>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, toRef } from 'vue'\nimport { useLockscreen } from '@pit-element-plus/hooks'\nimport { useWindowSize } from '@vueuse/core'\nimport { tourKey } from './helper'\n\nimport type { CSSProperties } from 'vue'\nimport type { MaskProps } from './mask'\n\ndefineOptions({\n  name: 'ElTourMask',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MaskProps>(), {\n  zIndex: 1001,\n  fill: 'rgba(0,0,0,0.5)',\n  targetAreaClickable: true,\n})\n\nconst { ns } = inject(tourKey)!\nconst radius = computed(() => props.pos?.radius ?? 2)\nconst roundInfo = computed(() => {\n  const v = radius.value\n  const baseInfo = `a${v},${v} 0 0 1`\n  return {\n    topRight: `${baseInfo} ${v},${v}`,\n    bottomRight: `${baseInfo} ${-v},${v}`,\n    bottomLeft: `${baseInfo} ${-v},${-v}`,\n    topLeft: `${baseInfo} ${v},${-v}`,\n  }\n})\n\nconst { width: windowWidth, height: windowHeight } = useWindowSize()\n\nconst path = computed(() => {\n  const width = windowWidth.value\n  const height = windowHeight.value\n  const info = roundInfo.value\n  const _path = `M${width},0 L0,0 L0,${height} L${width},${height} L${width},0 Z`\n  const _radius = radius.value\n  return props.pos\n    ? `${_path} M${props.pos.left + _radius},${props.pos.top} h${\n        props.pos.width - _radius * 2\n      } ${info.topRight} v${props.pos.height - _radius * 2} ${\n        info.bottomRight\n      } h${-props.pos.width + _radius * 2} ${info.bottomLeft} v${\n        -props.pos.height + _radius * 2\n      } ${info.topLeft} z`\n    : _path\n})\n\nconst maskStyle = computed<CSSProperties>(() => ({\n  position: 'fixed',\n  left: 0,\n  right: 0,\n  top: 0,\n  bottom: 0,\n  zIndex: props.zIndex,\n  pointerEvents: props.pos && props.targetAreaClickable ? 'none' : 'auto',\n}))\n\nconst pathStyle = computed<CSSProperties>(() => ({\n  fill: props.fill,\n  pointerEvents: 'auto',\n  cursor: 'auto',\n}))\n\nuseLockscreen(toRef(props, 'visible'), {\n  ns,\n})\n</script>\n","<template>\n  <div\n    ref=\"contentRef\"\n    :style=\"contentStyle\"\n    :class=\"ns.e('content')\"\n    :data-side=\"side\"\n    tabindex=\"-1\"\n  >\n    <el-focus-trap\n      loop\n      trapped\n      focus-start-el=\"container\"\n      :focus-trap-el=\"contentRef || undefined\"\n      @release-requested=\"onCloseRequested\"\n      @focusout-prevented=\"onFocusoutPrevented\"\n    >\n      <slot />\n    </el-focus-trap>\n    <span\n      v-if=\"showArrow\"\n      ref=\"arrowRef\"\n      :style=\"arrowStyle\"\n      :class=\"ns.e('arrow')\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, watch } from 'vue'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport { tourContentEmits } from './content'\nimport { tourKey, useFloating } from './helper'\n\nimport type { TourContentProps } from './content'\n\ndefineOptions({\n  name: 'ElTourContent',\n})\n\nconst props = withDefaults(defineProps<TourContentProps>(), {\n  placement: 'bottom',\n  reference: null,\n  strategy: 'absolute',\n  offset: 10,\n  zIndex: 2001,\n})\nconst emit = defineEmits(tourContentEmits)\n\nconst placement = ref(props.placement)\nconst strategy = ref(props.strategy)\nconst contentRef = ref<HTMLElement | null>(null)\nconst arrowRef = ref<HTMLElement | null>(null)\n\nwatch(\n  () => props.placement,\n  () => {\n    placement.value = props.placement\n  }\n)\n\nconst { contentStyle, arrowStyle } = useFloating(\n  toRef(props, 'reference'),\n  contentRef,\n  arrowRef,\n  placement,\n  strategy,\n  toRef(props, 'offset'),\n  toRef(props, 'zIndex'),\n  toRef(props, 'showArrow')\n)\n\nconst side = computed(() => {\n  return placement.value.split('-')[0]\n})\n\nconst { ns } = inject(tourKey)!\n\nconst onCloseRequested = () => {\n  emit('close')\n}\n\nconst onFocusoutPrevented = (event: CustomEvent) => {\n  if (event.detail.focusReason === 'pointer') {\n    event.preventDefault()\n  }\n}\n</script>\n","<template>\n  <div\n    ref=\"contentRef\"\n    :style=\"contentStyle\"\n    :class=\"ns.e('content')\"\n    :data-side=\"side\"\n    tabindex=\"-1\"\n  >\n    <el-focus-trap\n      loop\n      trapped\n      focus-start-el=\"container\"\n      :focus-trap-el=\"contentRef || undefined\"\n      @release-requested=\"onCloseRequested\"\n      @focusout-prevented=\"onFocusoutPrevented\"\n    >\n      <slot />\n    </el-focus-trap>\n    <span\n      v-if=\"showArrow\"\n      ref=\"arrowRef\"\n      :style=\"arrowStyle\"\n      :class=\"ns.e('arrow')\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, watch } from 'vue'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport { tourContentEmits } from './content'\nimport { tourKey, useFloating } from './helper'\n\nimport type { TourContentProps } from './content'\n\ndefineOptions({\n  name: 'ElTourContent',\n})\n\nconst props = withDefaults(defineProps<TourContentProps>(), {\n  placement: 'bottom',\n  reference: null,\n  strategy: 'absolute',\n  offset: 10,\n  zIndex: 2001,\n})\nconst emit = defineEmits(tourContentEmits)\n\nconst placement = ref(props.placement)\nconst strategy = ref(props.strategy)\nconst contentRef = ref<HTMLElement | null>(null)\nconst arrowRef = ref<HTMLElement | null>(null)\n\nwatch(\n  () => props.placement,\n  () => {\n    placement.value = props.placement\n  }\n)\n\nconst { contentStyle, arrowStyle } = useFloating(\n  toRef(props, 'reference'),\n  contentRef,\n  arrowRef,\n  placement,\n  strategy,\n  toRef(props, 'offset'),\n  toRef(props, 'zIndex'),\n  toRef(props, 'showArrow')\n)\n\nconst side = computed(() => {\n  return placement.value.split('-')[0]\n})\n\nconst { ns } = inject(tourKey)!\n\nconst onCloseRequested = () => {\n  emit('close')\n}\n\nconst onFocusoutPrevented = (event: CustomEvent) => {\n  if (event.detail.focusReason === 'pointer') {\n    event.preventDefault()\n  }\n}\n</script>\n","<template>\n  <div\n    ref=\"contentRef\"\n    :style=\"contentStyle\"\n    :class=\"ns.e('content')\"\n    :data-side=\"side\"\n    tabindex=\"-1\"\n  >\n    <el-focus-trap\n      loop\n      trapped\n      focus-start-el=\"container\"\n      :focus-trap-el=\"contentRef || undefined\"\n      @release-requested=\"onCloseRequested\"\n      @focusout-prevented=\"onFocusoutPrevented\"\n    >\n      <slot />\n    </el-focus-trap>\n    <span\n      v-if=\"showArrow\"\n      ref=\"arrowRef\"\n      :style=\"arrowStyle\"\n      :class=\"ns.e('arrow')\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, watch } from 'vue'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport { tourContentEmits } from './content'\nimport { tourKey, useFloating } from './helper'\n\nimport type { TourContentProps } from './content'\n\ndefineOptions({\n  name: 'ElTourContent',\n})\n\nconst props = withDefaults(defineProps<TourContentProps>(), {\n  placement: 'bottom',\n  reference: null,\n  strategy: 'absolute',\n  offset: 10,\n  zIndex: 2001,\n})\nconst emit = defineEmits(tourContentEmits)\n\nconst placement = ref(props.placement)\nconst strategy = ref(props.strategy)\nconst contentRef = ref<HTMLElement | null>(null)\nconst arrowRef = ref<HTMLElement | null>(null)\n\nwatch(\n  () => props.placement,\n  () => {\n    placement.value = props.placement\n  }\n)\n\nconst { contentStyle, arrowStyle } = useFloating(\n  toRef(props, 'reference'),\n  contentRef,\n  arrowRef,\n  placement,\n  strategy,\n  toRef(props, 'offset'),\n  toRef(props, 'zIndex'),\n  toRef(props, 'showArrow')\n)\n\nconst side = computed(() => {\n  return placement.value.split('-')[0]\n})\n\nconst { ns } = inject(tourKey)!\n\nconst onCloseRequested = () => {\n  emit('close')\n}\n\nconst onFocusoutPrevented = (event: CustomEvent) => {\n  if (event.detail.focusReason === 'pointer') {\n    event.preventDefault()\n  }\n}\n</script>\n","import { defineComponent } from 'vue'\nimport { flattedChildren, isArray } from '@pit-element-plus/utils'\n\nimport type { FlattenVNodes } from '@pit-element-plus/utils'\nimport type { Component, VNode } from 'vue'\n\nexport default defineComponent({\n  name: 'ElTourSteps',\n  props: {\n    current: {\n      type: Number,\n      default: 0,\n    },\n  },\n  emits: ['update-total'],\n  setup(props, { slots, emit }) {\n    let cacheTotal = 0\n\n    return () => {\n      const children = slots.default?.()!\n      const result: VNode[] = []\n      let total = 0\n\n      function filterSteps(children?: FlattenVNodes) {\n        if (!isArray(children)) return\n        ;(children as VNode[]).forEach((item) => {\n          const name = ((item?.type || {}) as Component)?.name\n\n          if (name === 'ElTourStep') {\n            result.push(item)\n            total += 1\n          }\n        })\n      }\n\n      if (children.length) {\n        filterSteps(flattedChildren(children![0]?.children))\n      }\n\n      if (cacheTotal !== total) {\n        cacheTotal = total\n        emit('update-total', total)\n      }\n\n      if (result.length) {\n        return result[props.current]\n      }\n      return null\n    }\n  },\n})\n","<template>\n  <el-teleport :to=\"appendTo\">\n    <div :class=\"kls\" v-bind=\"$attrs\">\n      <el-tour-mask\n        :visible=\"mergedShowMask\"\n        :fill=\"mergedMaskStyle?.color\"\n        :style=\"mergedMaskStyle?.style\"\n        :pos=\"pos\"\n        :z-index=\"mergedZIndex\"\n        :target-area-clickable=\"targetAreaClickable\"\n      />\n      <el-tour-content\n        v-if=\"modelValue\"\n        :key=\"current\"\n        :reference=\"triggerTarget\"\n        :placement=\"mergedPlacement\"\n        :show-arrow=\"mergedShowArrow\"\n        :z-index=\"mergedZIndex\"\n        :style=\"mergedContentStyle\"\n        @close=\"onEscClose\"\n      >\n        <el-tour-steps :current=\"current\" @update-total=\"onUpdateTotal\">\n          <slot />\n        </el-tour-steps>\n      </el-tour-content>\n    </div>\n  </el-teleport>\n  <!-- just for IDE -->\n  <slot v-if=\"false\" name=\"indicators\" :current=\"current + 1\" :total=\"total\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref, toRef, useSlots, watch } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { useNamespace, useZIndex } from '@pit-element-plus/hooks'\nimport { isBoolean } from '@pit-element-plus/utils'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport ElTourMask from './mask.vue'\nimport ElTourContent from './content.vue'\nimport ElTourSteps from './steps'\nimport { tourEmits } from './tour'\nimport { tourKey, useTarget } from './helper'\n\nimport type { TourStepProps } from './step'\nimport type { TourProps } from './tour'\n\ndefineOptions({\n  name: 'ElTour',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<TourProps>(), {\n  current: 0,\n  showArrow: true,\n  showClose: true,\n  placement: 'bottom',\n  mask: true,\n  gap: () => ({ offset: 6, radius: 2 }),\n  scrollIntoViewOptions: () => ({ block: 'center' }),\n  appendTo: 'body',\n  closeOnPressEscape: true,\n  targetAreaClickable: true,\n})\nconst emit = defineEmits(tourEmits)\n\nconst ns = useNamespace('tour')\nconst total = ref(0)\nconst currentStep = ref<TourStepProps>()\n\nconst current = useVModel(props, 'current', emit, {\n  passive: true,\n})\n\nconst currentTarget = computed(() => currentStep.value?.target)\n\nconst kls = computed(() => [\n  ns.b(),\n  mergedType.value === 'primary' ? ns.m('primary') : '',\n])\n\nconst mergedPlacement = computed(\n  () => currentStep.value?.placement || props.placement\n)\n\nconst mergedContentStyle = computed(\n  () => currentStep.value?.contentStyle ?? props.contentStyle\n)\n\nconst mergedMask = computed(() => currentStep.value?.mask ?? props.mask)\nconst mergedShowMask = computed(() => !!mergedMask.value && props.modelValue)\nconst mergedMaskStyle = computed(() =>\n  isBoolean(mergedMask.value) ? undefined : mergedMask.value\n)\n\nconst mergedShowArrow = computed(\n  () =>\n    !!currentTarget.value && (currentStep.value?.showArrow ?? props.showArrow)\n)\n\nconst mergedScrollIntoViewOptions = computed(\n  () => currentStep.value?.scrollIntoViewOptions ?? props.scrollIntoViewOptions\n)\nconst mergedType = computed(() => currentStep.value?.type ?? props.type)\n\nconst { nextZIndex } = useZIndex()\nconst nowZIndex = nextZIndex()\nconst mergedZIndex = computed(() => props.zIndex ?? nowZIndex)\n\nconst { mergedPosInfo: pos, triggerTarget } = useTarget(\n  currentTarget,\n  toRef(props, 'modelValue'),\n  toRef(props, 'gap'),\n  mergedMask,\n  mergedScrollIntoViewOptions\n)\n\nwatch(\n  () => props.modelValue,\n  (val) => {\n    if (!val) {\n      current.value = 0\n    }\n  }\n)\n\nconst onEscClose = () => {\n  if (props.closeOnPressEscape) {\n    emit(UPDATE_MODEL_EVENT, false)\n    emit('close', current.value)\n  }\n}\n\nconst onUpdateTotal = (val: number) => {\n  total.value = val\n}\n\nconst slots = useSlots()\n\nprovide(tourKey, {\n  currentStep,\n  current,\n  total,\n  showClose: toRef(props, 'showClose'),\n  closeIcon: toRef(props, 'closeIcon'),\n  mergedType,\n  ns,\n  slots,\n  updateModelValue(modelValue) {\n    emit(UPDATE_MODEL_EVENT, modelValue)\n  },\n  onClose() {\n    emit('close', current.value)\n  },\n  onFinish() {\n    emit('finish')\n  },\n  onChange() {\n    emit(CHANGE_EVENT, current.value)\n  },\n})\n</script>\n","<template>\n  <el-teleport :to=\"appendTo\">\n    <div :class=\"kls\" v-bind=\"$attrs\">\n      <el-tour-mask\n        :visible=\"mergedShowMask\"\n        :fill=\"mergedMaskStyle?.color\"\n        :style=\"mergedMaskStyle?.style\"\n        :pos=\"pos\"\n        :z-index=\"mergedZIndex\"\n        :target-area-clickable=\"targetAreaClickable\"\n      />\n      <el-tour-content\n        v-if=\"modelValue\"\n        :key=\"current\"\n        :reference=\"triggerTarget\"\n        :placement=\"mergedPlacement\"\n        :show-arrow=\"mergedShowArrow\"\n        :z-index=\"mergedZIndex\"\n        :style=\"mergedContentStyle\"\n        @close=\"onEscClose\"\n      >\n        <el-tour-steps :current=\"current\" @update-total=\"onUpdateTotal\">\n          <slot />\n        </el-tour-steps>\n      </el-tour-content>\n    </div>\n  </el-teleport>\n  <!-- just for IDE -->\n  <slot v-if=\"false\" name=\"indicators\" :current=\"current + 1\" :total=\"total\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref, toRef, useSlots, watch } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { useNamespace, useZIndex } from '@pit-element-plus/hooks'\nimport { isBoolean } from '@pit-element-plus/utils'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport ElTourMask from './mask.vue'\nimport ElTourContent from './content.vue'\nimport ElTourSteps from './steps'\nimport { tourEmits } from './tour'\nimport { tourKey, useTarget } from './helper'\n\nimport type { TourStepProps } from './step'\nimport type { TourProps } from './tour'\n\ndefineOptions({\n  name: 'ElTour',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<TourProps>(), {\n  current: 0,\n  showArrow: true,\n  showClose: true,\n  placement: 'bottom',\n  mask: true,\n  gap: () => ({ offset: 6, radius: 2 }),\n  scrollIntoViewOptions: () => ({ block: 'center' }),\n  appendTo: 'body',\n  closeOnPressEscape: true,\n  targetAreaClickable: true,\n})\nconst emit = defineEmits(tourEmits)\n\nconst ns = useNamespace('tour')\nconst total = ref(0)\nconst currentStep = ref<TourStepProps>()\n\nconst current = useVModel(props, 'current', emit, {\n  passive: true,\n})\n\nconst currentTarget = computed(() => currentStep.value?.target)\n\nconst kls = computed(() => [\n  ns.b(),\n  mergedType.value === 'primary' ? ns.m('primary') : '',\n])\n\nconst mergedPlacement = computed(\n  () => currentStep.value?.placement || props.placement\n)\n\nconst mergedContentStyle = computed(\n  () => currentStep.value?.contentStyle ?? props.contentStyle\n)\n\nconst mergedMask = computed(() => currentStep.value?.mask ?? props.mask)\nconst mergedShowMask = computed(() => !!mergedMask.value && props.modelValue)\nconst mergedMaskStyle = computed(() =>\n  isBoolean(mergedMask.value) ? undefined : mergedMask.value\n)\n\nconst mergedShowArrow = computed(\n  () =>\n    !!currentTarget.value && (currentStep.value?.showArrow ?? props.showArrow)\n)\n\nconst mergedScrollIntoViewOptions = computed(\n  () => currentStep.value?.scrollIntoViewOptions ?? props.scrollIntoViewOptions\n)\nconst mergedType = computed(() => currentStep.value?.type ?? props.type)\n\nconst { nextZIndex } = useZIndex()\nconst nowZIndex = nextZIndex()\nconst mergedZIndex = computed(() => props.zIndex ?? nowZIndex)\n\nconst { mergedPosInfo: pos, triggerTarget } = useTarget(\n  currentTarget,\n  toRef(props, 'modelValue'),\n  toRef(props, 'gap'),\n  mergedMask,\n  mergedScrollIntoViewOptions\n)\n\nwatch(\n  () => props.modelValue,\n  (val) => {\n    if (!val) {\n      current.value = 0\n    }\n  }\n)\n\nconst onEscClose = () => {\n  if (props.closeOnPressEscape) {\n    emit(UPDATE_MODEL_EVENT, false)\n    emit('close', current.value)\n  }\n}\n\nconst onUpdateTotal = (val: number) => {\n  total.value = val\n}\n\nconst slots = useSlots()\n\nprovide(tourKey, {\n  currentStep,\n  current,\n  total,\n  showClose: toRef(props, 'showClose'),\n  closeIcon: toRef(props, 'closeIcon'),\n  mergedType,\n  ns,\n  slots,\n  updateModelValue(modelValue) {\n    emit(UPDATE_MODEL_EVENT, modelValue)\n  },\n  onClose() {\n    emit('close', current.value)\n  },\n  onFinish() {\n    emit('finish')\n  },\n  onChange() {\n    emit(CHANGE_EVENT, current.value)\n  },\n})\n</script>\n","<template>\n  <el-teleport :to=\"appendTo\">\n    <div :class=\"kls\" v-bind=\"$attrs\">\n      <el-tour-mask\n        :visible=\"mergedShowMask\"\n        :fill=\"mergedMaskStyle?.color\"\n        :style=\"mergedMaskStyle?.style\"\n        :pos=\"pos\"\n        :z-index=\"mergedZIndex\"\n        :target-area-clickable=\"targetAreaClickable\"\n      />\n      <el-tour-content\n        v-if=\"modelValue\"\n        :key=\"current\"\n        :reference=\"triggerTarget\"\n        :placement=\"mergedPlacement\"\n        :show-arrow=\"mergedShowArrow\"\n        :z-index=\"mergedZIndex\"\n        :style=\"mergedContentStyle\"\n        @close=\"onEscClose\"\n      >\n        <el-tour-steps :current=\"current\" @update-total=\"onUpdateTotal\">\n          <slot />\n        </el-tour-steps>\n      </el-tour-content>\n    </div>\n  </el-teleport>\n  <!-- just for IDE -->\n  <slot v-if=\"false\" name=\"indicators\" :current=\"current + 1\" :total=\"total\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, provide, ref, toRef, useSlots, watch } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { useNamespace, useZIndex } from '@pit-element-plus/hooks'\nimport { isBoolean } from '@pit-element-plus/utils'\nimport ElTeleport from '@pit-element-plus/components/teleport'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport ElTourMask from './mask.vue'\nimport ElTourContent from './content.vue'\nimport ElTourSteps from './steps'\nimport { tourEmits } from './tour'\nimport { tourKey, useTarget } from './helper'\n\nimport type { TourStepProps } from './step'\nimport type { TourProps } from './tour'\n\ndefineOptions({\n  name: 'ElTour',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<TourProps>(), {\n  current: 0,\n  showArrow: true,\n  showClose: true,\n  placement: 'bottom',\n  mask: true,\n  gap: () => ({ offset: 6, radius: 2 }),\n  scrollIntoViewOptions: () => ({ block: 'center' }),\n  appendTo: 'body',\n  closeOnPressEscape: true,\n  targetAreaClickable: true,\n})\nconst emit = defineEmits(tourEmits)\n\nconst ns = useNamespace('tour')\nconst total = ref(0)\nconst currentStep = ref<TourStepProps>()\n\nconst current = useVModel(props, 'current', emit, {\n  passive: true,\n})\n\nconst currentTarget = computed(() => currentStep.value?.target)\n\nconst kls = computed(() => [\n  ns.b(),\n  mergedType.value === 'primary' ? ns.m('primary') : '',\n])\n\nconst mergedPlacement = computed(\n  () => currentStep.value?.placement || props.placement\n)\n\nconst mergedContentStyle = computed(\n  () => currentStep.value?.contentStyle ?? props.contentStyle\n)\n\nconst mergedMask = computed(() => currentStep.value?.mask ?? props.mask)\nconst mergedShowMask = computed(() => !!mergedMask.value && props.modelValue)\nconst mergedMaskStyle = computed(() =>\n  isBoolean(mergedMask.value) ? undefined : mergedMask.value\n)\n\nconst mergedShowArrow = computed(\n  () =>\n    !!currentTarget.value && (currentStep.value?.showArrow ?? props.showArrow)\n)\n\nconst mergedScrollIntoViewOptions = computed(\n  () => currentStep.value?.scrollIntoViewOptions ?? props.scrollIntoViewOptions\n)\nconst mergedType = computed(() => currentStep.value?.type ?? props.type)\n\nconst { nextZIndex } = useZIndex()\nconst nowZIndex = nextZIndex()\nconst mergedZIndex = computed(() => props.zIndex ?? nowZIndex)\n\nconst { mergedPosInfo: pos, triggerTarget } = useTarget(\n  currentTarget,\n  toRef(props, 'modelValue'),\n  toRef(props, 'gap'),\n  mergedMask,\n  mergedScrollIntoViewOptions\n)\n\nwatch(\n  () => props.modelValue,\n  (val) => {\n    if (!val) {\n      current.value = 0\n    }\n  }\n)\n\nconst onEscClose = () => {\n  if (props.closeOnPressEscape) {\n    emit(UPDATE_MODEL_EVENT, false)\n    emit('close', current.value)\n  }\n}\n\nconst onUpdateTotal = (val: number) => {\n  total.value = val\n}\n\nconst slots = useSlots()\n\nprovide(tourKey, {\n  currentStep,\n  current,\n  total,\n  showClose: toRef(props, 'showClose'),\n  closeIcon: toRef(props, 'closeIcon'),\n  mergedType,\n  ns,\n  slots,\n  updateModelValue(modelValue) {\n    emit(UPDATE_MODEL_EVENT, modelValue)\n  },\n  onClose() {\n    emit('close', current.value)\n  },\n  onFinish() {\n    emit('finish')\n  },\n  onChange() {\n    emit(CHANGE_EVENT, current.value)\n  },\n})\n</script>\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n} from '@pit-element-plus/utils'\nimport { tourContentProps } from './content'\n\nimport type { CSSProperties, ExtractPublicPropTypes } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type { TourBtnProps, TourMask } from './types'\nimport type { TourContentProps } from './content'\n\nexport interface TourStepProps {\n  /**\n   * @description get the element the guide card points to. empty makes it show in center of screen\n   */\n  target?: string | HTMLElement | (() => HTMLElement | null) | null\n  /**\n   * @description the title of the tour content\n   */\n  title?: string\n  /**\n   * @description description\n   */\n  description?: string\n  /**\n   * @description whether to show a close button\n   */\n  showClose?: boolean\n  /**\n   * @description custom close icon, default is Close\n   */\n  closeIcon?: IconPropType\n  /**\n   * @description whether to show the arrow\n   */\n  showArrow?: boolean\n  /**\n   * @description position of the guide card relative to the target element\n   */\n  placement?: TourContentProps['placement']\n  /**\n   * @description whether to enable masking, change mask style and fill color by pass custom props\n   */\n  mask?: TourMask\n  /**\n   * @description custom style for content\n   */\n  contentStyle?: CSSProperties\n  /**\n   * @description properties of the previous button\n   */\n  prevButtonProps?: TourBtnProps\n  /**\n   * @description properties of the Next button\n   */\n  nextButtonProps?: TourBtnProps\n  /**\n   * @description support pass custom scrollIntoView options\n   */\n  scrollIntoViewOptions?: boolean | ScrollIntoViewOptions\n  /**\n   * @description type, affects the background color and text color\n   */\n  type?: 'default' | 'primary'\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TourStepProps` instead.\n */\nexport const tourStepProps = buildProps({\n  /**\n   * @description get the element the guide card points to. empty makes it show in center of screen\n   */\n  target: {\n    type: definePropType<\n      string | HTMLElement | (() => HTMLElement | null) | null\n    >([String, Object, Function]),\n  },\n  /**\n   * @description the title of the tour content\n   */\n  title: String,\n  /**\n   * @description description\n   */\n  description: String,\n  /**\n   * @description whether to show a close button\n   */\n  showClose: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description custom close icon, default is Close\n   */\n  closeIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description whether to show the arrow\n   */\n  showArrow: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description position of the guide card relative to the target element\n   */\n  placement: tourContentProps.placement,\n  /**\n   * @description whether to enable masking, change mask style and fill color by pass custom props\n   */\n  mask: {\n    type: definePropType<TourMask>([Boolean, Object]),\n    default: undefined,\n  },\n  /**\n   * @description custom style for content\n   */\n  contentStyle: {\n    type: definePropType<CSSProperties>([Object]),\n  },\n  /**\n   * @description properties of the previous button\n   */\n  prevButtonProps: {\n    type: definePropType<TourBtnProps>(Object),\n  },\n  /**\n   * @description properties of the Next button\n   */\n  nextButtonProps: {\n    type: definePropType<TourBtnProps>(Object),\n  },\n  /**\n   * @description support pass custom scrollIntoView options\n   */\n  scrollIntoViewOptions: {\n    type: definePropType<boolean | ScrollIntoViewOptions>([Boolean, Object]),\n    default: undefined,\n  },\n  /**\n   * @description type, affects the background color and text color\n   */\n  type: {\n    type: definePropType<'default' | 'primary'>(String),\n  },\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `TourStepProps` instead.\n */\nexport type TourStepPropsPublic = ExtractPublicPropTypes<typeof tourStepProps>\n\nexport const tourStepEmits = {\n  close: () => true,\n}\nexport type TourStepEmits = typeof tourStepEmits\n","<template>\n  <button\n    v-if=\"mergedShowClose\"\n    :aria-label=\"t('el.tour.close')\"\n    :class=\"ns.e('closebtn')\"\n    type=\"button\"\n    @click=\"onClose\"\n  >\n    <el-icon :class=\"ns.e('close')\">\n      <component :is=\"mergedCloseIcon\" />\n    </el-icon>\n  </button>\n  <header :class=\"[ns.e('header'), { 'show-close': showClose }]\">\n    <slot name=\"header\">\n      <span role=\"heading\" :class=\"ns.e('title')\">\n        {{ title }}\n      </span>\n    </slot>\n  </header>\n  <div :class=\"ns.e('body')\">\n    <slot>\n      <span>{{ description }}</span>\n    </slot>\n  </div>\n  <footer :class=\"ns.e('footer')\">\n    <div :class=\"ns.b('indicators')\">\n      <component\n        :is=\"tourSlots.indicators\"\n        v-if=\"tourSlots.indicators\"\n        :current=\"current\"\n        :total=\"total\"\n      />\n      <template v-else>\n        <span\n          v-for=\"(item, index) in total\"\n          :key=\"item\"\n          :class=\"[ns.b('indicator'), ns.is('active', index === current)]\"\n        />\n      </template>\n    </div>\n    <div :class=\"ns.b('buttons')\">\n      <el-button\n        v-if=\"current > 0\"\n        size=\"small\"\n        :type=\"mergedType\"\n        v-bind=\"filterButtonProps(prevButtonProps)\"\n        @click=\"onPrev\"\n      >\n        {{ prevButtonProps?.children ?? t('el.tour.previous') }}\n      </el-button>\n      <el-button\n        v-if=\"current <= total - 1\"\n        size=\"small\"\n        :type=\"mergedType === 'primary' ? 'default' : 'primary'\"\n        v-bind=\"filterButtonProps(nextButtonProps)\"\n        @click=\"onNext\"\n      >\n        {{\n          nextButtonProps?.children ??\n          (current === total - 1 ? t('el.tour.finish') : t('el.tour.next'))\n        }}\n      </el-button>\n    </div>\n  </footer>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { omit } from 'lodash-unified'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { CloseComponents, getEventCode } from '@pit-element-plus/utils'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { tourStepEmits } from './step'\nimport { tourKey } from './helper'\n\nimport type { TourBtnProps } from './types'\nimport type { TourStepProps } from './step'\n\ndefineOptions({\n  name: 'ElTourStep',\n})\n\nconst props = withDefaults(defineProps<TourStepProps>(), {\n  showClose: undefined,\n  showArrow: undefined,\n  placement: 'bottom',\n  mask: undefined,\n  scrollIntoViewOptions: undefined,\n})\nconst emit = defineEmits(tourStepEmits)\n\nconst { Close } = CloseComponents\n\nconst { t } = useLocale()\n\nconst {\n  currentStep,\n  current,\n  total,\n  showClose,\n  closeIcon,\n  mergedType,\n  ns,\n  slots: tourSlots,\n  updateModelValue,\n  onClose: tourOnClose,\n  onFinish: tourOnFinish,\n  onChange,\n} = inject(tourKey)!\n\nwatch(\n  props,\n  (val) => {\n    currentStep.value = val\n  },\n  {\n    immediate: true,\n  }\n)\n\nconst mergedShowClose = computed(() => props.showClose ?? showClose.value)\nconst mergedCloseIcon = computed(\n  () => props.closeIcon ?? closeIcon.value ?? Close\n)\n\nconst filterButtonProps = (btnProps?: TourBtnProps) => {\n  if (!btnProps) return\n  return omit(btnProps, ['children', 'onClick'])\n}\n\nconst onPrev = () => {\n  current.value -= 1\n  if (props.prevButtonProps?.onClick) {\n    props.prevButtonProps?.onClick()\n  }\n  onChange()\n}\n\nconst onNext = () => {\n  if (current.value >= total.value - 1) {\n    onFinish()\n  } else {\n    current.value += 1\n  }\n  if (props.nextButtonProps?.onClick) {\n    props.nextButtonProps.onClick()\n  }\n  onChange()\n}\n\nconst onFinish = () => {\n  onClose()\n  tourOnFinish()\n}\n\nconst onClose = () => {\n  updateModelValue(false)\n  tourOnClose()\n  emit('close')\n}\n\nconst handleKeydown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement | null\n  if (target?.isContentEditable) return\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.left:\n      e.preventDefault()\n      current.value > 0 && onPrev()\n      break\n    case EVENT_CODE.right:\n      e.preventDefault()\n      onNext()\n      break\n  }\n}\n\nonMounted(() => {\n  window.addEventListener('keydown', handleKeydown)\n})\n\nonBeforeUnmount(() => {\n  window.removeEventListener('keydown', handleKeydown)\n})\n</script>\n","<template>\n  <button\n    v-if=\"mergedShowClose\"\n    :aria-label=\"t('el.tour.close')\"\n    :class=\"ns.e('closebtn')\"\n    type=\"button\"\n    @click=\"onClose\"\n  >\n    <el-icon :class=\"ns.e('close')\">\n      <component :is=\"mergedCloseIcon\" />\n    </el-icon>\n  </button>\n  <header :class=\"[ns.e('header'), { 'show-close': showClose }]\">\n    <slot name=\"header\">\n      <span role=\"heading\" :class=\"ns.e('title')\">\n        {{ title }}\n      </span>\n    </slot>\n  </header>\n  <div :class=\"ns.e('body')\">\n    <slot>\n      <span>{{ description }}</span>\n    </slot>\n  </div>\n  <footer :class=\"ns.e('footer')\">\n    <div :class=\"ns.b('indicators')\">\n      <component\n        :is=\"tourSlots.indicators\"\n        v-if=\"tourSlots.indicators\"\n        :current=\"current\"\n        :total=\"total\"\n      />\n      <template v-else>\n        <span\n          v-for=\"(item, index) in total\"\n          :key=\"item\"\n          :class=\"[ns.b('indicator'), ns.is('active', index === current)]\"\n        />\n      </template>\n    </div>\n    <div :class=\"ns.b('buttons')\">\n      <el-button\n        v-if=\"current > 0\"\n        size=\"small\"\n        :type=\"mergedType\"\n        v-bind=\"filterButtonProps(prevButtonProps)\"\n        @click=\"onPrev\"\n      >\n        {{ prevButtonProps?.children ?? t('el.tour.previous') }}\n      </el-button>\n      <el-button\n        v-if=\"current <= total - 1\"\n        size=\"small\"\n        :type=\"mergedType === 'primary' ? 'default' : 'primary'\"\n        v-bind=\"filterButtonProps(nextButtonProps)\"\n        @click=\"onNext\"\n      >\n        {{\n          nextButtonProps?.children ??\n          (current === total - 1 ? t('el.tour.finish') : t('el.tour.next'))\n        }}\n      </el-button>\n    </div>\n  </footer>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { omit } from 'lodash-unified'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { CloseComponents, getEventCode } from '@pit-element-plus/utils'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { tourStepEmits } from './step'\nimport { tourKey } from './helper'\n\nimport type { TourBtnProps } from './types'\nimport type { TourStepProps } from './step'\n\ndefineOptions({\n  name: 'ElTourStep',\n})\n\nconst props = withDefaults(defineProps<TourStepProps>(), {\n  showClose: undefined,\n  showArrow: undefined,\n  placement: 'bottom',\n  mask: undefined,\n  scrollIntoViewOptions: undefined,\n})\nconst emit = defineEmits(tourStepEmits)\n\nconst { Close } = CloseComponents\n\nconst { t } = useLocale()\n\nconst {\n  currentStep,\n  current,\n  total,\n  showClose,\n  closeIcon,\n  mergedType,\n  ns,\n  slots: tourSlots,\n  updateModelValue,\n  onClose: tourOnClose,\n  onFinish: tourOnFinish,\n  onChange,\n} = inject(tourKey)!\n\nwatch(\n  props,\n  (val) => {\n    currentStep.value = val\n  },\n  {\n    immediate: true,\n  }\n)\n\nconst mergedShowClose = computed(() => props.showClose ?? showClose.value)\nconst mergedCloseIcon = computed(\n  () => props.closeIcon ?? closeIcon.value ?? Close\n)\n\nconst filterButtonProps = (btnProps?: TourBtnProps) => {\n  if (!btnProps) return\n  return omit(btnProps, ['children', 'onClick'])\n}\n\nconst onPrev = () => {\n  current.value -= 1\n  if (props.prevButtonProps?.onClick) {\n    props.prevButtonProps?.onClick()\n  }\n  onChange()\n}\n\nconst onNext = () => {\n  if (current.value >= total.value - 1) {\n    onFinish()\n  } else {\n    current.value += 1\n  }\n  if (props.nextButtonProps?.onClick) {\n    props.nextButtonProps.onClick()\n  }\n  onChange()\n}\n\nconst onFinish = () => {\n  onClose()\n  tourOnFinish()\n}\n\nconst onClose = () => {\n  updateModelValue(false)\n  tourOnClose()\n  emit('close')\n}\n\nconst handleKeydown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement | null\n  if (target?.isContentEditable) return\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.left:\n      e.preventDefault()\n      current.value > 0 && onPrev()\n      break\n    case EVENT_CODE.right:\n      e.preventDefault()\n      onNext()\n      break\n  }\n}\n\nonMounted(() => {\n  window.addEventListener('keydown', handleKeydown)\n})\n\nonBeforeUnmount(() => {\n  window.removeEventListener('keydown', handleKeydown)\n})\n</script>\n","<template>\n  <button\n    v-if=\"mergedShowClose\"\n    :aria-label=\"t('el.tour.close')\"\n    :class=\"ns.e('closebtn')\"\n    type=\"button\"\n    @click=\"onClose\"\n  >\n    <el-icon :class=\"ns.e('close')\">\n      <component :is=\"mergedCloseIcon\" />\n    </el-icon>\n  </button>\n  <header :class=\"[ns.e('header'), { 'show-close': showClose }]\">\n    <slot name=\"header\">\n      <span role=\"heading\" :class=\"ns.e('title')\">\n        {{ title }}\n      </span>\n    </slot>\n  </header>\n  <div :class=\"ns.e('body')\">\n    <slot>\n      <span>{{ description }}</span>\n    </slot>\n  </div>\n  <footer :class=\"ns.e('footer')\">\n    <div :class=\"ns.b('indicators')\">\n      <component\n        :is=\"tourSlots.indicators\"\n        v-if=\"tourSlots.indicators\"\n        :current=\"current\"\n        :total=\"total\"\n      />\n      <template v-else>\n        <span\n          v-for=\"(item, index) in total\"\n          :key=\"item\"\n          :class=\"[ns.b('indicator'), ns.is('active', index === current)]\"\n        />\n      </template>\n    </div>\n    <div :class=\"ns.b('buttons')\">\n      <el-button\n        v-if=\"current > 0\"\n        size=\"small\"\n        :type=\"mergedType\"\n        v-bind=\"filterButtonProps(prevButtonProps)\"\n        @click=\"onPrev\"\n      >\n        {{ prevButtonProps?.children ?? t('el.tour.previous') }}\n      </el-button>\n      <el-button\n        v-if=\"current <= total - 1\"\n        size=\"small\"\n        :type=\"mergedType === 'primary' ? 'default' : 'primary'\"\n        v-bind=\"filterButtonProps(nextButtonProps)\"\n        @click=\"onNext\"\n      >\n        {{\n          nextButtonProps?.children ??\n          (current === total - 1 ? t('el.tour.finish') : t('el.tour.next'))\n        }}\n      </el-button>\n    </div>\n  </footer>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { omit } from 'lodash-unified'\nimport { ElButton } from '@pit-element-plus/components/button'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { CloseComponents, getEventCode } from '@pit-element-plus/utils'\nimport { useLocale } from '@pit-element-plus/hooks'\nimport { tourStepEmits } from './step'\nimport { tourKey } from './helper'\n\nimport type { TourBtnProps } from './types'\nimport type { TourStepProps } from './step'\n\ndefineOptions({\n  name: 'ElTourStep',\n})\n\nconst props = withDefaults(defineProps<TourStepProps>(), {\n  showClose: undefined,\n  showArrow: undefined,\n  placement: 'bottom',\n  mask: undefined,\n  scrollIntoViewOptions: undefined,\n})\nconst emit = defineEmits(tourStepEmits)\n\nconst { Close } = CloseComponents\n\nconst { t } = useLocale()\n\nconst {\n  currentStep,\n  current,\n  total,\n  showClose,\n  closeIcon,\n  mergedType,\n  ns,\n  slots: tourSlots,\n  updateModelValue,\n  onClose: tourOnClose,\n  onFinish: tourOnFinish,\n  onChange,\n} = inject(tourKey)!\n\nwatch(\n  props,\n  (val) => {\n    currentStep.value = val\n  },\n  {\n    immediate: true,\n  }\n)\n\nconst mergedShowClose = computed(() => props.showClose ?? showClose.value)\nconst mergedCloseIcon = computed(\n  () => props.closeIcon ?? closeIcon.value ?? Close\n)\n\nconst filterButtonProps = (btnProps?: TourBtnProps) => {\n  if (!btnProps) return\n  return omit(btnProps, ['children', 'onClick'])\n}\n\nconst onPrev = () => {\n  current.value -= 1\n  if (props.prevButtonProps?.onClick) {\n    props.prevButtonProps?.onClick()\n  }\n  onChange()\n}\n\nconst onNext = () => {\n  if (current.value >= total.value - 1) {\n    onFinish()\n  } else {\n    current.value += 1\n  }\n  if (props.nextButtonProps?.onClick) {\n    props.nextButtonProps.onClick()\n  }\n  onChange()\n}\n\nconst onFinish = () => {\n  onClose()\n  tourOnFinish()\n}\n\nconst onClose = () => {\n  updateModelValue(false)\n  tourOnClose()\n  emit('close')\n}\n\nconst handleKeydown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement | null\n  if (target?.isContentEditable) return\n  const code = getEventCode(e)\n\n  switch (code) {\n    case EVENT_CODE.left:\n      e.preventDefault()\n      current.value > 0 && onPrev()\n      break\n    case EVENT_CODE.right:\n      e.preventDefault()\n      onNext()\n      break\n  }\n}\n\nonMounted(() => {\n  window.addEventListener('keydown', handleKeydown)\n})\n\nonBeforeUnmount(() => {\n  window.removeEventListener('keydown', handleKeydown)\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Tour from './src/tour.vue'\nimport TourStep from './src/step.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElTour: SFCWithInstall<typeof Tour> & {\n  TourStep: typeof TourStep\n} = withInstall(Tour, {\n  TourStep,\n})\nexport const ElTourStep: SFCWithInstall<typeof TourStep> =\n  withNoopInstall(TourStep)\nexport default ElTour\n\nexport * from './src/tour'\nexport * from './src/step'\nexport * from './src/content'\nexport type { TourMask, TourGap, TourBtnProps } from './src/types'\n","import {\n  buildProps,\n  definePropType,\n  isString,\n  isUndefined,\n} from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Anchor from './anchor.vue'\n\nexport interface AnchorProps {\n  /**\n   * @description scroll container\n   */\n  container?: string | HTMLElement | Window | null\n  /**\n   * @description Set the offset of the anchor scroll\n   */\n  offset?: number\n  /**\n   * @description The offset of the element starting to trigger the anchor\n   */\n  bound?: number\n  /**\n   * @description Set the scroll duration of the container when the anchor is clicked, in milliseconds\n   */\n  duration?: number\n  /**\n   * @description Whether to show the marker\n   */\n  marker?: boolean\n  /**\n   * @description Set Anchor type\n   */\n  type?: 'default' | 'underline'\n  /**\n   * @description Set Anchor direction\n   */\n  direction?: 'vertical' | 'horizontal'\n  /**\n   * @description Scroll whether link is selected at the top\n   */\n  selectScrollTop?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `AnchorProps` instead.\n */\nexport const anchorProps = buildProps({\n  /**\n   * @description scroll container\n   */\n  container: {\n    type: definePropType<string | HTMLElement | Window | null>([\n      String,\n      Object,\n    ]),\n  },\n  /**\n   * @description Set the offset of the anchor scroll\n   */\n  offset: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description The offset of the element starting to trigger the anchor\n   */\n  bound: {\n    type: Number,\n    default: 15,\n  },\n  /**\n   * @description Set the scroll duration of the container when the anchor is clicked, in milliseconds\n   */\n  duration: {\n    type: Number,\n    default: 300,\n  },\n  /**\n   * @description Whether to show the marker\n   */\n  marker: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Set Anchor type\n   */\n  type: {\n    type: definePropType<'default' | 'underline'>(String),\n    default: 'default',\n  },\n  /**\n   * @description Set Anchor direction\n   */\n  direction: {\n    type: definePropType<'vertical' | 'horizontal'>(String),\n    default: 'vertical',\n  },\n  /**\n   * @description Scroll whether link is selected at the top\n   */\n  selectScrollTop: Boolean,\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `AnchorProps` instead.\n */\nexport type AnchorPropsPublic = ExtractPublicPropTypes<typeof anchorProps>\nexport type AnchorInstance = InstanceType<typeof Anchor> & unknown\n\nexport const anchorEmits = {\n  change: (href: string) => isString(href),\n  click: (e: MouseEvent, href?: string) =>\n    e instanceof MouseEvent && (isString(href) || isUndefined(href)),\n}\nexport type AnchorEmits = typeof anchorEmits\n","import type { InjectionKey, Ref } from 'vue'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\n\nexport interface AnchorLinkState {\n  el: HTMLElement\n  href: string\n}\n\nexport interface AnchorContext {\n  ns: UseNamespaceReturn\n  direction: string\n  currentAnchor: Ref<string>\n  addLink(state: AnchorLinkState): void\n  removeLink(href: string): void\n  handleClick(e: MouseEvent, href?: string): void\n}\n\nexport const anchorKey: InjectionKey<AnchorContext> = Symbol('anchor')\n","<template>\n  <div ref=\"anchorRef\" :class=\"cls\">\n    <div\n      v-if=\"marker\"\n      ref=\"markerRef\"\n      :class=\"ns.e('marker')\"\n      :style=\"markerStyle\"\n    />\n    <div :class=\"ns.e('list')\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  provide,\n  ref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  animateScrollTo,\n  getElement,\n  getOffsetTopDistance,\n  getScrollElement,\n  getScrollTop,\n  isUndefined,\n  isWindow,\n  throttleByRaf,\n} from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { anchorEmits } from './anchor'\nimport { anchorKey } from './constants'\n\nimport type { CSSProperties } from 'vue'\nimport type { AnchorProps } from './anchor'\nimport type { AnchorLinkState } from './constants'\n\ndefineOptions({\n  name: 'ElAnchor',\n})\n\nconst props = withDefaults(defineProps<AnchorProps>(), {\n  offset: 0,\n  bound: 15,\n  duration: 300,\n  marker: true,\n  type: 'default',\n  direction: 'vertical',\n})\nconst emit = defineEmits(anchorEmits)\nconst slots = useSlots()\n\nconst currentAnchor = ref('')\nconst markerStyle = ref<CSSProperties>({})\nconst anchorRef = ref<HTMLElement | null>(null)\nconst markerRef = ref<HTMLElement | null>(null)\nconst containerEl = ref<HTMLElement | Window>()\n\nconst links: Record<string, HTMLElement> = {}\nlet isScrolling = false\nlet currentScrollTop = 0\n\nconst ns = useNamespace('anchor')\n\nconst cls = computed(() => [\n  ns.b(),\n  props.type === 'underline' ? ns.m('underline') : '',\n  ns.m(props.direction),\n])\n\nconst addLink = (state: AnchorLinkState) => {\n  links[state.href] = state.el\n}\n\nconst removeLink = (href: string) => {\n  delete links[href]\n}\n\nconst setCurrentAnchor = (href: string) => {\n  const activeHref = currentAnchor.value\n  if (activeHref !== href) {\n    currentAnchor.value = href\n    emit(CHANGE_EVENT, href)\n  }\n}\n\nlet clearAnimate: (() => void) | null = null\nlet currentTargetHref = ''\n\nconst scrollToAnchor = (href: string) => {\n  if (!containerEl.value) return\n  const target = getElement(href)\n  if (!target) return\n\n  if (clearAnimate) {\n    if (currentTargetHref === href) return\n    clearAnimate()\n  }\n\n  currentTargetHref = href\n  isScrolling = true\n  const scrollEle = getScrollElement(target, containerEl.value)\n  const distance = getOffsetTopDistance(target, scrollEle)\n  const max = scrollEle.scrollHeight - scrollEle.clientHeight\n  const to = Math.min(distance - props.offset, max)\n  clearAnimate = animateScrollTo(\n    containerEl.value,\n    currentScrollTop,\n    to,\n    props.duration,\n    () => {\n      // make sure it is executed after throttleByRaf's handleScroll\n      setTimeout(() => {\n        isScrolling = false\n        currentTargetHref = ''\n      }, 20)\n    }\n  )\n}\n\nconst scrollTo = (href?: string) => {\n  if (href) {\n    setCurrentAnchor(href)\n    scrollToAnchor(href)\n  }\n}\n\nconst handleClick = (e: MouseEvent, href?: string) => {\n  emit('click', e, href)\n  scrollTo(href)\n}\n\nconst handleScroll = throttleByRaf(() => {\n  if (containerEl.value) {\n    currentScrollTop = getScrollTop(containerEl.value)\n  }\n  const currentHref = getCurrentHref()\n  if (isScrolling || isUndefined(currentHref)) return\n  setCurrentAnchor(currentHref)\n})\n\nconst getCurrentHref = () => {\n  if (!containerEl.value) return\n  const scrollTop = getScrollTop(containerEl.value)\n  const anchorTopList: { top: number; href: string }[] = []\n\n  for (const href of Object.keys(links)) {\n    const target = getElement(href)\n    if (!target) continue\n    const scrollEle = getScrollElement(target, containerEl.value)\n    const distance = getOffsetTopDistance(target, scrollEle)\n    anchorTopList.push({\n      top: distance - props.offset - props.bound,\n      href,\n    })\n  }\n  anchorTopList.sort((prev, next) => prev.top - next.top)\n  for (let i = 0; i < anchorTopList.length; i++) {\n    const item = anchorTopList[i]\n    const next = anchorTopList[i + 1]\n\n    if (i === 0 && scrollTop === 0) {\n      return props.selectScrollTop ? item.href : ''\n    }\n    if (item.top <= scrollTop && (!next || next.top > scrollTop)) {\n      return item.href\n    }\n  }\n}\n\nconst getContainer = () => {\n  const el = getElement(props.container)\n  if (!el || isWindow(el)) {\n    containerEl.value = window\n  } else {\n    containerEl.value = el\n  }\n}\n\nuseEventListener(containerEl, 'scroll', handleScroll)\n\nconst updateMarkerStyle = () => {\n  nextTick(() => {\n    if (!anchorRef.value || !markerRef.value || !currentAnchor.value) {\n      markerStyle.value = {}\n      return\n    }\n    const currentLinkEl = links[currentAnchor.value]\n    if (!currentLinkEl) {\n      markerStyle.value = {}\n      return\n    }\n    const anchorRect = anchorRef.value.getBoundingClientRect()\n    const markerRect = markerRef.value.getBoundingClientRect()\n    const linkRect = currentLinkEl.getBoundingClientRect()\n\n    if (props.direction === 'horizontal') {\n      const left = linkRect.left - anchorRect.left\n      markerStyle.value = {\n        left: `${left}px`,\n        width: `${linkRect.width}px`,\n        opacity: 1,\n      }\n    } else {\n      const top =\n        linkRect.top -\n        anchorRect.top +\n        (linkRect.height - markerRect.height) / 2\n      markerStyle.value = {\n        top: `${top}px`,\n        opacity: 1,\n      }\n    }\n  })\n}\n\nwatch(currentAnchor, updateMarkerStyle)\nwatch(() => slots.default?.(), updateMarkerStyle)\n\nonMounted(() => {\n  getContainer()\n  const hash = decodeURIComponent(window.location.hash)\n  const target = getElement(hash)\n  if (target) {\n    scrollTo(hash)\n  } else {\n    handleScroll()\n  }\n})\n\nwatch(\n  () => props.container,\n  () => {\n    getContainer()\n  }\n)\n\nprovide(anchorKey, {\n  ns,\n  direction: props.direction,\n  currentAnchor,\n  addLink,\n  removeLink,\n  handleClick,\n})\n\ndefineExpose({\n  scrollTo,\n})\n</script>\n","<template>\n  <div ref=\"anchorRef\" :class=\"cls\">\n    <div\n      v-if=\"marker\"\n      ref=\"markerRef\"\n      :class=\"ns.e('marker')\"\n      :style=\"markerStyle\"\n    />\n    <div :class=\"ns.e('list')\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  provide,\n  ref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  animateScrollTo,\n  getElement,\n  getOffsetTopDistance,\n  getScrollElement,\n  getScrollTop,\n  isUndefined,\n  isWindow,\n  throttleByRaf,\n} from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { anchorEmits } from './anchor'\nimport { anchorKey } from './constants'\n\nimport type { CSSProperties } from 'vue'\nimport type { AnchorProps } from './anchor'\nimport type { AnchorLinkState } from './constants'\n\ndefineOptions({\n  name: 'ElAnchor',\n})\n\nconst props = withDefaults(defineProps<AnchorProps>(), {\n  offset: 0,\n  bound: 15,\n  duration: 300,\n  marker: true,\n  type: 'default',\n  direction: 'vertical',\n})\nconst emit = defineEmits(anchorEmits)\nconst slots = useSlots()\n\nconst currentAnchor = ref('')\nconst markerStyle = ref<CSSProperties>({})\nconst anchorRef = ref<HTMLElement | null>(null)\nconst markerRef = ref<HTMLElement | null>(null)\nconst containerEl = ref<HTMLElement | Window>()\n\nconst links: Record<string, HTMLElement> = {}\nlet isScrolling = false\nlet currentScrollTop = 0\n\nconst ns = useNamespace('anchor')\n\nconst cls = computed(() => [\n  ns.b(),\n  props.type === 'underline' ? ns.m('underline') : '',\n  ns.m(props.direction),\n])\n\nconst addLink = (state: AnchorLinkState) => {\n  links[state.href] = state.el\n}\n\nconst removeLink = (href: string) => {\n  delete links[href]\n}\n\nconst setCurrentAnchor = (href: string) => {\n  const activeHref = currentAnchor.value\n  if (activeHref !== href) {\n    currentAnchor.value = href\n    emit(CHANGE_EVENT, href)\n  }\n}\n\nlet clearAnimate: (() => void) | null = null\nlet currentTargetHref = ''\n\nconst scrollToAnchor = (href: string) => {\n  if (!containerEl.value) return\n  const target = getElement(href)\n  if (!target) return\n\n  if (clearAnimate) {\n    if (currentTargetHref === href) return\n    clearAnimate()\n  }\n\n  currentTargetHref = href\n  isScrolling = true\n  const scrollEle = getScrollElement(target, containerEl.value)\n  const distance = getOffsetTopDistance(target, scrollEle)\n  const max = scrollEle.scrollHeight - scrollEle.clientHeight\n  const to = Math.min(distance - props.offset, max)\n  clearAnimate = animateScrollTo(\n    containerEl.value,\n    currentScrollTop,\n    to,\n    props.duration,\n    () => {\n      // make sure it is executed after throttleByRaf's handleScroll\n      setTimeout(() => {\n        isScrolling = false\n        currentTargetHref = ''\n      }, 20)\n    }\n  )\n}\n\nconst scrollTo = (href?: string) => {\n  if (href) {\n    setCurrentAnchor(href)\n    scrollToAnchor(href)\n  }\n}\n\nconst handleClick = (e: MouseEvent, href?: string) => {\n  emit('click', e, href)\n  scrollTo(href)\n}\n\nconst handleScroll = throttleByRaf(() => {\n  if (containerEl.value) {\n    currentScrollTop = getScrollTop(containerEl.value)\n  }\n  const currentHref = getCurrentHref()\n  if (isScrolling || isUndefined(currentHref)) return\n  setCurrentAnchor(currentHref)\n})\n\nconst getCurrentHref = () => {\n  if (!containerEl.value) return\n  const scrollTop = getScrollTop(containerEl.value)\n  const anchorTopList: { top: number; href: string }[] = []\n\n  for (const href of Object.keys(links)) {\n    const target = getElement(href)\n    if (!target) continue\n    const scrollEle = getScrollElement(target, containerEl.value)\n    const distance = getOffsetTopDistance(target, scrollEle)\n    anchorTopList.push({\n      top: distance - props.offset - props.bound,\n      href,\n    })\n  }\n  anchorTopList.sort((prev, next) => prev.top - next.top)\n  for (let i = 0; i < anchorTopList.length; i++) {\n    const item = anchorTopList[i]\n    const next = anchorTopList[i + 1]\n\n    if (i === 0 && scrollTop === 0) {\n      return props.selectScrollTop ? item.href : ''\n    }\n    if (item.top <= scrollTop && (!next || next.top > scrollTop)) {\n      return item.href\n    }\n  }\n}\n\nconst getContainer = () => {\n  const el = getElement(props.container)\n  if (!el || isWindow(el)) {\n    containerEl.value = window\n  } else {\n    containerEl.value = el\n  }\n}\n\nuseEventListener(containerEl, 'scroll', handleScroll)\n\nconst updateMarkerStyle = () => {\n  nextTick(() => {\n    if (!anchorRef.value || !markerRef.value || !currentAnchor.value) {\n      markerStyle.value = {}\n      return\n    }\n    const currentLinkEl = links[currentAnchor.value]\n    if (!currentLinkEl) {\n      markerStyle.value = {}\n      return\n    }\n    const anchorRect = anchorRef.value.getBoundingClientRect()\n    const markerRect = markerRef.value.getBoundingClientRect()\n    const linkRect = currentLinkEl.getBoundingClientRect()\n\n    if (props.direction === 'horizontal') {\n      const left = linkRect.left - anchorRect.left\n      markerStyle.value = {\n        left: `${left}px`,\n        width: `${linkRect.width}px`,\n        opacity: 1,\n      }\n    } else {\n      const top =\n        linkRect.top -\n        anchorRect.top +\n        (linkRect.height - markerRect.height) / 2\n      markerStyle.value = {\n        top: `${top}px`,\n        opacity: 1,\n      }\n    }\n  })\n}\n\nwatch(currentAnchor, updateMarkerStyle)\nwatch(() => slots.default?.(), updateMarkerStyle)\n\nonMounted(() => {\n  getContainer()\n  const hash = decodeURIComponent(window.location.hash)\n  const target = getElement(hash)\n  if (target) {\n    scrollTo(hash)\n  } else {\n    handleScroll()\n  }\n})\n\nwatch(\n  () => props.container,\n  () => {\n    getContainer()\n  }\n)\n\nprovide(anchorKey, {\n  ns,\n  direction: props.direction,\n  currentAnchor,\n  addLink,\n  removeLink,\n  handleClick,\n})\n\ndefineExpose({\n  scrollTo,\n})\n</script>\n","<template>\n  <div ref=\"anchorRef\" :class=\"cls\">\n    <div\n      v-if=\"marker\"\n      ref=\"markerRef\"\n      :class=\"ns.e('marker')\"\n      :style=\"markerStyle\"\n    />\n    <div :class=\"ns.e('list')\">\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  provide,\n  ref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport {\n  animateScrollTo,\n  getElement,\n  getOffsetTopDistance,\n  getScrollElement,\n  getScrollTop,\n  isUndefined,\n  isWindow,\n  throttleByRaf,\n} from '@pit-element-plus/utils'\nimport { CHANGE_EVENT } from '@pit-element-plus/constants'\nimport { anchorEmits } from './anchor'\nimport { anchorKey } from './constants'\n\nimport type { CSSProperties } from 'vue'\nimport type { AnchorProps } from './anchor'\nimport type { AnchorLinkState } from './constants'\n\ndefineOptions({\n  name: 'ElAnchor',\n})\n\nconst props = withDefaults(defineProps<AnchorProps>(), {\n  offset: 0,\n  bound: 15,\n  duration: 300,\n  marker: true,\n  type: 'default',\n  direction: 'vertical',\n})\nconst emit = defineEmits(anchorEmits)\nconst slots = useSlots()\n\nconst currentAnchor = ref('')\nconst markerStyle = ref<CSSProperties>({})\nconst anchorRef = ref<HTMLElement | null>(null)\nconst markerRef = ref<HTMLElement | null>(null)\nconst containerEl = ref<HTMLElement | Window>()\n\nconst links: Record<string, HTMLElement> = {}\nlet isScrolling = false\nlet currentScrollTop = 0\n\nconst ns = useNamespace('anchor')\n\nconst cls = computed(() => [\n  ns.b(),\n  props.type === 'underline' ? ns.m('underline') : '',\n  ns.m(props.direction),\n])\n\nconst addLink = (state: AnchorLinkState) => {\n  links[state.href] = state.el\n}\n\nconst removeLink = (href: string) => {\n  delete links[href]\n}\n\nconst setCurrentAnchor = (href: string) => {\n  const activeHref = currentAnchor.value\n  if (activeHref !== href) {\n    currentAnchor.value = href\n    emit(CHANGE_EVENT, href)\n  }\n}\n\nlet clearAnimate: (() => void) | null = null\nlet currentTargetHref = ''\n\nconst scrollToAnchor = (href: string) => {\n  if (!containerEl.value) return\n  const target = getElement(href)\n  if (!target) return\n\n  if (clearAnimate) {\n    if (currentTargetHref === href) return\n    clearAnimate()\n  }\n\n  currentTargetHref = href\n  isScrolling = true\n  const scrollEle = getScrollElement(target, containerEl.value)\n  const distance = getOffsetTopDistance(target, scrollEle)\n  const max = scrollEle.scrollHeight - scrollEle.clientHeight\n  const to = Math.min(distance - props.offset, max)\n  clearAnimate = animateScrollTo(\n    containerEl.value,\n    currentScrollTop,\n    to,\n    props.duration,\n    () => {\n      // make sure it is executed after throttleByRaf's handleScroll\n      setTimeout(() => {\n        isScrolling = false\n        currentTargetHref = ''\n      }, 20)\n    }\n  )\n}\n\nconst scrollTo = (href?: string) => {\n  if (href) {\n    setCurrentAnchor(href)\n    scrollToAnchor(href)\n  }\n}\n\nconst handleClick = (e: MouseEvent, href?: string) => {\n  emit('click', e, href)\n  scrollTo(href)\n}\n\nconst handleScroll = throttleByRaf(() => {\n  if (containerEl.value) {\n    currentScrollTop = getScrollTop(containerEl.value)\n  }\n  const currentHref = getCurrentHref()\n  if (isScrolling || isUndefined(currentHref)) return\n  setCurrentAnchor(currentHref)\n})\n\nconst getCurrentHref = () => {\n  if (!containerEl.value) return\n  const scrollTop = getScrollTop(containerEl.value)\n  const anchorTopList: { top: number; href: string }[] = []\n\n  for (const href of Object.keys(links)) {\n    const target = getElement(href)\n    if (!target) continue\n    const scrollEle = getScrollElement(target, containerEl.value)\n    const distance = getOffsetTopDistance(target, scrollEle)\n    anchorTopList.push({\n      top: distance - props.offset - props.bound,\n      href,\n    })\n  }\n  anchorTopList.sort((prev, next) => prev.top - next.top)\n  for (let i = 0; i < anchorTopList.length; i++) {\n    const item = anchorTopList[i]\n    const next = anchorTopList[i + 1]\n\n    if (i === 0 && scrollTop === 0) {\n      return props.selectScrollTop ? item.href : ''\n    }\n    if (item.top <= scrollTop && (!next || next.top > scrollTop)) {\n      return item.href\n    }\n  }\n}\n\nconst getContainer = () => {\n  const el = getElement(props.container)\n  if (!el || isWindow(el)) {\n    containerEl.value = window\n  } else {\n    containerEl.value = el\n  }\n}\n\nuseEventListener(containerEl, 'scroll', handleScroll)\n\nconst updateMarkerStyle = () => {\n  nextTick(() => {\n    if (!anchorRef.value || !markerRef.value || !currentAnchor.value) {\n      markerStyle.value = {}\n      return\n    }\n    const currentLinkEl = links[currentAnchor.value]\n    if (!currentLinkEl) {\n      markerStyle.value = {}\n      return\n    }\n    const anchorRect = anchorRef.value.getBoundingClientRect()\n    const markerRect = markerRef.value.getBoundingClientRect()\n    const linkRect = currentLinkEl.getBoundingClientRect()\n\n    if (props.direction === 'horizontal') {\n      const left = linkRect.left - anchorRect.left\n      markerStyle.value = {\n        left: `${left}px`,\n        width: `${linkRect.width}px`,\n        opacity: 1,\n      }\n    } else {\n      const top =\n        linkRect.top -\n        anchorRect.top +\n        (linkRect.height - markerRect.height) / 2\n      markerStyle.value = {\n        top: `${top}px`,\n        opacity: 1,\n      }\n    }\n  })\n}\n\nwatch(currentAnchor, updateMarkerStyle)\nwatch(() => slots.default?.(), updateMarkerStyle)\n\nonMounted(() => {\n  getContainer()\n  const hash = decodeURIComponent(window.location.hash)\n  const target = getElement(hash)\n  if (target) {\n    scrollTo(hash)\n  } else {\n    handleScroll()\n  }\n})\n\nwatch(\n  () => props.container,\n  () => {\n    getContainer()\n  }\n)\n\nprovide(anchorKey, {\n  ns,\n  direction: props.direction,\n  currentAnchor,\n  addLink,\n  removeLink,\n  handleClick,\n})\n\ndefineExpose({\n  scrollTo,\n})\n</script>\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\n\nexport interface AnchorLinkProps {\n  /**\n   * @description the text content of the anchor link\n   */\n  title?: string\n  /**\n   * @description The address of the anchor link\n   */\n  href?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `AnchorLinkProps` instead.\n */\nexport const anchorLinkProps = buildProps({\n  /**\n   * @description the text content of the anchor link\n   */\n  title: String,\n  /**\n   * @description The address of the anchor link\n   */\n  href: String,\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `AnchorLinkProps` instead.\n */\nexport type AnchorLinkPropsPublic = ExtractPublicPropTypes<\n  typeof anchorLinkProps\n>\n","<template>\n  <div :class=\"ns.e('item')\">\n    <a ref=\"linkRef\" :class=\"cls\" :href=\"href\" @click=\"handleClick\">\n      <slot>{{ title }}</slot>\n    </a>\n    <div\n      v-if=\"$slots['sub-link'] && direction === 'vertical'\"\n      :class=\"ns.e('list')\"\n    >\n      <slot name=\"sub-link\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport { anchorKey } from './constants'\n\nimport type { AnchorLinkProps } from './anchor-link'\n\ndefineOptions({\n  name: 'ElAnchorLink',\n})\n\nconst props = withDefaults(defineProps<AnchorLinkProps>(), {\n  href: undefined,\n})\n\nconst linkRef = ref<HTMLElement | null>(null)\n\nconst {\n  ns,\n  direction,\n  currentAnchor,\n  addLink,\n  removeLink,\n  handleClick: contextHandleClick,\n} = inject(anchorKey)!\n\nconst cls = computed(() => [\n  ns.e('link'),\n  ns.is('active', currentAnchor.value === props.href),\n])\n\nconst handleClick = (e: MouseEvent) => {\n  contextHandleClick(e, props.href)\n}\n\nwatch(\n  () => props.href,\n  (val, oldVal) => {\n    nextTick(() => {\n      if (oldVal) removeLink(oldVal)\n      if (val) {\n        addLink({\n          href: val,\n          el: linkRef.value!,\n        })\n      }\n    })\n  }\n)\n\nonMounted(() => {\n  const { href } = props\n  if (href) {\n    addLink({\n      href,\n      el: linkRef.value!,\n    })\n  }\n})\n\nonBeforeUnmount(() => {\n  const { href } = props\n  if (href) {\n    removeLink(href)\n  }\n})\n</script>\n","<template>\n  <div :class=\"ns.e('item')\">\n    <a ref=\"linkRef\" :class=\"cls\" :href=\"href\" @click=\"handleClick\">\n      <slot>{{ title }}</slot>\n    </a>\n    <div\n      v-if=\"$slots['sub-link'] && direction === 'vertical'\"\n      :class=\"ns.e('list')\"\n    >\n      <slot name=\"sub-link\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport { anchorKey } from './constants'\n\nimport type { AnchorLinkProps } from './anchor-link'\n\ndefineOptions({\n  name: 'ElAnchorLink',\n})\n\nconst props = withDefaults(defineProps<AnchorLinkProps>(), {\n  href: undefined,\n})\n\nconst linkRef = ref<HTMLElement | null>(null)\n\nconst {\n  ns,\n  direction,\n  currentAnchor,\n  addLink,\n  removeLink,\n  handleClick: contextHandleClick,\n} = inject(anchorKey)!\n\nconst cls = computed(() => [\n  ns.e('link'),\n  ns.is('active', currentAnchor.value === props.href),\n])\n\nconst handleClick = (e: MouseEvent) => {\n  contextHandleClick(e, props.href)\n}\n\nwatch(\n  () => props.href,\n  (val, oldVal) => {\n    nextTick(() => {\n      if (oldVal) removeLink(oldVal)\n      if (val) {\n        addLink({\n          href: val,\n          el: linkRef.value!,\n        })\n      }\n    })\n  }\n)\n\nonMounted(() => {\n  const { href } = props\n  if (href) {\n    addLink({\n      href,\n      el: linkRef.value!,\n    })\n  }\n})\n\nonBeforeUnmount(() => {\n  const { href } = props\n  if (href) {\n    removeLink(href)\n  }\n})\n</script>\n","<template>\n  <div :class=\"ns.e('item')\">\n    <a ref=\"linkRef\" :class=\"cls\" :href=\"href\" @click=\"handleClick\">\n      <slot>{{ title }}</slot>\n    </a>\n    <div\n      v-if=\"$slots['sub-link'] && direction === 'vertical'\"\n      :class=\"ns.e('list')\"\n    >\n      <slot name=\"sub-link\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport { anchorKey } from './constants'\n\nimport type { AnchorLinkProps } from './anchor-link'\n\ndefineOptions({\n  name: 'ElAnchorLink',\n})\n\nconst props = withDefaults(defineProps<AnchorLinkProps>(), {\n  href: undefined,\n})\n\nconst linkRef = ref<HTMLElement | null>(null)\n\nconst {\n  ns,\n  direction,\n  currentAnchor,\n  addLink,\n  removeLink,\n  handleClick: contextHandleClick,\n} = inject(anchorKey)!\n\nconst cls = computed(() => [\n  ns.e('link'),\n  ns.is('active', currentAnchor.value === props.href),\n])\n\nconst handleClick = (e: MouseEvent) => {\n  contextHandleClick(e, props.href)\n}\n\nwatch(\n  () => props.href,\n  (val, oldVal) => {\n    nextTick(() => {\n      if (oldVal) removeLink(oldVal)\n      if (val) {\n        addLink({\n          href: val,\n          el: linkRef.value!,\n        })\n      }\n    })\n  }\n)\n\nonMounted(() => {\n  const { href } = props\n  if (href) {\n    addLink({\n      href,\n      el: linkRef.value!,\n    })\n  }\n})\n\nonBeforeUnmount(() => {\n  const { href } = props\n  if (href) {\n    removeLink(href)\n  }\n})\n</script>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Anchor from './src/anchor.vue'\nimport AnchorLink from './src/anchor-link.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElAnchor: SFCWithInstall<typeof Anchor> & {\n  AnchorLink: typeof AnchorLink\n} = withInstall(Anchor, {\n  AnchorLink,\n})\nexport const ElAnchorLink: SFCWithInstall<typeof AnchorLink> =\n  withNoopInstall(AnchorLink)\nexport default ElAnchor\n\nexport * from './src/anchor'\n","import {\n  buildProps,\n  definePropType,\n  isBoolean,\n  isNumber,\n  isString,\n} from '@pit-element-plus/utils'\nimport { useAriaProps, useSizeProp } from '@pit-element-plus/hooks'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\n\nimport type { Option } from './types'\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type Segmented from './segmented.vue'\n\nexport interface Props {\n  label?: string\n  value?: string\n  disabled?: string\n}\n\nexport const defaultProps: Required<Props> = {\n  label: 'label',\n  value: 'value',\n  disabled: 'disabled',\n}\n\nexport interface SegmentedProps {\n  direction?: 'vertical' | 'horizontal'\n  /**\n   * @description options of segmented\n   */\n  options?: Option[]\n  /**\n   * @description binding value\n   */\n  modelValue?: string | number | boolean\n  /**\n   * @description configuration options, see the following table\n   */\n  props?: Props\n  /**\n   * @description fit width of parent content\n   */\n  block?: boolean\n  /**\n   * @description size of component\n   */\n  size?: ComponentSize\n  /**\n   * @description whether segmented is disabled\n   */\n  disabled?: boolean\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent?: boolean\n  /**\n   * @description native input id\n   */\n  id?: string\n  /**\n   * @description native `name` attribute\n   */\n  name?: string\n  /**\n   * @description native `aria-label` attribute\n   */\n  ariaLabel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `SegmentedProps` instead.\n */\nexport const segmentedProps = buildProps({\n  direction: {\n    type: definePropType<'vertical' | 'horizontal'>(String),\n    default: 'horizontal',\n  },\n  /**\n   * @description options of segmented\n   */\n  options: {\n    type: definePropType<Option[]>(Array),\n    default: () => [],\n  },\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: [String, Number, Boolean],\n    default: undefined,\n  },\n  /**\n   * @description configuration options, see the following table\n   */\n  props: {\n    type: definePropType<Props>(Object),\n    default: () => defaultProps,\n  },\n  /**\n   * @description fit width of parent content\n   */\n  block: Boolean,\n  /**\n   * @description size of component\n   */\n  size: useSizeProp,\n  /**\n   * @description whether segmented is disabled\n   */\n  disabled: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description native input id\n   */\n  id: String,\n  /**\n   * @description native `name` attribute\n   */\n  name: String,\n  ...useAriaProps(['ariaLabel']),\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `SegmentedProps` instead.\n */\nexport type SegmentedPropsPublic = ExtractPublicPropTypes<typeof segmentedProps>\n\nexport const segmentedEmits = {\n  [UPDATE_MODEL_EVENT]: (val: any) =>\n    isString(val) || isNumber(val) || isBoolean(val),\n  [CHANGE_EVENT]: (val: any) =>\n    isString(val) || isNumber(val) || isBoolean(val),\n}\nexport type SegmentedEmits = typeof segmentedEmits\n\nexport type SegmentedInstance = InstanceType<typeof Segmented> & unknown\n","<template>\n  <div\n    v-if=\"options.length\"\n    :id=\"inputId\"\n    ref=\"segmentedRef\"\n    :class=\"segmentedCls\"\n    role=\"radiogroup\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'segmented' : undefined\"\n    :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n  >\n    <div :class=\"[ns.e('group'), ns.m(direction)]\">\n      <div :style=\"selectedStyle\" :class=\"selectedCls\" />\n      <label\n        v-for=\"(item, index) in options\"\n        :key=\"index\"\n        :class=\"getItemCls(item)\"\n      >\n        <input\n          :class=\"ns.e('item-input')\"\n          type=\"radio\"\n          :name=\"name\"\n          :disabled=\"getDisabled(item)\"\n          :checked=\"getSelected(item)\"\n          @change=\"handleChange($event, item)\"\n        />\n        <div :class=\"ns.e('item-label')\">\n          <slot :item=\"intoAny(item)\">{{ getLabel(item) }}</slot>\n        </div>\n      </label>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useActiveElement, useResizeObserver } from '@vueuse/core'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { debugWarn, isObject } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { defaultProps, segmentedEmits } from './segmented'\n\nimport type { Option } from './types'\nimport type { SegmentedProps } from './segmented'\n\ndefineOptions({\n  name: 'ElSegmented',\n})\n\nconst props = withDefaults(defineProps<SegmentedProps>(), {\n  direction: 'horizontal',\n  options: () => [],\n  props: () => defaultProps,\n  validateEvent: true,\n  modelValue: undefined,\n  disabled: undefined,\n})\nconst emit = defineEmits(segmentedEmits)\n\nconst ns = useNamespace('segmented')\nconst segmentedId = useId()\nconst segmentedSize = useFormSize()\nconst _disabled = useFormDisabled()\nconst { formItem } = useFormItem()\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst segmentedRef = ref<HTMLElement | null>(null)\nconst activeElement = useActiveElement()\n\nconst state = reactive({\n  isInit: false,\n  width: 0,\n  height: 0,\n  translateX: 0,\n  translateY: 0,\n  focusVisible: false,\n})\n\nconst handleChange = (evt: Event, item: Option) => {\n  const value = getValue(item)\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(CHANGE_EVENT, value)\n  ;(evt.target as HTMLInputElement).checked = value === props.modelValue\n}\n\nconst aliasProps = computed(() => ({ ...defaultProps, ...props.props }))\n\n//FIXME: remove this when vue >=3.3\nconst intoAny = (item: any) => item\n\nconst getValue = (item: Option) => {\n  return isObject(item) ? item[aliasProps.value.value] : item\n}\n\nconst getLabel = (item: Option) => {\n  return isObject(item) ? item[aliasProps.value.label] : item\n}\n\nconst getDisabled = (item: Option | undefined) => {\n  return !!(\n    _disabled.value ||\n    (isObject(item) ? item[aliasProps.value.disabled] : false)\n  )\n}\n\nconst getSelected = (item: Option) => {\n  return props.modelValue === getValue(item)\n}\n\nconst getOption = (value: any) => {\n  return props.options.find((item) => getValue(item) === value)\n}\n\nconst getItemCls = (item: Option) => {\n  return [\n    ns.e('item'),\n    ns.is('selected', getSelected(item)),\n    ns.is('disabled', getDisabled(item)),\n  ]\n}\n\nconst updateSelect = () => {\n  if (!segmentedRef.value) return\n  const selectedItem = segmentedRef.value.querySelector(\n    '.is-selected'\n  ) as HTMLElement\n  const selectedItemInput = segmentedRef.value.querySelector(\n    '.is-selected input'\n  ) as HTMLElement\n  if (!selectedItem || !selectedItemInput) {\n    state.width = 0\n    state.height = 0\n    state.translateX = 0\n    state.translateY = 0\n    state.focusVisible = false\n    return\n  }\n  state.isInit = true\n  if (props.direction === 'vertical') {\n    state.height = selectedItem.offsetHeight\n    state.translateY = selectedItem.offsetTop\n  } else {\n    state.width = selectedItem.offsetWidth\n    state.translateX = selectedItem.offsetLeft\n  }\n  try {\n    // This will failed in test\n    state.focusVisible = selectedItemInput.matches(':focus-visible')\n  } catch {}\n}\n\nconst segmentedCls = computed(() => [\n  ns.b(),\n  ns.m(segmentedSize.value),\n  ns.is('block', props.block),\n])\n\nconst selectedStyle = computed(() => ({\n  width: props.direction === 'vertical' ? '100%' : `${state.width}px`,\n  height: props.direction === 'vertical' ? `${state.height}px` : '100%',\n  transform:\n    props.direction === 'vertical'\n      ? `translateY(${state.translateY}px)`\n      : `translateX(${state.translateX}px)`,\n  display: state.isInit ? 'block' : 'none',\n}))\n\nconst selectedCls = computed(() => [\n  ns.e('item-selected'),\n  ns.is('disabled', getDisabled(getOption(props.modelValue))),\n  ns.is('focus-visible', state.focusVisible),\n])\n\nconst name = computed(() => {\n  return props.name || segmentedId.value\n})\n\nuseResizeObserver(segmentedRef, updateSelect)\n\nwatch(activeElement, updateSelect)\n\nwatch(\n  () => props.modelValue,\n  () => {\n    updateSelect()\n    if (props.validateEvent) {\n      formItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  },\n  {\n    flush: 'post',\n  }\n)\n</script>\n","<template>\n  <div\n    v-if=\"options.length\"\n    :id=\"inputId\"\n    ref=\"segmentedRef\"\n    :class=\"segmentedCls\"\n    role=\"radiogroup\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'segmented' : undefined\"\n    :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n  >\n    <div :class=\"[ns.e('group'), ns.m(direction)]\">\n      <div :style=\"selectedStyle\" :class=\"selectedCls\" />\n      <label\n        v-for=\"(item, index) in options\"\n        :key=\"index\"\n        :class=\"getItemCls(item)\"\n      >\n        <input\n          :class=\"ns.e('item-input')\"\n          type=\"radio\"\n          :name=\"name\"\n          :disabled=\"getDisabled(item)\"\n          :checked=\"getSelected(item)\"\n          @change=\"handleChange($event, item)\"\n        />\n        <div :class=\"ns.e('item-label')\">\n          <slot :item=\"intoAny(item)\">{{ getLabel(item) }}</slot>\n        </div>\n      </label>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useActiveElement, useResizeObserver } from '@vueuse/core'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { debugWarn, isObject } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { defaultProps, segmentedEmits } from './segmented'\n\nimport type { Option } from './types'\nimport type { SegmentedProps } from './segmented'\n\ndefineOptions({\n  name: 'ElSegmented',\n})\n\nconst props = withDefaults(defineProps<SegmentedProps>(), {\n  direction: 'horizontal',\n  options: () => [],\n  props: () => defaultProps,\n  validateEvent: true,\n  modelValue: undefined,\n  disabled: undefined,\n})\nconst emit = defineEmits(segmentedEmits)\n\nconst ns = useNamespace('segmented')\nconst segmentedId = useId()\nconst segmentedSize = useFormSize()\nconst _disabled = useFormDisabled()\nconst { formItem } = useFormItem()\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst segmentedRef = ref<HTMLElement | null>(null)\nconst activeElement = useActiveElement()\n\nconst state = reactive({\n  isInit: false,\n  width: 0,\n  height: 0,\n  translateX: 0,\n  translateY: 0,\n  focusVisible: false,\n})\n\nconst handleChange = (evt: Event, item: Option) => {\n  const value = getValue(item)\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(CHANGE_EVENT, value)\n  ;(evt.target as HTMLInputElement).checked = value === props.modelValue\n}\n\nconst aliasProps = computed(() => ({ ...defaultProps, ...props.props }))\n\n//FIXME: remove this when vue >=3.3\nconst intoAny = (item: any) => item\n\nconst getValue = (item: Option) => {\n  return isObject(item) ? item[aliasProps.value.value] : item\n}\n\nconst getLabel = (item: Option) => {\n  return isObject(item) ? item[aliasProps.value.label] : item\n}\n\nconst getDisabled = (item: Option | undefined) => {\n  return !!(\n    _disabled.value ||\n    (isObject(item) ? item[aliasProps.value.disabled] : false)\n  )\n}\n\nconst getSelected = (item: Option) => {\n  return props.modelValue === getValue(item)\n}\n\nconst getOption = (value: any) => {\n  return props.options.find((item) => getValue(item) === value)\n}\n\nconst getItemCls = (item: Option) => {\n  return [\n    ns.e('item'),\n    ns.is('selected', getSelected(item)),\n    ns.is('disabled', getDisabled(item)),\n  ]\n}\n\nconst updateSelect = () => {\n  if (!segmentedRef.value) return\n  const selectedItem = segmentedRef.value.querySelector(\n    '.is-selected'\n  ) as HTMLElement\n  const selectedItemInput = segmentedRef.value.querySelector(\n    '.is-selected input'\n  ) as HTMLElement\n  if (!selectedItem || !selectedItemInput) {\n    state.width = 0\n    state.height = 0\n    state.translateX = 0\n    state.translateY = 0\n    state.focusVisible = false\n    return\n  }\n  state.isInit = true\n  if (props.direction === 'vertical') {\n    state.height = selectedItem.offsetHeight\n    state.translateY = selectedItem.offsetTop\n  } else {\n    state.width = selectedItem.offsetWidth\n    state.translateX = selectedItem.offsetLeft\n  }\n  try {\n    // This will failed in test\n    state.focusVisible = selectedItemInput.matches(':focus-visible')\n  } catch {}\n}\n\nconst segmentedCls = computed(() => [\n  ns.b(),\n  ns.m(segmentedSize.value),\n  ns.is('block', props.block),\n])\n\nconst selectedStyle = computed(() => ({\n  width: props.direction === 'vertical' ? '100%' : `${state.width}px`,\n  height: props.direction === 'vertical' ? `${state.height}px` : '100%',\n  transform:\n    props.direction === 'vertical'\n      ? `translateY(${state.translateY}px)`\n      : `translateX(${state.translateX}px)`,\n  display: state.isInit ? 'block' : 'none',\n}))\n\nconst selectedCls = computed(() => [\n  ns.e('item-selected'),\n  ns.is('disabled', getDisabled(getOption(props.modelValue))),\n  ns.is('focus-visible', state.focusVisible),\n])\n\nconst name = computed(() => {\n  return props.name || segmentedId.value\n})\n\nuseResizeObserver(segmentedRef, updateSelect)\n\nwatch(activeElement, updateSelect)\n\nwatch(\n  () => props.modelValue,\n  () => {\n    updateSelect()\n    if (props.validateEvent) {\n      formItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  },\n  {\n    flush: 'post',\n  }\n)\n</script>\n","<template>\n  <div\n    v-if=\"options.length\"\n    :id=\"inputId\"\n    ref=\"segmentedRef\"\n    :class=\"segmentedCls\"\n    role=\"radiogroup\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'segmented' : undefined\"\n    :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n  >\n    <div :class=\"[ns.e('group'), ns.m(direction)]\">\n      <div :style=\"selectedStyle\" :class=\"selectedCls\" />\n      <label\n        v-for=\"(item, index) in options\"\n        :key=\"index\"\n        :class=\"getItemCls(item)\"\n      >\n        <input\n          :class=\"ns.e('item-input')\"\n          type=\"radio\"\n          :name=\"name\"\n          :disabled=\"getDisabled(item)\"\n          :checked=\"getSelected(item)\"\n          @change=\"handleChange($event, item)\"\n        />\n        <div :class=\"ns.e('item-label')\">\n          <slot :item=\"intoAny(item)\">{{ getLabel(item) }}</slot>\n        </div>\n      </label>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useActiveElement, useResizeObserver } from '@vueuse/core'\nimport { useId, useNamespace } from '@pit-element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@pit-element-plus/components/form'\nimport { debugWarn, isObject } from '@pit-element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { defaultProps, segmentedEmits } from './segmented'\n\nimport type { Option } from './types'\nimport type { SegmentedProps } from './segmented'\n\ndefineOptions({\n  name: 'ElSegmented',\n})\n\nconst props = withDefaults(defineProps<SegmentedProps>(), {\n  direction: 'horizontal',\n  options: () => [],\n  props: () => defaultProps,\n  validateEvent: true,\n  modelValue: undefined,\n  disabled: undefined,\n})\nconst emit = defineEmits(segmentedEmits)\n\nconst ns = useNamespace('segmented')\nconst segmentedId = useId()\nconst segmentedSize = useFormSize()\nconst _disabled = useFormDisabled()\nconst { formItem } = useFormItem()\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst segmentedRef = ref<HTMLElement | null>(null)\nconst activeElement = useActiveElement()\n\nconst state = reactive({\n  isInit: false,\n  width: 0,\n  height: 0,\n  translateX: 0,\n  translateY: 0,\n  focusVisible: false,\n})\n\nconst handleChange = (evt: Event, item: Option) => {\n  const value = getValue(item)\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(CHANGE_EVENT, value)\n  ;(evt.target as HTMLInputElement).checked = value === props.modelValue\n}\n\nconst aliasProps = computed(() => ({ ...defaultProps, ...props.props }))\n\n//FIXME: remove this when vue >=3.3\nconst intoAny = (item: any) => item\n\nconst getValue = (item: Option) => {\n  return isObject(item) ? item[aliasProps.value.value] : item\n}\n\nconst getLabel = (item: Option) => {\n  return isObject(item) ? item[aliasProps.value.label] : item\n}\n\nconst getDisabled = (item: Option | undefined) => {\n  return !!(\n    _disabled.value ||\n    (isObject(item) ? item[aliasProps.value.disabled] : false)\n  )\n}\n\nconst getSelected = (item: Option) => {\n  return props.modelValue === getValue(item)\n}\n\nconst getOption = (value: any) => {\n  return props.options.find((item) => getValue(item) === value)\n}\n\nconst getItemCls = (item: Option) => {\n  return [\n    ns.e('item'),\n    ns.is('selected', getSelected(item)),\n    ns.is('disabled', getDisabled(item)),\n  ]\n}\n\nconst updateSelect = () => {\n  if (!segmentedRef.value) return\n  const selectedItem = segmentedRef.value.querySelector(\n    '.is-selected'\n  ) as HTMLElement\n  const selectedItemInput = segmentedRef.value.querySelector(\n    '.is-selected input'\n  ) as HTMLElement\n  if (!selectedItem || !selectedItemInput) {\n    state.width = 0\n    state.height = 0\n    state.translateX = 0\n    state.translateY = 0\n    state.focusVisible = false\n    return\n  }\n  state.isInit = true\n  if (props.direction === 'vertical') {\n    state.height = selectedItem.offsetHeight\n    state.translateY = selectedItem.offsetTop\n  } else {\n    state.width = selectedItem.offsetWidth\n    state.translateX = selectedItem.offsetLeft\n  }\n  try {\n    // This will failed in test\n    state.focusVisible = selectedItemInput.matches(':focus-visible')\n  } catch {}\n}\n\nconst segmentedCls = computed(() => [\n  ns.b(),\n  ns.m(segmentedSize.value),\n  ns.is('block', props.block),\n])\n\nconst selectedStyle = computed(() => ({\n  width: props.direction === 'vertical' ? '100%' : `${state.width}px`,\n  height: props.direction === 'vertical' ? `${state.height}px` : '100%',\n  transform:\n    props.direction === 'vertical'\n      ? `translateY(${state.translateY}px)`\n      : `translateX(${state.translateX}px)`,\n  display: state.isInit ? 'block' : 'none',\n}))\n\nconst selectedCls = computed(() => [\n  ns.e('item-selected'),\n  ns.is('disabled', getDisabled(getOption(props.modelValue))),\n  ns.is('focus-visible', state.focusVisible),\n])\n\nconst name = computed(() => {\n  return props.name || segmentedId.value\n})\n\nuseResizeObserver(segmentedRef, updateSelect)\n\nwatch(activeElement, updateSelect)\n\nwatch(\n  () => props.modelValue,\n  () => {\n    updateSelect()\n    if (props.validateEvent) {\n      formItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  },\n  {\n    flush: 'post',\n  }\n)\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Segmented from './src/segmented.vue'\n\nexport const ElSegmented = withInstall(Segmented)\nexport default ElSegmented\n\nexport * from './src/segmented'\n","import { ensureArray, isFirefox } from '@pit-element-plus/utils'\n\nimport type { MentionCtx, MentionOption } from './types'\n\nexport const filterOption = (\n  pattern: string,\n  option: MentionOption\n): boolean => {\n  const lowerCase = pattern.toLowerCase()\n  const label = option.label || option.value || ''\n  return label.toLowerCase().includes(lowerCase)\n}\n\nexport const getMentionCtx = (\n  inputEl: HTMLInputElement | HTMLTextAreaElement,\n  prefix: string | string[],\n  split: string\n) => {\n  const { selectionEnd } = inputEl\n  if (selectionEnd === null) return\n  const inputValue = inputEl.value\n  const prefixArray = ensureArray(prefix)\n  let splitIndex = -1\n  let mentionCtx: MentionCtx | undefined\n  for (let i = selectionEnd - 1; i >= 0; --i) {\n    const char = inputValue[i]\n    if (\n      splitIndex === -1 &&\n      (char === split || char === '\\n' || char === '\\r')\n    ) {\n      splitIndex = i\n      continue\n    }\n    if (prefixArray.includes(char)) {\n      const end = splitIndex === -1 ? selectionEnd : splitIndex\n      const pattern = inputValue.slice(i + 1, end)\n      mentionCtx = {\n        pattern,\n        start: i + 1,\n        end,\n        prefix: char,\n        prefixIndex: i,\n        splitIndex,\n        selectionEnd,\n      }\n      break\n    }\n  }\n  return mentionCtx\n}\n\n/**\n * fork from textarea-caret-position\n * https://github.com/component/textarea-caret-position\n * The MIT License (MIT)\n * Copyright (c) 2015 Jonathan Ong me@jongleberry.com\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport const getCursorPosition = (\n  element: HTMLInputElement | HTMLTextAreaElement,\n  options = {\n    debug: false,\n    useSelectionEnd: false,\n  }\n) => {\n  const selectionStart =\n    element.selectionStart !== null ? element.selectionStart : 0\n  const selectionEnd = element.selectionEnd !== null ? element.selectionEnd : 0\n  const position = options.useSelectionEnd ? selectionEnd : selectionStart\n  // We'll copy the properties below into the mirror div.\n  // Note that some browsers, such as Firefox, do not concatenate properties\n  // into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n  // so we have to list every single property explicitly.\n  const properties: string[] = [\n    'direction', // RTL support\n    'boxSizing',\n    'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n    'height',\n    'overflowX',\n    'overflowY', // copy the scrollbar for IE\n    'borderTopWidth',\n    'borderRightWidth',\n    'borderBottomWidth',\n    'borderLeftWidth',\n    'borderStyle',\n    'paddingTop',\n    'paddingRight',\n    'paddingBottom',\n    'paddingLeft',\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n    'fontStyle',\n    'fontVariant',\n    'fontWeight',\n    'fontStretch',\n    'fontSize',\n    'fontSizeAdjust',\n    'lineHeight',\n    'fontFamily',\n    'textAlign',\n    'textTransform',\n    'textIndent',\n    'textDecoration', // might not make a difference, but better be safe\n    'letterSpacing',\n    'wordSpacing',\n    'tabSize',\n    'MozTabSize',\n  ]\n\n  if (options.debug) {\n    const el = document.querySelector(\n      '#input-textarea-caret-position-mirror-div'\n    )\n    if (el?.parentNode) el.parentNode.removeChild(el)\n  }\n\n  // The mirror div will replicate the textareas style\n  const div = document.createElement('div')\n  div.id = 'input-textarea-caret-position-mirror-div'\n  document.body.appendChild(div)\n\n  const style = div.style\n  const computed = window.getComputedStyle(element)\n\n  const isInput = element.nodeName === 'INPUT'\n\n  // Default textarea styles\n  style.whiteSpace = isInput ? 'nowrap' : 'pre-wrap'\n  if (!isInput) style.wordWrap = 'break-word' // only for textarea-s\n\n  // Position off-screen\n  style.position = 'absolute' // required to return coordinates properly\n  if (!options.debug) style.visibility = 'hidden' // not 'display: none' because we want rendering\n\n  // Transfer the element's properties to the div\n  properties.forEach((prop) => {\n    if (isInput && prop === 'lineHeight') {\n      // Special case for <input>s because text is rendered centered and line height may be != height\n      if (computed.boxSizing === 'border-box') {\n        const height = Number.parseInt(computed.height as string)\n        const outerHeight =\n          Number.parseInt(computed.paddingTop as string) +\n          Number.parseInt(computed.paddingBottom as string) +\n          Number.parseInt(computed.borderTopWidth as string) +\n          Number.parseInt(computed.borderBottomWidth as string)\n        const targetHeight =\n          outerHeight + Number.parseInt(computed.lineHeight as string)\n        if (height > targetHeight) {\n          style.lineHeight = `${height - outerHeight}px`\n        } else if (height === targetHeight) {\n          style.lineHeight = computed.lineHeight\n        } else {\n          style.lineHeight = '0'\n        }\n      } else {\n        style.lineHeight = computed.height\n      }\n    } else {\n      style[prop as any] = computed[prop as any]\n    }\n  })\n\n  if (isFirefox()) {\n    // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n    if (element.scrollHeight > Number.parseInt(computed.height as string)) {\n      style.overflowY = 'scroll'\n    }\n  } else {\n    style.overflow = 'hidden' // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\n  }\n\n  div.textContent = element.value.slice(0, Math.max(0, position))\n  // The second special handling for input type=\"text\" vs textarea:\n  // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n  if (isInput && div.textContent) {\n    div.textContent = div.textContent.replace(/\\s/g, '\\u00A0')\n  }\n\n  const span = document.createElement('span')\n  // Wrapping must be replicated *exactly*, including when a long word gets\n  // onto the next line, with whitespace at the end of the line before (#7).\n  // The  *only* reliable way to do that is to copy the *entire* rest of the\n  // textareas content into the <span> created at the caret position.\n  // For inputs, just '.' would be enough, but no need to bother.\n  span.textContent = element.value.slice(Math.max(0, position)) || '.' // || because a completely empty faux span doesn't render at all\n  span.style.position = 'relative'\n  span.style.left = `${-element.scrollLeft}px`\n  span.style.top = `${-element.scrollTop}px`\n  div.appendChild(span)\n\n  const relativePosition = {\n    top: span.offsetTop + Number.parseInt(computed.borderTopWidth as string),\n    left: span.offsetLeft + Number.parseInt(computed.borderLeftWidth as string),\n    // We don't use line-height since it may be too large for position. Eg. 34px\n    // for input\n    height: Number.parseInt(computed.fontSize as string) * 1.5,\n  }\n\n  if (options.debug) {\n    span.style.backgroundColor = '#aaa'\n  } else {\n    document.body.removeChild(div)\n  }\n\n  if (relativePosition.left >= element.clientWidth) {\n    relativePosition.left = element.clientWidth\n  }\n  return relativePosition\n}\n","import {\n  buildProps,\n  definePropType,\n  isFunction,\n  isObject,\n  isString,\n} from '@pit-element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@pit-element-plus/constants'\nimport { inputProps } from '@pit-element-plus/components/input'\nimport { filterOption } from './helper'\nimport { useTooltipContentProps } from '@pit-element-plus/components/tooltip'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Mention from './mention.vue'\nimport type { MentionOption } from './types'\nimport type { Options } from '@pit-element-plus/components/popper'\nimport type { InputProps } from '@pit-element-plus/components/input'\nimport type { ElTooltipContentProps } from '@pit-element-plus/components/tooltip'\n\nexport interface MentionProps extends InputProps {\n  /**\n   * @description mention options list\n   */\n  options?: MentionOption[]\n  /**\n   * @description prefix character to trigger mentions. The string length must be exactly 1.\n   */\n  prefix?: string | string[]\n  /**\n   * @description character to split mentions. The string length must be exactly 1.\n   */\n  split?: string\n  /**\n   * @description customize filter option logic.\n   */\n  filterOption?: false | typeof filterOption\n  /**\n   * @description set popup placement\n   */\n  placement?: 'bottom' | 'top'\n  /**\n   * @description whether the dropdown panel has an arrow\n   */\n  showArrow?: boolean\n  /**\n   * @description offset of the dropdown panel\n   */\n  offset?: number\n  /**\n   * @description when backspace is pressed to delete, whether the mention content is deleted as a whole\n   */\n  whole?: boolean\n  /**\n   * @description when backspace is pressed to delete, check if the mention is a whole\n   */\n  checkIsWhole?: (pattern: string, prefix: string) => boolean\n  /**\n   * @description input value\n   */\n  modelValue?: string\n  /**\n   * @description whether the dropdown panel of mentions is in a loading state.\n   */\n  loading?: boolean\n  /**\n   * @description custom class name for dropdown panel\n   */\n  popperClass?: ElTooltipContentProps['popperClass']\n  /**\n   * @description custom style for dropdown panel\n   */\n  popperStyle?: ElTooltipContentProps['popperStyle']\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions?: Partial<Options>\n  /**\n   * @description configuration options\n   */\n  props?: MentionOptionProps\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `MentionProps` instead.\n */\nexport const mentionProps = buildProps({\n  ...inputProps,\n  /**\n   * @description mention options list\n   */\n  options: {\n    type: definePropType<MentionOption[]>(Array),\n    default: () => [],\n  },\n  /**\n   * @description prefix character to trigger mentions. The string length must be exactly 1.\n   */\n  prefix: {\n    type: definePropType<string | string[]>([String, Array]),\n    default: '@',\n    validator: (val: string | string[]) => {\n      if (isString(val)) return val.length === 1\n      return val.every((v) => isString(v) && v.length === 1)\n    },\n  },\n  /**\n   * @description character to split mentions. The string length must be exactly 1.\n   */\n  split: {\n    type: String,\n    default: ' ',\n    validator: (val: string) => val.length === 1,\n  },\n  /**\n   * @description customize filter option logic.\n   */\n  filterOption: {\n    type: definePropType<false | typeof filterOption>([Boolean, Function]),\n    default: () => filterOption,\n    validator: (val) => {\n      if (val === false) return true\n      return isFunction(val)\n    },\n  },\n  /**\n   * @description set popup placement\n   */\n  placement: {\n    type: definePropType<'bottom' | 'top'>(String),\n    default: 'bottom',\n  },\n  /**\n   * @description whether the dropdown panel has an arrow\n   */\n  showArrow: Boolean,\n  /**\n   * @description offset of the dropdown panel\n   */\n  offset: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description when backspace is pressed to delete, whether the mention content is deleted as a whole\n   */\n  whole: Boolean,\n  /**\n   * @description when backspace is pressed to delete, check if the mention is a whole\n   */\n  checkIsWhole: {\n    type: definePropType<(pattern: string, prefix: string) => boolean>(\n      Function\n    ),\n  },\n  /**\n   * @description input value\n   */\n  modelValue: String,\n  /**\n   * @description whether the dropdown panel of mentions is in a loading state.\n   */\n  loading: Boolean,\n  /**\n   * @description custom class name for dropdown panel\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  /**\n   * @description custom style for dropdown panel\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions: {\n    type: definePropType<Partial<Options>>(Object),\n    default: () => ({}) as Partial<Options>,\n  },\n  /**\n   * @description configuration options\n   */\n  props: {\n    type: definePropType<MentionOptionProps>(Object),\n    default: () => mentionDefaultProps,\n  },\n})\n\nexport const mentionEmits = {\n  [UPDATE_MODEL_EVENT]: (value: string) => isString(value),\n  'whole-remove': (pattern: string, prefix: string) =>\n    isString(pattern) && isString(prefix),\n  input: (value: string) => isString(value),\n  search: (pattern: string, prefix: string) =>\n    isString(pattern) && isString(prefix),\n  select: (option: MentionOption, prefix: string) =>\n    isObject(option) && isString(prefix),\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n}\n\nexport type MentionEmits = typeof mentionEmits\n\n/**\n * @deprecated Removed after 3.0.0, Use `MentionProps` instead.\n */\nexport type MentionPropsPublic = ExtractPublicPropTypes<typeof mentionProps>\nexport type MentionInstance = InstanceType<typeof Mention> & unknown\n\nexport type { MentionOption } from './types'\n\nexport type MentionOptionProps = {\n  value?: string\n  label?: string\n  disabled?: string\n  [key: string]: string | undefined\n}\n\nexport const mentionDefaultProps: Required<MentionOptionProps> = {\n  value: 'value',\n  label: 'label',\n  disabled: 'disabled',\n}\n","import { buildProps, definePropType, isString } from '@pit-element-plus/utils'\n\nimport type { MentionOption } from './types'\n\nexport interface MentionDropdownProps {\n  options?: MentionOption[]\n  loading?: boolean\n  disabled?: boolean\n  contentId?: string\n  ariaLabel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `MentionDropdownProps` instead.\n */\nexport const mentionDropdownProps = buildProps({\n  options: {\n    type: definePropType<MentionOption[]>(Array),\n    default: () => [],\n  },\n  loading: Boolean,\n  disabled: Boolean,\n  contentId: String,\n  ariaLabel: String,\n})\n\nexport const mentionDropdownEmits = {\n  select: (option: MentionOption) => isString(option.value),\n}\n","<template>\n  <div ref=\"dropdownRef\" :class=\"ns.b('dropdown')\">\n    <div v-if=\"$slots.header\" :class=\"ns.be('dropdown', 'header')\">\n      <slot name=\"header\" />\n    </div>\n    <el-scrollbar\n      v-show=\"options.length > 0 && !loading\"\n      :id=\"contentId\"\n      ref=\"scrollbarRef\"\n      tag=\"ul\"\n      :wrap-class=\"ns.be('dropdown', 'wrap')\"\n      :view-class=\"ns.be('dropdown', 'list')\"\n      role=\"listbox\"\n      :aria-label=\"ariaLabel\"\n      aria-orientation=\"vertical\"\n    >\n      <li\n        v-for=\"(item, index) in options\"\n        :id=\"`${contentId}-${index}`\"\n        ref=\"optionRefs\"\n        :key=\"index\"\n        :class=\"optionkls(item, index)\"\n        role=\"option\"\n        :aria-disabled=\"item.disabled || disabled || undefined\"\n        :aria-selected=\"hoveringIndex === index\"\n        @mousemove=\"handleMouseEnter(index)\"\n        @click.stop=\"handleSelect(item)\"\n      >\n        <slot name=\"label\" :item=\"item\" :index=\"index\">\n          <span>{{ item.label ?? item.value }}</span>\n        </slot>\n      </li>\n    </el-scrollbar>\n    <div v-if=\"loading\" :class=\"ns.be('dropdown', 'loading')\">\n      <slot name=\"loading\"> {{ t('el.mention.loading') }} </slot>\n    </div>\n    <div v-if=\"$slots.footer\" :class=\"ns.be('dropdown', 'footer')\">\n      <slot name=\"footer\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { scrollIntoView } from '@pit-element-plus/utils'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { mentionDropdownEmits } from './mention-dropdown'\n\nimport type { MentionDropdownProps } from './mention-dropdown'\nimport type { MentionOption } from './types'\n\ndefineOptions({\n  name: 'ElMentionDropdown',\n})\n\nconst props = withDefaults(defineProps<MentionDropdownProps>(), {\n  options: () => [],\n})\nconst emit = defineEmits(mentionDropdownEmits)\n\nconst ns = useNamespace('mention')\nconst { t } = useLocale()\nconst hoveringIndex = ref(-1)\n\nconst scrollbarRef = ref<InstanceType<typeof ElScrollbar>>()\nconst optionRefs = ref<HTMLElement[]>()\nconst dropdownRef = ref<HTMLElement>()\n\nconst optionkls = (item: MentionOption, index: number) => [\n  ns.be('dropdown', 'item'),\n  ns.is('hovering', hoveringIndex.value === index),\n  ns.is('disabled', item.disabled || props.disabled),\n]\n\nconst handleSelect = (item: MentionOption) => {\n  if (item.disabled || props.disabled) return\n  emit('select', item)\n}\n\nconst handleMouseEnter = (index: number) => {\n  hoveringIndex.value = index\n}\n\nconst filteredAllDisabled = computed(\n  () => props.disabled || props.options.every((item) => item.disabled)\n)\n\nconst hoverOption = computed(() => props.options[hoveringIndex.value])\n\nconst selectHoverOption = () => {\n  if (!hoverOption.value || hoverOption.value.disabled || props.disabled) return\n  emit('select', hoverOption.value)\n}\n\nconst navigateOptions = (direction: 'next' | 'prev') => {\n  const { options } = props\n  if (options.length === 0 || filteredAllDisabled.value) return\n\n  if (direction === 'next') {\n    hoveringIndex.value++\n    if (hoveringIndex.value === options.length) {\n      hoveringIndex.value = 0\n    }\n  } else if (direction === 'prev') {\n    hoveringIndex.value--\n    if (hoveringIndex.value < 0) {\n      hoveringIndex.value = options.length - 1\n    }\n  }\n  const option = options[hoveringIndex.value]\n  if (option.disabled) {\n    navigateOptions(direction)\n    return\n  }\n  nextTick(() => scrollToOption(option))\n}\n\nconst scrollToOption = (option: MentionOption) => {\n  const { options } = props\n\n  const index = options.findIndex((item) => item.value === option.value)\n  const target = optionRefs.value?.[index]\n\n  if (target) {\n    const menu = dropdownRef.value?.querySelector?.(\n      `.${ns.be('dropdown', 'wrap')}`\n    )\n    if (menu) {\n      scrollIntoView(menu as HTMLElement, target)\n    }\n  }\n  scrollbarRef.value?.handleScroll()\n}\n\nconst resetHoveringIndex = () => {\n  if (filteredAllDisabled.value || props.options.length === 0) {\n    hoveringIndex.value = -1\n  } else {\n    hoveringIndex.value = props.options.findIndex((item) => !item.disabled)\n  }\n}\n\nwatch(() => props.options, resetHoveringIndex, {\n  immediate: true,\n})\n\ndefineExpose({\n  hoveringIndex,\n  navigateOptions,\n  selectHoverOption,\n  hoverOption,\n})\n</script>\n","<template>\n  <div ref=\"dropdownRef\" :class=\"ns.b('dropdown')\">\n    <div v-if=\"$slots.header\" :class=\"ns.be('dropdown', 'header')\">\n      <slot name=\"header\" />\n    </div>\n    <el-scrollbar\n      v-show=\"options.length > 0 && !loading\"\n      :id=\"contentId\"\n      ref=\"scrollbarRef\"\n      tag=\"ul\"\n      :wrap-class=\"ns.be('dropdown', 'wrap')\"\n      :view-class=\"ns.be('dropdown', 'list')\"\n      role=\"listbox\"\n      :aria-label=\"ariaLabel\"\n      aria-orientation=\"vertical\"\n    >\n      <li\n        v-for=\"(item, index) in options\"\n        :id=\"`${contentId}-${index}`\"\n        ref=\"optionRefs\"\n        :key=\"index\"\n        :class=\"optionkls(item, index)\"\n        role=\"option\"\n        :aria-disabled=\"item.disabled || disabled || undefined\"\n        :aria-selected=\"hoveringIndex === index\"\n        @mousemove=\"handleMouseEnter(index)\"\n        @click.stop=\"handleSelect(item)\"\n      >\n        <slot name=\"label\" :item=\"item\" :index=\"index\">\n          <span>{{ item.label ?? item.value }}</span>\n        </slot>\n      </li>\n    </el-scrollbar>\n    <div v-if=\"loading\" :class=\"ns.be('dropdown', 'loading')\">\n      <slot name=\"loading\"> {{ t('el.mention.loading') }} </slot>\n    </div>\n    <div v-if=\"$slots.footer\" :class=\"ns.be('dropdown', 'footer')\">\n      <slot name=\"footer\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { scrollIntoView } from '@pit-element-plus/utils'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { mentionDropdownEmits } from './mention-dropdown'\n\nimport type { MentionDropdownProps } from './mention-dropdown'\nimport type { MentionOption } from './types'\n\ndefineOptions({\n  name: 'ElMentionDropdown',\n})\n\nconst props = withDefaults(defineProps<MentionDropdownProps>(), {\n  options: () => [],\n})\nconst emit = defineEmits(mentionDropdownEmits)\n\nconst ns = useNamespace('mention')\nconst { t } = useLocale()\nconst hoveringIndex = ref(-1)\n\nconst scrollbarRef = ref<InstanceType<typeof ElScrollbar>>()\nconst optionRefs = ref<HTMLElement[]>()\nconst dropdownRef = ref<HTMLElement>()\n\nconst optionkls = (item: MentionOption, index: number) => [\n  ns.be('dropdown', 'item'),\n  ns.is('hovering', hoveringIndex.value === index),\n  ns.is('disabled', item.disabled || props.disabled),\n]\n\nconst handleSelect = (item: MentionOption) => {\n  if (item.disabled || props.disabled) return\n  emit('select', item)\n}\n\nconst handleMouseEnter = (index: number) => {\n  hoveringIndex.value = index\n}\n\nconst filteredAllDisabled = computed(\n  () => props.disabled || props.options.every((item) => item.disabled)\n)\n\nconst hoverOption = computed(() => props.options[hoveringIndex.value])\n\nconst selectHoverOption = () => {\n  if (!hoverOption.value || hoverOption.value.disabled || props.disabled) return\n  emit('select', hoverOption.value)\n}\n\nconst navigateOptions = (direction: 'next' | 'prev') => {\n  const { options } = props\n  if (options.length === 0 || filteredAllDisabled.value) return\n\n  if (direction === 'next') {\n    hoveringIndex.value++\n    if (hoveringIndex.value === options.length) {\n      hoveringIndex.value = 0\n    }\n  } else if (direction === 'prev') {\n    hoveringIndex.value--\n    if (hoveringIndex.value < 0) {\n      hoveringIndex.value = options.length - 1\n    }\n  }\n  const option = options[hoveringIndex.value]\n  if (option.disabled) {\n    navigateOptions(direction)\n    return\n  }\n  nextTick(() => scrollToOption(option))\n}\n\nconst scrollToOption = (option: MentionOption) => {\n  const { options } = props\n\n  const index = options.findIndex((item) => item.value === option.value)\n  const target = optionRefs.value?.[index]\n\n  if (target) {\n    const menu = dropdownRef.value?.querySelector?.(\n      `.${ns.be('dropdown', 'wrap')}`\n    )\n    if (menu) {\n      scrollIntoView(menu as HTMLElement, target)\n    }\n  }\n  scrollbarRef.value?.handleScroll()\n}\n\nconst resetHoveringIndex = () => {\n  if (filteredAllDisabled.value || props.options.length === 0) {\n    hoveringIndex.value = -1\n  } else {\n    hoveringIndex.value = props.options.findIndex((item) => !item.disabled)\n  }\n}\n\nwatch(() => props.options, resetHoveringIndex, {\n  immediate: true,\n})\n\ndefineExpose({\n  hoveringIndex,\n  navigateOptions,\n  selectHoverOption,\n  hoverOption,\n})\n</script>\n","<template>\n  <div ref=\"dropdownRef\" :class=\"ns.b('dropdown')\">\n    <div v-if=\"$slots.header\" :class=\"ns.be('dropdown', 'header')\">\n      <slot name=\"header\" />\n    </div>\n    <el-scrollbar\n      v-show=\"options.length > 0 && !loading\"\n      :id=\"contentId\"\n      ref=\"scrollbarRef\"\n      tag=\"ul\"\n      :wrap-class=\"ns.be('dropdown', 'wrap')\"\n      :view-class=\"ns.be('dropdown', 'list')\"\n      role=\"listbox\"\n      :aria-label=\"ariaLabel\"\n      aria-orientation=\"vertical\"\n    >\n      <li\n        v-for=\"(item, index) in options\"\n        :id=\"`${contentId}-${index}`\"\n        ref=\"optionRefs\"\n        :key=\"index\"\n        :class=\"optionkls(item, index)\"\n        role=\"option\"\n        :aria-disabled=\"item.disabled || disabled || undefined\"\n        :aria-selected=\"hoveringIndex === index\"\n        @mousemove=\"handleMouseEnter(index)\"\n        @click.stop=\"handleSelect(item)\"\n      >\n        <slot name=\"label\" :item=\"item\" :index=\"index\">\n          <span>{{ item.label ?? item.value }}</span>\n        </slot>\n      </li>\n    </el-scrollbar>\n    <div v-if=\"loading\" :class=\"ns.be('dropdown', 'loading')\">\n      <slot name=\"loading\"> {{ t('el.mention.loading') }} </slot>\n    </div>\n    <div v-if=\"$slots.footer\" :class=\"ns.be('dropdown', 'footer')\">\n      <slot name=\"footer\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { useLocale, useNamespace } from '@pit-element-plus/hooks'\nimport { scrollIntoView } from '@pit-element-plus/utils'\nimport ElScrollbar from '@pit-element-plus/components/scrollbar'\nimport { mentionDropdownEmits } from './mention-dropdown'\n\nimport type { MentionDropdownProps } from './mention-dropdown'\nimport type { MentionOption } from './types'\n\ndefineOptions({\n  name: 'ElMentionDropdown',\n})\n\nconst props = withDefaults(defineProps<MentionDropdownProps>(), {\n  options: () => [],\n})\nconst emit = defineEmits(mentionDropdownEmits)\n\nconst ns = useNamespace('mention')\nconst { t } = useLocale()\nconst hoveringIndex = ref(-1)\n\nconst scrollbarRef = ref<InstanceType<typeof ElScrollbar>>()\nconst optionRefs = ref<HTMLElement[]>()\nconst dropdownRef = ref<HTMLElement>()\n\nconst optionkls = (item: MentionOption, index: number) => [\n  ns.be('dropdown', 'item'),\n  ns.is('hovering', hoveringIndex.value === index),\n  ns.is('disabled', item.disabled || props.disabled),\n]\n\nconst handleSelect = (item: MentionOption) => {\n  if (item.disabled || props.disabled) return\n  emit('select', item)\n}\n\nconst handleMouseEnter = (index: number) => {\n  hoveringIndex.value = index\n}\n\nconst filteredAllDisabled = computed(\n  () => props.disabled || props.options.every((item) => item.disabled)\n)\n\nconst hoverOption = computed(() => props.options[hoveringIndex.value])\n\nconst selectHoverOption = () => {\n  if (!hoverOption.value || hoverOption.value.disabled || props.disabled) return\n  emit('select', hoverOption.value)\n}\n\nconst navigateOptions = (direction: 'next' | 'prev') => {\n  const { options } = props\n  if (options.length === 0 || filteredAllDisabled.value) return\n\n  if (direction === 'next') {\n    hoveringIndex.value++\n    if (hoveringIndex.value === options.length) {\n      hoveringIndex.value = 0\n    }\n  } else if (direction === 'prev') {\n    hoveringIndex.value--\n    if (hoveringIndex.value < 0) {\n      hoveringIndex.value = options.length - 1\n    }\n  }\n  const option = options[hoveringIndex.value]\n  if (option.disabled) {\n    navigateOptions(direction)\n    return\n  }\n  nextTick(() => scrollToOption(option))\n}\n\nconst scrollToOption = (option: MentionOption) => {\n  const { options } = props\n\n  const index = options.findIndex((item) => item.value === option.value)\n  const target = optionRefs.value?.[index]\n\n  if (target) {\n    const menu = dropdownRef.value?.querySelector?.(\n      `.${ns.be('dropdown', 'wrap')}`\n    )\n    if (menu) {\n      scrollIntoView(menu as HTMLElement, target)\n    }\n  }\n  scrollbarRef.value?.handleScroll()\n}\n\nconst resetHoveringIndex = () => {\n  if (filteredAllDisabled.value || props.options.length === 0) {\n    hoveringIndex.value = -1\n  } else {\n    hoveringIndex.value = props.options.findIndex((item) => !item.disabled)\n  }\n}\n\nwatch(() => props.options, resetHoveringIndex, {\n  immediate: true,\n})\n\ndefineExpose({\n  hoveringIndex,\n  navigateOptions,\n  selectHoverOption,\n  hoverOption,\n})\n</script>\n","<template>\n  <div ref=\"wrapperRef\" :class=\"ns.b()\">\n    <el-input\n      v-bind=\"mergeProps(passInputProps, $attrs)\"\n      ref=\"elInputRef\"\n      :model-value=\"modelValue\"\n      :disabled=\"disabled\"\n      :role=\"dropdownVisible ? 'combobox' : undefined\"\n      :aria-activedescendant=\"dropdownVisible ? hoveringId || '' : undefined\"\n      :aria-controls=\"dropdownVisible ? contentId : undefined\"\n      :aria-expanded=\"dropdownVisible || undefined\"\n      :aria-label=\"ariaLabel\"\n      :aria-autocomplete=\"dropdownVisible ? 'none' : undefined\"\n      :aria-haspopup=\"dropdownVisible ? 'listbox' : undefined\"\n      @input=\"handleInputChange\"\n      @keydown=\"handleInputKeyDown\"\n      @mousedown=\"handleInputMouseDown\"\n    >\n      <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n        <slot :name=\"name\" v-bind=\"slotProps\" />\n      </template>\n    </el-input>\n    <el-tooltip\n      ref=\"tooltipRef\"\n      :visible=\"dropdownVisible\"\n      :popper-class=\"[ns.e('popper'), popperClass!]\"\n      :popper-style=\"popperStyle\"\n      :popper-options=\"popperOptions\"\n      :placement=\"computedPlacement\"\n      :fallback-placements=\"computedFallbackPlacements\"\n      effect=\"light\"\n      pure\n      :offset=\"offset\"\n      :show-arrow=\"showArrow\"\n    >\n      <template #default>\n        <div :style=\"cursorStyle\" />\n      </template>\n      <template #content>\n        <el-mention-dropdown\n          ref=\"dropdownRef\"\n          :options=\"filteredOptions\"\n          :disabled=\"disabled\"\n          :loading=\"loading\"\n          :content-id=\"contentId\"\n          :aria-label=\"ariaLabel\"\n          @select=\"handleSelect\"\n          @click.stop=\"elInputRef?.focus()\"\n        >\n          <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n            <slot :name=\"name\" v-bind=\"slotProps\" />\n          </template>\n        </el-mention-dropdown>\n      </template>\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, mergeProps, nextTick, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport {\n  useFocusController,\n  useId,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport ElInput, {\n  inputProps,\n  inputPropsDefaults,\n} from '@pit-element-plus/components/input'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport {\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { getEventCode, isFunction } from '@pit-element-plus/utils'\nimport { mentionDefaultProps, mentionEmits } from './mention'\nimport { filterOption, getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\nimport type { MentionProps } from './mention'\nimport type { Placement } from '@popperjs/core'\nimport type { CSSProperties } from 'vue'\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { MentionCtx, MentionOption } from './types'\n\ndefineOptions({\n  name: 'ElMention',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MentionProps>(), {\n  ...inputPropsDefaults,\n  options: () => [],\n  prefix: '@',\n  split: ' ',\n  filterOption: () => filterOption,\n  placement: 'bottom',\n  offset: 0,\n  popperOptions: () => ({}),\n  props: () => mentionDefaultProps,\n})\nconst emit = defineEmits(mentionEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst ns = useNamespace('mention')\nconst disabled = useFormDisabled()\nconst contentId = useId()\n\nconst elInputRef = ref<InputInstance>()\nconst tooltipRef = ref<TooltipInstance>()\nconst dropdownRef = ref<InstanceType<typeof ElMentionDropdown>>()\n\nconst visible = ref(false)\nconst cursorStyle = ref<CSSProperties>()\nconst mentionCtx = ref<MentionCtx>()\n\nconst computedPlacement = computed<Placement>(() =>\n  props.showArrow ? props.placement : `${props.placement}-start`\n)\n\nconst computedFallbackPlacements = computed<Placement[]>(() =>\n  props.showArrow ? ['bottom', 'top'] : ['bottom-start', 'top-start']\n)\n\nconst aliasProps = computed(() => ({\n  ...mentionDefaultProps,\n  ...props.props,\n}))\n\nconst mapOption = (option: MentionOption) => {\n  const base = {\n    label: option[aliasProps.value.label],\n    value: option[aliasProps.value.value],\n    disabled: option[aliasProps.value.disabled],\n  }\n  return { ...option, ...base }\n}\n\nconst options = computed(() => props.options.map(mapOption))\n\nconst filteredOptions = computed(() => {\n  const { filterOption } = props\n  if (!mentionCtx.value || !filterOption) return options.value\n  return options.value.filter((option) =>\n    filterOption(mentionCtx.value!.pattern, option)\n  )\n})\n\nconst dropdownVisible = computed(() => {\n  return visible.value && (!!filteredOptions.value.length || props.loading)\n})\n\nconst hoveringId = computed(() => {\n  return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`\n})\n\nconst handleInputChange = (value: string) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(INPUT_EVENT, value)\n  syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (event: KeyboardEvent | Event) => {\n  if (elInputRef.value?.isComposing) return\n  const code = getEventCode(event as KeyboardEvent)\n\n  switch (code) {\n    case EVENT_CODE.left:\n    case EVENT_CODE.right:\n      syncAfterCursorMove()\n      break\n    case EVENT_CODE.up:\n    case EVENT_CODE.down:\n      if (!visible.value) return\n      event.preventDefault()\n      dropdownRef.value?.navigateOptions(\n        code === EVENT_CODE.up ? 'prev' : 'next'\n      )\n      break\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      if (!visible.value) {\n        props.type !== 'textarea' && syncAfterCursorMove()\n        return\n      }\n      event.preventDefault()\n      if (dropdownRef.value?.hoverOption) {\n        dropdownRef.value?.selectHoverOption()\n      } else {\n        visible.value = false\n      }\n      break\n    case EVENT_CODE.esc:\n      if (!visible.value) return\n      event.preventDefault()\n      visible.value = false\n      break\n    case EVENT_CODE.backspace:\n      if (props.whole && mentionCtx.value) {\n        const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } =\n          mentionCtx.value\n        const inputEl = getInputEl()\n        if (!inputEl) return\n        const inputValue = inputEl.value\n        const matchOption = options.value.find((item) => item.value === pattern)\n        const isWhole = isFunction(props.checkIsWhole)\n          ? props.checkIsWhole(pattern, prefix)\n          : matchOption\n        if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {\n          event.preventDefault()\n          const newValue =\n            inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n          emit(UPDATE_MODEL_EVENT, newValue)\n          emit(INPUT_EVENT, newValue)\n          emit('whole-remove', pattern, prefix)\n\n          const newSelectionEnd = prefixIndex\n          nextTick(() => {\n            // input value is updated\n            inputEl.selectionStart = newSelectionEnd\n            inputEl.selectionEnd = newSelectionEnd\n            syncDropdownVisible()\n          })\n        }\n      }\n  }\n}\n\nconst { wrapperRef } = useFocusController(elInputRef, {\n  disabled,\n  afterFocus() {\n    syncAfterCursorMove()\n  },\n  beforeBlur(event) {\n    return tooltipRef.value?.isFocusInsideContent(event)\n  },\n  afterBlur() {\n    visible.value = false\n  },\n})\n\nconst handleInputMouseDown = () => {\n  syncAfterCursorMove()\n}\n\n// Ensure that the original option passed by users is returned\nconst getOriginalOption = (mentionOption: MentionOption) => {\n  return props.options.find((option: MentionOption) => {\n    return mentionOption.value === option[aliasProps.value.value]\n  })\n}\n\nconst handleSelect = (item: MentionOption) => {\n  if (!mentionCtx.value) return\n  const inputEl = getInputEl()\n  if (!inputEl) return\n  const inputValue = inputEl.value\n  const { split } = props\n\n  const newEndPart = inputValue.slice(mentionCtx.value.end)\n  const alreadySeparated = newEndPart.startsWith(split)\n  const newMiddlePart = `${item.value}${alreadySeparated ? '' : split}`\n\n  const newValue =\n    inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart\n\n  emit(UPDATE_MODEL_EVENT, newValue)\n  emit(INPUT_EVENT, newValue)\n  emit('select', getOriginalOption(item)!, mentionCtx.value.prefix)\n\n  const newSelectionEnd =\n    mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0)\n\n  nextTick(() => {\n    // input value is updated\n    inputEl.selectionStart = newSelectionEnd\n    inputEl.selectionEnd = newSelectionEnd\n    inputEl.focus()\n    syncDropdownVisible()\n  })\n}\n\nconst getInputEl = () =>\n  props.type === 'textarea'\n    ? elInputRef.value?.textarea\n    : elInputRef.value?.input\n\nconst syncAfterCursorMove = () => {\n  // can't use nextTick(), get cursor position will be wrong\n  setTimeout(() => {\n    syncCursor()\n    syncDropdownVisible()\n    nextTick(() => tooltipRef.value?.updatePopper())\n  }, 0)\n}\n\nconst syncCursor = () => {\n  const inputEl = getInputEl()\n  if (!inputEl) return\n\n  const caretPosition = getCursorPosition(inputEl)\n  const inputRect = inputEl.getBoundingClientRect()\n  const wrapperRect = wrapperRef.value!.getBoundingClientRect()\n\n  cursorStyle.value = {\n    position: 'absolute',\n    width: 0,\n    height: `${caretPosition.height}px`,\n    left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,\n    top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`,\n  }\n}\n\nconst syncDropdownVisible = () => {\n  const inputEl = getInputEl()\n  if (document.activeElement !== inputEl) {\n    visible.value = false\n    return\n  }\n  const { prefix, split } = props\n  mentionCtx.value = getMentionCtx(inputEl, prefix, split)\n  if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {\n    visible.value = true\n    emit('search', mentionCtx.value.pattern, mentionCtx.value.prefix)\n    return\n  }\n  visible.value = false\n}\n\ndefineExpose({\n  input: elInputRef,\n  tooltip: tooltipRef,\n  dropdownVisible,\n})\n</script>\n","<template>\n  <div ref=\"wrapperRef\" :class=\"ns.b()\">\n    <el-input\n      v-bind=\"mergeProps(passInputProps, $attrs)\"\n      ref=\"elInputRef\"\n      :model-value=\"modelValue\"\n      :disabled=\"disabled\"\n      :role=\"dropdownVisible ? 'combobox' : undefined\"\n      :aria-activedescendant=\"dropdownVisible ? hoveringId || '' : undefined\"\n      :aria-controls=\"dropdownVisible ? contentId : undefined\"\n      :aria-expanded=\"dropdownVisible || undefined\"\n      :aria-label=\"ariaLabel\"\n      :aria-autocomplete=\"dropdownVisible ? 'none' : undefined\"\n      :aria-haspopup=\"dropdownVisible ? 'listbox' : undefined\"\n      @input=\"handleInputChange\"\n      @keydown=\"handleInputKeyDown\"\n      @mousedown=\"handleInputMouseDown\"\n    >\n      <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n        <slot :name=\"name\" v-bind=\"slotProps\" />\n      </template>\n    </el-input>\n    <el-tooltip\n      ref=\"tooltipRef\"\n      :visible=\"dropdownVisible\"\n      :popper-class=\"[ns.e('popper'), popperClass!]\"\n      :popper-style=\"popperStyle\"\n      :popper-options=\"popperOptions\"\n      :placement=\"computedPlacement\"\n      :fallback-placements=\"computedFallbackPlacements\"\n      effect=\"light\"\n      pure\n      :offset=\"offset\"\n      :show-arrow=\"showArrow\"\n    >\n      <template #default>\n        <div :style=\"cursorStyle\" />\n      </template>\n      <template #content>\n        <el-mention-dropdown\n          ref=\"dropdownRef\"\n          :options=\"filteredOptions\"\n          :disabled=\"disabled\"\n          :loading=\"loading\"\n          :content-id=\"contentId\"\n          :aria-label=\"ariaLabel\"\n          @select=\"handleSelect\"\n          @click.stop=\"elInputRef?.focus()\"\n        >\n          <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n            <slot :name=\"name\" v-bind=\"slotProps\" />\n          </template>\n        </el-mention-dropdown>\n      </template>\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, mergeProps, nextTick, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport {\n  useFocusController,\n  useId,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport ElInput, {\n  inputProps,\n  inputPropsDefaults,\n} from '@pit-element-plus/components/input'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport {\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { getEventCode, isFunction } from '@pit-element-plus/utils'\nimport { mentionDefaultProps, mentionEmits } from './mention'\nimport { filterOption, getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\nimport type { MentionProps } from './mention'\nimport type { Placement } from '@popperjs/core'\nimport type { CSSProperties } from 'vue'\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { MentionCtx, MentionOption } from './types'\n\ndefineOptions({\n  name: 'ElMention',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MentionProps>(), {\n  ...inputPropsDefaults,\n  options: () => [],\n  prefix: '@',\n  split: ' ',\n  filterOption: () => filterOption,\n  placement: 'bottom',\n  offset: 0,\n  popperOptions: () => ({}),\n  props: () => mentionDefaultProps,\n})\nconst emit = defineEmits(mentionEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst ns = useNamespace('mention')\nconst disabled = useFormDisabled()\nconst contentId = useId()\n\nconst elInputRef = ref<InputInstance>()\nconst tooltipRef = ref<TooltipInstance>()\nconst dropdownRef = ref<InstanceType<typeof ElMentionDropdown>>()\n\nconst visible = ref(false)\nconst cursorStyle = ref<CSSProperties>()\nconst mentionCtx = ref<MentionCtx>()\n\nconst computedPlacement = computed<Placement>(() =>\n  props.showArrow ? props.placement : `${props.placement}-start`\n)\n\nconst computedFallbackPlacements = computed<Placement[]>(() =>\n  props.showArrow ? ['bottom', 'top'] : ['bottom-start', 'top-start']\n)\n\nconst aliasProps = computed(() => ({\n  ...mentionDefaultProps,\n  ...props.props,\n}))\n\nconst mapOption = (option: MentionOption) => {\n  const base = {\n    label: option[aliasProps.value.label],\n    value: option[aliasProps.value.value],\n    disabled: option[aliasProps.value.disabled],\n  }\n  return { ...option, ...base }\n}\n\nconst options = computed(() => props.options.map(mapOption))\n\nconst filteredOptions = computed(() => {\n  const { filterOption } = props\n  if (!mentionCtx.value || !filterOption) return options.value\n  return options.value.filter((option) =>\n    filterOption(mentionCtx.value!.pattern, option)\n  )\n})\n\nconst dropdownVisible = computed(() => {\n  return visible.value && (!!filteredOptions.value.length || props.loading)\n})\n\nconst hoveringId = computed(() => {\n  return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`\n})\n\nconst handleInputChange = (value: string) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(INPUT_EVENT, value)\n  syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (event: KeyboardEvent | Event) => {\n  if (elInputRef.value?.isComposing) return\n  const code = getEventCode(event as KeyboardEvent)\n\n  switch (code) {\n    case EVENT_CODE.left:\n    case EVENT_CODE.right:\n      syncAfterCursorMove()\n      break\n    case EVENT_CODE.up:\n    case EVENT_CODE.down:\n      if (!visible.value) return\n      event.preventDefault()\n      dropdownRef.value?.navigateOptions(\n        code === EVENT_CODE.up ? 'prev' : 'next'\n      )\n      break\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      if (!visible.value) {\n        props.type !== 'textarea' && syncAfterCursorMove()\n        return\n      }\n      event.preventDefault()\n      if (dropdownRef.value?.hoverOption) {\n        dropdownRef.value?.selectHoverOption()\n      } else {\n        visible.value = false\n      }\n      break\n    case EVENT_CODE.esc:\n      if (!visible.value) return\n      event.preventDefault()\n      visible.value = false\n      break\n    case EVENT_CODE.backspace:\n      if (props.whole && mentionCtx.value) {\n        const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } =\n          mentionCtx.value\n        const inputEl = getInputEl()\n        if (!inputEl) return\n        const inputValue = inputEl.value\n        const matchOption = options.value.find((item) => item.value === pattern)\n        const isWhole = isFunction(props.checkIsWhole)\n          ? props.checkIsWhole(pattern, prefix)\n          : matchOption\n        if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {\n          event.preventDefault()\n          const newValue =\n            inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n          emit(UPDATE_MODEL_EVENT, newValue)\n          emit(INPUT_EVENT, newValue)\n          emit('whole-remove', pattern, prefix)\n\n          const newSelectionEnd = prefixIndex\n          nextTick(() => {\n            // input value is updated\n            inputEl.selectionStart = newSelectionEnd\n            inputEl.selectionEnd = newSelectionEnd\n            syncDropdownVisible()\n          })\n        }\n      }\n  }\n}\n\nconst { wrapperRef } = useFocusController(elInputRef, {\n  disabled,\n  afterFocus() {\n    syncAfterCursorMove()\n  },\n  beforeBlur(event) {\n    return tooltipRef.value?.isFocusInsideContent(event)\n  },\n  afterBlur() {\n    visible.value = false\n  },\n})\n\nconst handleInputMouseDown = () => {\n  syncAfterCursorMove()\n}\n\n// Ensure that the original option passed by users is returned\nconst getOriginalOption = (mentionOption: MentionOption) => {\n  return props.options.find((option: MentionOption) => {\n    return mentionOption.value === option[aliasProps.value.value]\n  })\n}\n\nconst handleSelect = (item: MentionOption) => {\n  if (!mentionCtx.value) return\n  const inputEl = getInputEl()\n  if (!inputEl) return\n  const inputValue = inputEl.value\n  const { split } = props\n\n  const newEndPart = inputValue.slice(mentionCtx.value.end)\n  const alreadySeparated = newEndPart.startsWith(split)\n  const newMiddlePart = `${item.value}${alreadySeparated ? '' : split}`\n\n  const newValue =\n    inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart\n\n  emit(UPDATE_MODEL_EVENT, newValue)\n  emit(INPUT_EVENT, newValue)\n  emit('select', getOriginalOption(item)!, mentionCtx.value.prefix)\n\n  const newSelectionEnd =\n    mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0)\n\n  nextTick(() => {\n    // input value is updated\n    inputEl.selectionStart = newSelectionEnd\n    inputEl.selectionEnd = newSelectionEnd\n    inputEl.focus()\n    syncDropdownVisible()\n  })\n}\n\nconst getInputEl = () =>\n  props.type === 'textarea'\n    ? elInputRef.value?.textarea\n    : elInputRef.value?.input\n\nconst syncAfterCursorMove = () => {\n  // can't use nextTick(), get cursor position will be wrong\n  setTimeout(() => {\n    syncCursor()\n    syncDropdownVisible()\n    nextTick(() => tooltipRef.value?.updatePopper())\n  }, 0)\n}\n\nconst syncCursor = () => {\n  const inputEl = getInputEl()\n  if (!inputEl) return\n\n  const caretPosition = getCursorPosition(inputEl)\n  const inputRect = inputEl.getBoundingClientRect()\n  const wrapperRect = wrapperRef.value!.getBoundingClientRect()\n\n  cursorStyle.value = {\n    position: 'absolute',\n    width: 0,\n    height: `${caretPosition.height}px`,\n    left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,\n    top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`,\n  }\n}\n\nconst syncDropdownVisible = () => {\n  const inputEl = getInputEl()\n  if (document.activeElement !== inputEl) {\n    visible.value = false\n    return\n  }\n  const { prefix, split } = props\n  mentionCtx.value = getMentionCtx(inputEl, prefix, split)\n  if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {\n    visible.value = true\n    emit('search', mentionCtx.value.pattern, mentionCtx.value.prefix)\n    return\n  }\n  visible.value = false\n}\n\ndefineExpose({\n  input: elInputRef,\n  tooltip: tooltipRef,\n  dropdownVisible,\n})\n</script>\n","<template>\n  <div ref=\"wrapperRef\" :class=\"ns.b()\">\n    <el-input\n      v-bind=\"mergeProps(passInputProps, $attrs)\"\n      ref=\"elInputRef\"\n      :model-value=\"modelValue\"\n      :disabled=\"disabled\"\n      :role=\"dropdownVisible ? 'combobox' : undefined\"\n      :aria-activedescendant=\"dropdownVisible ? hoveringId || '' : undefined\"\n      :aria-controls=\"dropdownVisible ? contentId : undefined\"\n      :aria-expanded=\"dropdownVisible || undefined\"\n      :aria-label=\"ariaLabel\"\n      :aria-autocomplete=\"dropdownVisible ? 'none' : undefined\"\n      :aria-haspopup=\"dropdownVisible ? 'listbox' : undefined\"\n      @input=\"handleInputChange\"\n      @keydown=\"handleInputKeyDown\"\n      @mousedown=\"handleInputMouseDown\"\n    >\n      <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n        <slot :name=\"name\" v-bind=\"slotProps\" />\n      </template>\n    </el-input>\n    <el-tooltip\n      ref=\"tooltipRef\"\n      :visible=\"dropdownVisible\"\n      :popper-class=\"[ns.e('popper'), popperClass!]\"\n      :popper-style=\"popperStyle\"\n      :popper-options=\"popperOptions\"\n      :placement=\"computedPlacement\"\n      :fallback-placements=\"computedFallbackPlacements\"\n      effect=\"light\"\n      pure\n      :offset=\"offset\"\n      :show-arrow=\"showArrow\"\n    >\n      <template #default>\n        <div :style=\"cursorStyle\" />\n      </template>\n      <template #content>\n        <el-mention-dropdown\n          ref=\"dropdownRef\"\n          :options=\"filteredOptions\"\n          :disabled=\"disabled\"\n          :loading=\"loading\"\n          :content-id=\"contentId\"\n          :aria-label=\"ariaLabel\"\n          @select=\"handleSelect\"\n          @click.stop=\"elInputRef?.focus()\"\n        >\n          <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n            <slot :name=\"name\" v-bind=\"slotProps\" />\n          </template>\n        </el-mention-dropdown>\n      </template>\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, mergeProps, nextTick, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport {\n  useFocusController,\n  useId,\n  useNamespace,\n} from '@pit-element-plus/hooks'\nimport ElInput, {\n  inputProps,\n  inputPropsDefaults,\n} from '@pit-element-plus/components/input'\nimport ElTooltip from '@pit-element-plus/components/tooltip'\nimport {\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@pit-element-plus/constants'\nimport { useFormDisabled } from '@pit-element-plus/components/form'\nimport { getEventCode, isFunction } from '@pit-element-plus/utils'\nimport { mentionDefaultProps, mentionEmits } from './mention'\nimport { filterOption, getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\nimport type { MentionProps } from './mention'\nimport type { Placement } from '@popperjs/core'\nimport type { CSSProperties } from 'vue'\nimport type { InputInstance } from '@pit-element-plus/components/input'\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { MentionCtx, MentionOption } from './types'\n\ndefineOptions({\n  name: 'ElMention',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MentionProps>(), {\n  ...inputPropsDefaults,\n  options: () => [],\n  prefix: '@',\n  split: ' ',\n  filterOption: () => filterOption,\n  placement: 'bottom',\n  offset: 0,\n  popperOptions: () => ({}),\n  props: () => mentionDefaultProps,\n})\nconst emit = defineEmits(mentionEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst ns = useNamespace('mention')\nconst disabled = useFormDisabled()\nconst contentId = useId()\n\nconst elInputRef = ref<InputInstance>()\nconst tooltipRef = ref<TooltipInstance>()\nconst dropdownRef = ref<InstanceType<typeof ElMentionDropdown>>()\n\nconst visible = ref(false)\nconst cursorStyle = ref<CSSProperties>()\nconst mentionCtx = ref<MentionCtx>()\n\nconst computedPlacement = computed<Placement>(() =>\n  props.showArrow ? props.placement : `${props.placement}-start`\n)\n\nconst computedFallbackPlacements = computed<Placement[]>(() =>\n  props.showArrow ? ['bottom', 'top'] : ['bottom-start', 'top-start']\n)\n\nconst aliasProps = computed(() => ({\n  ...mentionDefaultProps,\n  ...props.props,\n}))\n\nconst mapOption = (option: MentionOption) => {\n  const base = {\n    label: option[aliasProps.value.label],\n    value: option[aliasProps.value.value],\n    disabled: option[aliasProps.value.disabled],\n  }\n  return { ...option, ...base }\n}\n\nconst options = computed(() => props.options.map(mapOption))\n\nconst filteredOptions = computed(() => {\n  const { filterOption } = props\n  if (!mentionCtx.value || !filterOption) return options.value\n  return options.value.filter((option) =>\n    filterOption(mentionCtx.value!.pattern, option)\n  )\n})\n\nconst dropdownVisible = computed(() => {\n  return visible.value && (!!filteredOptions.value.length || props.loading)\n})\n\nconst hoveringId = computed(() => {\n  return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`\n})\n\nconst handleInputChange = (value: string) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(INPUT_EVENT, value)\n  syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (event: KeyboardEvent | Event) => {\n  if (elInputRef.value?.isComposing) return\n  const code = getEventCode(event as KeyboardEvent)\n\n  switch (code) {\n    case EVENT_CODE.left:\n    case EVENT_CODE.right:\n      syncAfterCursorMove()\n      break\n    case EVENT_CODE.up:\n    case EVENT_CODE.down:\n      if (!visible.value) return\n      event.preventDefault()\n      dropdownRef.value?.navigateOptions(\n        code === EVENT_CODE.up ? 'prev' : 'next'\n      )\n      break\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      if (!visible.value) {\n        props.type !== 'textarea' && syncAfterCursorMove()\n        return\n      }\n      event.preventDefault()\n      if (dropdownRef.value?.hoverOption) {\n        dropdownRef.value?.selectHoverOption()\n      } else {\n        visible.value = false\n      }\n      break\n    case EVENT_CODE.esc:\n      if (!visible.value) return\n      event.preventDefault()\n      visible.value = false\n      break\n    case EVENT_CODE.backspace:\n      if (props.whole && mentionCtx.value) {\n        const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } =\n          mentionCtx.value\n        const inputEl = getInputEl()\n        if (!inputEl) return\n        const inputValue = inputEl.value\n        const matchOption = options.value.find((item) => item.value === pattern)\n        const isWhole = isFunction(props.checkIsWhole)\n          ? props.checkIsWhole(pattern, prefix)\n          : matchOption\n        if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {\n          event.preventDefault()\n          const newValue =\n            inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n          emit(UPDATE_MODEL_EVENT, newValue)\n          emit(INPUT_EVENT, newValue)\n          emit('whole-remove', pattern, prefix)\n\n          const newSelectionEnd = prefixIndex\n          nextTick(() => {\n            // input value is updated\n            inputEl.selectionStart = newSelectionEnd\n            inputEl.selectionEnd = newSelectionEnd\n            syncDropdownVisible()\n          })\n        }\n      }\n  }\n}\n\nconst { wrapperRef } = useFocusController(elInputRef, {\n  disabled,\n  afterFocus() {\n    syncAfterCursorMove()\n  },\n  beforeBlur(event) {\n    return tooltipRef.value?.isFocusInsideContent(event)\n  },\n  afterBlur() {\n    visible.value = false\n  },\n})\n\nconst handleInputMouseDown = () => {\n  syncAfterCursorMove()\n}\n\n// Ensure that the original option passed by users is returned\nconst getOriginalOption = (mentionOption: MentionOption) => {\n  return props.options.find((option: MentionOption) => {\n    return mentionOption.value === option[aliasProps.value.value]\n  })\n}\n\nconst handleSelect = (item: MentionOption) => {\n  if (!mentionCtx.value) return\n  const inputEl = getInputEl()\n  if (!inputEl) return\n  const inputValue = inputEl.value\n  const { split } = props\n\n  const newEndPart = inputValue.slice(mentionCtx.value.end)\n  const alreadySeparated = newEndPart.startsWith(split)\n  const newMiddlePart = `${item.value}${alreadySeparated ? '' : split}`\n\n  const newValue =\n    inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart\n\n  emit(UPDATE_MODEL_EVENT, newValue)\n  emit(INPUT_EVENT, newValue)\n  emit('select', getOriginalOption(item)!, mentionCtx.value.prefix)\n\n  const newSelectionEnd =\n    mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0)\n\n  nextTick(() => {\n    // input value is updated\n    inputEl.selectionStart = newSelectionEnd\n    inputEl.selectionEnd = newSelectionEnd\n    inputEl.focus()\n    syncDropdownVisible()\n  })\n}\n\nconst getInputEl = () =>\n  props.type === 'textarea'\n    ? elInputRef.value?.textarea\n    : elInputRef.value?.input\n\nconst syncAfterCursorMove = () => {\n  // can't use nextTick(), get cursor position will be wrong\n  setTimeout(() => {\n    syncCursor()\n    syncDropdownVisible()\n    nextTick(() => tooltipRef.value?.updatePopper())\n  }, 0)\n}\n\nconst syncCursor = () => {\n  const inputEl = getInputEl()\n  if (!inputEl) return\n\n  const caretPosition = getCursorPosition(inputEl)\n  const inputRect = inputEl.getBoundingClientRect()\n  const wrapperRect = wrapperRef.value!.getBoundingClientRect()\n\n  cursorStyle.value = {\n    position: 'absolute',\n    width: 0,\n    height: `${caretPosition.height}px`,\n    left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,\n    top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`,\n  }\n}\n\nconst syncDropdownVisible = () => {\n  const inputEl = getInputEl()\n  if (document.activeElement !== inputEl) {\n    visible.value = false\n    return\n  }\n  const { prefix, split } = props\n  mentionCtx.value = getMentionCtx(inputEl, prefix, split)\n  if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {\n    visible.value = true\n    emit('search', mentionCtx.value.pattern, mentionCtx.value.prefix)\n    return\n  }\n  visible.value = false\n}\n\ndefineExpose({\n  input: elInputRef,\n  tooltip: tooltipRef,\n  dropdownVisible,\n})\n</script>\n","import { withInstall } from '@pit-element-plus/utils'\nimport Mention from './src/mention.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElMention: SFCWithInstall<typeof Mention> = withInstall(Mention)\nexport default ElMention\n\nexport * from './src/mention'\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type Splitter from './splitter.vue'\nimport type { Layout } from './type'\n\nexport interface SplitterProps {\n  layout?: Layout\n  lazy?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `SplitterProps` instead.\n */\nexport const splitterProps = buildProps({\n  layout: {\n    type: String,\n    default: 'horizontal',\n    values: ['horizontal', 'vertical'] as const,\n  },\n  lazy: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `SplitterProps` instead.\n */\nexport type SplitterPropsPublic = ExtractPublicPropTypes<typeof splitterProps>\nexport type SplitterInstance = InstanceType<typeof Splitter> & unknown\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const splitterEmits = {\n  resizeStart: (index: number, sizes: number[]) => true,\n  resize: (index: number, sizes: number[]) => true,\n  resizeEnd: (index: number, sizes: number[]) => true,\n  collapse: (index: number, type: 'start' | 'end', sizes: number[]) => true,\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nexport type SplitterEmits = typeof splitterEmits\n","import { computed, ref } from 'vue'\nimport { useElementSize } from '@vueuse/core'\n\nimport type { Ref } from 'vue'\n\nexport function useContainer(layout: Ref<'horizontal' | 'vertical'>) {\n  const containerEl = ref<HTMLDivElement>()\n  const { width, height } = useElementSize(containerEl)\n\n  const containerSize = computed(() => {\n    return layout.value === 'horizontal' ? width.value : height.value\n  })\n\n  return { containerEl, containerSize }\n}\n","import { computed, ref, watch } from 'vue'\nimport { isString } from '@pit-element-plus/utils'\n\nimport type { ComputedRef, Ref } from 'vue'\nimport type { PanelItemState } from '../type'\n\nexport function getPct(str: string) {\n  return Number(str.slice(0, -1)) / 100\n}\n\nexport function getPx(str: string) {\n  return Number(str.slice(0, -2))\n}\n\nexport function isPct(\n  itemSize: string | number | undefined\n): itemSize is string {\n  return isString(itemSize) && itemSize.endsWith('%')\n}\n\nexport function isPx(\n  itemSize: string | number | undefined\n): itemSize is string {\n  return isString(itemSize) && itemSize.endsWith('px')\n}\n\nexport function useSize(\n  panels: Ref<PanelItemState[]>,\n  containerSize: ComputedRef<number>\n) {\n  const propSizes = computed(() => panels.value.map((i) => i.size))\n\n  const panelCounts = computed(() => panels.value.length)\n\n  const percentSizes = ref<number[]>([])\n\n  watch([propSizes, panelCounts, containerSize], () => {\n    let ptgList: (number | undefined)[] = []\n    let emptyCount = 0\n\n    // Convert the passed props size to a percentage\n    for (let i = 0; i < panelCounts.value; i += 1) {\n      const itemSize = panels.value[i]?.size\n\n      if (isPct(itemSize)) {\n        ptgList[i] = getPct(itemSize)\n      } else if (isPx(itemSize)) {\n        ptgList[i] = getPx(itemSize) / containerSize.value\n      } else if (itemSize || itemSize === 0) {\n        const num = Number(itemSize)\n\n        if (!Number.isNaN(num)) {\n          ptgList[i] = num / containerSize.value\n        }\n      } else {\n        emptyCount += 1\n        ptgList[i] = undefined\n      }\n    }\n\n    const totalPtg = ptgList.reduce<number>((acc, ptg) => acc + (ptg || 0), 0)\n\n    if (totalPtg > 1 || !emptyCount) {\n      // If it is greater than 1, the scaling ratio\n      const scale = 1 / totalPtg\n      ptgList = ptgList.map((ptg) => (ptg === undefined ? 0 : ptg * scale))\n    } else {\n      // If it is less than 1, the filling ratio\n      const avgRest = (1 - totalPtg) / emptyCount\n      ptgList = ptgList.map((ptg) => (ptg === undefined ? avgRest : ptg))\n    }\n\n    percentSizes.value = ptgList as number[]\n  })\n\n  const ptg2px = (ptg: number) => ptg * containerSize.value\n  const pxSizes = computed(() => percentSizes.value.map(ptg2px))\n\n  return { percentSizes, pxSizes }\n}\n","import { computed, ref, watch } from 'vue'\nimport { getPct, getPx, isPct, isPx } from './useSize'\nimport { NOOP } from '@pit-element-plus/utils'\n\nimport type { ComputedRef, Ref } from 'vue'\nimport type { PanelItemState } from '../type'\n\nexport function useResize(\n  panels: Ref<PanelItemState[]>,\n  containerSize: ComputedRef<number>,\n  pxSizes: ComputedRef<number[]>,\n  lazy: Ref<boolean>\n) {\n  const ptg2px = (ptg: number) => ptg * containerSize.value || 0\n\n  function getLimitSize(\n    str: string | number | undefined,\n    defaultLimit: number\n  ) {\n    if (isPct(str)) {\n      return ptg2px(getPct(str))\n    } else if (isPx(str)) {\n      return getPx(str)\n    }\n    return str ?? defaultLimit\n  }\n\n  const lazyOffset = ref(0)\n  const movingIndex = ref<{\n    index: number\n    confirmed: boolean\n  } | null>(null)\n\n  let cachePxSizes: number[] = []\n  let updatePanelSizes = NOOP\n\n  const limitSizes = computed(() =>\n    panels.value.map((item) => [item.min, item.max])\n  )\n\n  watch(lazy, () => {\n    if (lazyOffset.value) {\n      const mouseup = new MouseEvent('mouseup', { bubbles: true })\n      window.dispatchEvent(mouseup)\n    }\n  })\n\n  const onMoveStart = (index: number) => {\n    lazyOffset.value = 0\n    movingIndex.value = { index, confirmed: false }\n    cachePxSizes = pxSizes.value\n  }\n\n  const onMoving = (index: number, offset: number) => {\n    let confirmedIndex: number | null = null\n\n    // When overlapping, find the nearest draggable index\n    if ((!movingIndex.value || !movingIndex.value.confirmed) && offset !== 0) {\n      if (offset > 0) {\n        confirmedIndex = index\n        movingIndex.value = { index, confirmed: true }\n      } else {\n        for (let i = index; i >= 0; i -= 1) {\n          if (cachePxSizes[i]! > 0) {\n            confirmedIndex = i\n            movingIndex.value = { index: i, confirmed: true }\n            break\n          }\n        }\n      }\n    }\n    const mergedIndex = confirmedIndex ?? movingIndex.value?.index ?? index\n\n    const numSizes = [...cachePxSizes]\n    const nextIndex = mergedIndex + 1\n\n    // Handle the maximum and minimum edge cases\n    const startMinSize = getLimitSize(limitSizes.value[mergedIndex]![0], 0)\n    const endMinSize = getLimitSize(limitSizes.value[nextIndex]![0], 0)\n    const startMaxSize = getLimitSize(\n      limitSizes.value[mergedIndex]![1],\n      containerSize.value || 0\n    )\n    const endMaxSize = getLimitSize(\n      limitSizes.value[nextIndex]![1],\n      containerSize.value || 0\n    )\n\n    let mergedOffset = offset\n\n    if (numSizes[mergedIndex]! + mergedOffset < startMinSize) {\n      mergedOffset = startMinSize - numSizes[mergedIndex]!\n    }\n    if (numSizes[nextIndex]! - mergedOffset < endMinSize) {\n      mergedOffset = numSizes[nextIndex]! - endMinSize\n    }\n    if (numSizes[mergedIndex]! + mergedOffset > startMaxSize) {\n      mergedOffset = startMaxSize - numSizes[mergedIndex]!\n    }\n    if (numSizes[nextIndex]! - mergedOffset > endMaxSize) {\n      mergedOffset = numSizes[nextIndex]! - endMaxSize\n    }\n\n    numSizes[mergedIndex]! += mergedOffset\n    numSizes[nextIndex]! -= mergedOffset\n    lazyOffset.value = mergedOffset\n\n    updatePanelSizes = () => {\n      panels.value.forEach((panel, index) => {\n        panel.size = numSizes[index]\n      })\n      updatePanelSizes = NOOP\n    }\n\n    if (!lazy.value) {\n      updatePanelSizes()\n    }\n  }\n\n  const onMoveEnd = () => {\n    if (lazy.value) {\n      updatePanelSizes()\n    }\n\n    lazyOffset.value = 0\n    movingIndex.value = null\n    cachePxSizes = []\n  }\n\n  const cacheCollapsedSize: number[] = []\n  const onCollapse = (index: number, type: 'start' | 'end') => {\n    if (!cacheCollapsedSize.length) {\n      cacheCollapsedSize.push(...pxSizes.value)\n    }\n\n    const currentSizes = pxSizes.value\n\n    const currentIndex = type === 'start' ? index : index + 1\n    const targetIndex = type === 'start' ? index + 1 : index\n\n    const currentSize = currentSizes[currentIndex]\n    const targetSize = currentSizes[targetIndex]\n\n    if (currentSize !== 0 && targetSize !== 0) {\n      currentSizes[currentIndex] = 0\n      currentSizes[targetIndex]! += currentSize\n      cacheCollapsedSize[index] = currentSize\n    } else {\n      const totalSize = currentSize + targetSize\n\n      const targetCacheCollapsedSize = cacheCollapsedSize[index]\n      const currentCacheCollapsedSize = totalSize - targetCacheCollapsedSize\n\n      currentSizes[targetIndex] = targetCacheCollapsedSize\n      currentSizes[currentIndex] = currentCacheCollapsedSize\n    }\n\n    panels.value.forEach((panel, index) => {\n      panel.size = currentSizes[index]\n    })\n  }\n\n  return {\n    lazyOffset,\n    onMoveStart,\n    onMoving,\n    onMoveEnd,\n    movingIndex,\n    onCollapse,\n  }\n}\n","import type { InjectionKey, UnwrapRef, VNode } from 'vue'\n\nexport type Layout = 'horizontal' | 'vertical'\n\nexport type PanelItemState = UnwrapRef<{\n  uid: number\n  getVnode: () => VNode\n  collapsible: { start?: boolean; end?: boolean }\n  max?: number | string\n  min?: number | string\n  resizable: boolean\n  size?: number | string\n  setIndex: (val: number) => void\n}>\n\nexport interface SplitterRootContext {\n  panels: PanelItemState[]\n  layout: Layout\n  lazy: boolean\n  containerSize: number\n  movingIndex: { index: number; confirmed: boolean } | null\n  percentSizes: number[]\n  pxSizes: number[]\n  registerPanel: (pane: PanelItemState) => void\n  unregisterPanel: (pane: PanelItemState) => void\n  onCollapse: (index: number, type: 'start' | 'end') => void\n  onMoveEnd: (index: number) => Promise<void>\n  onMoveStart: (index: number) => void\n  onMoving: (index: number, offset: number) => void\n}\n\nexport const splitterRootContextKey: InjectionKey<SplitterRootContext> = Symbol(\n  'splitterRootContextKey'\n)\n","<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  provide,\n  reactive,\n  toRef,\n  watch,\n} from 'vue'\nimport { useNamespace, useOrderedChildren } from '@pit-element-plus/hooks'\nimport { useContainer, useResize, useSize } from './hooks'\nimport { splitterEmits } from './splitter'\nimport { splitterRootContextKey } from './type'\n\nimport type { PanelItemState } from './type'\nimport type { SplitterProps } from './splitter'\n\nconst ns = useNamespace('splitter')\n\ndefineOptions({\n  name: 'ElSplitter',\n})\n\nconst emits = defineEmits(splitterEmits)\n\nconst props = withDefaults(defineProps<SplitterProps>(), {\n  layout: 'horizontal',\n})\nconst layout = toRef(props, 'layout')\nconst lazy = toRef(props, 'lazy')\n\nconst { containerEl, containerSize } = useContainer(layout)\n\nconst {\n  removeChild: unregisterPanel,\n  children: panels,\n  addChild: registerPanel,\n  ChildrenSorter: PanelsSorter,\n} = useOrderedChildren<PanelItemState>(getCurrentInstance()!, 'ElSplitterPanel')\n\nwatch(panels, () => {\n  movingIndex.value = null\n  panels.value.forEach((instance: PanelItemState, index: number) => {\n    instance.setIndex(index)\n  })\n})\n\nconst { percentSizes, pxSizes } = useSize(panels, containerSize)\n\nconst {\n  lazyOffset,\n  movingIndex,\n  onMoveStart,\n  onMoving,\n  onMoveEnd,\n  onCollapse,\n} = useResize(panels, containerSize, pxSizes, lazy)\n\nconst splitterStyles = computed(() => {\n  return {\n    [ns.cssVarBlockName('bar-offset')]: lazy.value\n      ? `${lazyOffset.value}px`\n      : undefined,\n  }\n})\n\nconst onResizeStart = (index: number) => {\n  onMoveStart(index)\n  emits('resizeStart', index, pxSizes.value)\n}\n\nconst onResize = (index: number, offset: number) => {\n  onMoving(index, offset)\n\n  if (!lazy.value) {\n    emits('resize', index, pxSizes.value)\n  }\n}\n\nconst onResizeEnd = async (index: number) => {\n  onMoveEnd()\n  await nextTick()\n  emits('resizeEnd', index, pxSizes.value)\n}\n\nconst onCollapsible = (index: number, type: 'start' | 'end') => {\n  onCollapse(index, type)\n  emits('collapse', index, type, pxSizes.value)\n}\n\nprovide(\n  splitterRootContextKey,\n  reactive({\n    panels,\n    percentSizes,\n    pxSizes,\n    layout,\n    lazy,\n    movingIndex,\n    containerSize,\n    onMoveStart: onResizeStart,\n    onMoving: onResize,\n    onMoveEnd: onResizeEnd,\n    onCollapse: onCollapsible,\n    registerPanel,\n    unregisterPanel,\n  })\n)\n</script>\n\n<template>\n  <div\n    ref=\"containerEl\"\n    :class=\"[ns.b(), ns.e(layout)]\"\n    :style=\"splitterStyles\"\n  >\n    <slot />\n    <panels-sorter />\n    <!-- Prevent iframe touch events from breaking -->\n    <div v-if=\"movingIndex\" :class=\"[ns.e('mask'), ns.e(`mask-${layout}`)]\" />\n  </div>\n</template>\n","<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  provide,\n  reactive,\n  toRef,\n  watch,\n} from 'vue'\nimport { useNamespace, useOrderedChildren } from '@pit-element-plus/hooks'\nimport { useContainer, useResize, useSize } from './hooks'\nimport { splitterEmits } from './splitter'\nimport { splitterRootContextKey } from './type'\n\nimport type { PanelItemState } from './type'\nimport type { SplitterProps } from './splitter'\n\nconst ns = useNamespace('splitter')\n\ndefineOptions({\n  name: 'ElSplitter',\n})\n\nconst emits = defineEmits(splitterEmits)\n\nconst props = withDefaults(defineProps<SplitterProps>(), {\n  layout: 'horizontal',\n})\nconst layout = toRef(props, 'layout')\nconst lazy = toRef(props, 'lazy')\n\nconst { containerEl, containerSize } = useContainer(layout)\n\nconst {\n  removeChild: unregisterPanel,\n  children: panels,\n  addChild: registerPanel,\n  ChildrenSorter: PanelsSorter,\n} = useOrderedChildren<PanelItemState>(getCurrentInstance()!, 'ElSplitterPanel')\n\nwatch(panels, () => {\n  movingIndex.value = null\n  panels.value.forEach((instance: PanelItemState, index: number) => {\n    instance.setIndex(index)\n  })\n})\n\nconst { percentSizes, pxSizes } = useSize(panels, containerSize)\n\nconst {\n  lazyOffset,\n  movingIndex,\n  onMoveStart,\n  onMoving,\n  onMoveEnd,\n  onCollapse,\n} = useResize(panels, containerSize, pxSizes, lazy)\n\nconst splitterStyles = computed(() => {\n  return {\n    [ns.cssVarBlockName('bar-offset')]: lazy.value\n      ? `${lazyOffset.value}px`\n      : undefined,\n  }\n})\n\nconst onResizeStart = (index: number) => {\n  onMoveStart(index)\n  emits('resizeStart', index, pxSizes.value)\n}\n\nconst onResize = (index: number, offset: number) => {\n  onMoving(index, offset)\n\n  if (!lazy.value) {\n    emits('resize', index, pxSizes.value)\n  }\n}\n\nconst onResizeEnd = async (index: number) => {\n  onMoveEnd()\n  await nextTick()\n  emits('resizeEnd', index, pxSizes.value)\n}\n\nconst onCollapsible = (index: number, type: 'start' | 'end') => {\n  onCollapse(index, type)\n  emits('collapse', index, type, pxSizes.value)\n}\n\nprovide(\n  splitterRootContextKey,\n  reactive({\n    panels,\n    percentSizes,\n    pxSizes,\n    layout,\n    lazy,\n    movingIndex,\n    containerSize,\n    onMoveStart: onResizeStart,\n    onMoving: onResize,\n    onMoveEnd: onResizeEnd,\n    onCollapse: onCollapsible,\n    registerPanel,\n    unregisterPanel,\n  })\n)\n</script>\n\n<template>\n  <div\n    ref=\"containerEl\"\n    :class=\"[ns.b(), ns.e(layout)]\"\n    :style=\"splitterStyles\"\n  >\n    <slot />\n    <panels-sorter />\n    <!-- Prevent iframe touch events from breaking -->\n    <div v-if=\"movingIndex\" :class=\"[ns.e('mask'), ns.e(`mask-${layout}`)]\" />\n  </div>\n</template>\n","<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  provide,\n  reactive,\n  toRef,\n  watch,\n} from 'vue'\nimport { useNamespace, useOrderedChildren } from '@pit-element-plus/hooks'\nimport { useContainer, useResize, useSize } from './hooks'\nimport { splitterEmits } from './splitter'\nimport { splitterRootContextKey } from './type'\n\nimport type { PanelItemState } from './type'\nimport type { SplitterProps } from './splitter'\n\nconst ns = useNamespace('splitter')\n\ndefineOptions({\n  name: 'ElSplitter',\n})\n\nconst emits = defineEmits(splitterEmits)\n\nconst props = withDefaults(defineProps<SplitterProps>(), {\n  layout: 'horizontal',\n})\nconst layout = toRef(props, 'layout')\nconst lazy = toRef(props, 'lazy')\n\nconst { containerEl, containerSize } = useContainer(layout)\n\nconst {\n  removeChild: unregisterPanel,\n  children: panels,\n  addChild: registerPanel,\n  ChildrenSorter: PanelsSorter,\n} = useOrderedChildren<PanelItemState>(getCurrentInstance()!, 'ElSplitterPanel')\n\nwatch(panels, () => {\n  movingIndex.value = null\n  panels.value.forEach((instance: PanelItemState, index: number) => {\n    instance.setIndex(index)\n  })\n})\n\nconst { percentSizes, pxSizes } = useSize(panels, containerSize)\n\nconst {\n  lazyOffset,\n  movingIndex,\n  onMoveStart,\n  onMoving,\n  onMoveEnd,\n  onCollapse,\n} = useResize(panels, containerSize, pxSizes, lazy)\n\nconst splitterStyles = computed(() => {\n  return {\n    [ns.cssVarBlockName('bar-offset')]: lazy.value\n      ? `${lazyOffset.value}px`\n      : undefined,\n  }\n})\n\nconst onResizeStart = (index: number) => {\n  onMoveStart(index)\n  emits('resizeStart', index, pxSizes.value)\n}\n\nconst onResize = (index: number, offset: number) => {\n  onMoving(index, offset)\n\n  if (!lazy.value) {\n    emits('resize', index, pxSizes.value)\n  }\n}\n\nconst onResizeEnd = async (index: number) => {\n  onMoveEnd()\n  await nextTick()\n  emits('resizeEnd', index, pxSizes.value)\n}\n\nconst onCollapsible = (index: number, type: 'start' | 'end') => {\n  onCollapse(index, type)\n  emits('collapse', index, type, pxSizes.value)\n}\n\nprovide(\n  splitterRootContextKey,\n  reactive({\n    panels,\n    percentSizes,\n    pxSizes,\n    layout,\n    lazy,\n    movingIndex,\n    containerSize,\n    onMoveStart: onResizeStart,\n    onMoving: onResize,\n    onMoveEnd: onResizeEnd,\n    onCollapse: onCollapsible,\n    registerPanel,\n    unregisterPanel,\n  })\n)\n</script>\n\n<template>\n  <div\n    ref=\"containerEl\"\n    :class=\"[ns.b(), ns.e(layout)]\"\n    :style=\"splitterStyles\"\n  >\n    <slot />\n    <panels-sorter />\n    <!-- Prevent iframe touch events from breaking -->\n    <div v-if=\"movingIndex\" :class=\"[ns.e('mask'), ns.e(`mask-${layout}`)]\" />\n  </div>\n</template>\n","import { buildProps } from '@pit-element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type SplitterPanel from './split-panel.vue'\n\nexport interface SplitterPanelProps {\n  min?: string | number\n  max?: string | number\n  size?: string | number\n  resizable?: boolean\n  collapsible?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `SplitterPanelProps` instead.\n */\nexport const splitterPanelProps = buildProps({\n  min: {\n    type: [String, Number],\n  },\n  max: {\n    type: [String, Number],\n  },\n  size: {\n    type: [String, Number],\n  },\n  resizable: {\n    type: Boolean,\n    default: true,\n  },\n  collapsible: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `SplitterPanelProps` instead.\n */\nexport type SplitterPanelPropsPublic = ExtractPublicPropTypes<\n  typeof splitterPanelProps\n>\nexport type SplitterPanelInstance = InstanceType<typeof SplitterPanel> & unknown\n\nexport const splitterPanelEmits = {\n  'update:size': (value: number | string) =>\n    typeof value === 'number' || typeof value === 'string',\n}\n\nexport type SplitterPanelEmits = typeof splitterPanelEmits\n","import { isObject } from '@pit-element-plus/utils'\n\nimport type { PanelItemState } from '../type'\n\nexport function getCollapsible(\n  collapsible: boolean | { start?: boolean; end?: boolean }\n) {\n  if (collapsible && isObject(collapsible)) {\n    return collapsible\n  }\n  return {\n    start: !!collapsible,\n    end: !!collapsible,\n  }\n}\n\nexport function isCollapsible(\n  panel: PanelItemState | null | undefined,\n  size: number,\n  nextPanel: PanelItemState | null | undefined,\n  nextSize: number\n) {\n  // If the current panel is collapsible and has size, then it can be collapsed\n  if (panel?.collapsible.end && size > 0) {\n    return true\n  }\n\n  // If the next panel is collapsible and has no size, but the current panel has size, then it can be collapsed\n  if (nextPanel?.collapsible.start && nextSize === 0 && size > 0) {\n    return true\n  }\n\n  return false\n}\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { ArrowDown, ArrowLeft, ArrowRight, ArrowUp } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nconst ns = useNamespace('splitter-bar')\n\ndefineOptions({\n  name: 'ElSplitterBar',\n})\n\nconst props = defineProps({\n  index: {\n    type: Number,\n    required: true,\n  },\n  layout: {\n    type: String,\n    values: ['horizontal', 'vertical'] as const,\n    default: 'horizontal',\n  },\n  resizable: {\n    type: Boolean,\n    default: true,\n  },\n  lazy: Boolean,\n  startCollapsible: Boolean,\n  endCollapsible: Boolean,\n})\n\nconst emit = defineEmits(['moveStart', 'moving', 'moveEnd', 'collapse'])\n\nconst isHorizontal = computed(() => props.layout === 'horizontal')\n\nconst barWrapStyles = computed(() => {\n  if (isHorizontal.value) {\n    return { width: 0 }\n  }\n  return { height: 0 }\n})\n\nconst draggerStyles = computed(() => {\n  return {\n    width: isHorizontal.value ? '16px' : '100%',\n    height: isHorizontal.value ? '100%' : '16px',\n    cursor: !props.resizable\n      ? 'auto'\n      : isHorizontal.value\n        ? 'ew-resize'\n        : 'ns-resize',\n    touchAction: 'none',\n  }\n})\n\nconst draggerPseudoClass = computed(() => {\n  const prefix = ns.e('dragger')\n  return {\n    [`${prefix}-horizontal`]: isHorizontal.value,\n    [`${prefix}-vertical`]: !isHorizontal.value,\n    [`${prefix}-active`]: !!startPos.value,\n  }\n})\n\nconst startPos = ref<[x: number, y: number] | null>(null)\n\n// Start dragging\nconst onMousedown = (e: MouseEvent) => {\n  if (!props.resizable) return\n  startPos.value = [e.pageX, e.pageY]\n  emit('moveStart', props.index)\n  window.addEventListener('mouseup', onMouseUp)\n  window.addEventListener('mousemove', onMouseMove)\n}\n\nconst onTouchStart = (e: TouchEvent) => {\n  if (props.resizable && e.touches.length === 1) {\n    e.preventDefault()\n    const touch = e.touches[0]\n    startPos.value = [touch.pageX, touch.pageY]\n    emit('moveStart', props.index)\n    window.addEventListener('touchend', onTouchEnd)\n    window.addEventListener('touchmove', onTouchMove)\n  }\n}\n\n// During dragging\nconst onMouseMove = (e: MouseEvent) => {\n  const { pageX, pageY } = e\n  const offsetX = pageX - startPos.value![0]\n  const offsetY = pageY - startPos.value![1]\n  const offset = isHorizontal.value ? offsetX : offsetY\n  emit('moving', props.index, offset)\n}\n\nconst onTouchMove = (e: TouchEvent) => {\n  if (e.touches.length === 1) {\n    e.preventDefault()\n    const touch = e.touches[0]\n    const offsetX = touch.pageX - startPos.value![0]\n    const offsetY = touch.pageY - startPos.value![1]\n    const offset = isHorizontal.value ? offsetX : offsetY\n    emit('moving', props.index, offset)\n  }\n}\n\n// End dragging\nconst onMouseUp = () => {\n  startPos.value = null\n  window.removeEventListener('mouseup', onMouseUp)\n  window.removeEventListener('mousemove', onMouseMove)\n  emit('moveEnd', props.index)\n}\n\nconst onTouchEnd = () => {\n  startPos.value = null\n  window.removeEventListener('touchend', onTouchEnd)\n  window.removeEventListener('touchmove', onTouchMove)\n  emit('moveEnd', props.index)\n}\n\nconst StartIcon = computed(() => (isHorizontal.value ? ArrowLeft : ArrowUp))\nconst EndIcon = computed(() => (isHorizontal.value ? ArrowRight : ArrowDown))\n</script>\n\n<template>\n  <div :class=\"[ns.b()]\" :style=\"barWrapStyles\">\n    <div\n      v-if=\"startCollapsible\"\n      :class=\"[ns.e('collapse-icon'), ns.e(`${layout}-collapse-icon-start`)]\"\n      @click=\"emit('collapse', index, 'start')\"\n    >\n      <slot name=\"start-collapsible\">\n        <component :is=\"StartIcon\" style=\"width: 12px; height: 12px\" />\n      </slot>\n    </div>\n\n    <div\n      :class=\"[\n        ns.e('dragger'),\n        draggerPseudoClass,\n        ns.is('disabled', !resizable),\n        ns.is('lazy', resizable && lazy),\n      ]\"\n      :style=\"draggerStyles\"\n      @mousedown=\"onMousedown\"\n      @touchstart=\"onTouchStart\"\n    />\n    <div\n      v-if=\"endCollapsible\"\n      :class=\"[ns.e('collapse-icon'), ns.e(`${layout}-collapse-icon-end`)]\"\n      @click=\"emit('collapse', index, 'end')\"\n    >\n      <slot name=\"end-collapsible\">\n        <component :is=\"EndIcon\" style=\"width: 12px; height: 12px\" />\n      </slot>\n    </div>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { ArrowDown, ArrowLeft, ArrowRight, ArrowUp } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nconst ns = useNamespace('splitter-bar')\n\ndefineOptions({\n  name: 'ElSplitterBar',\n})\n\nconst props = defineProps({\n  index: {\n    type: Number,\n    required: true,\n  },\n  layout: {\n    type: String,\n    values: ['horizontal', 'vertical'] as const,\n    default: 'horizontal',\n  },\n  resizable: {\n    type: Boolean,\n    default: true,\n  },\n  lazy: Boolean,\n  startCollapsible: Boolean,\n  endCollapsible: Boolean,\n})\n\nconst emit = defineEmits(['moveStart', 'moving', 'moveEnd', 'collapse'])\n\nconst isHorizontal = computed(() => props.layout === 'horizontal')\n\nconst barWrapStyles = computed(() => {\n  if (isHorizontal.value) {\n    return { width: 0 }\n  }\n  return { height: 0 }\n})\n\nconst draggerStyles = computed(() => {\n  return {\n    width: isHorizontal.value ? '16px' : '100%',\n    height: isHorizontal.value ? '100%' : '16px',\n    cursor: !props.resizable\n      ? 'auto'\n      : isHorizontal.value\n        ? 'ew-resize'\n        : 'ns-resize',\n    touchAction: 'none',\n  }\n})\n\nconst draggerPseudoClass = computed(() => {\n  const prefix = ns.e('dragger')\n  return {\n    [`${prefix}-horizontal`]: isHorizontal.value,\n    [`${prefix}-vertical`]: !isHorizontal.value,\n    [`${prefix}-active`]: !!startPos.value,\n  }\n})\n\nconst startPos = ref<[x: number, y: number] | null>(null)\n\n// Start dragging\nconst onMousedown = (e: MouseEvent) => {\n  if (!props.resizable) return\n  startPos.value = [e.pageX, e.pageY]\n  emit('moveStart', props.index)\n  window.addEventListener('mouseup', onMouseUp)\n  window.addEventListener('mousemove', onMouseMove)\n}\n\nconst onTouchStart = (e: TouchEvent) => {\n  if (props.resizable && e.touches.length === 1) {\n    e.preventDefault()\n    const touch = e.touches[0]\n    startPos.value = [touch.pageX, touch.pageY]\n    emit('moveStart', props.index)\n    window.addEventListener('touchend', onTouchEnd)\n    window.addEventListener('touchmove', onTouchMove)\n  }\n}\n\n// During dragging\nconst onMouseMove = (e: MouseEvent) => {\n  const { pageX, pageY } = e\n  const offsetX = pageX - startPos.value![0]\n  const offsetY = pageY - startPos.value![1]\n  const offset = isHorizontal.value ? offsetX : offsetY\n  emit('moving', props.index, offset)\n}\n\nconst onTouchMove = (e: TouchEvent) => {\n  if (e.touches.length === 1) {\n    e.preventDefault()\n    const touch = e.touches[0]\n    const offsetX = touch.pageX - startPos.value![0]\n    const offsetY = touch.pageY - startPos.value![1]\n    const offset = isHorizontal.value ? offsetX : offsetY\n    emit('moving', props.index, offset)\n  }\n}\n\n// End dragging\nconst onMouseUp = () => {\n  startPos.value = null\n  window.removeEventListener('mouseup', onMouseUp)\n  window.removeEventListener('mousemove', onMouseMove)\n  emit('moveEnd', props.index)\n}\n\nconst onTouchEnd = () => {\n  startPos.value = null\n  window.removeEventListener('touchend', onTouchEnd)\n  window.removeEventListener('touchmove', onTouchMove)\n  emit('moveEnd', props.index)\n}\n\nconst StartIcon = computed(() => (isHorizontal.value ? ArrowLeft : ArrowUp))\nconst EndIcon = computed(() => (isHorizontal.value ? ArrowRight : ArrowDown))\n</script>\n\n<template>\n  <div :class=\"[ns.b()]\" :style=\"barWrapStyles\">\n    <div\n      v-if=\"startCollapsible\"\n      :class=\"[ns.e('collapse-icon'), ns.e(`${layout}-collapse-icon-start`)]\"\n      @click=\"emit('collapse', index, 'start')\"\n    >\n      <slot name=\"start-collapsible\">\n        <component :is=\"StartIcon\" style=\"width: 12px; height: 12px\" />\n      </slot>\n    </div>\n\n    <div\n      :class=\"[\n        ns.e('dragger'),\n        draggerPseudoClass,\n        ns.is('disabled', !resizable),\n        ns.is('lazy', resizable && lazy),\n      ]\"\n      :style=\"draggerStyles\"\n      @mousedown=\"onMousedown\"\n      @touchstart=\"onTouchStart\"\n    />\n    <div\n      v-if=\"endCollapsible\"\n      :class=\"[ns.e('collapse-icon'), ns.e(`${layout}-collapse-icon-end`)]\"\n      @click=\"emit('collapse', index, 'end')\"\n    >\n      <slot name=\"end-collapsible\">\n        <component :is=\"EndIcon\" style=\"width: 12px; height: 12px\" />\n      </slot>\n    </div>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { ArrowDown, ArrowLeft, ArrowRight, ArrowUp } from 'pit-element-icons'\nimport { useNamespace } from '@pit-element-plus/hooks'\n\nconst ns = useNamespace('splitter-bar')\n\ndefineOptions({\n  name: 'ElSplitterBar',\n})\n\nconst props = defineProps({\n  index: {\n    type: Number,\n    required: true,\n  },\n  layout: {\n    type: String,\n    values: ['horizontal', 'vertical'] as const,\n    default: 'horizontal',\n  },\n  resizable: {\n    type: Boolean,\n    default: true,\n  },\n  lazy: Boolean,\n  startCollapsible: Boolean,\n  endCollapsible: Boolean,\n})\n\nconst emit = defineEmits(['moveStart', 'moving', 'moveEnd', 'collapse'])\n\nconst isHorizontal = computed(() => props.layout === 'horizontal')\n\nconst barWrapStyles = computed(() => {\n  if (isHorizontal.value) {\n    return { width: 0 }\n  }\n  return { height: 0 }\n})\n\nconst draggerStyles = computed(() => {\n  return {\n    width: isHorizontal.value ? '16px' : '100%',\n    height: isHorizontal.value ? '100%' : '16px',\n    cursor: !props.resizable\n      ? 'auto'\n      : isHorizontal.value\n        ? 'ew-resize'\n        : 'ns-resize',\n    touchAction: 'none',\n  }\n})\n\nconst draggerPseudoClass = computed(() => {\n  const prefix = ns.e('dragger')\n  return {\n    [`${prefix}-horizontal`]: isHorizontal.value,\n    [`${prefix}-vertical`]: !isHorizontal.value,\n    [`${prefix}-active`]: !!startPos.value,\n  }\n})\n\nconst startPos = ref<[x: number, y: number] | null>(null)\n\n// Start dragging\nconst onMousedown = (e: MouseEvent) => {\n  if (!props.resizable) return\n  startPos.value = [e.pageX, e.pageY]\n  emit('moveStart', props.index)\n  window.addEventListener('mouseup', onMouseUp)\n  window.addEventListener('mousemove', onMouseMove)\n}\n\nconst onTouchStart = (e: TouchEvent) => {\n  if (props.resizable && e.touches.length === 1) {\n    e.preventDefault()\n    const touch = e.touches[0]\n    startPos.value = [touch.pageX, touch.pageY]\n    emit('moveStart', props.index)\n    window.addEventListener('touchend', onTouchEnd)\n    window.addEventListener('touchmove', onTouchMove)\n  }\n}\n\n// During dragging\nconst onMouseMove = (e: MouseEvent) => {\n  const { pageX, pageY } = e\n  const offsetX = pageX - startPos.value![0]\n  const offsetY = pageY - startPos.value![1]\n  const offset = isHorizontal.value ? offsetX : offsetY\n  emit('moving', props.index, offset)\n}\n\nconst onTouchMove = (e: TouchEvent) => {\n  if (e.touches.length === 1) {\n    e.preventDefault()\n    const touch = e.touches[0]\n    const offsetX = touch.pageX - startPos.value![0]\n    const offsetY = touch.pageY - startPos.value![1]\n    const offset = isHorizontal.value ? offsetX : offsetY\n    emit('moving', props.index, offset)\n  }\n}\n\n// End dragging\nconst onMouseUp = () => {\n  startPos.value = null\n  window.removeEventListener('mouseup', onMouseUp)\n  window.removeEventListener('mousemove', onMouseMove)\n  emit('moveEnd', props.index)\n}\n\nconst onTouchEnd = () => {\n  startPos.value = null\n  window.removeEventListener('touchend', onTouchEnd)\n  window.removeEventListener('touchmove', onTouchMove)\n  emit('moveEnd', props.index)\n}\n\nconst StartIcon = computed(() => (isHorizontal.value ? ArrowLeft : ArrowUp))\nconst EndIcon = computed(() => (isHorizontal.value ? ArrowRight : ArrowDown))\n</script>\n\n<template>\n  <div :class=\"[ns.b()]\" :style=\"barWrapStyles\">\n    <div\n      v-if=\"startCollapsible\"\n      :class=\"[ns.e('collapse-icon'), ns.e(`${layout}-collapse-icon-start`)]\"\n      @click=\"emit('collapse', index, 'start')\"\n    >\n      <slot name=\"start-collapsible\">\n        <component :is=\"StartIcon\" style=\"width: 12px; height: 12px\" />\n      </slot>\n    </div>\n\n    <div\n      :class=\"[\n        ns.e('dragger'),\n        draggerPseudoClass,\n        ns.is('disabled', !resizable),\n        ns.is('lazy', resizable && lazy),\n      ]\"\n      :style=\"draggerStyles\"\n      @mousedown=\"onMousedown\"\n      @touchstart=\"onTouchStart\"\n    />\n    <div\n      v-if=\"endCollapsible\"\n      :class=\"[ns.e('collapse-icon'), ns.e(`${layout}-collapse-icon-end`)]\"\n      @click=\"emit('collapse', index, 'end')\"\n    >\n      <slot name=\"end-collapsible\">\n        <component :is=\"EndIcon\" style=\"width: 12px; height: 12px\" />\n      </slot>\n    </div>\n  </div>\n</template>\n","<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { throwError } from '@pit-element-plus/utils'\nimport { getCollapsible, isCollapsible } from './hooks/usePanel'\nimport SplitBar from './split-bar.vue'\nimport { splitterPanelEmits } from './split-panel'\nimport { getPct, getPx, isPct, isPx } from './hooks'\nimport { splitterRootContextKey } from './type'\n\nimport type { SplitterPanelProps } from './split-panel'\n\nconst ns = useNamespace('splitter-panel')\n\nconst COMPONENT_NAME = 'ElSplitterPanel'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<SplitterPanelProps>(), {\n  resizable: true,\n})\n\nconst emits = defineEmits(splitterPanelEmits)\nconst splitterContext = inject(splitterRootContextKey)\nif (!splitterContext)\n  throwError(\n    COMPONENT_NAME,\n    'usage: <el-splitter><el-splitter-panel /></el-splitter/>'\n  )\n\nconst { panels, layout, lazy, containerSize, pxSizes } = toRefs(splitterContext)\n\nconst {\n  registerPanel,\n  unregisterPanel,\n  onCollapse,\n  onMoveEnd,\n  onMoveStart,\n  onMoving,\n} = splitterContext\n\nconst panelEl = ref<HTMLDivElement>()\nconst instance = getCurrentInstance()!\nconst uid = instance.uid\n\nconst index = ref(0)\nconst panel = computed(() => panels.value[index.value])\n\nconst setIndex = (val: number) => {\n  index.value = val\n}\n\nconst panelSize = computed(() => {\n  if (!panel.value) return 0\n  return pxSizes.value[index.value] ?? 0\n})\n\nconst nextSize = computed(() => {\n  if (!panel.value) return 0\n  return pxSizes.value[index.value + 1] ?? 0\n})\n\nconst nextPanel = computed(() => {\n  if (panel.value) {\n    return panels.value[index.value + 1]\n  }\n  return null\n})\n\nconst isResizable = computed(() => {\n  if (!nextPanel.value) return false\n  return (\n    props.resizable &&\n    nextPanel.value?.resizable &&\n    // If it is 0, it means it is collapsed => check if the minimum value is set\n    (panelSize.value !== 0 || !props.min) &&\n    (nextSize.value !== 0 || !nextPanel.value.min)\n  )\n})\n\n// The last panel doesn't need a drag bar\nconst isShowBar = computed(() => {\n  if (!panel.value) return false\n  return index.value !== panels.value.length - 1\n})\n\nconst startCollapsible = computed(() =>\n  isCollapsible(panel.value, panelSize.value, nextPanel.value, nextSize.value)\n)\n\nconst endCollapsible = computed(() =>\n  isCollapsible(nextPanel.value, nextSize.value, panel.value, panelSize.value)\n)\n\nfunction sizeToPx(str: string | number | undefined) {\n  if (isPct(str)) {\n    return getPct(str) * containerSize.value || 0\n  } else if (isPx(str)) {\n    return getPx(str)\n  }\n  return str ?? 0\n}\n\n// Two-way binding for size\nlet isSizeUpdating = false\nwatch(\n  () => props.size,\n  () => {\n    if (!isSizeUpdating && panel.value) {\n      if (!containerSize.value) {\n        panel.value.size = props.size\n        return\n      }\n\n      const size = sizeToPx(props.size)\n      const maxSize = sizeToPx(props.max)\n      const minSize = sizeToPx(props.min)\n\n      // Ensure it is within the maximum and minimum value range\n      const finalSize = Math.min(Math.max(size, minSize || 0), maxSize || size)\n\n      if (finalSize !== size) {\n        emits('update:size', finalSize)\n      }\n\n      panel.value.size = finalSize\n    }\n  }\n)\n\nwatch(\n  () => panel.value?.size,\n  (val) => {\n    if (val !== props.size) {\n      isSizeUpdating = true\n      emits('update:size', val as number)\n      nextTick(() => (isSizeUpdating = false))\n    }\n  }\n)\n\nwatch(\n  () => props.resizable,\n  (val) => {\n    if (panel.value) {\n      panel.value.resizable = val\n    }\n  }\n)\n\nconst _panel = reactive({\n  uid,\n  getVnode: () => instance.vnode,\n  setIndex,\n  ...props,\n  collapsible: computed(() => getCollapsible(props.collapsible)),\n})\n\nregisterPanel(_panel)\n\nonBeforeUnmount(() => unregisterPanel(_panel))\n\ndefineExpose({\n  /** @description splitter-panel html element */\n  splitterPanelRef: panelEl,\n})\n</script>\n\n<template>\n  <div\n    ref=\"panelEl\"\n    :class=\"[ns.b()]\"\n    :style=\"{ flexBasis: `${panelSize}px` }\"\n    v-bind=\"$attrs\"\n  >\n    <slot />\n  </div>\n  <SplitBar\n    v-if=\"isShowBar\"\n    :index=\"index\"\n    :layout=\"layout\"\n    :lazy=\"lazy\"\n    :resizable=\"isResizable\"\n    :start-collapsible=\"startCollapsible\"\n    :end-collapsible=\"endCollapsible\"\n    @move-start=\"onMoveStart\"\n    @moving=\"onMoving\"\n    @move-end=\"onMoveEnd\"\n    @collapse=\"onCollapse\"\n  >\n    <template #start-collapsible>\n      <slot name=\"start-collapsible\" />\n    </template>\n    <template #end-collapsible>\n      <slot name=\"end-collapsible\" />\n    </template>\n  </SplitBar>\n</template>\n","<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { throwError } from '@pit-element-plus/utils'\nimport { getCollapsible, isCollapsible } from './hooks/usePanel'\nimport SplitBar from './split-bar.vue'\nimport { splitterPanelEmits } from './split-panel'\nimport { getPct, getPx, isPct, isPx } from './hooks'\nimport { splitterRootContextKey } from './type'\n\nimport type { SplitterPanelProps } from './split-panel'\n\nconst ns = useNamespace('splitter-panel')\n\nconst COMPONENT_NAME = 'ElSplitterPanel'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<SplitterPanelProps>(), {\n  resizable: true,\n})\n\nconst emits = defineEmits(splitterPanelEmits)\nconst splitterContext = inject(splitterRootContextKey)\nif (!splitterContext)\n  throwError(\n    COMPONENT_NAME,\n    'usage: <el-splitter><el-splitter-panel /></el-splitter/>'\n  )\n\nconst { panels, layout, lazy, containerSize, pxSizes } = toRefs(splitterContext)\n\nconst {\n  registerPanel,\n  unregisterPanel,\n  onCollapse,\n  onMoveEnd,\n  onMoveStart,\n  onMoving,\n} = splitterContext\n\nconst panelEl = ref<HTMLDivElement>()\nconst instance = getCurrentInstance()!\nconst uid = instance.uid\n\nconst index = ref(0)\nconst panel = computed(() => panels.value[index.value])\n\nconst setIndex = (val: number) => {\n  index.value = val\n}\n\nconst panelSize = computed(() => {\n  if (!panel.value) return 0\n  return pxSizes.value[index.value] ?? 0\n})\n\nconst nextSize = computed(() => {\n  if (!panel.value) return 0\n  return pxSizes.value[index.value + 1] ?? 0\n})\n\nconst nextPanel = computed(() => {\n  if (panel.value) {\n    return panels.value[index.value + 1]\n  }\n  return null\n})\n\nconst isResizable = computed(() => {\n  if (!nextPanel.value) return false\n  return (\n    props.resizable &&\n    nextPanel.value?.resizable &&\n    // If it is 0, it means it is collapsed => check if the minimum value is set\n    (panelSize.value !== 0 || !props.min) &&\n    (nextSize.value !== 0 || !nextPanel.value.min)\n  )\n})\n\n// The last panel doesn't need a drag bar\nconst isShowBar = computed(() => {\n  if (!panel.value) return false\n  return index.value !== panels.value.length - 1\n})\n\nconst startCollapsible = computed(() =>\n  isCollapsible(panel.value, panelSize.value, nextPanel.value, nextSize.value)\n)\n\nconst endCollapsible = computed(() =>\n  isCollapsible(nextPanel.value, nextSize.value, panel.value, panelSize.value)\n)\n\nfunction sizeToPx(str: string | number | undefined) {\n  if (isPct(str)) {\n    return getPct(str) * containerSize.value || 0\n  } else if (isPx(str)) {\n    return getPx(str)\n  }\n  return str ?? 0\n}\n\n// Two-way binding for size\nlet isSizeUpdating = false\nwatch(\n  () => props.size,\n  () => {\n    if (!isSizeUpdating && panel.value) {\n      if (!containerSize.value) {\n        panel.value.size = props.size\n        return\n      }\n\n      const size = sizeToPx(props.size)\n      const maxSize = sizeToPx(props.max)\n      const minSize = sizeToPx(props.min)\n\n      // Ensure it is within the maximum and minimum value range\n      const finalSize = Math.min(Math.max(size, minSize || 0), maxSize || size)\n\n      if (finalSize !== size) {\n        emits('update:size', finalSize)\n      }\n\n      panel.value.size = finalSize\n    }\n  }\n)\n\nwatch(\n  () => panel.value?.size,\n  (val) => {\n    if (val !== props.size) {\n      isSizeUpdating = true\n      emits('update:size', val as number)\n      nextTick(() => (isSizeUpdating = false))\n    }\n  }\n)\n\nwatch(\n  () => props.resizable,\n  (val) => {\n    if (panel.value) {\n      panel.value.resizable = val\n    }\n  }\n)\n\nconst _panel = reactive({\n  uid,\n  getVnode: () => instance.vnode,\n  setIndex,\n  ...props,\n  collapsible: computed(() => getCollapsible(props.collapsible)),\n})\n\nregisterPanel(_panel)\n\nonBeforeUnmount(() => unregisterPanel(_panel))\n\ndefineExpose({\n  /** @description splitter-panel html element */\n  splitterPanelRef: panelEl,\n})\n</script>\n\n<template>\n  <div\n    ref=\"panelEl\"\n    :class=\"[ns.b()]\"\n    :style=\"{ flexBasis: `${panelSize}px` }\"\n    v-bind=\"$attrs\"\n  >\n    <slot />\n  </div>\n  <SplitBar\n    v-if=\"isShowBar\"\n    :index=\"index\"\n    :layout=\"layout\"\n    :lazy=\"lazy\"\n    :resizable=\"isResizable\"\n    :start-collapsible=\"startCollapsible\"\n    :end-collapsible=\"endCollapsible\"\n    @move-start=\"onMoveStart\"\n    @moving=\"onMoving\"\n    @move-end=\"onMoveEnd\"\n    @collapse=\"onCollapse\"\n  >\n    <template #start-collapsible>\n      <slot name=\"start-collapsible\" />\n    </template>\n    <template #end-collapsible>\n      <slot name=\"end-collapsible\" />\n    </template>\n  </SplitBar>\n</template>\n","<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { throwError } from '@pit-element-plus/utils'\nimport { getCollapsible, isCollapsible } from './hooks/usePanel'\nimport SplitBar from './split-bar.vue'\nimport { splitterPanelEmits } from './split-panel'\nimport { getPct, getPx, isPct, isPx } from './hooks'\nimport { splitterRootContextKey } from './type'\n\nimport type { SplitterPanelProps } from './split-panel'\n\nconst ns = useNamespace('splitter-panel')\n\nconst COMPONENT_NAME = 'ElSplitterPanel'\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<SplitterPanelProps>(), {\n  resizable: true,\n})\n\nconst emits = defineEmits(splitterPanelEmits)\nconst splitterContext = inject(splitterRootContextKey)\nif (!splitterContext)\n  throwError(\n    COMPONENT_NAME,\n    'usage: <el-splitter><el-splitter-panel /></el-splitter/>'\n  )\n\nconst { panels, layout, lazy, containerSize, pxSizes } = toRefs(splitterContext)\n\nconst {\n  registerPanel,\n  unregisterPanel,\n  onCollapse,\n  onMoveEnd,\n  onMoveStart,\n  onMoving,\n} = splitterContext\n\nconst panelEl = ref<HTMLDivElement>()\nconst instance = getCurrentInstance()!\nconst uid = instance.uid\n\nconst index = ref(0)\nconst panel = computed(() => panels.value[index.value])\n\nconst setIndex = (val: number) => {\n  index.value = val\n}\n\nconst panelSize = computed(() => {\n  if (!panel.value) return 0\n  return pxSizes.value[index.value] ?? 0\n})\n\nconst nextSize = computed(() => {\n  if (!panel.value) return 0\n  return pxSizes.value[index.value + 1] ?? 0\n})\n\nconst nextPanel = computed(() => {\n  if (panel.value) {\n    return panels.value[index.value + 1]\n  }\n  return null\n})\n\nconst isResizable = computed(() => {\n  if (!nextPanel.value) return false\n  return (\n    props.resizable &&\n    nextPanel.value?.resizable &&\n    // If it is 0, it means it is collapsed => check if the minimum value is set\n    (panelSize.value !== 0 || !props.min) &&\n    (nextSize.value !== 0 || !nextPanel.value.min)\n  )\n})\n\n// The last panel doesn't need a drag bar\nconst isShowBar = computed(() => {\n  if (!panel.value) return false\n  return index.value !== panels.value.length - 1\n})\n\nconst startCollapsible = computed(() =>\n  isCollapsible(panel.value, panelSize.value, nextPanel.value, nextSize.value)\n)\n\nconst endCollapsible = computed(() =>\n  isCollapsible(nextPanel.value, nextSize.value, panel.value, panelSize.value)\n)\n\nfunction sizeToPx(str: string | number | undefined) {\n  if (isPct(str)) {\n    return getPct(str) * containerSize.value || 0\n  } else if (isPx(str)) {\n    return getPx(str)\n  }\n  return str ?? 0\n}\n\n// Two-way binding for size\nlet isSizeUpdating = false\nwatch(\n  () => props.size,\n  () => {\n    if (!isSizeUpdating && panel.value) {\n      if (!containerSize.value) {\n        panel.value.size = props.size\n        return\n      }\n\n      const size = sizeToPx(props.size)\n      const maxSize = sizeToPx(props.max)\n      const minSize = sizeToPx(props.min)\n\n      // Ensure it is within the maximum and minimum value range\n      const finalSize = Math.min(Math.max(size, minSize || 0), maxSize || size)\n\n      if (finalSize !== size) {\n        emits('update:size', finalSize)\n      }\n\n      panel.value.size = finalSize\n    }\n  }\n)\n\nwatch(\n  () => panel.value?.size,\n  (val) => {\n    if (val !== props.size) {\n      isSizeUpdating = true\n      emits('update:size', val as number)\n      nextTick(() => (isSizeUpdating = false))\n    }\n  }\n)\n\nwatch(\n  () => props.resizable,\n  (val) => {\n    if (panel.value) {\n      panel.value.resizable = val\n    }\n  }\n)\n\nconst _panel = reactive({\n  uid,\n  getVnode: () => instance.vnode,\n  setIndex,\n  ...props,\n  collapsible: computed(() => getCollapsible(props.collapsible)),\n})\n\nregisterPanel(_panel)\n\nonBeforeUnmount(() => unregisterPanel(_panel))\n\ndefineExpose({\n  /** @description splitter-panel html element */\n  splitterPanelRef: panelEl,\n})\n</script>\n\n<template>\n  <div\n    ref=\"panelEl\"\n    :class=\"[ns.b()]\"\n    :style=\"{ flexBasis: `${panelSize}px` }\"\n    v-bind=\"$attrs\"\n  >\n    <slot />\n  </div>\n  <SplitBar\n    v-if=\"isShowBar\"\n    :index=\"index\"\n    :layout=\"layout\"\n    :lazy=\"lazy\"\n    :resizable=\"isResizable\"\n    :start-collapsible=\"startCollapsible\"\n    :end-collapsible=\"endCollapsible\"\n    @move-start=\"onMoveStart\"\n    @moving=\"onMoving\"\n    @move-end=\"onMoveEnd\"\n    @collapse=\"onCollapse\"\n  >\n    <template #start-collapsible>\n      <slot name=\"start-collapsible\" />\n    </template>\n    <template #end-collapsible>\n      <slot name=\"end-collapsible\" />\n    </template>\n  </SplitBar>\n</template>\n","import { withInstall, withNoopInstall } from '@pit-element-plus/utils'\nimport Splitter from './src/splitter.vue'\nimport SplitPanel from './src/split-panel.vue'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElSplitter: SFCWithInstall<typeof Splitter> & {\n  SplitPanel: typeof SplitPanel\n} = withInstall(Splitter, {\n  SplitPanel,\n})\nexport default ElSplitter\n\nexport const ElSplitterPanel: SFCWithInstall<typeof SplitPanel> =\n  withNoopInstall(SplitPanel)\n\nexport * from './src/splitter'\nexport * from './src/split-panel'\n","// @ts-nocheck\nimport { nextTick } from 'vue'\nimport { throttle } from 'lodash-unified'\nimport {\n  getOffsetTopDistance,\n  getScrollContainer,\n  isFunction,\n  throwError,\n} from '@pit-element-plus/utils'\nimport { useDeprecated } from '@pit-element-plus/hooks'\n\nimport type { ComponentPublicInstance, ObjectDirective } from 'vue'\n\nexport const SCOPE = 'ElInfiniteScroll'\nexport const CHECK_INTERVAL = 50\nexport const DEFAULT_DELAY = 200\nexport const DEFAULT_DISTANCE = 0\n\nconst attributes = {\n  delay: {\n    type: Number,\n    default: DEFAULT_DELAY,\n  },\n  distance: {\n    type: Number,\n    default: DEFAULT_DISTANCE,\n  },\n  disabled: {\n    type: Boolean,\n    default: false,\n  },\n  immediate: {\n    type: Boolean,\n    default: true,\n  },\n}\n\ntype Attrs = typeof attributes\ntype ScrollOptions = { [K in keyof Attrs]: Attrs[K]['default'] }\ntype InfiniteScrollCallback = () => void\ntype InfiniteScrollEl = HTMLElement & {\n  [SCOPE]: {\n    container: HTMLElement | Window\n    containerEl: HTMLElement\n    instance: ComponentPublicInstance\n    delay: number // export for test\n    lastScrollTop: number\n    cb: InfiniteScrollCallback\n    onScroll: () => void\n    observer?: MutationObserver\n  }\n}\n\nconst getScrollOptions = (\n  el: HTMLElement,\n  instance: ComponentPublicInstance\n): ScrollOptions => {\n  return Object.entries(attributes).reduce((acm, [name, option]) => {\n    const { type, default: defaultValue } = option\n    const attrVal = el.getAttribute(`infinite-scroll-${name}`)\n    let value = instance[attrVal] ?? attrVal ?? defaultValue\n    value = value === 'false' ? false : value\n    value = type(value)\n    acm[name] = Number.isNaN(value) ? defaultValue : value\n    return acm\n  }, {} as ScrollOptions)\n}\n\nconst destroyObserver = (el: InfiniteScrollEl) => {\n  const { observer } = el[SCOPE]\n\n  if (observer) {\n    observer.disconnect()\n    delete el[SCOPE].observer\n  }\n}\n\nconst handleScroll = (el: InfiniteScrollEl, cb: InfiniteScrollCallback) => {\n  const { container, containerEl, instance, observer, lastScrollTop } =\n    el[SCOPE]\n  const { disabled, distance } = getScrollOptions(el, instance)\n  const { clientHeight, scrollHeight, scrollTop } = containerEl\n  const delta = scrollTop - lastScrollTop\n\n  el[SCOPE].lastScrollTop = scrollTop\n\n  // trigger only if full check has done and not disabled and scroll down\n  if (observer || disabled || delta < 0) return\n\n  let shouldTrigger = false\n\n  if (container === el) {\n    shouldTrigger = scrollHeight - (clientHeight + scrollTop) <= distance\n  } else {\n    // get the scrollHeight since el might be visible overflow\n    const { clientTop, scrollHeight: height } = el\n    const offsetTop = getOffsetTopDistance(el, containerEl)\n    shouldTrigger =\n      scrollTop + clientHeight >= offsetTop + clientTop + height - distance\n  }\n\n  if (shouldTrigger) {\n    cb.call(instance)\n  }\n}\n\nfunction checkFull(el: InfiniteScrollEl, cb: InfiniteScrollCallback) {\n  const { containerEl, instance } = el[SCOPE]\n  const { disabled } = getScrollOptions(el, instance)\n\n  if (disabled || containerEl.clientHeight === 0) return\n\n  if (containerEl.scrollHeight <= containerEl.clientHeight) {\n    cb.call(instance)\n  } else {\n    destroyObserver(el)\n  }\n}\n\nconst InfiniteScroll: ObjectDirective<\n  InfiniteScrollEl,\n  InfiniteScrollCallback\n> = {\n  async mounted(el, binding) {\n    const { instance, value: cb } = binding\n\n    useDeprecated(\n      {\n        scope: SCOPE,\n        from: 'the directive v-infinite-scroll',\n        replacement: 'the el-scrollbar infinite scroll',\n        version: '3.0.0',\n        ref: 'https://element-plus.org/en-US/component/scrollbar#infinite-scroll',\n      },\n      true\n    )\n\n    if (!isFunction(cb)) {\n      throwError(SCOPE, \"'v-infinite-scroll' binding value must be a function\")\n    }\n\n    // ensure parentNode mounted\n    await nextTick()\n\n    const { delay, immediate } = getScrollOptions(el, instance)\n    const container = getScrollContainer(el, true)\n    const containerEl =\n      container === window\n        ? document.documentElement\n        : (container as HTMLElement)\n    const onScroll = throttle(handleScroll.bind(null, el, cb), delay)\n\n    if (!container) return\n\n    el[SCOPE] = {\n      instance,\n      container,\n      containerEl,\n      delay,\n      cb,\n      onScroll,\n      lastScrollTop: containerEl.scrollTop,\n    }\n\n    if (immediate) {\n      const observer = new MutationObserver(\n        throttle(checkFull.bind(null, el, cb), CHECK_INTERVAL)\n      )\n      el[SCOPE].observer = observer\n      observer.observe(el, { childList: true, subtree: true })\n      checkFull(el, cb)\n    }\n\n    container.addEventListener('scroll', onScroll)\n  },\n  unmounted(el) {\n    if (!el[SCOPE]) return\n    const { container, onScroll } = el[SCOPE]\n\n    container?.removeEventListener('scroll', onScroll)\n    destroyObserver(el)\n  },\n  async updated(el) {\n    if (!el[SCOPE]) {\n      await nextTick()\n    } else {\n      const { containerEl, cb, observer } = el[SCOPE]\n      if (containerEl.clientHeight && observer) {\n        checkFull(el, cb)\n      }\n    }\n  },\n}\n\nexport default InfiniteScroll\n","// TODO: remove the directive in 3.0\nimport InfiniteScroll from './src'\n\nimport type { App } from 'vue'\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nconst _InfiniteScroll = InfiniteScroll as SFCWithInstall<typeof InfiniteScroll>\n\n_InfiniteScroll.install = (app: App) => {\n  app.directive('InfiniteScroll', _InfiniteScroll)\n}\n\nexport default _InfiniteScroll\nexport const ElInfiniteScroll = _InfiniteScroll\n","import {\n  Transition,\n  createApp,\n  createVNode,\n  defineComponent,\n  h,\n  reactive,\n  ref,\n  toRefs,\n  vShow,\n  withCtx,\n  withDirectives,\n} from 'vue'\nimport { removeClass } from '@pit-element-plus/utils'\nimport { useGlobalComponentSettings } from '@pit-element-plus/components/config-provider'\n\nimport type { AppContext, VNode } from 'vue'\nimport type { UseNamespaceReturn } from '@pit-element-plus/hooks'\nimport type { LoadingOptionsResolved } from './types'\n\nexport function createLoadingComponent(\n  options: LoadingOptionsResolved,\n  appContext: AppContext | null\n) {\n  let afterLeaveTimer: ReturnType<typeof setTimeout>\n  // IMPORTANT NOTE: this is only a hacking way to expose the injections on an\n  // instance, DO NOT FOLLOW this pattern in your own code.\n  const afterLeaveFlag = ref(false)\n  const data = reactive({\n    ...options,\n    originalPosition: '',\n    originalOverflow: '',\n    visible: false,\n  })\n\n  function setText(text: string | VNode | VNode[]) {\n    data.text = text\n  }\n\n  function destroySelf() {\n    const target = data.parent\n    const ns = (vm as any).ns as UseNamespaceReturn\n    if (!target.vLoadingAddClassList) {\n      let loadingNumber: number | string | null =\n        target.getAttribute('loading-number')\n      loadingNumber = Number.parseInt(loadingNumber as any) - 1\n      if (!loadingNumber) {\n        removeClass(target, ns.bm('parent', 'relative'))\n        target.removeAttribute('loading-number')\n      } else {\n        target.setAttribute('loading-number', loadingNumber.toString())\n      }\n      removeClass(target, ns.bm('parent', 'hidden'))\n    }\n    removeElLoadingChild()\n    loadingInstance.unmount()\n  }\n  function removeElLoadingChild(): void {\n    vm.$el?.parentNode?.removeChild(vm.$el)\n  }\n  function close() {\n    if (options.beforeClose && !options.beforeClose()) return\n\n    afterLeaveFlag.value = true\n    clearTimeout(afterLeaveTimer)\n\n    afterLeaveTimer = setTimeout(handleAfterLeave, 400)\n    data.visible = false\n\n    options.closed?.()\n  }\n\n  function handleAfterLeave() {\n    if (!afterLeaveFlag.value) return\n    const target = data.parent\n    afterLeaveFlag.value = false\n    target.vLoadingAddClassList = undefined\n    destroySelf()\n  }\n\n  const elLoadingComponent = defineComponent({\n    name: 'ElLoading',\n    setup(_, { expose }) {\n      const { ns, zIndex } = useGlobalComponentSettings('loading')\n\n      expose({\n        ns,\n        zIndex,\n      })\n\n      return () => {\n        const svg = data.spinner || data.svg\n        const spinner = h(\n          'svg',\n          {\n            class: 'circular',\n            viewBox: data.svgViewBox ? data.svgViewBox : '0 0 50 50',\n            ...(svg ? { innerHTML: svg } : {}),\n          },\n          [\n            h('circle', {\n              class: 'path',\n              cx: '25',\n              cy: '25',\n              r: '20',\n              fill: 'none',\n            }),\n          ]\n        )\n\n        const spinnerText = data.text\n          ? h('p', { class: ns.b('text') }, [data.text])\n          : undefined\n\n        return h(\n          Transition,\n          {\n            name: ns.b('fade'),\n            onAfterLeave: handleAfterLeave,\n          },\n          {\n            default: withCtx(() => [\n              withDirectives(\n                createVNode(\n                  'div',\n                  {\n                    style: {\n                      backgroundColor: data.background || '',\n                    },\n                    class: [\n                      ns.b('mask'),\n                      data.customClass,\n                      ns.is('fullscreen', data.fullscreen),\n                    ],\n                  },\n                  [\n                    h(\n                      'div',\n                      {\n                        class: ns.b('spinner'),\n                      },\n                      [spinner, spinnerText]\n                    ),\n                  ]\n                ),\n                [[vShow, data.visible]]\n              ),\n            ]),\n          }\n        )\n      }\n    },\n  })\n\n  const loadingInstance = createApp(elLoadingComponent)\n  Object.assign(loadingInstance._context, appContext ?? {})\n  const vm = loadingInstance.mount(document.createElement('div'))\n\n  return {\n    ...toRefs(data),\n    setText,\n    removeElLoadingChild,\n    close,\n    handleAfterLeave,\n    vm,\n    get $el(): HTMLElement {\n      return vm.$el\n    },\n  }\n}\n\nexport type LoadingInstance = ReturnType<typeof createLoadingComponent>\n","// @ts-nocheck\nimport { nextTick } from 'vue'\nimport {\n  addClass,\n  getStyle,\n  isClient,\n  isString,\n  removeClass,\n} from '@pit-element-plus/utils'\nimport { createLoadingComponent } from './loading'\n\nimport type {\n  UseNamespaceReturn,\n  UseZIndexReturn,\n} from '@pit-element-plus/hooks'\nimport type { LoadingInstance } from './loading'\nimport type { LoadingOptionsResolved } from '..'\nimport type { LoadingOptions } from './types'\nimport type { AppContext, CSSProperties } from 'vue'\n\nlet fullscreenInstance: LoadingInstance | undefined = undefined\n\nconst Loading = function (\n  options: LoadingOptions = {},\n  context?: AppContext | null\n): LoadingInstance {\n  if (!isClient) return undefined as any\n\n  const resolved = resolveOptions(options)\n\n  if (resolved.fullscreen && fullscreenInstance) {\n    return fullscreenInstance\n  }\n\n  const instance = createLoadingComponent(\n    {\n      ...resolved,\n      closed: () => {\n        resolved.closed?.()\n        if (resolved.fullscreen) fullscreenInstance = undefined\n      },\n    },\n    context ?? Loading._context\n  )\n\n  addStyle(resolved, resolved.parent, instance)\n  addClassList(resolved, resolved.parent, instance)\n\n  resolved.parent.vLoadingAddClassList = () =>\n    addClassList(resolved, resolved.parent, instance)\n\n  /**\n   * add loading-number to parent.\n   * because if a fullscreen loading is triggered when somewhere\n   * a v-loading.body was triggered before and it's parent is\n   * document.body which with a margin , the fullscreen loading's\n   * destroySelf function will remove 'el-loading-parent--relative',\n   * and then the position of v-loading.body will be error.\n   */\n  let loadingNumber: string | null =\n    resolved.parent.getAttribute('loading-number')\n  if (!loadingNumber) {\n    loadingNumber = '1'\n  } else {\n    loadingNumber = `${Number.parseInt(loadingNumber) + 1}`\n  }\n  resolved.parent.setAttribute('loading-number', loadingNumber)\n\n  resolved.parent.appendChild(instance.$el)\n\n  // after instance render, then modify visible to trigger transition\n  nextTick(() => (instance.visible.value = resolved.visible))\n\n  if (resolved.fullscreen) {\n    fullscreenInstance = instance\n  }\n  return instance\n}\n\nconst resolveOptions = (options: LoadingOptions): LoadingOptionsResolved => {\n  let target: HTMLElement\n  if (isString(options.target)) {\n    target =\n      document.querySelector<HTMLElement>(options.target) ?? document.body\n  } else {\n    target = options.target || document.body\n  }\n  return {\n    parent: target === document.body || options.body ? document.body : target,\n    background: options.background || '',\n    svg: options.svg || '',\n    svgViewBox: options.svgViewBox || '',\n    spinner: options.spinner || false,\n    text: options.text || '',\n    fullscreen: target === document.body && (options.fullscreen ?? true),\n    lock: options.lock ?? false,\n    customClass: options.customClass || '',\n    visible: options.visible ?? true,\n    beforeClose: options.beforeClose,\n    closed: options.closed,\n    target,\n  }\n}\n\nconst addStyle = async (\n  options: LoadingOptionsResolved,\n  parent: HTMLElement,\n  instance: LoadingInstance\n) => {\n  // Compatible with the instance data format of vue@3.2.12 and earlier versions #12351\n  const { nextZIndex } =\n    ((instance.vm as any).zIndex as UseZIndexReturn) ||\n    (instance.vm as any)._.exposed.zIndex\n\n  const maskStyle: CSSProperties = {}\n  if (options.fullscreen) {\n    instance.originalPosition.value = getStyle(document.body, 'position')\n    instance.originalOverflow.value = getStyle(document.body, 'overflow')\n    maskStyle.zIndex = nextZIndex()\n  } else if (options.parent === document.body) {\n    instance.originalPosition.value = getStyle(document.body, 'position')\n    /**\n     * await dom render when visible is true in init,\n     * because some component's height maybe 0.\n     * e.g. el-table.\n     */\n    await nextTick()\n    for (const property of ['top', 'left']) {\n      const scroll = property === 'top' ? 'scrollTop' : 'scrollLeft'\n      maskStyle[property] = `${\n        (options.target as HTMLElement).getBoundingClientRect()[property] +\n        document.body[scroll] +\n        document.documentElement[scroll] -\n        Number.parseInt(getStyle(document.body, `margin-${property}`), 10)\n      }px`\n    }\n    for (const property of ['height', 'width']) {\n      maskStyle[property] = `${\n        (options.target as HTMLElement).getBoundingClientRect()[property]\n      }px`\n    }\n  } else {\n    instance.originalPosition.value = getStyle(parent, 'position')\n  }\n  for (const [key, value] of Object.entries(maskStyle)) {\n    instance.$el.style[key] = value\n  }\n}\n\nconst addClassList = (\n  options: LoadingOptions,\n  parent: HTMLElement,\n  instance: LoadingInstance\n) => {\n  // Compatible with the instance data format of vue@3.2.12 and earlier versions #12351\n  const ns =\n    ((instance.vm as any).ns as UseNamespaceReturn) ||\n    (instance.vm as any)._.exposed.ns\n\n  if (\n    !['absolute', 'fixed', 'sticky'].includes(instance.originalPosition.value)\n  ) {\n    addClass(parent, ns.bm('parent', 'relative'))\n  } else {\n    removeClass(parent, ns.bm('parent', 'relative'))\n  }\n  if (options.fullscreen && options.lock) {\n    addClass(parent, ns.bm('parent', 'hidden'))\n  } else {\n    removeClass(parent, ns.bm('parent', 'hidden'))\n  }\n}\n\nLoading._context = null as AppContext | null\nexport default Loading\n","// @ts-nocheck\nimport { isRef, ref } from 'vue'\nimport { hyphenate, isObject, isString } from '@pit-element-plus/utils'\nimport Loading from './service'\n\nimport type { Directive, DirectiveBinding, UnwrapRef } from 'vue'\nimport type { LoadingOptions } from './types'\nimport type { LoadingInstance } from './loading'\n\nconst INSTANCE_KEY = Symbol('ElLoading')\nconst getAttributeName = (name: string) => {\n  return `element-loading-${hyphenate(name)}`\n}\n\nexport type LoadingBinding = boolean | UnwrapRef<LoadingOptions>\nexport interface ElementLoading extends HTMLElement {\n  [INSTANCE_KEY]?: {\n    instance: LoadingInstance\n    options: LoadingOptions\n  }\n}\n\nconst createInstance = (\n  el: ElementLoading,\n  binding: DirectiveBinding<LoadingBinding>\n) => {\n  const vm = binding.instance\n\n  const getBindingProp = <K extends keyof LoadingOptions>(\n    key: K\n  ): LoadingOptions[K] =>\n    isObject(binding.value) ? binding.value[key] : undefined\n\n  const resolveExpression = (key: any) => {\n    const data = (isString(key) && vm?.[key]) || key\n    return ref(data)\n  }\n\n  const getProp = <K extends keyof LoadingOptions>(name: K) =>\n    resolveExpression(\n      getBindingProp(name) || el.getAttribute(getAttributeName(name))\n    )\n\n  const fullscreen =\n    getBindingProp('fullscreen') ?? binding.modifiers.fullscreen\n\n  const options: LoadingOptions = {\n    text: getProp('text'),\n    svg: getProp('svg'),\n    svgViewBox: getProp('svgViewBox'),\n    spinner: getProp('spinner'),\n    background: getProp('background'),\n    customClass: getProp('customClass'),\n    fullscreen,\n    target: getBindingProp('target') ?? (fullscreen ? undefined : el),\n    body: getBindingProp('body') ?? binding.modifiers.body,\n    lock: getBindingProp('lock') ?? binding.modifiers.lock,\n  }\n  const instance = Loading(options)\n  instance._context = vLoading._context\n  el[INSTANCE_KEY] = {\n    options,\n    instance,\n  }\n}\n\nconst updateOptions = (\n  originalOptions: LoadingOptions,\n  newOptions: UnwrapRef<LoadingOptions>\n) => {\n  for (const key of Object.keys(originalOptions)) {\n    if (isRef(originalOptions[key]))\n      originalOptions[key].value = newOptions[key]\n  }\n}\n\nconst vLoading: Directive<ElementLoading, LoadingBinding> = {\n  mounted(el, binding) {\n    if (binding.value) {\n      createInstance(el, binding)\n    }\n  },\n  updated(el, binding) {\n    const instance = el[INSTANCE_KEY]\n    if (!binding.value) {\n      instance?.instance.close()\n      el[INSTANCE_KEY] = null\n      return\n    }\n\n    if (!instance) createInstance(el, binding)\n    else {\n      updateOptions(\n        instance.options,\n        isObject(binding.value)\n          ? binding.value\n          : {\n              text: el.getAttribute(getAttributeName('text')),\n              svg: el.getAttribute(getAttributeName('svg')),\n              svgViewBox: el.getAttribute(getAttributeName('svgViewBox')),\n              spinner: el.getAttribute(getAttributeName('spinner')),\n              background: el.getAttribute(getAttributeName('background')),\n              customClass: el.getAttribute(getAttributeName('customClass')),\n            }\n      )\n    }\n  },\n  unmounted(el) {\n    el[INSTANCE_KEY]?.instance.close()\n    el[INSTANCE_KEY] = null\n  },\n}\n\nvLoading._context = null\nexport default vLoading\n","import Loading from './src/service'\nimport vLoading from './src/directive'\n\nimport type { App, AppContext, Directive } from 'vue'\nimport type { ElementLoading, LoadingBinding } from './src/directive'\n\n// installer and everything in all\nexport const ElLoading = {\n  install(app: App) {\n    Loading._context = app._context\n    ;(\n      vLoading as Directive<ElementLoading, LoadingBinding> & {\n        _context: AppContext | null\n      }\n    )._context = app._context\n    app.directive('loading', vLoading)\n    app.config.globalProperties.$loading = Loading\n  },\n  directive: vLoading,\n  service: Loading,\n}\n\nexport default ElLoading\nexport { vLoading, vLoading as ElLoadingDirective, Loading as ElLoadingService }\n\nexport * from './src/types'\nexport type { LoadingInstance } from './src/loading'\n","import {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isClient,\n  mutable,\n} from '@pit-element-plus/utils'\n\nimport type { AppContext, ExtractPublicPropTypes, VNode } from 'vue'\nimport type { IconPropType, Mutable } from '@pit-element-plus/utils'\nimport type MessageConstructor from './message.vue'\n\nexport interface MessageProps {\n  /**\n   * @description custom class name for Message\n   */\n  customClass?: string\n  /**\n   * @description whether `message` is treated as HTML string\n   */\n  dangerouslyUseHTMLString?: boolean\n  /**\n   * @description display duration, millisecond. If set to 0, it will not turn off automatically\n   */\n  duration?: number\n  /**\n   * @description custom icon component, overrides `type`\n   */\n  icon?: IconPropType\n  /**\n   * @description message dom id\n   */\n  id?: string\n  /**\n   * @description message text\n   */\n  message?: string | VNode | (() => VNode)\n  /**\n   * @description callback function when closed with the message instance as the parameter\n   */\n  onClose?: () => void\n  /**\n   * @description whether to show a close button\n   */\n  showClose?: boolean\n  /**\n   * @description message type\n   */\n  type?: MessageType\n  /**\n   * @description whether message is plain\n   */\n  plain?: boolean\n  /**\n   * @description set the distance to the top of viewport\n   */\n  offset?: number\n  /**\n   * @description message placement position\n   */\n  placement?: MessagePlacement\n  /**\n   * @description message element zIndex value\n   */\n  zIndex?: number\n  /**\n   * @description merge messages with the same content, type of VNode message is not supported\n   */\n  grouping?: boolean\n  /**\n   * @description The number of repetitions, similar to badge, is used as the initial number when used with `grouping`\n   */\n  repeatNum?: number\n}\n\nexport const messageTypes = [\n  'primary',\n  'success',\n  'info',\n  'warning',\n  'error',\n] as const\n\nexport const messagePlacement = [\n  'top',\n  'top-left',\n  'top-right',\n  'bottom',\n  'bottom-left',\n  'bottom-right',\n] as const\n\nexport const MESSAGE_DEFAULT_PLACEMENT = 'top'\n\nexport type MessageType = (typeof messageTypes)[number]\nexport type MessagePlacement = (typeof messagePlacement)[number]\n/** @deprecated please use `MessageType` instead */\nexport type messageType = MessageType // will be removed in 3.0.0.\n\nexport interface MessageConfigContext {\n  max?: number\n  grouping?: boolean\n  duration?: number\n  offset?: number\n  showClose?: boolean\n  plain?: boolean\n  placement?: string\n}\n\nexport const messageDefaults = mutable({\n  customClass: '',\n  dangerouslyUseHTMLString: false,\n  duration: 3000,\n  icon: undefined,\n  id: '',\n  message: '',\n  onClose: undefined,\n  showClose: false,\n  type: 'info',\n  plain: false,\n  offset: 16,\n  placement: undefined,\n  zIndex: 0,\n  grouping: false,\n  repeatNum: 1,\n  appendTo: isClient ? document.body : (undefined as never),\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `MessageProps` instead.\n */\nexport const messageProps = buildProps({\n  /**\n   * @description custom class name for Message\n   */\n  customClass: {\n    type: String,\n    default: messageDefaults.customClass,\n  },\n  /**\n   * @description whether `message` is treated as HTML string\n   */\n  dangerouslyUseHTMLString: {\n    type: Boolean,\n    default: messageDefaults.dangerouslyUseHTMLString,\n  },\n  /**\n   * @description display duration, millisecond. If set to 0, it will not turn off automatically\n   */\n  duration: {\n    type: Number,\n    default: messageDefaults.duration,\n  },\n  /**\n   * @description custom icon component, overrides `type`\n   */\n  icon: {\n    type: iconPropType,\n    default: messageDefaults.icon,\n  },\n  /**\n   * @description message dom id\n   */\n  id: {\n    type: String,\n    default: messageDefaults.id,\n  },\n  /**\n   * @description message text\n   */\n  message: {\n    type: definePropType<string | VNode | (() => VNode)>([\n      String,\n      Object,\n      Function,\n    ]),\n    default: messageDefaults.message,\n  },\n  /**\n   * @description callback function when closed with the message instance as the parameter\n   */\n  onClose: {\n    type: definePropType<() => void>(Function),\n    default: messageDefaults.onClose,\n  },\n  /**\n   * @description whether to show a close button\n   */\n  showClose: {\n    type: Boolean,\n    default: messageDefaults.showClose,\n  },\n  /**\n   * @description message type\n   */\n  type: {\n    type: String,\n    values: messageTypes,\n    default: messageDefaults.type,\n  },\n  /**\n   * @description whether message is plain\n   */\n  plain: {\n    type: Boolean,\n    default: messageDefaults.plain,\n  },\n  /**\n   * @description set the distance to the top of viewport\n   */\n  offset: {\n    type: Number,\n    default: messageDefaults.offset,\n  },\n  /**\n   * @description message placement position\n   */\n  placement: {\n    type: String,\n    values: messagePlacement,\n    default: messageDefaults.placement,\n  },\n  /**\n   * @description message element zIndex value\n   */\n  zIndex: {\n    type: Number,\n    default: messageDefaults.zIndex,\n  },\n  /**\n   * @description merge messages with the same content, type of VNode message is not supported\n   */\n  grouping: {\n    type: Boolean,\n    default: messageDefaults.grouping,\n  },\n  /**\n   * @description The number of repetitions, similar to badge, is used as the initial number when used with `grouping`\n   */\n  repeatNum: {\n    type: Number,\n    default: messageDefaults.repeatNum,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `MessageProps` instead.\n */\nexport type MessagePropsPublic = ExtractPublicPropTypes<typeof messageProps>\n\nexport const messageEmits = {\n  destroy: () => true,\n}\nexport type MessageEmits = typeof messageEmits\n\nexport type MessageInstance = InstanceType<typeof MessageConstructor> & unknown\n\nexport type MessageOptions = Partial<\n  Mutable<\n    Omit<MessageProps, 'id'> & {\n      appendTo?: HTMLElement | string\n    }\n  >\n>\nexport type MessageParams = MessageOptions | MessageOptions['message']\nexport type MessageParamsNormalized = Omit<MessageProps, 'id'> & {\n  /**\n   * @description set the root element for the message, default to `document.body`\n   */\n  appendTo: HTMLElement\n}\nexport type MessageOptionsWithType = Omit<MessageOptions, 'type'>\nexport type MessageParamsWithType =\n  | MessageOptionsWithType\n  | MessageOptions['message']\n\nexport interface MessageHandler {\n  /**\n   * @description close the Message\n   */\n  close: () => void\n}\n\nexport type MessageFn = {\n  (options?: MessageParams, appContext?: null | AppContext): MessageHandler\n  closeAll(type?: MessageType): void\n  closeAllByPlacement(position: MessagePlacement): void\n}\nexport type MessageTypedFn = (\n  options?: MessageParamsWithType,\n  appContext?: null | AppContext\n) => MessageHandler\n\nexport type Message = MessageFn & {\n  primary: MessageTypedFn\n  success: MessageTypedFn\n  warning: MessageTypedFn\n  info: MessageTypedFn\n  error: MessageTypedFn\n}\n","import { shallowReactive } from 'vue'\n\nimport type { ComponentInternalInstance, VNode } from 'vue'\nimport type { Mutable } from '@pit-element-plus/utils'\nimport type { MessageHandler, MessagePlacement, MessageProps } from './message'\n\nexport type MessageContext = {\n  id: string\n  vnode: VNode\n  handler: MessageHandler\n  vm: ComponentInternalInstance\n  props: Mutable<MessageProps>\n}\n\nexport const placementInstances = shallowReactive(\n  {} as Record<MessagePlacement, MessageContext[]>\n)\n\nexport const getOrCreatePlacementInstances = (placement: MessagePlacement) => {\n  if (!placementInstances[placement]) {\n    placementInstances[placement] = shallowReactive([])\n  }\n  return placementInstances[placement]\n}\n\nexport const getInstance = (id: string, placement: MessagePlacement) => {\n  const instances = placementInstances[placement] || []\n  const idx = instances.findIndex((instance) => instance.id === id)\n  const current = instances[idx]\n  let prev: MessageContext | undefined\n  if (idx > 0) {\n    prev = instances[idx - 1]\n  }\n  return { current, prev }\n}\n\nexport const getLastOffset = (\n  id: string,\n  placement: MessagePlacement\n): number => {\n  const { prev } = getInstance(id, placement)\n  if (!prev) return 0\n  return prev.vm.exposed!.bottom.value\n}\n\nexport const getOffsetOrSpace = (\n  id: string,\n  offset: number,\n  placement: MessagePlacement\n) => {\n  const instances = placementInstances[placement] || []\n  const idx = instances.findIndex((instance) => instance.id === id)\n  return idx > 0 ? 16 : offset\n}\n","<template>\n  <transition\n    :name=\"ns.b('fade')\"\n    @before-enter=\"isStartTransition = true\"\n    @before-leave=\"onClose\"\n    @after-leave=\"$emit('destroy')\"\n  >\n    <div\n      v-show=\"visible\"\n      :id=\"id\"\n      ref=\"messageRef\"\n      :class=\"[\n        ns.b(),\n        { [ns.m(type)]: type },\n        ns.is('closable', showClose),\n        ns.is('plain', plain),\n        ns.is('bottom', verticalProperty === 'bottom'),\n        horizontalClass,\n        customClass,\n      ]\"\n      :style=\"customStyle\"\n      role=\"alert\"\n      @mouseenter=\"clearTimer\"\n      @mouseleave=\"startTimer\"\n    >\n      <el-badge\n        v-if=\"repeatNum > 1\"\n        :value=\"repeatNum\"\n        :type=\"badgeType\"\n        :class=\"ns.e('badge')\"\n      />\n      <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n        <component :is=\"iconComponent\" />\n      </el-icon>\n      <slot>\n        <p v-if=\"!dangerouslyUseHTMLString\" :class=\"ns.e('content')\">\n          {{ message }}\n        </p>\n        <!-- Caution here, message could've been compromised, never use user's input as message -->\n        <p v-else :class=\"ns.e('content')\" v-html=\"message\" />\n      </slot>\n      <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n        <Close />\n      </el-icon>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { useEventListener, useResizeObserver, useTimeoutFn } from '@vueuse/core'\nimport {\n  TypeComponents,\n  TypeComponentsMap,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport ElBadge from '@pit-element-plus/components/badge'\nimport { useGlobalComponentSettings } from '@pit-element-plus/components/config-provider'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  MESSAGE_DEFAULT_PLACEMENT,\n  messageDefaults,\n  messageEmits,\n} from './message'\nimport { getLastOffset, getOffsetOrSpace } from './instance'\nimport { omit } from 'lodash-unified'\n\nimport type { BadgeProps } from '@pit-element-plus/components/badge'\nimport type { CSSProperties } from 'vue'\nimport type { MessageProps } from './message'\n\nconst { Close } = TypeComponents\n\ndefineOptions({\n  name: 'ElMessage',\n})\n\nconst props = withDefaults(\n  defineProps<MessageProps>(),\n  omit(messageDefaults, 'appendTo')\n)\nconst emit = defineEmits(messageEmits)\n\nconst isStartTransition = ref(false)\n\nconst { ns, zIndex } = useGlobalComponentSettings('message')\nconst { currentZIndex, nextZIndex } = zIndex\n\nconst messageRef = ref<HTMLDivElement>()\nconst visible = ref(false)\nconst height = ref(0)\n\nlet stopTimer: (() => void) | undefined = undefined\n\nconst badgeType = computed<BadgeProps['type']>(() =>\n  props.type ? (props.type === 'error' ? 'danger' : props.type) : 'info'\n)\nconst typeClass = computed(() => {\n  const type = props.type\n  return { [ns.bm('icon', type)]: type && TypeComponentsMap[type] }\n})\nconst iconComponent = computed(\n  () => props.icon || TypeComponentsMap[props.type] || ''\n)\n\nconst placement = computed(() => props.placement || MESSAGE_DEFAULT_PLACEMENT)\n\nconst lastOffset = computed(() => getLastOffset(props.id, placement.value))\nconst offset = computed(() => {\n  return (\n    getOffsetOrSpace(props.id, props.offset, placement.value) + lastOffset.value\n  )\n})\nconst bottom = computed(() => height.value + offset.value)\nconst horizontalClass = computed(() => {\n  if (placement.value.includes('left')) return ns.is('left')\n  if (placement.value.includes('right')) return ns.is('right')\n  return ns.is('center')\n})\n\nconst verticalProperty = computed(() =>\n  placement.value.startsWith('top') ? 'top' : 'bottom'\n)\n\nconst customStyle = computed<CSSProperties>(() => ({\n  [verticalProperty.value]: `${offset.value}px`,\n  zIndex: currentZIndex.value,\n}))\n\nfunction startTimer() {\n  if (props.duration === 0) return\n  ;({ stop: stopTimer } = useTimeoutFn(() => {\n    close()\n  }, props.duration))\n}\n\nfunction clearTimer() {\n  stopTimer?.()\n}\n\nfunction close() {\n  visible.value = false\n\n  // if the message has never started a transition, we can destroy it immediately\n  nextTick(() => {\n    if (!isStartTransition.value) {\n      props.onClose?.()\n      emit('destroy')\n    }\n  })\n}\n\nfunction keydown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n  if (code === EVENT_CODE.esc) {\n    // press esc to close the message\n    close()\n  }\n}\n\nonMounted(() => {\n  startTimer()\n  nextZIndex()\n  visible.value = true\n})\n\nwatch(\n  () => props.repeatNum,\n  () => {\n    clearTimer()\n    startTimer()\n  }\n)\n\nuseEventListener(document, 'keydown', keydown)\n\nuseResizeObserver(messageRef, () => {\n  height.value = messageRef.value!.getBoundingClientRect().height\n})\n\ndefineExpose({\n  visible,\n  bottom,\n  close,\n})\n</script>\n","<template>\n  <transition\n    :name=\"ns.b('fade')\"\n    @before-enter=\"isStartTransition = true\"\n    @before-leave=\"onClose\"\n    @after-leave=\"$emit('destroy')\"\n  >\n    <div\n      v-show=\"visible\"\n      :id=\"id\"\n      ref=\"messageRef\"\n      :class=\"[\n        ns.b(),\n        { [ns.m(type)]: type },\n        ns.is('closable', showClose),\n        ns.is('plain', plain),\n        ns.is('bottom', verticalProperty === 'bottom'),\n        horizontalClass,\n        customClass,\n      ]\"\n      :style=\"customStyle\"\n      role=\"alert\"\n      @mouseenter=\"clearTimer\"\n      @mouseleave=\"startTimer\"\n    >\n      <el-badge\n        v-if=\"repeatNum > 1\"\n        :value=\"repeatNum\"\n        :type=\"badgeType\"\n        :class=\"ns.e('badge')\"\n      />\n      <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n        <component :is=\"iconComponent\" />\n      </el-icon>\n      <slot>\n        <p v-if=\"!dangerouslyUseHTMLString\" :class=\"ns.e('content')\">\n          {{ message }}\n        </p>\n        <!-- Caution here, message could've been compromised, never use user's input as message -->\n        <p v-else :class=\"ns.e('content')\" v-html=\"message\" />\n      </slot>\n      <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n        <Close />\n      </el-icon>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { useEventListener, useResizeObserver, useTimeoutFn } from '@vueuse/core'\nimport {\n  TypeComponents,\n  TypeComponentsMap,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport ElBadge from '@pit-element-plus/components/badge'\nimport { useGlobalComponentSettings } from '@pit-element-plus/components/config-provider'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  MESSAGE_DEFAULT_PLACEMENT,\n  messageDefaults,\n  messageEmits,\n} from './message'\nimport { getLastOffset, getOffsetOrSpace } from './instance'\nimport { omit } from 'lodash-unified'\n\nimport type { BadgeProps } from '@pit-element-plus/components/badge'\nimport type { CSSProperties } from 'vue'\nimport type { MessageProps } from './message'\n\nconst { Close } = TypeComponents\n\ndefineOptions({\n  name: 'ElMessage',\n})\n\nconst props = withDefaults(\n  defineProps<MessageProps>(),\n  omit(messageDefaults, 'appendTo')\n)\nconst emit = defineEmits(messageEmits)\n\nconst isStartTransition = ref(false)\n\nconst { ns, zIndex } = useGlobalComponentSettings('message')\nconst { currentZIndex, nextZIndex } = zIndex\n\nconst messageRef = ref<HTMLDivElement>()\nconst visible = ref(false)\nconst height = ref(0)\n\nlet stopTimer: (() => void) | undefined = undefined\n\nconst badgeType = computed<BadgeProps['type']>(() =>\n  props.type ? (props.type === 'error' ? 'danger' : props.type) : 'info'\n)\nconst typeClass = computed(() => {\n  const type = props.type\n  return { [ns.bm('icon', type)]: type && TypeComponentsMap[type] }\n})\nconst iconComponent = computed(\n  () => props.icon || TypeComponentsMap[props.type] || ''\n)\n\nconst placement = computed(() => props.placement || MESSAGE_DEFAULT_PLACEMENT)\n\nconst lastOffset = computed(() => getLastOffset(props.id, placement.value))\nconst offset = computed(() => {\n  return (\n    getOffsetOrSpace(props.id, props.offset, placement.value) + lastOffset.value\n  )\n})\nconst bottom = computed(() => height.value + offset.value)\nconst horizontalClass = computed(() => {\n  if (placement.value.includes('left')) return ns.is('left')\n  if (placement.value.includes('right')) return ns.is('right')\n  return ns.is('center')\n})\n\nconst verticalProperty = computed(() =>\n  placement.value.startsWith('top') ? 'top' : 'bottom'\n)\n\nconst customStyle = computed<CSSProperties>(() => ({\n  [verticalProperty.value]: `${offset.value}px`,\n  zIndex: currentZIndex.value,\n}))\n\nfunction startTimer() {\n  if (props.duration === 0) return\n  ;({ stop: stopTimer } = useTimeoutFn(() => {\n    close()\n  }, props.duration))\n}\n\nfunction clearTimer() {\n  stopTimer?.()\n}\n\nfunction close() {\n  visible.value = false\n\n  // if the message has never started a transition, we can destroy it immediately\n  nextTick(() => {\n    if (!isStartTransition.value) {\n      props.onClose?.()\n      emit('destroy')\n    }\n  })\n}\n\nfunction keydown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n  if (code === EVENT_CODE.esc) {\n    // press esc to close the message\n    close()\n  }\n}\n\nonMounted(() => {\n  startTimer()\n  nextZIndex()\n  visible.value = true\n})\n\nwatch(\n  () => props.repeatNum,\n  () => {\n    clearTimer()\n    startTimer()\n  }\n)\n\nuseEventListener(document, 'keydown', keydown)\n\nuseResizeObserver(messageRef, () => {\n  height.value = messageRef.value!.getBoundingClientRect().height\n})\n\ndefineExpose({\n  visible,\n  bottom,\n  close,\n})\n</script>\n","<template>\n  <transition\n    :name=\"ns.b('fade')\"\n    @before-enter=\"isStartTransition = true\"\n    @before-leave=\"onClose\"\n    @after-leave=\"$emit('destroy')\"\n  >\n    <div\n      v-show=\"visible\"\n      :id=\"id\"\n      ref=\"messageRef\"\n      :class=\"[\n        ns.b(),\n        { [ns.m(type)]: type },\n        ns.is('closable', showClose),\n        ns.is('plain', plain),\n        ns.is('bottom', verticalProperty === 'bottom'),\n        horizontalClass,\n        customClass,\n      ]\"\n      :style=\"customStyle\"\n      role=\"alert\"\n      @mouseenter=\"clearTimer\"\n      @mouseleave=\"startTimer\"\n    >\n      <el-badge\n        v-if=\"repeatNum > 1\"\n        :value=\"repeatNum\"\n        :type=\"badgeType\"\n        :class=\"ns.e('badge')\"\n      />\n      <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n        <component :is=\"iconComponent\" />\n      </el-icon>\n      <slot>\n        <p v-if=\"!dangerouslyUseHTMLString\" :class=\"ns.e('content')\">\n          {{ message }}\n        </p>\n        <!-- Caution here, message could've been compromised, never use user's input as message -->\n        <p v-else :class=\"ns.e('content')\" v-html=\"message\" />\n      </slot>\n      <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n        <Close />\n      </el-icon>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { useEventListener, useResizeObserver, useTimeoutFn } from '@vueuse/core'\nimport {\n  TypeComponents,\n  TypeComponentsMap,\n  getEventCode,\n} from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport ElBadge from '@pit-element-plus/components/badge'\nimport { useGlobalComponentSettings } from '@pit-element-plus/components/config-provider'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport {\n  MESSAGE_DEFAULT_PLACEMENT,\n  messageDefaults,\n  messageEmits,\n} from './message'\nimport { getLastOffset, getOffsetOrSpace } from './instance'\nimport { omit } from 'lodash-unified'\n\nimport type { BadgeProps } from '@pit-element-plus/components/badge'\nimport type { CSSProperties } from 'vue'\nimport type { MessageProps } from './message'\n\nconst { Close } = TypeComponents\n\ndefineOptions({\n  name: 'ElMessage',\n})\n\nconst props = withDefaults(\n  defineProps<MessageProps>(),\n  omit(messageDefaults, 'appendTo')\n)\nconst emit = defineEmits(messageEmits)\n\nconst isStartTransition = ref(false)\n\nconst { ns, zIndex } = useGlobalComponentSettings('message')\nconst { currentZIndex, nextZIndex } = zIndex\n\nconst messageRef = ref<HTMLDivElement>()\nconst visible = ref(false)\nconst height = ref(0)\n\nlet stopTimer: (() => void) | undefined = undefined\n\nconst badgeType = computed<BadgeProps['type']>(() =>\n  props.type ? (props.type === 'error' ? 'danger' : props.type) : 'info'\n)\nconst typeClass = computed(() => {\n  const type = props.type\n  return { [ns.bm('icon', type)]: type && TypeComponentsMap[type] }\n})\nconst iconComponent = computed(\n  () => props.icon || TypeComponentsMap[props.type] || ''\n)\n\nconst placement = computed(() => props.placement || MESSAGE_DEFAULT_PLACEMENT)\n\nconst lastOffset = computed(() => getLastOffset(props.id, placement.value))\nconst offset = computed(() => {\n  return (\n    getOffsetOrSpace(props.id, props.offset, placement.value) + lastOffset.value\n  )\n})\nconst bottom = computed(() => height.value + offset.value)\nconst horizontalClass = computed(() => {\n  if (placement.value.includes('left')) return ns.is('left')\n  if (placement.value.includes('right')) return ns.is('right')\n  return ns.is('center')\n})\n\nconst verticalProperty = computed(() =>\n  placement.value.startsWith('top') ? 'top' : 'bottom'\n)\n\nconst customStyle = computed<CSSProperties>(() => ({\n  [verticalProperty.value]: `${offset.value}px`,\n  zIndex: currentZIndex.value,\n}))\n\nfunction startTimer() {\n  if (props.duration === 0) return\n  ;({ stop: stopTimer } = useTimeoutFn(() => {\n    close()\n  }, props.duration))\n}\n\nfunction clearTimer() {\n  stopTimer?.()\n}\n\nfunction close() {\n  visible.value = false\n\n  // if the message has never started a transition, we can destroy it immediately\n  nextTick(() => {\n    if (!isStartTransition.value) {\n      props.onClose?.()\n      emit('destroy')\n    }\n  })\n}\n\nfunction keydown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n  if (code === EVENT_CODE.esc) {\n    // press esc to close the message\n    close()\n  }\n}\n\nonMounted(() => {\n  startTimer()\n  nextZIndex()\n  visible.value = true\n})\n\nwatch(\n  () => props.repeatNum,\n  () => {\n    clearTimer()\n    startTimer()\n  }\n)\n\nuseEventListener(document, 'keydown', keydown)\n\nuseResizeObserver(messageRef, () => {\n  height.value = messageRef.value!.getBoundingClientRect().height\n})\n\ndefineExpose({\n  visible,\n  bottom,\n  close,\n})\n</script>\n","import { createVNode, isVNode, render } from 'vue'\nimport {\n  debugWarn,\n  hasOwn,\n  isBoolean,\n  isClient,\n  isElement,\n  isFunction,\n  isNumber,\n  isString,\n} from '@pit-element-plus/utils'\nimport { messageConfig } from '@pit-element-plus/components/config-provider'\nimport MessageConstructor from './message.vue'\nimport {\n  MESSAGE_DEFAULT_PLACEMENT,\n  messageDefaults,\n  messagePlacement,\n  messageTypes,\n} from './message'\nimport { getOrCreatePlacementInstances, placementInstances } from './instance'\n\nimport type { MessageContext } from './instance'\nimport type { AppContext } from 'vue'\nimport type {\n  Message,\n  MessageFn,\n  MessageHandler,\n  MessageOptions,\n  MessageParams,\n  MessageParamsNormalized,\n  MessagePlacement,\n  MessageType,\n} from './message'\n\nlet seed = 1\n\n// TODO: Since Notify.ts is basically the same like this file. So we could do some encapsulation against them to reduce code duplication.\n\nconst normalizeAppendTo = (normalized: MessageOptions) => {\n  const appendTo = normalized.appendTo\n  if (!appendTo) {\n    normalized.appendTo = document.body\n  } else if (isString(normalized.appendTo)) {\n    let appendTo = document.querySelector<HTMLElement>(normalized.appendTo)\n\n    // should fallback to default value with a warning\n    if (!isElement(appendTo)) {\n      debugWarn(\n        'ElMessage',\n        'the appendTo option is not an HTMLElement. Falling back to document.body.'\n      )\n      appendTo = document.body\n    }\n    normalized.appendTo = appendTo\n  }\n}\n\nconst normalizePlacement = (normalized: MessageOptions) => {\n  // if placement is not passed and global has config, use global config\n  if (\n    !normalized.placement &&\n    isString(messageConfig.placement) &&\n    messageConfig.placement\n  ) {\n    normalized.placement = messageConfig.placement as\n      | MessagePlacement\n      | undefined\n  }\n  // if placement is not passed and global has no config, use default config\n  if (!normalized.placement) {\n    normalized.placement = MESSAGE_DEFAULT_PLACEMENT\n  }\n  // if placement is not valid, use default config\n  if (!messagePlacement.includes(normalized.placement!)) {\n    debugWarn(\n      'ElMessage',\n      `Invalid placement: ${normalized.placement}. Falling back to '${MESSAGE_DEFAULT_PLACEMENT}'.`\n    )\n    normalized.placement = MESSAGE_DEFAULT_PLACEMENT\n  }\n}\n\nconst normalizeOptions = (params?: MessageParams) => {\n  const options: MessageOptions =\n    !params || isString(params) || isVNode(params) || isFunction(params)\n      ? { message: params }\n      : params\n\n  const normalized: MessageOptions = {\n    ...messageDefaults,\n    ...options,\n  }\n\n  normalizeAppendTo(normalized)\n  normalizePlacement(normalized)\n\n  // When grouping is configured globally,\n  // if grouping is manually set when calling message individually and it is not equal to the default value,\n  // the global configuration cannot override the current setting. default => false\n  if (isBoolean(messageConfig.grouping) && !normalized.grouping) {\n    normalized.grouping = messageConfig.grouping\n  }\n  if (isNumber(messageConfig.duration) && normalized.duration === 3000) {\n    normalized.duration = messageConfig.duration\n  }\n  if (isNumber(messageConfig.offset) && normalized.offset === 16) {\n    normalized.offset = messageConfig.offset\n  }\n  if (isBoolean(messageConfig.showClose) && !normalized.showClose) {\n    normalized.showClose = messageConfig.showClose\n  }\n  if (isBoolean(messageConfig.plain) && !normalized.plain) {\n    normalized.plain = messageConfig.plain\n  }\n\n  return normalized as MessageParamsNormalized\n}\n\nconst closeMessage = (instance: MessageContext) => {\n  const placement = instance.props.placement || MESSAGE_DEFAULT_PLACEMENT\n  const instances = placementInstances[placement]\n\n  const idx = instances.indexOf(instance)\n  if (idx === -1) return\n  instances.splice(idx, 1)\n  const { handler } = instance\n  handler.close()\n}\n\nconst createMessage = (\n  { appendTo, ...options }: MessageParamsNormalized,\n  context?: AppContext | null\n): MessageContext => {\n  const id = `message_${seed++}`\n  const userOnClose = options.onClose\n\n  const container = document.createElement('div')\n\n  const props = {\n    ...options,\n    // now the zIndex will be used inside the message.vue component instead of here.\n    // zIndex: nextIndex() + options.zIndex\n    id,\n    onClose: () => {\n      userOnClose?.()\n      closeMessage(instance)\n    },\n\n    // clean message element preventing mem leak\n    onDestroy: () => {\n      // since the element is destroy, then the VNode should be collected by GC as well\n      // we do not want cause any mem leak because we have returned vm as a reference to users\n      // so that we manually set it to false.\n      render(null, container)\n    },\n  }\n  const vnode = createVNode(\n    MessageConstructor,\n    props,\n    isFunction(props.message) || isVNode(props.message)\n      ? {\n          default: isFunction(props.message)\n            ? props.message\n            : () => props.message,\n        }\n      : null\n  )\n  vnode.appContext = context || message._context\n\n  render(vnode, container)\n  // instances will remove this item when close function gets called. So we do not need to worry about it.\n  appendTo.appendChild(container.firstElementChild!)\n\n  const vm = vnode.component!\n\n  const handler: MessageHandler = {\n    // instead of calling the onClose function directly, setting this value so that we can have the full lifecycle\n    // for out component, so that all closing steps will not be skipped.\n    close: () => {\n      vm.exposed!.close()\n    },\n  }\n\n  const instance: MessageContext = {\n    id,\n    vnode,\n    vm,\n    handler,\n    props: (vnode.component as any).props,\n  }\n\n  return instance\n}\n\nconst message: MessageFn &\n  Partial<Message> & { _context: AppContext | null } = (\n  options = {},\n  context\n) => {\n  if (!isClient) return { close: () => undefined }\n\n  const normalized = normalizeOptions(options)\n  const instances = getOrCreatePlacementInstances(\n    normalized.placement || MESSAGE_DEFAULT_PLACEMENT\n  )\n\n  if (normalized.grouping && instances.length) {\n    const instance = instances.find(\n      ({ vnode: vm }) => vm.props?.message === normalized.message\n    )\n    if (instance) {\n      instance.props.repeatNum! += 1\n      instance.props.type = normalized.type\n      return instance.handler\n    }\n  }\n\n  if (isNumber(messageConfig.max) && instances.length >= messageConfig.max) {\n    return { close: () => undefined }\n  }\n\n  const instance = createMessage(normalized, context)\n\n  instances.push(instance)\n  return instance.handler\n}\n\nmessageTypes.forEach((type) => {\n  message[type] = (options = {}, appContext) => {\n    const normalized = normalizeOptions(options)\n    return message({ ...normalized, type }, appContext)\n  }\n})\n\nexport function closeAll(type?: MessageType): void {\n  for (const placement in placementInstances) {\n    if (hasOwn(placementInstances, placement)) {\n      // Create a copy of instances to avoid modification during iteration\n      const instances: MessageContext[] = [...placementInstances[placement]]\n      for (const instance of instances) {\n        if (!type || type === instance.props.type) {\n          instance.handler.close()\n        }\n      }\n    }\n  }\n}\n\nexport function closeAllByPlacement(placement: MessagePlacement) {\n  if (!placementInstances[placement]) return\n  // Create a copy of instances to avoid modification during iteration\n  const instances = [...placementInstances[placement]]\n  instances.forEach((instance) => instance.handler.close())\n}\n\nmessage.closeAll = closeAll\nmessage.closeAllByPlacement = closeAllByPlacement\nmessage._context = null\n\nexport default message as Message\n","import { withInstallFunction } from '@pit-element-plus/utils'\nimport Message from './src/method'\n\nexport const ElMessage = withInstallFunction(Message, '$message')\nexport default ElMessage\n\nexport * from './src/message'\n","<template>\n  <transition name=\"fade-in-linear\" @after-leave=\"$emit('vanish')\">\n    <el-overlay\n      v-show=\"visible\"\n      :z-index=\"zIndex\"\n      :overlay-class=\"[ns.is('message-box'), modalClass]\"\n      :mask=\"modal\"\n    >\n      <div\n        role=\"dialog\"\n        :aria-label=\"title\"\n        aria-modal=\"true\"\n        :aria-describedby=\"!showInput ? contentId : undefined\"\n        :class=\"`${ns.namespace.value}-overlay-message-box`\"\n        @click=\"overlayEvent.onClick\"\n        @mousedown=\"overlayEvent.onMousedown\"\n        @mouseup=\"overlayEvent.onMouseup\"\n      >\n        <el-focus-trap\n          loop\n          :trapped=\"visible\"\n          :focus-trap-el=\"rootRef\"\n          :focus-start-el=\"focusStartRef\"\n          @release-requested=\"onCloseRequested\"\n        >\n          <div\n            ref=\"rootRef\"\n            :class=\"[\n              ns.b(),\n              customClass,\n              ns.is('draggable', draggable),\n              ns.is('dragging', isDragging),\n              { [ns.m('center')]: center },\n            ]\"\n            :style=\"customStyle\"\n            tabindex=\"-1\"\n            @click.stop=\"\"\n          >\n            <div\n              v-if=\"title !== null && title !== undefined\"\n              ref=\"headerRef\"\n              :class=\"[ns.e('header'), { 'show-close': showClose }]\"\n            >\n              <div :class=\"ns.e('title')\">\n                <el-icon\n                  v-if=\"iconComponent && center\"\n                  :class=\"[ns.e('status'), typeClass]\"\n                >\n                  <component :is=\"iconComponent\" />\n                </el-icon>\n                <span>{{ title }}</span>\n              </div>\n              <button\n                v-if=\"showClose\"\n                type=\"button\"\n                :class=\"ns.e('headerbtn')\"\n                :aria-label=\"t('el.messagebox.close')\"\n                @click=\"\n                  handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n                \"\n                @keydown.prevent.enter=\"\n                  handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n                \"\n              >\n                <el-icon :class=\"ns.e('close')\">\n                  <component :is=\"closeIcon || 'close'\" />\n                </el-icon>\n              </button>\n            </div>\n            <div :id=\"contentId\" :class=\"ns.e('content')\">\n              <div :class=\"ns.e('container')\">\n                <el-icon\n                  v-if=\"iconComponent && !center && hasMessage\"\n                  :class=\"[ns.e('status'), typeClass]\"\n                >\n                  <component :is=\"iconComponent\" />\n                </el-icon>\n                <div v-if=\"hasMessage\" :class=\"ns.e('message')\">\n                  <slot>\n                    <component\n                      :is=\"showInput ? 'label' : 'p'\"\n                      v-if=\"!dangerouslyUseHTMLString\"\n                      :for=\"showInput ? inputId : undefined\"\n                      v-text=\"message\"\n                    />\n                    <component\n                      :is=\"showInput ? 'label' : 'p'\"\n                      v-else\n                      :for=\"showInput ? inputId : undefined\"\n                      v-html=\"message\"\n                    />\n                  </slot>\n                </div>\n              </div>\n              <div v-show=\"showInput\" :class=\"ns.e('input')\">\n                <el-input\n                  :id=\"inputId\"\n                  ref=\"inputRef\"\n                  v-model=\"inputValue\"\n                  :type=\"inputType\"\n                  :placeholder=\"inputPlaceholder\"\n                  :aria-invalid=\"validateError\"\n                  :class=\"{ invalid: validateError }\"\n                  @keydown.enter=\"handleInputEnter\"\n                />\n                <div\n                  :class=\"ns.e('errormsg')\"\n                  :style=\"{\n                    visibility: !!editorErrorMessage ? 'visible' : 'hidden',\n                  }\"\n                >\n                  {{ editorErrorMessage }}\n                </div>\n              </div>\n            </div>\n            <div :class=\"ns.e('btns')\">\n              <el-button\n                v-if=\"showCancelButton\"\n                :type=\"cancelButtonType === 'text' ? '' : cancelButtonType\"\n                :text=\"cancelButtonType === 'text'\"\n                :loading=\"cancelButtonLoading\"\n                :loading-icon=\"cancelButtonLoadingIcon\"\n                :class=\"[cancelButtonClass]\"\n                :round=\"roundButton\"\n                :size=\"btnSize\"\n                @click=\"handleAction('cancel')\"\n                @keydown.prevent.enter=\"handleAction('cancel')\"\n              >\n                {{ cancelButtonText || t('el.messagebox.cancel') }}\n              </el-button>\n              <el-button\n                v-show=\"showConfirmButton\"\n                ref=\"confirmRef\"\n                :type=\"confirmButtonType === 'text' ? '' : confirmButtonType\"\n                :text=\"confirmButtonType === 'text'\"\n                :loading=\"confirmButtonLoading\"\n                :loading-icon=\"confirmButtonLoadingIcon\"\n                :class=\"[confirmButtonClasses]\"\n                :round=\"roundButton\"\n                :disabled=\"confirmButtonDisabled\"\n                :size=\"btnSize\"\n                @click=\"handleAction('confirm')\"\n                @keydown.prevent.enter=\"handleAction('confirm')\"\n              >\n                {{ confirmButtonText || t('el.messagebox.confirm') }}\n              </el-button>\n            </div>\n          </div>\n        </el-focus-trap>\n      </div>\n    </el-overlay>\n  </transition>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  markRaw,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport ElButton from '@pit-element-plus/components/button'\nimport { TrapFocus } from '@pit-element-plus/directives'\nimport {\n  useDraggable,\n  useId,\n  useLockscreen,\n  useSameTarget,\n} from '@pit-element-plus/hooks'\nimport ElInput from '@pit-element-plus/components/input'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport {\n  TypeComponents,\n  TypeComponentsMap,\n  isFunction,\n  isString,\n  isValidComponentSize,\n} from '@pit-element-plus/utils'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Loading } from 'pit-element-icons'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport { useGlobalComponentSettings } from '@pit-element-plus/components/config-provider'\n\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type {\n  Action,\n  MessageBoxState,\n  MessageBoxType,\n} from './message-box.type'\nimport type { InputInstance } from '@pit-element-plus/components/input'\n\nexport default defineComponent({\n  name: 'ElMessageBox',\n  directives: {\n    TrapFocus,\n  },\n  components: {\n    ElButton,\n    ElFocusTrap,\n    ElInput,\n    ElOverlay,\n    ElIcon,\n    ...TypeComponents,\n  },\n  inheritAttrs: false,\n  props: {\n    buttonSize: {\n      type: String as PropType<ComponentSize>,\n      validator: isValidComponentSize,\n    },\n    modal: {\n      type: Boolean,\n      default: true,\n    },\n    lockScroll: {\n      type: Boolean,\n      default: true,\n    },\n    showClose: {\n      type: Boolean,\n      default: true,\n    },\n    closeOnClickModal: {\n      type: Boolean,\n      default: true,\n    },\n    closeOnPressEscape: {\n      type: Boolean,\n      default: true,\n    },\n    closeOnHashChange: {\n      type: Boolean,\n      default: true,\n    },\n    center: Boolean,\n    draggable: Boolean,\n    overflow: Boolean,\n    roundButton: Boolean,\n    container: {\n      type: String, // default append to body\n      default: 'body',\n    },\n    boxType: {\n      type: String as PropType<MessageBoxType>,\n      default: '',\n    },\n  },\n  emits: ['vanish', 'action'],\n  setup(props, { emit }) {\n    // const popup = usePopup(props, doClose)\n    const {\n      locale,\n      zIndex,\n      ns,\n      size: btnSize,\n    } = useGlobalComponentSettings(\n      'message-box',\n      computed(() => props.buttonSize)\n    )\n\n    const { t } = locale\n    const { nextZIndex } = zIndex\n\n    const visible = ref(false)\n    // s represents state\n    const state = reactive<MessageBoxState>({\n      // autofocus element when open message-box\n      autofocus: true,\n      beforeClose: null,\n      callback: null,\n      cancelButtonText: '',\n      cancelButtonClass: '',\n      confirmButtonText: '',\n      confirmButtonClass: '',\n      cancelButtonType: '',\n      confirmButtonType: 'primary',\n      customClass: '',\n      customStyle: {},\n      dangerouslyUseHTMLString: false,\n      distinguishCancelAndClose: false,\n      icon: '',\n      closeIcon: '',\n      inputPattern: null,\n      inputPlaceholder: '',\n      inputType: 'text',\n      inputValue: '',\n      inputValidator: undefined,\n      inputErrorMessage: '',\n      message: '',\n      modalFade: true,\n      modalClass: '',\n      showCancelButton: false,\n      showConfirmButton: true,\n      type: '',\n      title: undefined,\n      showInput: false,\n      action: '' as Action,\n      confirmButtonLoading: false,\n      cancelButtonLoading: false,\n      confirmButtonLoadingIcon: markRaw(Loading),\n      cancelButtonLoadingIcon: markRaw(Loading),\n      confirmButtonDisabled: false,\n      editorErrorMessage: '',\n      // refer to: https://github.com/ElemeFE/element/commit/2999279ae34ef10c373ca795c87b020ed6753eed\n      // seemed ok for now without this state.\n      // isOnComposition: false, // temporary remove\n      validateError: false,\n      zIndex: nextZIndex(),\n    })\n\n    const typeClass = computed(() => {\n      const type = state.type\n      return { [ns.bm('icon', type)]: type && TypeComponentsMap[type] }\n    })\n\n    const contentId = useId()\n    const inputId = useId()\n\n    const iconComponent = computed(() => {\n      const type = state.type\n      return state.icon || (type && TypeComponentsMap[type]) || ''\n    })\n    const hasMessage = computed(() => !!state.message)\n    const rootRef = ref<HTMLElement>()\n    const headerRef = ref<HTMLElement>()\n    const focusStartRef = ref<HTMLElement>()\n    const inputRef = ref<InputInstance>()\n    const confirmRef = ref<ComponentPublicInstance>()\n\n    const confirmButtonClasses = computed(() => state.confirmButtonClass)\n\n    watch(\n      () => state.inputValue,\n      async (val) => {\n        await nextTick()\n        if (props.boxType === 'prompt' && val) {\n          validate()\n        }\n      },\n      { immediate: true }\n    )\n\n    watch(\n      () => visible.value,\n      (val) => {\n        if (val) {\n          if (props.boxType !== 'prompt') {\n            if (state.autofocus) {\n              focusStartRef.value = confirmRef.value?.$el ?? rootRef.value\n            } else {\n              focusStartRef.value = rootRef.value\n            }\n          }\n          state.zIndex = nextZIndex()\n        }\n        if (props.boxType !== 'prompt') return\n        if (val) {\n          nextTick().then(() => {\n            if (inputRef.value && inputRef.value.$el) {\n              if (state.autofocus) {\n                focusStartRef.value = getInputElement() ?? rootRef.value\n              } else {\n                focusStartRef.value = rootRef.value\n              }\n            }\n          })\n        } else {\n          state.editorErrorMessage = ''\n          state.validateError = false\n        }\n      }\n    )\n\n    const draggable = computed(() => props.draggable)\n    const overflow = computed(() => props.overflow)\n    const { isDragging } = useDraggable(rootRef, headerRef, draggable, overflow)\n\n    onMounted(async () => {\n      await nextTick()\n      if (props.closeOnHashChange) {\n        window.addEventListener('hashchange', doClose)\n      }\n    })\n\n    onBeforeUnmount(() => {\n      if (props.closeOnHashChange) {\n        window.removeEventListener('hashchange', doClose)\n      }\n    })\n\n    function doClose() {\n      if (!visible.value) return\n      visible.value = false\n      nextTick(() => {\n        if (state.action) emit('action', state.action)\n      })\n    }\n\n    const handleWrapperClick = () => {\n      if (props.closeOnClickModal) {\n        handleAction(state.distinguishCancelAndClose ? 'close' : 'cancel')\n      }\n    }\n\n    const overlayEvent = useSameTarget(handleWrapperClick)\n\n    const handleInputEnter = (e: KeyboardEvent | Event) => {\n      if (state.inputType !== 'textarea' && !inputRef.value?.isComposing) {\n        e.preventDefault()\n        return handleAction('confirm')\n      }\n    }\n\n    const handleAction = (action: Action) => {\n      if (props.boxType === 'prompt' && action === 'confirm' && !validate()) {\n        return\n      }\n\n      state.action = action\n\n      if (state.beforeClose) {\n        state.beforeClose?.(action, state, doClose)\n      } else {\n        doClose()\n      }\n    }\n\n    const validate = () => {\n      if (props.boxType === 'prompt') {\n        const inputPattern = state.inputPattern\n        if (inputPattern && !inputPattern.test(state.inputValue || '')) {\n          state.editorErrorMessage =\n            state.inputErrorMessage || t('el.messagebox.error')\n          state.validateError = true\n          return false\n        }\n        const inputValidator = state.inputValidator\n        if (isFunction(inputValidator)) {\n          const validateResult = inputValidator(state.inputValue)\n          if (validateResult === false) {\n            state.editorErrorMessage =\n              state.inputErrorMessage || t('el.messagebox.error')\n            state.validateError = true\n            return false\n          }\n          if (isString(validateResult)) {\n            state.editorErrorMessage = validateResult\n            state.validateError = true\n            return false\n          }\n        }\n      }\n      state.editorErrorMessage = ''\n      state.validateError = false\n      return true\n    }\n\n    const getInputElement = () => {\n      const inputRefs = inputRef.value?.$refs\n      return (inputRefs?.input ?? inputRefs?.textarea) as HTMLElement\n    }\n\n    const handleClose = () => {\n      handleAction('close')\n    }\n\n    // when close on press escape is disabled, pressing esc should not callout\n    // any other message box and close any other dialog-ish elements\n    // e.g. Dialog has a close on press esc feature, and when it closes, it calls\n    // props.beforeClose method to make a intermediate state by callout a message box\n    // for some verification or alerting. then if we allow global event like this\n    // to dispatch, it could callout another message box.\n    const onCloseRequested = () => {\n      if (props.closeOnPressEscape) {\n        handleClose()\n      }\n    }\n\n    // locks the screen to prevent scroll\n    if (props.lockScroll) {\n      useLockscreen(visible, { ns })\n    }\n\n    return {\n      ...toRefs(state),\n      ns,\n      overlayEvent,\n      visible,\n      hasMessage,\n      typeClass,\n      contentId,\n      inputId,\n      btnSize,\n      iconComponent,\n      confirmButtonClasses,\n      rootRef,\n      focusStartRef,\n      headerRef,\n      inputRef,\n      isDragging,\n      confirmRef,\n      doClose, // for outside usage\n      handleClose, // for out side usage\n      onCloseRequested,\n      handleWrapperClick,\n      handleInputEnter,\n      handleAction,\n      t,\n    }\n  },\n})\n</script>\n","<template>\n  <transition name=\"fade-in-linear\" @after-leave=\"$emit('vanish')\">\n    <el-overlay\n      v-show=\"visible\"\n      :z-index=\"zIndex\"\n      :overlay-class=\"[ns.is('message-box'), modalClass]\"\n      :mask=\"modal\"\n    >\n      <div\n        role=\"dialog\"\n        :aria-label=\"title\"\n        aria-modal=\"true\"\n        :aria-describedby=\"!showInput ? contentId : undefined\"\n        :class=\"`${ns.namespace.value}-overlay-message-box`\"\n        @click=\"overlayEvent.onClick\"\n        @mousedown=\"overlayEvent.onMousedown\"\n        @mouseup=\"overlayEvent.onMouseup\"\n      >\n        <el-focus-trap\n          loop\n          :trapped=\"visible\"\n          :focus-trap-el=\"rootRef\"\n          :focus-start-el=\"focusStartRef\"\n          @release-requested=\"onCloseRequested\"\n        >\n          <div\n            ref=\"rootRef\"\n            :class=\"[\n              ns.b(),\n              customClass,\n              ns.is('draggable', draggable),\n              ns.is('dragging', isDragging),\n              { [ns.m('center')]: center },\n            ]\"\n            :style=\"customStyle\"\n            tabindex=\"-1\"\n            @click.stop=\"\"\n          >\n            <div\n              v-if=\"title !== null && title !== undefined\"\n              ref=\"headerRef\"\n              :class=\"[ns.e('header'), { 'show-close': showClose }]\"\n            >\n              <div :class=\"ns.e('title')\">\n                <el-icon\n                  v-if=\"iconComponent && center\"\n                  :class=\"[ns.e('status'), typeClass]\"\n                >\n                  <component :is=\"iconComponent\" />\n                </el-icon>\n                <span>{{ title }}</span>\n              </div>\n              <button\n                v-if=\"showClose\"\n                type=\"button\"\n                :class=\"ns.e('headerbtn')\"\n                :aria-label=\"t('el.messagebox.close')\"\n                @click=\"\n                  handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n                \"\n                @keydown.prevent.enter=\"\n                  handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n                \"\n              >\n                <el-icon :class=\"ns.e('close')\">\n                  <component :is=\"closeIcon || 'close'\" />\n                </el-icon>\n              </button>\n            </div>\n            <div :id=\"contentId\" :class=\"ns.e('content')\">\n              <div :class=\"ns.e('container')\">\n                <el-icon\n                  v-if=\"iconComponent && !center && hasMessage\"\n                  :class=\"[ns.e('status'), typeClass]\"\n                >\n                  <component :is=\"iconComponent\" />\n                </el-icon>\n                <div v-if=\"hasMessage\" :class=\"ns.e('message')\">\n                  <slot>\n                    <component\n                      :is=\"showInput ? 'label' : 'p'\"\n                      v-if=\"!dangerouslyUseHTMLString\"\n                      :for=\"showInput ? inputId : undefined\"\n                      v-text=\"message\"\n                    />\n                    <component\n                      :is=\"showInput ? 'label' : 'p'\"\n                      v-else\n                      :for=\"showInput ? inputId : undefined\"\n                      v-html=\"message\"\n                    />\n                  </slot>\n                </div>\n              </div>\n              <div v-show=\"showInput\" :class=\"ns.e('input')\">\n                <el-input\n                  :id=\"inputId\"\n                  ref=\"inputRef\"\n                  v-model=\"inputValue\"\n                  :type=\"inputType\"\n                  :placeholder=\"inputPlaceholder\"\n                  :aria-invalid=\"validateError\"\n                  :class=\"{ invalid: validateError }\"\n                  @keydown.enter=\"handleInputEnter\"\n                />\n                <div\n                  :class=\"ns.e('errormsg')\"\n                  :style=\"{\n                    visibility: !!editorErrorMessage ? 'visible' : 'hidden',\n                  }\"\n                >\n                  {{ editorErrorMessage }}\n                </div>\n              </div>\n            </div>\n            <div :class=\"ns.e('btns')\">\n              <el-button\n                v-if=\"showCancelButton\"\n                :type=\"cancelButtonType === 'text' ? '' : cancelButtonType\"\n                :text=\"cancelButtonType === 'text'\"\n                :loading=\"cancelButtonLoading\"\n                :loading-icon=\"cancelButtonLoadingIcon\"\n                :class=\"[cancelButtonClass]\"\n                :round=\"roundButton\"\n                :size=\"btnSize\"\n                @click=\"handleAction('cancel')\"\n                @keydown.prevent.enter=\"handleAction('cancel')\"\n              >\n                {{ cancelButtonText || t('el.messagebox.cancel') }}\n              </el-button>\n              <el-button\n                v-show=\"showConfirmButton\"\n                ref=\"confirmRef\"\n                :type=\"confirmButtonType === 'text' ? '' : confirmButtonType\"\n                :text=\"confirmButtonType === 'text'\"\n                :loading=\"confirmButtonLoading\"\n                :loading-icon=\"confirmButtonLoadingIcon\"\n                :class=\"[confirmButtonClasses]\"\n                :round=\"roundButton\"\n                :disabled=\"confirmButtonDisabled\"\n                :size=\"btnSize\"\n                @click=\"handleAction('confirm')\"\n                @keydown.prevent.enter=\"handleAction('confirm')\"\n              >\n                {{ confirmButtonText || t('el.messagebox.confirm') }}\n              </el-button>\n            </div>\n          </div>\n        </el-focus-trap>\n      </div>\n    </el-overlay>\n  </transition>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  markRaw,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport ElButton from '@pit-element-plus/components/button'\nimport { TrapFocus } from '@pit-element-plus/directives'\nimport {\n  useDraggable,\n  useId,\n  useLockscreen,\n  useSameTarget,\n} from '@pit-element-plus/hooks'\nimport ElInput from '@pit-element-plus/components/input'\nimport { ElOverlay } from '@pit-element-plus/components/overlay'\nimport {\n  TypeComponents,\n  TypeComponentsMap,\n  isFunction,\n  isString,\n  isValidComponentSize,\n} from '@pit-element-plus/utils'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { Loading } from 'pit-element-icons'\nimport ElFocusTrap from '@pit-element-plus/components/focus-trap'\nimport { useGlobalComponentSettings } from '@pit-element-plus/components/config-provider'\n\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { ComponentSize } from '@pit-element-plus/constants'\nimport type {\n  Action,\n  MessageBoxState,\n  MessageBoxType,\n} from './message-box.type'\nimport type { InputInstance } from '@pit-element-plus/components/input'\n\nexport default defineComponent({\n  name: 'ElMessageBox',\n  directives: {\n    TrapFocus,\n  },\n  components: {\n    ElButton,\n    ElFocusTrap,\n    ElInput,\n    ElOverlay,\n    ElIcon,\n    ...TypeComponents,\n  },\n  inheritAttrs: false,\n  props: {\n    buttonSize: {\n      type: String as PropType<ComponentSize>,\n      validator: isValidComponentSize,\n    },\n    modal: {\n      type: Boolean,\n      default: true,\n    },\n    lockScroll: {\n      type: Boolean,\n      default: true,\n    },\n    showClose: {\n      type: Boolean,\n      default: true,\n    },\n    closeOnClickModal: {\n      type: Boolean,\n      default: true,\n    },\n    closeOnPressEscape: {\n      type: Boolean,\n      default: true,\n    },\n    closeOnHashChange: {\n      type: Boolean,\n      default: true,\n    },\n    center: Boolean,\n    draggable: Boolean,\n    overflow: Boolean,\n    roundButton: Boolean,\n    container: {\n      type: String, // default append to body\n      default: 'body',\n    },\n    boxType: {\n      type: String as PropType<MessageBoxType>,\n      default: '',\n    },\n  },\n  emits: ['vanish', 'action'],\n  setup(props, { emit }) {\n    // const popup = usePopup(props, doClose)\n    const {\n      locale,\n      zIndex,\n      ns,\n      size: btnSize,\n    } = useGlobalComponentSettings(\n      'message-box',\n      computed(() => props.buttonSize)\n    )\n\n    const { t } = locale\n    const { nextZIndex } = zIndex\n\n    const visible = ref(false)\n    // s represents state\n    const state = reactive<MessageBoxState>({\n      // autofocus element when open message-box\n      autofocus: true,\n      beforeClose: null,\n      callback: null,\n      cancelButtonText: '',\n      cancelButtonClass: '',\n      confirmButtonText: '',\n      confirmButtonClass: '',\n      cancelButtonType: '',\n      confirmButtonType: 'primary',\n      customClass: '',\n      customStyle: {},\n      dangerouslyUseHTMLString: false,\n      distinguishCancelAndClose: false,\n      icon: '',\n      closeIcon: '',\n      inputPattern: null,\n      inputPlaceholder: '',\n      inputType: 'text',\n      inputValue: '',\n      inputValidator: undefined,\n      inputErrorMessage: '',\n      message: '',\n      modalFade: true,\n      modalClass: '',\n      showCancelButton: false,\n      showConfirmButton: true,\n      type: '',\n      title: undefined,\n      showInput: false,\n      action: '' as Action,\n      confirmButtonLoading: false,\n      cancelButtonLoading: false,\n      confirmButtonLoadingIcon: markRaw(Loading),\n      cancelButtonLoadingIcon: markRaw(Loading),\n      confirmButtonDisabled: false,\n      editorErrorMessage: '',\n      // refer to: https://github.com/ElemeFE/element/commit/2999279ae34ef10c373ca795c87b020ed6753eed\n      // seemed ok for now without this state.\n      // isOnComposition: false, // temporary remove\n      validateError: false,\n      zIndex: nextZIndex(),\n    })\n\n    const typeClass = computed(() => {\n      const type = state.type\n      return { [ns.bm('icon', type)]: type && TypeComponentsMap[type] }\n    })\n\n    const contentId = useId()\n    const inputId = useId()\n\n    const iconComponent = computed(() => {\n      const type = state.type\n      return state.icon || (type && TypeComponentsMap[type]) || ''\n    })\n    const hasMessage = computed(() => !!state.message)\n    const rootRef = ref<HTMLElement>()\n    const headerRef = ref<HTMLElement>()\n    const focusStartRef = ref<HTMLElement>()\n    const inputRef = ref<InputInstance>()\n    const confirmRef = ref<ComponentPublicInstance>()\n\n    const confirmButtonClasses = computed(() => state.confirmButtonClass)\n\n    watch(\n      () => state.inputValue,\n      async (val) => {\n        await nextTick()\n        if (props.boxType === 'prompt' && val) {\n          validate()\n        }\n      },\n      { immediate: true }\n    )\n\n    watch(\n      () => visible.value,\n      (val) => {\n        if (val) {\n          if (props.boxType !== 'prompt') {\n            if (state.autofocus) {\n              focusStartRef.value = confirmRef.value?.$el ?? rootRef.value\n            } else {\n              focusStartRef.value = rootRef.value\n            }\n          }\n          state.zIndex = nextZIndex()\n        }\n        if (props.boxType !== 'prompt') return\n        if (val) {\n          nextTick().then(() => {\n            if (inputRef.value && inputRef.value.$el) {\n              if (state.autofocus) {\n                focusStartRef.value = getInputElement() ?? rootRef.value\n              } else {\n                focusStartRef.value = rootRef.value\n              }\n            }\n          })\n        } else {\n          state.editorErrorMessage = ''\n          state.validateError = false\n        }\n      }\n    )\n\n    const draggable = computed(() => props.draggable)\n    const overflow = computed(() => props.overflow)\n    const { isDragging } = useDraggable(rootRef, headerRef, draggable, overflow)\n\n    onMounted(async () => {\n      await nextTick()\n      if (props.closeOnHashChange) {\n        window.addEventListener('hashchange', doClose)\n      }\n    })\n\n    onBeforeUnmount(() => {\n      if (props.closeOnHashChange) {\n        window.removeEventListener('hashchange', doClose)\n      }\n    })\n\n    function doClose() {\n      if (!visible.value) return\n      visible.value = false\n      nextTick(() => {\n        if (state.action) emit('action', state.action)\n      })\n    }\n\n    const handleWrapperClick = () => {\n      if (props.closeOnClickModal) {\n        handleAction(state.distinguishCancelAndClose ? 'close' : 'cancel')\n      }\n    }\n\n    const overlayEvent = useSameTarget(handleWrapperClick)\n\n    const handleInputEnter = (e: KeyboardEvent | Event) => {\n      if (state.inputType !== 'textarea' && !inputRef.value?.isComposing) {\n        e.preventDefault()\n        return handleAction('confirm')\n      }\n    }\n\n    const handleAction = (action: Action) => {\n      if (props.boxType === 'prompt' && action === 'confirm' && !validate()) {\n        return\n      }\n\n      state.action = action\n\n      if (state.beforeClose) {\n        state.beforeClose?.(action, state, doClose)\n      } else {\n        doClose()\n      }\n    }\n\n    const validate = () => {\n      if (props.boxType === 'prompt') {\n        const inputPattern = state.inputPattern\n        if (inputPattern && !inputPattern.test(state.inputValue || '')) {\n          state.editorErrorMessage =\n            state.inputErrorMessage || t('el.messagebox.error')\n          state.validateError = true\n          return false\n        }\n        const inputValidator = state.inputValidator\n        if (isFunction(inputValidator)) {\n          const validateResult = inputValidator(state.inputValue)\n          if (validateResult === false) {\n            state.editorErrorMessage =\n              state.inputErrorMessage || t('el.messagebox.error')\n            state.validateError = true\n            return false\n          }\n          if (isString(validateResult)) {\n            state.editorErrorMessage = validateResult\n            state.validateError = true\n            return false\n          }\n        }\n      }\n      state.editorErrorMessage = ''\n      state.validateError = false\n      return true\n    }\n\n    const getInputElement = () => {\n      const inputRefs = inputRef.value?.$refs\n      return (inputRefs?.input ?? inputRefs?.textarea) as HTMLElement\n    }\n\n    const handleClose = () => {\n      handleAction('close')\n    }\n\n    // when close on press escape is disabled, pressing esc should not callout\n    // any other message box and close any other dialog-ish elements\n    // e.g. Dialog has a close on press esc feature, and when it closes, it calls\n    // props.beforeClose method to make a intermediate state by callout a message box\n    // for some verification or alerting. then if we allow global event like this\n    // to dispatch, it could callout another message box.\n    const onCloseRequested = () => {\n      if (props.closeOnPressEscape) {\n        handleClose()\n      }\n    }\n\n    // locks the screen to prevent scroll\n    if (props.lockScroll) {\n      useLockscreen(visible, { ns })\n    }\n\n    return {\n      ...toRefs(state),\n      ns,\n      overlayEvent,\n      visible,\n      hasMessage,\n      typeClass,\n      contentId,\n      inputId,\n      btnSize,\n      iconComponent,\n      confirmButtonClasses,\n      rootRef,\n      focusStartRef,\n      headerRef,\n      inputRef,\n      isDragging,\n      confirmRef,\n      doClose, // for outside usage\n      handleClose, // for out side usage\n      onCloseRequested,\n      handleWrapperClick,\n      handleInputEnter,\n      handleAction,\n      t,\n    }\n  },\n})\n</script>\n","import { createVNode, isVNode, markRaw, render } from 'vue'\nimport {\n  debugWarn,\n  hasOwn,\n  isClient,\n  isElement,\n  isFunction,\n  isObject,\n  isString,\n  isUndefined,\n} from '@pit-element-plus/utils'\nimport MessageBoxConstructor from './index.vue'\n\nimport type { AppContext, ComponentPublicInstance, VNode } from 'vue'\nimport type {\n  Action,\n  Callback,\n  ElMessageBoxOptions,\n  ElMessageBoxShortcutMethod,\n  IElMessageBox,\n  MessageBoxData,\n  MessageBoxState,\n} from './message-box.type'\n\n// component default merge props & data\n\nconst messageInstance = new Map<\n  ComponentPublicInstance<{ doClose: () => void }>, // marking doClose as function\n  {\n    options: any\n    callback: Callback | undefined\n    resolve: (res: any) => void\n    reject: (reason?: any) => void\n  }\n>()\n\nconst getAppendToElement = (props: any): HTMLElement => {\n  let appendTo: HTMLElement | null = document.body\n  if (props.appendTo) {\n    if (isString(props.appendTo)) {\n      appendTo = document.querySelector<HTMLElement>(props.appendTo)\n    }\n    if (isElement(props.appendTo)) {\n      appendTo = props.appendTo\n    }\n\n    // should fallback to default value with a warning\n    if (!isElement(appendTo)) {\n      debugWarn(\n        'ElMessageBox',\n        'the appendTo option is not an HTMLElement. Falling back to document.body.'\n      )\n      appendTo = document.body\n    }\n  }\n  return appendTo\n}\n\nconst initInstance = (\n  props: any,\n  container: HTMLElement,\n  appContext: AppContext | null = null\n) => {\n  const vnode = createVNode(\n    MessageBoxConstructor,\n    props,\n    isFunction(props.message) || isVNode(props.message)\n      ? {\n          default: isFunction(props.message)\n            ? props.message\n            : () => props.message,\n        }\n      : null\n  )\n  vnode.appContext = appContext\n  render(vnode, container)\n  getAppendToElement(props).appendChild(container.firstElementChild!)\n  return vnode.component\n}\n\nconst genContainer = () => {\n  return document.createElement('div')\n}\n\nconst showMessage = (options: any, appContext?: AppContext | null) => {\n  const container = genContainer()\n  // Adding destruct method.\n  // when transition leaves emitting `vanish` evt. so that we can do the clean job.\n  options.onVanish = () => {\n    // not sure if this causes mem leak, need proof to verify that.\n    // maybe calling out like 1000 msg-box then close them all.\n    render(null, container)\n    messageInstance.delete(vm) // Remove vm to avoid mem leak.\n    // here we were suppose to call document.body.removeChild(container.firstElementChild)\n    // but render(null, container) did that job for us. so that we do not call that directly\n  }\n\n  options.onAction = (action: Action) => {\n    const currentMsg = messageInstance.get(vm)!\n    let resolve: Action | { value: string; action: Action }\n    if (options.showInput) {\n      resolve = { value: vm.inputValue, action }\n    } else {\n      resolve = action\n    }\n    if (options.callback) {\n      options.callback(resolve, instance.proxy)\n    } else {\n      if (action === 'cancel' || action === 'close') {\n        if (options.distinguishCancelAndClose && action !== 'cancel') {\n          currentMsg.reject('close')\n        } else {\n          currentMsg.reject('cancel')\n        }\n      } else {\n        currentMsg.resolve(resolve)\n      }\n    }\n  }\n\n  const instance = initInstance(options, container, appContext)!\n\n  // This is how we use message box programmatically.\n  // Maybe consider releasing a template version?\n  // get component instance like v2.\n  const vm = instance.proxy as ComponentPublicInstance<\n    {\n      visible: boolean\n      doClose: () => void\n    } & MessageBoxState\n  >\n\n  for (const prop in options) {\n    if (hasOwn(options, prop) && !hasOwn(vm.$props, prop)) {\n      if (prop === 'closeIcon' && isObject(options[prop])) {\n        vm[prop as keyof ComponentPublicInstance] = markRaw(options[prop])\n      } else {\n        vm[prop as keyof ComponentPublicInstance] = options[prop]\n      }\n    }\n  }\n\n  // change visibility after everything is settled\n  vm.visible = true\n  return vm\n}\n\nasync function MessageBox(\n  options: ElMessageBoxOptions,\n  appContext?: AppContext | null\n): Promise<MessageBoxData>\nfunction MessageBox(\n  options: ElMessageBoxOptions | string | VNode,\n  appContext: AppContext | null = null\n): Promise<{ value: string; action: Action } | Action> {\n  if (!isClient) return Promise.reject()\n  let callback: Callback | undefined\n  if (isString(options) || isVNode(options)) {\n    options = {\n      message: options,\n    }\n  } else {\n    callback = options.callback\n  }\n\n  return new Promise((resolve, reject) => {\n    const vm = showMessage(\n      options,\n      appContext ?? (MessageBox as IElMessageBox)._context\n    )\n    // collect this vm in order to handle upcoming events.\n    messageInstance.set(vm, {\n      options,\n      callback,\n      resolve,\n      reject,\n    })\n  })\n}\n\nconst MESSAGE_BOX_VARIANTS = ['alert', 'confirm', 'prompt'] as const\nconst MESSAGE_BOX_DEFAULT_OPTS: Record<\n  (typeof MESSAGE_BOX_VARIANTS)[number],\n  Partial<ElMessageBoxOptions>\n> = {\n  alert: { closeOnPressEscape: false, closeOnClickModal: false },\n  confirm: { showCancelButton: true },\n  prompt: { showCancelButton: true, showInput: true },\n}\n\nMESSAGE_BOX_VARIANTS.forEach((boxType) => {\n  ;(MessageBox as IElMessageBox)[boxType] = messageBoxFactory(\n    boxType\n  ) as ElMessageBoxShortcutMethod\n})\n\nfunction messageBoxFactory(boxType: (typeof MESSAGE_BOX_VARIANTS)[number]) {\n  return (\n    message: string | VNode,\n    title: string | ElMessageBoxOptions,\n    options?: ElMessageBoxOptions,\n    appContext?: AppContext | null\n  ) => {\n    let titleOrOpts = ''\n    if (isObject(title)) {\n      options = title as ElMessageBoxOptions\n      titleOrOpts = ''\n    } else if (isUndefined(title)) {\n      titleOrOpts = ''\n    } else {\n      titleOrOpts = title as string\n    }\n\n    return MessageBox(\n      Object.assign(\n        {\n          title: titleOrOpts,\n          message,\n          type: '',\n          ...MESSAGE_BOX_DEFAULT_OPTS[boxType],\n        },\n        options,\n        {\n          boxType,\n        }\n      ),\n      appContext\n    )\n  }\n}\n\nMessageBox.close = () => {\n  // instance.setupInstall.doClose()\n  // instance.setupInstall.state.visible = false\n\n  messageInstance.forEach((_, vm) => {\n    vm.doClose()\n  })\n\n  messageInstance.clear()\n}\n;(MessageBox as IElMessageBox)._context = null\n\nexport default MessageBox as IElMessageBox\n","import MessageBox from './src/messageBox'\n\nimport type { App } from 'vue'\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nconst _MessageBox = MessageBox as SFCWithInstall<typeof MessageBox>\n\n_MessageBox.install = (app: App) => {\n  _MessageBox._context = app._context\n  app.config.globalProperties.$msgbox = _MessageBox\n  app.config.globalProperties.$messageBox = _MessageBox\n  app.config.globalProperties.$alert = _MessageBox.alert\n  app.config.globalProperties.$confirm = _MessageBox.confirm\n  app.config.globalProperties.$prompt = _MessageBox.prompt\n}\n\nexport default _MessageBox\nexport const ElMessageBox = _MessageBox\n\nexport * from './src/message-box.type'\n","import { Close } from 'pit-element-icons'\nimport {\n  buildProps,\n  definePropType,\n  iconPropType,\n} from '@pit-element-plus/utils'\n\nimport type { AppContext, ExtractPublicPropTypes, VNode } from 'vue'\nimport type { IconPropType } from '@pit-element-plus/utils'\nimport type Notification from './notification.vue'\n\nexport const notificationTypes = [\n  'primary',\n  'success',\n  'info',\n  'warning',\n  'error',\n] as const\n\nexport type NotificationType = (typeof notificationTypes)[number] | ''\n\nexport type NotificationPosition =\n  | 'top-right'\n  | 'top-left'\n  | 'bottom-right'\n  | 'bottom-left'\n\nexport interface NotificationProps {\n  /**\n   * @description custom class name for Notification\n   */\n  customClass?: string\n  /**\n   * @description whether `message` is treated as HTML string\n   */\n  dangerouslyUseHTMLString?: boolean\n  /**\n   * @description duration before close. It will not automatically close if set 0\n   */\n  duration?: number\n  /**\n   * @description custom icon component. It will be overridden by `type`\n   */\n  icon?: IconPropType\n  /**\n   * @description notification dom id\n   */\n  id?: string\n  /**\n   * @description description text\n   */\n  message?: string | VNode | (() => VNode)\n  /**\n   * @description offset from the top edge of the screen. Every Notification instance of the same moment should have the same offset\n   */\n  offset?: number\n  /**\n   * @description callback function when notification clicked\n   */\n  onClick?: () => void\n  /**\n   * @description callback function when closed\n   */\n  onClose: () => void\n  /**\n   * @description custom position\n   */\n  position?: NotificationPosition\n  /**\n   * @description whether to show a close button\n   */\n  showClose?: boolean\n  /**\n   * @description title\n   */\n  title?: string\n  /**\n   * @description notification type\n   */\n  type?: NotificationType\n  /**\n   * @description initial zIndex\n   */\n  zIndex?: number\n  /**\n   * @description custom close icon, default is Close\n   */\n  closeIcon?: IconPropType\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `NotificationProps` instead.\n */\nexport const notificationProps = buildProps({\n  /**\n   * @description custom class name for Notification\n   */\n  customClass: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description whether `message` is treated as HTML string\n   */\n  dangerouslyUseHTMLString: Boolean,\n  /**\n   * @description duration before close. It will not automatically close if set 0\n   */\n  duration: {\n    type: Number,\n    default: 4500,\n  },\n  /**\n   * @description custom icon component. It will be overridden by `type`\n   */\n  icon: {\n    type: iconPropType,\n  },\n  /**\n   * @description notification dom id\n   */\n  id: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description description text\n   */\n  message: {\n    type: definePropType<string | VNode | (() => VNode)>([\n      String,\n      Object,\n      Function,\n    ]),\n    default: '',\n  },\n  /**\n   * @description offset from the top edge of the screen. Every Notification instance of the same moment should have the same offset\n   */\n  offset: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description callback function when notification clicked\n   */\n  onClick: {\n    type: definePropType<() => void>(Function),\n    default: () => undefined,\n  },\n  /**\n   * @description callback function when closed\n   */\n  onClose: {\n    type: definePropType<() => void>(Function),\n    required: true,\n  },\n  /**\n   * @description custom position\n   */\n  position: {\n    type: String,\n    values: ['top-right', 'top-left', 'bottom-right', 'bottom-left'],\n    default: 'top-right',\n  },\n  /**\n   * @description whether to show a close button\n   */\n  showClose: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description title\n   */\n  title: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description notification type\n   */\n  type: {\n    type: String,\n    values: [...notificationTypes, ''],\n    default: '',\n  },\n  /**\n   * @description initial zIndex\n   */\n  zIndex: Number,\n  /**\n   * @description custom close icon, default is Close\n   */\n  closeIcon: {\n    type: iconPropType,\n    default: Close,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `NotificationProps` instead.\n */\nexport type NotificationPropsPublic = ExtractPublicPropTypes<\n  typeof notificationProps\n>\n\nexport const notificationEmits = {\n  destroy: () => true,\n}\nexport type NotificationEmits = typeof notificationEmits\n\nexport type NotificationInstance = InstanceType<typeof Notification> & unknown\n\nexport type NotificationOptions = Omit<NotificationProps, 'id' | 'onClose'> & {\n  /**\n   * @description set the root element for the notification, default to `document.body`\n   */\n  appendTo?: HTMLElement | string\n  /**\n   * @description callback function when closed\n   */\n  onClose?(vm: VNode): void\n}\nexport type NotificationOptionsTyped = Omit<NotificationOptions, 'type'>\n\nexport interface NotificationHandle {\n  close: () => void\n}\n\nexport type NotificationParams = Partial<NotificationOptions> | string | VNode\nexport type NotificationParamsTyped =\n  | Partial<NotificationOptionsTyped>\n  | string\n  | VNode\n\nexport interface NotifyFn {\n  (\n    options?: NotificationParams,\n    appContext?: null | AppContext\n  ): NotificationHandle\n  closeAll(): void\n  updateOffsets(position?: NotificationOptions['position']): void\n  _context: AppContext | null\n}\n\nexport type NotifyTypedFn = (\n  options?: NotificationParamsTyped,\n  appContext?: null | AppContext\n) => NotificationHandle\n\nexport interface Notify extends NotifyFn {\n  primary: NotifyTypedFn\n  success: NotifyTypedFn\n  warning: NotifyTypedFn\n  error: NotifyTypedFn\n  info: NotifyTypedFn\n}\n\nexport interface NotificationQueueItem {\n  vm: VNode\n}\n\nexport type NotificationQueue = NotificationQueueItem[]\n","<template>\n  <transition\n    :name=\"ns.b('fade')\"\n    @before-leave=\"onClose\"\n    @after-leave=\"$emit('destroy')\"\n  >\n    <div\n      v-show=\"visible\"\n      :id=\"id\"\n      :class=\"[ns.b(), customClass, horizontalClass]\"\n      :style=\"positionStyle\"\n      role=\"alert\"\n      @mouseenter=\"clearTimer\"\n      @mouseleave=\"startTimer\"\n      @click=\"onClick\"\n    >\n      <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n        <component :is=\"iconComponent\" />\n      </el-icon>\n      <div :class=\"ns.e('group')\">\n        <h2 :class=\"ns.e('title')\" v-text=\"title\" />\n        <div\n          v-show=\"message\"\n          :class=\"ns.e('content')\"\n          :style=\"!!title ? undefined : { margin: 0 }\"\n        >\n          <slot>\n            <p v-if=\"!dangerouslyUseHTMLString\">{{ message }}</p>\n            <!-- Caution here, message could've been compromised, never use user's input as message -->\n            <p v-else v-html=\"message\" />\n          </slot>\n        </div>\n        <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n          <component :is=\"closeIcon\" />\n        </el-icon>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, markRaw, onMounted, ref } from 'vue'\nimport { useEventListener, useTimeoutFn } from '@vueuse/core'\nimport { TypeComponentsMap, getEventCode } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useGlobalComponentSettings } from '@pit-element-plus/components/config-provider'\nimport { notificationEmits } from './notification'\nimport { Close } from 'pit-element-icons'\n\nimport type { CSSProperties } from 'vue'\nimport type { NotificationProps } from './notification'\n\ndefineOptions({\n  name: 'ElNotification',\n})\n\nconst props = withDefaults(defineProps<NotificationProps>(), {\n  customClass: '',\n  duration: 4500,\n  id: '',\n  message: '',\n  offset: 0,\n  onClick: () => undefined,\n  position: 'top-right',\n  showClose: true,\n  title: '',\n  type: '',\n  closeIcon: markRaw(Close),\n})\ndefineEmits(notificationEmits)\n\nconst { ns, zIndex } = useGlobalComponentSettings('notification')\nconst { nextZIndex, currentZIndex } = zIndex\n\nconst visible = ref(false)\nlet timer: (() => void) | undefined = undefined\n\nconst typeClass = computed(() => {\n  const type = props.type\n  return type && TypeComponentsMap[props.type] ? ns.m(type) : ''\n})\n\nconst iconComponent = computed(() => {\n  if (!props.type) return props.icon\n  return TypeComponentsMap[props.type] || props.icon\n})\n\nconst horizontalClass = computed(() =>\n  props.position.endsWith('right') ? 'right' : 'left'\n)\n\nconst verticalProperty = computed(() =>\n  props.position.startsWith('top') ? 'top' : 'bottom'\n)\n\nconst positionStyle = computed<CSSProperties>(() => {\n  return {\n    [verticalProperty.value]: `${props.offset}px`,\n    zIndex: props.zIndex ?? currentZIndex.value,\n  }\n})\n\nfunction startTimer() {\n  if (props.duration > 0) {\n    ;({ stop: timer } = useTimeoutFn(() => {\n      if (visible.value) close()\n    }, props.duration))\n  }\n}\n\nfunction clearTimer() {\n  timer?.()\n}\n\nfunction close() {\n  visible.value = false\n}\n\nfunction onKeydown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n\n  switch (code) {\n    case EVENT_CODE.delete:\n    case EVENT_CODE.backspace:\n      clearTimer() // press delete/backspace clear timer\n      break\n    case EVENT_CODE.esc:\n      // press esc to close the notification\n      if (visible.value) {\n        close()\n      }\n      break\n    default: // resume timer\n      startTimer()\n      break\n  }\n}\n\n// lifecycle\nonMounted(() => {\n  startTimer()\n  nextZIndex()\n  visible.value = true\n})\n\nuseEventListener(document, 'keydown', onKeydown)\n\ndefineExpose({\n  visible,\n  /** @description close notification */\n  close,\n})\n</script>\n","<template>\n  <transition\n    :name=\"ns.b('fade')\"\n    @before-leave=\"onClose\"\n    @after-leave=\"$emit('destroy')\"\n  >\n    <div\n      v-show=\"visible\"\n      :id=\"id\"\n      :class=\"[ns.b(), customClass, horizontalClass]\"\n      :style=\"positionStyle\"\n      role=\"alert\"\n      @mouseenter=\"clearTimer\"\n      @mouseleave=\"startTimer\"\n      @click=\"onClick\"\n    >\n      <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n        <component :is=\"iconComponent\" />\n      </el-icon>\n      <div :class=\"ns.e('group')\">\n        <h2 :class=\"ns.e('title')\" v-text=\"title\" />\n        <div\n          v-show=\"message\"\n          :class=\"ns.e('content')\"\n          :style=\"!!title ? undefined : { margin: 0 }\"\n        >\n          <slot>\n            <p v-if=\"!dangerouslyUseHTMLString\">{{ message }}</p>\n            <!-- Caution here, message could've been compromised, never use user's input as message -->\n            <p v-else v-html=\"message\" />\n          </slot>\n        </div>\n        <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n          <component :is=\"closeIcon\" />\n        </el-icon>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, markRaw, onMounted, ref } from 'vue'\nimport { useEventListener, useTimeoutFn } from '@vueuse/core'\nimport { TypeComponentsMap, getEventCode } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useGlobalComponentSettings } from '@pit-element-plus/components/config-provider'\nimport { notificationEmits } from './notification'\nimport { Close } from 'pit-element-icons'\n\nimport type { CSSProperties } from 'vue'\nimport type { NotificationProps } from './notification'\n\ndefineOptions({\n  name: 'ElNotification',\n})\n\nconst props = withDefaults(defineProps<NotificationProps>(), {\n  customClass: '',\n  duration: 4500,\n  id: '',\n  message: '',\n  offset: 0,\n  onClick: () => undefined,\n  position: 'top-right',\n  showClose: true,\n  title: '',\n  type: '',\n  closeIcon: markRaw(Close),\n})\ndefineEmits(notificationEmits)\n\nconst { ns, zIndex } = useGlobalComponentSettings('notification')\nconst { nextZIndex, currentZIndex } = zIndex\n\nconst visible = ref(false)\nlet timer: (() => void) | undefined = undefined\n\nconst typeClass = computed(() => {\n  const type = props.type\n  return type && TypeComponentsMap[props.type] ? ns.m(type) : ''\n})\n\nconst iconComponent = computed(() => {\n  if (!props.type) return props.icon\n  return TypeComponentsMap[props.type] || props.icon\n})\n\nconst horizontalClass = computed(() =>\n  props.position.endsWith('right') ? 'right' : 'left'\n)\n\nconst verticalProperty = computed(() =>\n  props.position.startsWith('top') ? 'top' : 'bottom'\n)\n\nconst positionStyle = computed<CSSProperties>(() => {\n  return {\n    [verticalProperty.value]: `${props.offset}px`,\n    zIndex: props.zIndex ?? currentZIndex.value,\n  }\n})\n\nfunction startTimer() {\n  if (props.duration > 0) {\n    ;({ stop: timer } = useTimeoutFn(() => {\n      if (visible.value) close()\n    }, props.duration))\n  }\n}\n\nfunction clearTimer() {\n  timer?.()\n}\n\nfunction close() {\n  visible.value = false\n}\n\nfunction onKeydown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n\n  switch (code) {\n    case EVENT_CODE.delete:\n    case EVENT_CODE.backspace:\n      clearTimer() // press delete/backspace clear timer\n      break\n    case EVENT_CODE.esc:\n      // press esc to close the notification\n      if (visible.value) {\n        close()\n      }\n      break\n    default: // resume timer\n      startTimer()\n      break\n  }\n}\n\n// lifecycle\nonMounted(() => {\n  startTimer()\n  nextZIndex()\n  visible.value = true\n})\n\nuseEventListener(document, 'keydown', onKeydown)\n\ndefineExpose({\n  visible,\n  /** @description close notification */\n  close,\n})\n</script>\n","<template>\n  <transition\n    :name=\"ns.b('fade')\"\n    @before-leave=\"onClose\"\n    @after-leave=\"$emit('destroy')\"\n  >\n    <div\n      v-show=\"visible\"\n      :id=\"id\"\n      :class=\"[ns.b(), customClass, horizontalClass]\"\n      :style=\"positionStyle\"\n      role=\"alert\"\n      @mouseenter=\"clearTimer\"\n      @mouseleave=\"startTimer\"\n      @click=\"onClick\"\n    >\n      <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n        <component :is=\"iconComponent\" />\n      </el-icon>\n      <div :class=\"ns.e('group')\">\n        <h2 :class=\"ns.e('title')\" v-text=\"title\" />\n        <div\n          v-show=\"message\"\n          :class=\"ns.e('content')\"\n          :style=\"!!title ? undefined : { margin: 0 }\"\n        >\n          <slot>\n            <p v-if=\"!dangerouslyUseHTMLString\">{{ message }}</p>\n            <!-- Caution here, message could've been compromised, never use user's input as message -->\n            <p v-else v-html=\"message\" />\n          </slot>\n        </div>\n        <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n          <component :is=\"closeIcon\" />\n        </el-icon>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, markRaw, onMounted, ref } from 'vue'\nimport { useEventListener, useTimeoutFn } from '@vueuse/core'\nimport { TypeComponentsMap, getEventCode } from '@pit-element-plus/utils'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { useGlobalComponentSettings } from '@pit-element-plus/components/config-provider'\nimport { notificationEmits } from './notification'\nimport { Close } from 'pit-element-icons'\n\nimport type { CSSProperties } from 'vue'\nimport type { NotificationProps } from './notification'\n\ndefineOptions({\n  name: 'ElNotification',\n})\n\nconst props = withDefaults(defineProps<NotificationProps>(), {\n  customClass: '',\n  duration: 4500,\n  id: '',\n  message: '',\n  offset: 0,\n  onClick: () => undefined,\n  position: 'top-right',\n  showClose: true,\n  title: '',\n  type: '',\n  closeIcon: markRaw(Close),\n})\ndefineEmits(notificationEmits)\n\nconst { ns, zIndex } = useGlobalComponentSettings('notification')\nconst { nextZIndex, currentZIndex } = zIndex\n\nconst visible = ref(false)\nlet timer: (() => void) | undefined = undefined\n\nconst typeClass = computed(() => {\n  const type = props.type\n  return type && TypeComponentsMap[props.type] ? ns.m(type) : ''\n})\n\nconst iconComponent = computed(() => {\n  if (!props.type) return props.icon\n  return TypeComponentsMap[props.type] || props.icon\n})\n\nconst horizontalClass = computed(() =>\n  props.position.endsWith('right') ? 'right' : 'left'\n)\n\nconst verticalProperty = computed(() =>\n  props.position.startsWith('top') ? 'top' : 'bottom'\n)\n\nconst positionStyle = computed<CSSProperties>(() => {\n  return {\n    [verticalProperty.value]: `${props.offset}px`,\n    zIndex: props.zIndex ?? currentZIndex.value,\n  }\n})\n\nfunction startTimer() {\n  if (props.duration > 0) {\n    ;({ stop: timer } = useTimeoutFn(() => {\n      if (visible.value) close()\n    }, props.duration))\n  }\n}\n\nfunction clearTimer() {\n  timer?.()\n}\n\nfunction close() {\n  visible.value = false\n}\n\nfunction onKeydown(event: KeyboardEvent) {\n  const code = getEventCode(event)\n\n  switch (code) {\n    case EVENT_CODE.delete:\n    case EVENT_CODE.backspace:\n      clearTimer() // press delete/backspace clear timer\n      break\n    case EVENT_CODE.esc:\n      // press esc to close the notification\n      if (visible.value) {\n        close()\n      }\n      break\n    default: // resume timer\n      startTimer()\n      break\n  }\n}\n\n// lifecycle\nonMounted(() => {\n  startTimer()\n  nextZIndex()\n  visible.value = true\n})\n\nuseEventListener(document, 'keydown', onKeydown)\n\ndefineExpose({\n  visible,\n  /** @description close notification */\n  close,\n})\n</script>\n","import { createVNode, isVNode, render } from 'vue'\nimport {\n  debugWarn,\n  isClient,\n  isElement,\n  isFunction,\n  isString,\n  isUndefined,\n} from '@pit-element-plus/utils'\nimport NotificationConstructor from './notification.vue'\nimport { notificationTypes } from './notification'\n\nimport type { Ref, VNode } from 'vue'\nimport type {\n  NotificationPosition,\n  NotificationProps,\n  NotificationQueue,\n  Notify,\n  NotifyFn,\n} from './notification'\n\n// This should be a queue but considering there were `non-autoclosable` notifications.\nconst notifications: Record<NotificationPosition, NotificationQueue> = {\n  'top-left': [],\n  'top-right': [],\n  'bottom-left': [],\n  'bottom-right': [],\n}\n\n// the gap size between each notification\nconst GAP_SIZE = 16\nlet seed = 1\n\nconst notify: NotifyFn & Partial<Notify> = function (options = {}, context) {\n  if (!isClient) return { close: () => undefined }\n\n  if (isString(options) || isVNode(options)) {\n    options = { message: options }\n  }\n\n  const position = options.position || 'top-right'\n\n  let verticalOffset = options.offset || 0\n  notifications[position].forEach(({ vm }) => {\n    verticalOffset += (vm.el?.offsetHeight || 0) + GAP_SIZE\n  })\n  verticalOffset += GAP_SIZE\n\n  const id = `notification_${seed++}`\n  const userOnClose = options.onClose\n  const props: Partial<NotificationProps> = {\n    ...options,\n    offset: verticalOffset,\n    id,\n    onClose: () => {\n      close(id, position, userOnClose)\n    },\n  }\n\n  let appendTo: HTMLElement | null = document.body\n  if (isElement(options.appendTo)) {\n    appendTo = options.appendTo\n  } else if (isString(options.appendTo)) {\n    appendTo = document.querySelector(options.appendTo)\n  }\n\n  // should fallback to default value with a warning\n  if (!isElement(appendTo)) {\n    debugWarn(\n      'ElNotification',\n      'the appendTo option is not an HTMLElement. Falling back to document.body.'\n    )\n    appendTo = document.body\n  }\n\n  const container = document.createElement('div')\n\n  const vm = createVNode(\n    NotificationConstructor,\n    props,\n    isFunction(props.message)\n      ? props.message\n      : isVNode(props.message)\n        ? () => props.message\n        : null\n  )\n  vm.appContext = isUndefined(context) ? notify._context : context\n\n  // clean notification element preventing mem leak\n  vm.props!.onDestroy = () => {\n    render(null, container)\n  }\n\n  // instances will remove this item when close function gets called. So we do not need to worry about it.\n  render(vm, container)\n  notifications[position].push({ vm })\n  appendTo.appendChild(container.firstElementChild!)\n\n  return {\n    // instead of calling the onClose function directly, setting this value so that we can have the full lifecycle\n    // for out component, so that all closing steps will not be skipped.\n    close: () => {\n      ;(vm.component!.exposed as { visible: Ref<boolean> }).visible.value =\n        false\n    },\n  }\n}\nnotificationTypes.forEach((type) => {\n  notify[type] = (options = {}, appContext) => {\n    if (isString(options) || isVNode(options)) {\n      options = {\n        message: options,\n      }\n    }\n    return notify({ ...options, type }, appContext)\n  }\n})\n\n/**\n * This function gets called when user click `x` button or press `esc` or the time reached its limitation.\n * Emitted by transition@before-leave event so that we can fetch the current notification.offsetHeight, if this was called\n * by @after-leave the DOM element will be removed from the page thus we can no longer fetch the offsetHeight.\n * @param {String} id notification id to be closed\n * @param {Position} position the positioning strategy\n * @param {Function} userOnClose the callback called when close passed by user\n */\nexport function close(\n  id: string,\n  position: NotificationPosition,\n  userOnClose?: (vm: VNode) => void\n): void {\n  // maybe we can store the index when inserting the vm to notification list.\n  const orientedNotifications = notifications[position]\n  const idx = orientedNotifications.findIndex(\n    ({ vm }) => vm.component?.props.id === id\n  )\n  if (idx === -1) return\n  const { vm } = orientedNotifications[idx]\n  if (!vm) return\n  // calling user's on close function before notification gets removed from DOM.\n  userOnClose?.(vm)\n\n  // note that this is called @before-leave, that's why we were able to fetch this property.\n  const removedHeight = vm.el!.offsetHeight\n  const verticalPos = position.split('-')[0]\n  orientedNotifications.splice(idx, 1)\n  const len = orientedNotifications.length\n  if (len < 1) return\n  // starting from the removing item.\n  for (let i = idx; i < len; i++) {\n    // new position equals the current offsetTop minus removed height plus 16px(the gap size between each item)\n    const { el, component } = orientedNotifications[i].vm\n    const pos =\n      Number.parseInt(el!.style[verticalPos], 10) - removedHeight - GAP_SIZE\n    component!.props.offset = pos\n  }\n}\n\nexport function closeAll(): void {\n  // loop through all directions, close them at once.\n  for (const orientedNotifications of Object.values(notifications)) {\n    orientedNotifications.forEach(({ vm }) => {\n      // same as the previous close method, we'd like to make sure lifecycle gets handle properly.\n      ;(vm.component!.exposed as { visible: Ref<boolean> }).visible.value =\n        false\n    })\n  }\n}\n\nexport function updateOffsets(position: NotificationPosition = 'top-right') {\n  let verticalOffset =\n    notifications[position][0]?.vm.component?.props?.offset || 0\n\n  for (const { vm } of notifications[position]) {\n    vm.component!.props.offset = verticalOffset\n    verticalOffset += (vm.el?.offsetHeight || 0) + GAP_SIZE\n  }\n}\n\nnotify.closeAll = closeAll\nnotify.updateOffsets = updateOffsets\nnotify._context = null\n\nexport default notify as Notify\n","import { withInstallFunction } from '@pit-element-plus/utils'\nimport Notify from './src/notify'\n\nexport const ElNotification = withInstallFunction(Notify, '$notify')\nexport default ElNotification\n\nexport * from './src/notification'\n","import { buildProps, isBoolean } from '@pit-element-plus/utils'\nimport {\n  useTooltipContentProps,\n  useTooltipTriggerProps,\n} from '@pit-element-plus/components/tooltip'\nimport { dropdownProps } from '@pit-element-plus/components/dropdown'\nimport { EVENT_CODE } from '@pit-element-plus/constants'\n\nimport type { ExtractPublicPropTypes, PropType } from 'vue'\nimport type Popover from './popover.vue'\nimport type { Placement } from '@pit-element-plus/components/popper'\nimport type { Options } from '@popperjs/core'\nimport type {\n  ElTooltipContentProps,\n  UseTooltipTriggerProps,\n} from '@pit-element-plus/components/tooltip'\n\nexport interface PopoverProps {\n  /**\n   * @description how the popover is triggered, not valid in controlled mode\n   */\n  trigger?: UseTooltipTriggerProps['trigger']\n  /**\n   * @description When you click the mouse to focus on the trigger element, you can define a set of keyboard codes to control the display of popover through the keyboard, not valid in controlled mode\n   */\n  triggerKeys?: UseTooltipTriggerProps['triggerKeys']\n  /**\n   * @description popover placement\n   */\n  placement?: Placement\n  /**\n   * @description whether Popover is disabled\n   */\n  disabled?: UseTooltipTriggerProps['disabled']\n  /**\n   * @description whether popover is visible\n   */\n  visible?: ElTooltipContentProps['visible']\n  /**\n   * @description popover transition animation\n   */\n  transition?: ElTooltipContentProps['transition']\n  /**\n   * @description parameters for [popper.js](https://popper.js.org/docs/v2/)\n   */\n  popperOptions?: Partial<Options>\n  /**\n   * @description [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of Popover\n   */\n  tabindex?: string | number\n  /**\n   * @description popover content, can be replaced with a default `slot`\n   */\n  content?: ElTooltipContentProps['content']\n  /**\n   * @description custom style for popover\n   */\n  popperStyle?: ElTooltipContentProps['popperStyle']\n  /**\n   * @description custom class name for popover\n   */\n  popperClass?: ElTooltipContentProps['popperClass']\n  /**\n   * @description whether the mouse can enter the popover\n   */\n  enterable?: ElTooltipContentProps['enterable']\n  /**\n   * @description Tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect?: ElTooltipContentProps['effect']\n  /**\n   * @description whether popover dropdown is teleported to the body\n   */\n  teleported?: ElTooltipContentProps['teleported']\n  /**\n   * @description which select dropdown appends to\n   */\n  appendTo?: ElTooltipContentProps['appendTo']\n  /**\n   * @description popover title\n   */\n  title?: string\n  /**\n   * @description popover width\n   */\n  width?: string | number\n  /**\n   * @description popover offset\n   */\n  offset?: number\n  /**\n   * @description delay of appearance, in millisecond, not valid in controlled mode\n   */\n  showAfter?: number\n  /**\n   * @description delay of disappear, in millisecond, not valid in controlled mode\n   */\n  hideAfter?: number\n  /**\n   * @description timeout in milliseconds to hide tooltip, not valid in controlled mode\n   */\n  autoClose?: number\n  /**\n   * @description whether a tooltip arrow is displayed or not. For more info, please refer to [ElPopper](https://github.com/element-plus/element-plus/tree/dev/packages/components/popper)\n   */\n  showArrow?: boolean\n  /**\n   * @description when popover inactive and `persistent` is `false` , popover will be destroyed\n   */\n  persistent?: boolean\n  /**\n   * @description update:visible event handler\n   */\n  'onUpdate:visible'?: (visible: boolean) => void\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopoverProps` instead.\n */\nexport const popoverProps = buildProps({\n  /**\n   * @description how the popover is triggered, not valid in controlled mode\n   */\n  trigger: useTooltipTriggerProps.trigger,\n  /**\n   * @description When you click the mouse to focus on the trigger element, you can define a set of keyboard codes to control the display of popover through the keyboard, not valid in controlled mode\n   */\n  triggerKeys: useTooltipTriggerProps.triggerKeys,\n  /**\n   * @description popover placement\n   */\n  placement: dropdownProps.placement,\n  /**\n   * @description whether Popover is disabled\n   */\n  disabled: useTooltipTriggerProps.disabled,\n  /**\n   * @description whether popover is visible\n   */\n  visible: useTooltipContentProps.visible,\n  /**\n   * @description popover transition animation\n   */\n  transition: useTooltipContentProps.transition,\n  /**\n   * @description parameters for [popper.js](https://popper.js.org/docs/v2/)\n   */\n  popperOptions: dropdownProps.popperOptions,\n  /**\n   * @description [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of Popover\n   */\n  tabindex: dropdownProps.tabindex,\n  /**\n   * @description popover content, can be replaced with a default `slot`\n   */\n  content: useTooltipContentProps.content,\n  /**\n   * @description custom style for popover\n   */\n  popperStyle: useTooltipContentProps.popperStyle,\n  /**\n   * @description custom class name for popover\n   */\n  popperClass: useTooltipContentProps.popperClass,\n  enterable: {\n    ...useTooltipContentProps.enterable,\n    default: true,\n  },\n  /**\n   * @description Tooltip theme, built-in theme: `dark` / `light`\n   */\n  effect: {\n    ...useTooltipContentProps.effect,\n    default: 'light',\n  },\n  /**\n   * @description whether popover dropdown is teleported to the body\n   */\n  teleported: useTooltipContentProps.teleported,\n  /**\n   * @description which select dropdown appends to\n   */\n  appendTo: useTooltipContentProps.appendTo,\n  /**\n   * @description popover title\n   */\n  title: String,\n  /**\n   * @description popover width\n   */\n  width: {\n    type: [String, Number],\n    default: 150,\n  },\n  /**\n   * @description popover offset\n   */\n  offset: {\n    type: Number,\n    default: undefined,\n  },\n  /**\n   * @description delay of appearance, in millisecond, not valid in controlled mode\n   */\n  showAfter: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description delay of disappear, in millisecond, not valid in controlled mode\n   */\n  hideAfter: {\n    type: Number,\n    default: 200,\n  },\n  /**\n   * @description timeout in milliseconds to hide tooltip, not valid in controlled mode\n   */\n  autoClose: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description whether a tooltip arrow is displayed or not. For more info, please refer to [ElPopper](https://github.com/element-plus/element-plus/tree/dev/packages/components/popper)\n   */\n  showArrow: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description when popover inactive and `persistent` is `false` , popover will be destroyed\n   */\n  persistent: {\n    type: Boolean,\n    default: true,\n  },\n  'onUpdate:visible': {\n    type: Function as PropType<(visible: boolean) => void>,\n  },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `PopoverProps` instead.\n */\nexport type PopoverPropsPublic = ExtractPublicPropTypes<typeof popoverProps>\n\nexport const popoverEmits = {\n  'update:visible': (value: boolean) => isBoolean(value),\n  'before-enter': () => true,\n  'before-leave': () => true,\n  'after-enter': () => true,\n  'after-leave': () => true,\n}\nexport type PopoverEmits = typeof popoverEmits\n\nexport type PopoverInstance = InstanceType<typeof Popover> & unknown\n\n/**\n * @description default values for PopoverProps\n */\nexport const popoverPropsDefaults = {\n  trigger: 'hover',\n  triggerKeys: () => [\n    EVENT_CODE.enter,\n    EVENT_CODE.numpadEnter,\n    EVENT_CODE.space,\n  ],\n  placement: 'bottom',\n  visible: null,\n  popperOptions: () => ({}),\n  tabindex: 0,\n  content: '',\n  popperStyle: undefined,\n  enterable: true,\n  effect: 'light',\n  teleported: true,\n  width: 150,\n  offset: undefined,\n  showAfter: 0,\n  hideAfter: 200,\n  autoClose: 0,\n  showArrow: true,\n  persistent: true,\n} as const\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    v-bind=\"$attrs\"\n    :trigger=\"trigger\"\n    :trigger-keys=\"triggerKeys\"\n    :placement=\"placement\"\n    :disabled=\"disabled\"\n    :visible=\"visible\"\n    :transition=\"transition\"\n    :popper-options=\"popperOptions\"\n    :tabindex=\"tabindex\"\n    :content=\"content\"\n    :offset=\"offset\"\n    :show-after=\"showAfter\"\n    :hide-after=\"hideAfter\"\n    :auto-close=\"autoClose\"\n    :show-arrow=\"showArrow\"\n    :aria-label=\"title\"\n    :effect=\"effect\"\n    :enterable=\"enterable\"\n    :popper-class=\"kls\"\n    :popper-style=\"style\"\n    :teleported=\"teleported\"\n    :append-to=\"appendTo\"\n    :persistent=\"persistent\"\n    :gpu-acceleration=\"gpuAcceleration\"\n    @update:visible=\"onUpdateVisible\"\n    @before-show=\"beforeEnter\"\n    @before-hide=\"beforeLeave\"\n    @show=\"afterEnter\"\n    @hide=\"afterLeave\"\n  >\n    <template v-if=\"$slots.reference\">\n      <slot name=\"reference\" />\n    </template>\n\n    <template #content>\n      <div v-if=\"title\" :class=\"ns.e('title')\" role=\"title\">\n        {{ title }}\n      </div>\n      <slot :hide=\"hide\">\n        {{ content }}\n      </slot>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, unref } from 'vue'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { popoverEmits, popoverPropsDefaults } from './popover'\n\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { PopoverProps } from './popover'\n\ndefineOptions({\n  name: 'ElPopover',\n})\n\nconst props = withDefaults(defineProps<PopoverProps>(), popoverPropsDefaults)\nconst emit = defineEmits(popoverEmits)\n\nconst updateEventKeyRaw = `onUpdate:visible` as const\n\nconst onUpdateVisible = computed(() => {\n  return props[updateEventKeyRaw]\n})\n\nconst ns = useNamespace('popover')\nconst tooltipRef = ref<TooltipInstance>()\nconst popperRef = computed(() => {\n  return unref(tooltipRef)?.popperRef\n})\n\nconst style = computed(() => {\n  return [\n    {\n      width: addUnit(props.width),\n    },\n    props.popperStyle!,\n  ]\n})\n\nconst kls = computed(() => {\n  return [ns.b(), props.popperClass!, { [ns.m('plain')]: !!props.content }]\n})\n\nconst gpuAcceleration = computed(() => {\n  return props.transition === `${ns.namespace.value}-fade-in-linear`\n})\n\nconst hide = () => {\n  tooltipRef.value?.hide()\n}\n\nconst beforeEnter = () => {\n  emit('before-enter')\n}\nconst beforeLeave = () => {\n  emit('before-leave')\n}\n\nconst afterEnter = () => {\n  emit('after-enter')\n}\n\nconst afterLeave = () => {\n  emit('update:visible', false)\n  emit('after-leave')\n}\n\ndefineExpose({\n  /** @description popper ref */\n  popperRef,\n  /** @description hide popover */\n  hide,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    v-bind=\"$attrs\"\n    :trigger=\"trigger\"\n    :trigger-keys=\"triggerKeys\"\n    :placement=\"placement\"\n    :disabled=\"disabled\"\n    :visible=\"visible\"\n    :transition=\"transition\"\n    :popper-options=\"popperOptions\"\n    :tabindex=\"tabindex\"\n    :content=\"content\"\n    :offset=\"offset\"\n    :show-after=\"showAfter\"\n    :hide-after=\"hideAfter\"\n    :auto-close=\"autoClose\"\n    :show-arrow=\"showArrow\"\n    :aria-label=\"title\"\n    :effect=\"effect\"\n    :enterable=\"enterable\"\n    :popper-class=\"kls\"\n    :popper-style=\"style\"\n    :teleported=\"teleported\"\n    :append-to=\"appendTo\"\n    :persistent=\"persistent\"\n    :gpu-acceleration=\"gpuAcceleration\"\n    @update:visible=\"onUpdateVisible\"\n    @before-show=\"beforeEnter\"\n    @before-hide=\"beforeLeave\"\n    @show=\"afterEnter\"\n    @hide=\"afterLeave\"\n  >\n    <template v-if=\"$slots.reference\">\n      <slot name=\"reference\" />\n    </template>\n\n    <template #content>\n      <div v-if=\"title\" :class=\"ns.e('title')\" role=\"title\">\n        {{ title }}\n      </div>\n      <slot :hide=\"hide\">\n        {{ content }}\n      </slot>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, unref } from 'vue'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { popoverEmits, popoverPropsDefaults } from './popover'\n\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { PopoverProps } from './popover'\n\ndefineOptions({\n  name: 'ElPopover',\n})\n\nconst props = withDefaults(defineProps<PopoverProps>(), popoverPropsDefaults)\nconst emit = defineEmits(popoverEmits)\n\nconst updateEventKeyRaw = `onUpdate:visible` as const\n\nconst onUpdateVisible = computed(() => {\n  return props[updateEventKeyRaw]\n})\n\nconst ns = useNamespace('popover')\nconst tooltipRef = ref<TooltipInstance>()\nconst popperRef = computed(() => {\n  return unref(tooltipRef)?.popperRef\n})\n\nconst style = computed(() => {\n  return [\n    {\n      width: addUnit(props.width),\n    },\n    props.popperStyle!,\n  ]\n})\n\nconst kls = computed(() => {\n  return [ns.b(), props.popperClass!, { [ns.m('plain')]: !!props.content }]\n})\n\nconst gpuAcceleration = computed(() => {\n  return props.transition === `${ns.namespace.value}-fade-in-linear`\n})\n\nconst hide = () => {\n  tooltipRef.value?.hide()\n}\n\nconst beforeEnter = () => {\n  emit('before-enter')\n}\nconst beforeLeave = () => {\n  emit('before-leave')\n}\n\nconst afterEnter = () => {\n  emit('after-enter')\n}\n\nconst afterLeave = () => {\n  emit('update:visible', false)\n  emit('after-leave')\n}\n\ndefineExpose({\n  /** @description popper ref */\n  popperRef,\n  /** @description hide popover */\n  hide,\n})\n</script>\n","<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    v-bind=\"$attrs\"\n    :trigger=\"trigger\"\n    :trigger-keys=\"triggerKeys\"\n    :placement=\"placement\"\n    :disabled=\"disabled\"\n    :visible=\"visible\"\n    :transition=\"transition\"\n    :popper-options=\"popperOptions\"\n    :tabindex=\"tabindex\"\n    :content=\"content\"\n    :offset=\"offset\"\n    :show-after=\"showAfter\"\n    :hide-after=\"hideAfter\"\n    :auto-close=\"autoClose\"\n    :show-arrow=\"showArrow\"\n    :aria-label=\"title\"\n    :effect=\"effect\"\n    :enterable=\"enterable\"\n    :popper-class=\"kls\"\n    :popper-style=\"style\"\n    :teleported=\"teleported\"\n    :append-to=\"appendTo\"\n    :persistent=\"persistent\"\n    :gpu-acceleration=\"gpuAcceleration\"\n    @update:visible=\"onUpdateVisible\"\n    @before-show=\"beforeEnter\"\n    @before-hide=\"beforeLeave\"\n    @show=\"afterEnter\"\n    @hide=\"afterLeave\"\n  >\n    <template v-if=\"$slots.reference\">\n      <slot name=\"reference\" />\n    </template>\n\n    <template #content>\n      <div v-if=\"title\" :class=\"ns.e('title')\" role=\"title\">\n        {{ title }}\n      </div>\n      <slot :hide=\"hide\">\n        {{ content }}\n      </slot>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, unref } from 'vue'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { addUnit } from '@pit-element-plus/utils'\nimport { useNamespace } from '@pit-element-plus/hooks'\nimport { popoverEmits, popoverPropsDefaults } from './popover'\n\nimport type { TooltipInstance } from '@pit-element-plus/components/tooltip'\nimport type { PopoverProps } from './popover'\n\ndefineOptions({\n  name: 'ElPopover',\n})\n\nconst props = withDefaults(defineProps<PopoverProps>(), popoverPropsDefaults)\nconst emit = defineEmits(popoverEmits)\n\nconst updateEventKeyRaw = `onUpdate:visible` as const\n\nconst onUpdateVisible = computed(() => {\n  return props[updateEventKeyRaw]\n})\n\nconst ns = useNamespace('popover')\nconst tooltipRef = ref<TooltipInstance>()\nconst popperRef = computed(() => {\n  return unref(tooltipRef)?.popperRef\n})\n\nconst style = computed(() => {\n  return [\n    {\n      width: addUnit(props.width),\n    },\n    props.popperStyle!,\n  ]\n})\n\nconst kls = computed(() => {\n  return [ns.b(), props.popperClass!, { [ns.m('plain')]: !!props.content }]\n})\n\nconst gpuAcceleration = computed(() => {\n  return props.transition === `${ns.namespace.value}-fade-in-linear`\n})\n\nconst hide = () => {\n  tooltipRef.value?.hide()\n}\n\nconst beforeEnter = () => {\n  emit('before-enter')\n}\nconst beforeLeave = () => {\n  emit('before-leave')\n}\n\nconst afterEnter = () => {\n  emit('after-enter')\n}\n\nconst afterLeave = () => {\n  emit('update:visible', false)\n  emit('after-leave')\n}\n\ndefineExpose({\n  /** @description popper ref */\n  popperRef,\n  /** @description hide popover */\n  hide,\n})\n</script>\n","import type { DirectiveBinding, ObjectDirective } from 'vue'\nimport type { PopoverInstance } from './popover'\n\nconst attachEvents = (el: HTMLElement, binding: DirectiveBinding) => {\n  const popperComponent: PopoverInstance = binding.arg || binding.value\n  const popover = popperComponent?.popperRef\n  if (popover) {\n    popover.triggerRef = el\n  }\n}\n\nexport default {\n  mounted(el, binding) {\n    attachEvents(el, binding)\n  },\n  updated(el, binding) {\n    attachEvents(el, binding)\n  },\n} as ObjectDirective\n\nexport const VPopover = 'popover'\n","import { withInstall, withInstallDirective } from '@pit-element-plus/utils'\nimport Popover from './src/popover.vue'\nimport PopoverDirective, { VPopover } from './src/directive'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElPopoverDirective: SFCWithInstall<typeof PopoverDirective> =\n  withInstallDirective(PopoverDirective, VPopover)\n\nexport const ElPopover: SFCWithInstall<typeof Popover> & {\n  directive: typeof ElPopoverDirective\n} = withInstall(Popover, {\n  directive: ElPopoverDirective,\n})\nexport default ElPopover\n\nexport * from './src/popover'\n","import { ElMessage, ElMessageBox } from '@pit-element-plus/components'\nimport type { MessageType } from '@pit-element-plus/components'\n\nexport function useMessageBox(msg = '是否删除已选中数据？') {\n  return new Promise<void>((resolve, rejects) => {\n    ElMessageBox.confirm(msg, '提示', {\n      confirmButtonText: '确认',\n      cancelButtonText: '取消',\n      type: 'warning',\n      closeOnClickModal: false,\n    })\n      .then(() => resolve())\n      .catch(() => rejects())\n  })\n}\n\nexport function useMessage(\n  message = '系统错误，请联系管理员',\n  type: MessageType = 'success'\n) {\n  return new Promise<void>((resolve) => {\n    ElMessage({\n      type,\n      message: message ? message : '系统错误，请联系管理员',\n      onClose: () => resolve(),\n    })\n  })\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { ref } from 'vue'\n\nexport function useComponeRef<T extends abstract new (...args: any) => any>(\n  _comp: T\n) {\n  return ref<InstanceType<T>>()\n}\n","import { reactive } from 'vue'\nimport type { FormBaseColumns, FormRules } from '@pit-element-plus/components'\n\nexport type UseFormBaseState<T, K> = {\n  formInline?: T\n  addForm?: K\n  columns?: FormBaseColumns\n  // @ts-ignore\n  rules?: FormRules<K>\n}\n\nexport function useFormBaseState<\n  T extends Record<string, any>,\n  Form extends Record<string, any>,\n>({\n  formInline,\n  addForm,\n  columns,\n  rules,\n}: UseFormBaseState<T, Form>): UseFormBaseState<T, Form> {\n  const state: UseFormBaseState<T, Form> = {\n    // @ts-ignore\n    formInline: reactive(formInline),\n    // @ts-ignore\n    addForm: reactive(addForm),\n    // @ts-ignore\n    columns: reactive(columns),\n    // @ts-ignore\n    rules: reactive<FormRules<Form>>(rules),\n  }\n  return state\n}\n","import type { ConfigProviderProps } from './config-provider-props'\nimport type { InjectionKey, Ref } from 'vue'\n\nexport type ConfigProviderContext = Partial<ConfigProviderProps>\n\nexport const configProviderContextKey: InjectionKey<\n  Ref<ConfigProviderContext>\n> = Symbol()\n","import { computed, getCurrentInstance, inject, provide, ref, unref } from 'vue'\nimport { debugWarn, keysOf } from '@pit-element-plus/utils'\nimport {\n  SIZE_INJECTION_KEY,\n  defaultInitialZIndex,\n  defaultNamespace,\n  emptyValuesContextKey,\n  localeContextKey,\n  namespaceContextKey,\n  useLocale,\n  useNamespace,\n  useZIndex,\n  zIndexContextKey,\n} from '@pit-element-plus/hooks'\nimport { configProviderContextKey } from '../constants'\n\nimport type { MaybeRef } from '@vueuse/core'\nimport type { App, Ref } from 'vue'\nimport type { ConfigProviderContext } from '../constants'\n\n// this is meant to fix global methods like `ElMessage(opts)`, this way we can inject current locale\n// into the component as default injection value.\n// refer to: https://github.com/element-plus/element-plus/issues/2610#issuecomment-887965266\nconst globalConfig = ref<ConfigProviderContext>()\n\nexport function useGlobalConfig<\n  K extends keyof ConfigProviderContext,\n  D extends ConfigProviderContext[K],\n>(\n  key: K,\n  defaultValue?: D\n): Ref<Exclude<ConfigProviderContext[K], undefined> | D>\nexport function useGlobalConfig(): Ref<ConfigProviderContext>\nexport function useGlobalConfig(\n  key?: keyof ConfigProviderContext,\n  defaultValue = undefined\n) {\n  const config = getCurrentInstance()\n    ? inject(configProviderContextKey, globalConfig)\n    : globalConfig\n  if (key) {\n    return computed(() => config.value?.[key] ?? defaultValue)\n  } else {\n    return config\n  }\n}\n\n// for components like `ElMessage` `ElNotification` `ElMessageBox`.\nexport function useGlobalComponentSettings(\n  block: string,\n  sizeFallback?: MaybeRef<ConfigProviderContext['size']>\n) {\n  const config = useGlobalConfig()\n\n  const ns = useNamespace(\n    block,\n    computed(() => config.value?.namespace || defaultNamespace)\n  )\n\n  const locale = useLocale(computed(() => config.value?.locale))\n  const zIndex = useZIndex(\n    computed(() => config.value?.zIndex || defaultInitialZIndex)\n  )\n  const size = computed(() => unref(sizeFallback) || config.value?.size || '')\n  provideGlobalConfig(computed(() => unref(config) || {}))\n\n  return {\n    ns,\n    locale,\n    zIndex,\n    size,\n  }\n}\n\nexport const provideGlobalConfig = (\n  config: MaybeRef<ConfigProviderContext>,\n  app?: App,\n  global = false\n) => {\n  const inSetup = !!getCurrentInstance()\n  const oldConfig = inSetup ? useGlobalConfig() : undefined\n\n  const provideFn = app?.provide ?? (inSetup ? provide : undefined)\n  if (!provideFn) {\n    debugWarn(\n      'provideGlobalConfig',\n      'provideGlobalConfig() can only be used inside setup().'\n    )\n    return\n  }\n\n  const context = computed(() => {\n    const cfg = unref(config)\n    if (!oldConfig?.value) return cfg\n    return mergeConfig(oldConfig.value, cfg)\n  })\n  provideFn(configProviderContextKey, context)\n  provideFn(\n    localeContextKey,\n    computed(() => context.value.locale)\n  )\n  provideFn(\n    namespaceContextKey,\n    computed(() => context.value.namespace)\n  )\n  provideFn(\n    zIndexContextKey,\n    computed(() => context.value.zIndex)\n  )\n\n  provideFn(SIZE_INJECTION_KEY, {\n    size: computed(() => context.value.size || ''),\n  })\n\n  provideFn(\n    emptyValuesContextKey,\n    computed(() => ({\n      emptyValues: context.value.emptyValues,\n      valueOnClear: context.value.valueOnClear,\n    }))\n  )\n\n  if (global || !globalConfig.value) {\n    globalConfig.value = context.value\n  }\n  return context\n}\n\nconst mergeConfig = (\n  a: ConfigProviderContext,\n  b: ConfigProviderContext\n): ConfigProviderContext => {\n  const keys = [...new Set([...keysOf(a), ...keysOf(b)])]\n  const obj: Record<string, any> = {}\n  for (const key of keys) {\n    obj[key] = b[key] !== undefined ? b[key] : a[key]\n  }\n  return obj\n}\n","import { buildProps, definePropType } from '@pit-element-plus/utils'\nimport { useEmptyValuesProps, useSizeProp } from '@pit-element-plus/hooks'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { Language } from '@pit-element-plus/locale'\nimport {\n  ButtonConfigContext,\n  buttonTypes,\n} from '@pit-element-plus/components/button'\nimport type { CardConfigContext } from '@pit-element-plus/components/card'\nimport type { DialogConfigContext } from '@pit-element-plus/components/dialog'\nimport type { MessageConfigContext } from '@pit-element-plus/components/message'\nimport type { LinkConfigContext } from '@pit-element-plus/components/link'\nimport type { TableConfigContext } from '@pit-element-plus/components/table'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type ExperimentalFeatures = {\n  // TO BE Defined\n}\n\nexport const buttonAreaTypes = ['default', 'search', ''] as const\n\nexport const configProviderProps = buildProps({\n  /**\n   * @description Controlling if the users want a11y features\n   */\n  a11y: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description Locale Object\n   */\n  locale: {\n    type: definePropType<Language>(Object),\n  },\n  /**\n   * @description global component size\n   */\n  size: useSizeProp,\n  /**\n   * @description button related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#button-attribute)\n   */\n  button: {\n    type: definePropType<ButtonConfigContext>(Object),\n  },\n  /**\n   * @description card related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#card-attribute)\n   */\n  card: {\n    type: definePropType<CardConfigContext>(Object),\n  },\n  /**\n   * @description dialog related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#dialog-attribute)\n   */\n  dialog: {\n    type: definePropType<DialogConfigContext>(Object),\n  },\n  /**\n   * @description link related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#link-attribute)\n   */\n  link: {\n    type: definePropType<LinkConfigContext>(Object),\n  },\n  /**\n   * @description features at experimental stage to be added, all features are default to be set to false, [see the following table](https://element-plus.org/en-US/component/config-provider.html#experimental-features)                                                                            | ^[object]\n   */\n  experimentalFeatures: {\n    type: definePropType<ExperimentalFeatures>(Object),\n  },\n  /**\n   * @description Controls if we should handle keyboard navigation\n   */\n  keyboardNavigation: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description message related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#message-attribute)\n   */\n  message: {\n    type: definePropType<MessageConfigContext>(Object),\n  },\n  /**\n   * @description global Initial zIndex\n   */\n  zIndex: Number,\n  /**\n   * @description global component className prefix (cooperated with [$namespace](https://github.com/element-plus/element-plus/blob/dev/packages/theme-chalk/src/mixins/config.scss#L1)) | ^[string]\n   */\n  namespace: {\n    type: String,\n    default: 'el',\n  },\n  /**\n   * @description table related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#table-attribute)\n   */\n  table: {\n    type: definePropType<TableConfigContext>(Object),\n  },\n  pageSize: {\n    type: Number,\n    default: 20,\n  },\n  pageNum: {\n    type: Number,\n    default: 1,\n  },\n  tableHeadBackground: {\n    type: String,\n    default: '#F5F7FA',\n  },\n  isHiddenAddBtn: {\n    type: String,\n    default: 'show',\n  },\n  isHiddenEditBtn: {\n    type: String,\n    default: 'show',\n  },\n  isHiddenDelBtn: {\n    type: String,\n    default: 'show',\n  },\n  isHiddenBatchBtn: {\n    type: String,\n    default: 'show',\n  },\n  paginationPageSize: {\n    type: String,\n    default: 'pageSize',\n  },\n  paginationPageNum: {\n    type: String,\n    default: 'currentPage',\n  },\n  paginationTotal: {\n    type: String,\n    default: 'total',\n  },\n  dialogTop: {\n    type: String,\n    default: '20px',\n  },\n  buttonArea: {\n    type: String,\n    values: buttonAreaTypes,\n    default: 'default',\n  },\n  treeItemSize: {\n    type: Number,\n    default: 32,\n  },\n  searchType: {\n    type: String,\n    values: buttonTypes,\n    default: 'colour-10',\n  },\n  clearType: {\n    type: String,\n    values: buttonTypes,\n    default: 'default',\n  },\n  addType: {\n    type: String,\n    values: buttonTypes,\n    default: 'colour-7',\n  },\n  updateType: {\n    type: String,\n    values: buttonTypes,\n    default: 'colour-10',\n  },\n  deleteType: {\n    type: String,\n    values: buttonTypes,\n    default: 'colour-8',\n  },\n  batchDelType: {\n    type: String,\n    values: buttonTypes,\n    default: 'colour-8',\n  },\n  expandType: {\n    type: String,\n    values: buttonTypes,\n    default: 'default',\n  },\n  saveType: {\n    type: String,\n    values: buttonTypes,\n    default: 'colour-10',\n  },\n  cancelType: {\n    type: String,\n    values: buttonTypes,\n    default: 'default',\n  },\n  isTreeShowAll: {\n    type: Boolean,\n    default: true,\n  },\n  messageType: {\n    type: String,\n    default: 'show',\n  },\n  columns: {\n    type: Array,\n    default: () => [],\n  },\n  forceOnSelectAll: {\n    type: String,\n    default: 'show',\n  },\n  isHiddenDraftBtn: {\n    type: String,\n    default: 'show',\n  },\n  isHiddenInitiateProcessBtn: {\n    type: String,\n    default: 'show',\n  },\n  draftBtnType: {\n    type: String,\n    default: 'colour-10',\n  },\n  initiateProcessBtnType: {\n    type: String,\n    default: 'colour-10',\n  },\n  globalDoubleClickDetails: {\n    type: String,\n    default: 'show',\n  },\n  flowStatusData: {\n    type: Array,\n    default: () => [],\n  },\n  defaultFlowStatus: {\n    type: String,\n    default: '',\n  },\n  flowStatusWidth: {\n    type: String,\n    default: '',\n  },\n  customSetUpRender: {\n    type: Function,\n  },\n  customSetUpCallback: {\n    type: Function,\n  },\n  ...useEmptyValuesProps,\n} as const)\nexport type ConfigProviderProps = ExtractPropTypes<typeof configProviderProps>\nexport type ConfigProviderPropsPublic = ExtractPublicPropTypes<\n  typeof configProviderProps\n>\n","import { defineComponent, renderSlot, watch } from 'vue'\nimport { provideGlobalConfig } from './hooks/use-global-config'\nimport { configProviderProps } from './config-provider-props'\n\nimport type { MessageConfigContext } from '@pit-element-plus/components/message'\n\nexport const messageConfig: MessageConfigContext = {\n  placement: 'top',\n}\n\nconst ConfigProvider = defineComponent({\n  name: 'ElConfigProvider',\n  props: configProviderProps,\n\n  setup(props, { slots }) {\n    const config = provideGlobalConfig(props)\n    watch(\n      () => props.message,\n      (val) => {\n        Object.assign(messageConfig, config?.value?.message ?? {}, val ?? {})\n      },\n      { immediate: true, deep: true }\n    )\n    return () => renderSlot(slots, 'default', { config: config?.value })\n  },\n})\nexport type ConfigProviderInstance = InstanceType<typeof ConfigProvider> &\n  unknown\n\nexport default ConfigProvider\n","import { withInstall } from '@pit-element-plus/utils'\nimport ConfigProvider from './src/config-provider'\n\nimport type { SFCWithInstall } from '@pit-element-plus/utils'\n\nexport const ElConfigProvider: SFCWithInstall<typeof ConfigProvider> =\n  withInstall(ConfigProvider)\nexport default ElConfigProvider\n\nexport * from './src/config-provider'\nexport * from './src/config-provider-props'\nexport * from './src/constants'\nexport * from './src/hooks/use-global-config'\n","export const version = '2.0.227'\n","import { provideGlobalConfig } from '@pit-element-plus/components/config-provider'\nimport { INSTALLED_KEY } from '@pit-element-plus/constants'\nimport { version } from './version'\n\nimport type { App, Plugin } from 'vue'\nimport type { ConfigProviderContext } from '@pit-element-plus/components/config-provider'\n\nexport const makeInstaller = (components: Plugin[] = []) => {\n  const install = (app: App, options?: ConfigProviderContext) => {\n    if (app[INSTALLED_KEY]) return\n\n    app[INSTALLED_KEY] = true\n    components.forEach((c) => app.use(c))\n\n    if (options) provideGlobalConfig(options, app, true)\n  }\n\n  return {\n    version,\n    install,\n  }\n}\n","import { ElAffix } from '@pit-element-plus/components/affix'\nimport { ElAlert } from '@pit-element-plus/components/alert'\nimport { ElAutocomplete } from '@pit-element-plus/components/autocomplete'\nimport { ElAvatar, ElAvatarGroup } from '@pit-element-plus/components/avatar'\nimport { ElBacktop } from '@pit-element-plus/components/backtop'\nimport { ElBadge } from '@pit-element-plus/components/badge'\nimport { ElBaseTabs } from '@pit-element-plus/components/base-tabs'\nimport {\n  ElBreadcrumb,\n  ElBreadcrumbItem,\n} from '@pit-element-plus/components/breadcrumb'\nimport { ElButton, ElButtonGroup } from '@pit-element-plus/components/button'\nimport { ElCalendar } from '@pit-element-plus/components/calendar'\nimport { ElCard } from '@pit-element-plus/components/card'\nimport {\n  ElCarousel,\n  ElCarouselItem,\n} from '@pit-element-plus/components/carousel'\nimport { ElCascader } from '@pit-element-plus/components/cascader'\nimport { ElCascaderPanel } from '@pit-element-plus/components/cascader-panel'\nimport { ElCheckTag } from '@pit-element-plus/components/check-tag'\nimport {\n  ElCheckbox,\n  ElCheckboxButton,\n  ElCheckboxGroup,\n} from '@pit-element-plus/components/checkbox'\nimport { ElCol } from '@pit-element-plus/components/col'\nimport {\n  ElCollapse,\n  ElCollapseItem,\n} from '@pit-element-plus/components/collapse'\nimport { ElCollapseTransition } from '@pit-element-plus/components/collapse-transition'\nimport { ElColorPickerPanel } from '@pit-element-plus/components/color-picker-panel'\nimport { ElColorPicker } from '@pit-element-plus/components/color-picker'\nimport { ElConfigProvider } from '@pit-element-plus/components/config-provider'\nimport {\n  ElAside,\n  ElContainer,\n  ElFooter,\n  ElHeader,\n  ElMain,\n} from '@pit-element-plus/components/container'\nimport { ElDatePicker } from '@pit-element-plus/components/date-picker'\nimport { ElDatePickerPanel } from '@pit-element-plus/components/date-picker-panel'\nimport {\n  ElDescriptions,\n  ElDescriptionsItem,\n} from '@pit-element-plus/components/descriptions'\nimport { ElDialog } from '@pit-element-plus/components/dialog'\nimport { ElDialogHeader } from '@pit-element-plus/components/dialog-header'\nimport { ElDivider } from '@pit-element-plus/components/divider'\nimport { ElDrawer } from '@pit-element-plus/components/drawer'\nimport {\n  ElDropdown,\n  ElDropdownItem,\n  ElDropdownMenu,\n} from '@pit-element-plus/components/dropdown'\nimport { ElEmpty } from '@pit-element-plus/components/empty'\nimport { ElForm, ElFormItem } from '@pit-element-plus/components/form'\nimport { ElFormBase } from '@pit-element-plus/components/form-base'\nimport { ElIcon } from '@pit-element-plus/components/icon'\nimport { ElImage } from '@pit-element-plus/components/image'\nimport { ElImageViewer } from '@pit-element-plus/components/image-viewer'\nimport { ElInput } from '@pit-element-plus/components/input'\nimport { ElInputNumber } from '@pit-element-plus/components/input-number'\nimport { ElInputTag } from '@pit-element-plus/components/input-tag'\nimport { ElLink } from '@pit-element-plus/components/link'\nimport { ElLayoutColumn } from '@pit-element-plus/components/layout-column'\nimport { ElLayoutTree } from '@pit-element-plus/components/layout-tree'\nimport {\n  ElMenu,\n  ElMenuItem,\n  ElMenuItemGroup,\n  ElSubMenu,\n} from '@pit-element-plus/components/menu'\nimport { ElPageHeader } from '@pit-element-plus/components/page-header'\nimport { ElPagination } from '@pit-element-plus/components/pagination'\nimport { ElPopconfirm } from '@pit-element-plus/components/popconfirm'\nimport { ElPopover } from '@pit-element-plus/components/popover'\nimport { ElPopper } from '@pit-element-plus/components/popper'\nimport { ElProgress } from '@pit-element-plus/components/progress'\nimport {\n  ElRadio,\n  ElRadioButton,\n  ElRadioGroup,\n} from '@pit-element-plus/components/radio'\nimport { ElRate } from '@pit-element-plus/components/rate'\nimport { ElResult } from '@pit-element-plus/components/result'\nimport { ElRow } from '@pit-element-plus/components/row'\nimport { ElScrollbar } from '@pit-element-plus/components/scrollbar'\nimport {\n  ElOption,\n  ElOptionGroup,\n  ElSelect,\n} from '@pit-element-plus/components/select'\nimport { ElSelectV2 } from '@pit-element-plus/components/select-v2'\nimport {\n  ElSkeleton,\n  ElSkeletonItem,\n} from '@pit-element-plus/components/skeleton'\nimport { ElSlider } from '@pit-element-plus/components/slider'\nimport { ElSpace } from '@pit-element-plus/components/space'\nimport { ElStatistic } from '@pit-element-plus/components/statistic'\nimport { ElCountdown } from '@pit-element-plus/components/countdown'\nimport { ElStep, ElSteps } from '@pit-element-plus/components/steps'\nimport { ElSwitch } from '@pit-element-plus/components/switch'\nimport { ElTable, ElTableColumn } from '@pit-element-plus/components/table'\nimport { ElAutoResizer, ElTableV2 } from '@pit-element-plus/components/table-v2'\nimport { ElTabPane, ElTabs } from '@pit-element-plus/components/tabs'\nimport { ElTag } from '@pit-element-plus/components/tag'\nimport { ElText } from '@pit-element-plus/components/text'\nimport { ElTimePicker } from '@pit-element-plus/components/time-picker'\nimport { ElTimeSelect } from '@pit-element-plus/components/time-select'\nimport {\n  ElTimeline,\n  ElTimelineItem,\n} from '@pit-element-plus/components/timeline'\nimport { ElTooltip } from '@pit-element-plus/components/tooltip'\nimport { ElTransfer } from '@pit-element-plus/components/transfer'\nimport { ElTree } from '@pit-element-plus/components/tree'\nimport { ElTreeSelect } from '@pit-element-plus/components/tree-select'\nimport { ElTreeV2 } from '@pit-element-plus/components/tree-v2'\nimport { ElUpload } from '@pit-element-plus/components/upload'\nimport { ElWatermark } from '@pit-element-plus/components/watermark'\nimport { ElTour, ElTourStep } from '@pit-element-plus/components/tour'\nimport { ElAnchor, ElAnchorLink } from '@pit-element-plus/components/anchor'\nimport { ElSegmented } from '@pit-element-plus/components/segmented'\nimport { ElMention } from '@pit-element-plus/components/mention'\nimport {\n  ElSplitter,\n  ElSplitterPanel,\n} from '@pit-element-plus/components/splitter'\n\nimport type { Plugin } from 'vue'\n\nexport default [\n  ElAffix,\n  ElAlert,\n  ElAutocomplete,\n  ElAutoResizer,\n  ElAvatar,\n  ElAvatarGroup,\n  ElBacktop,\n  ElBadge,\n  ElBaseTabs,\n  ElBreadcrumb,\n  ElBreadcrumbItem,\n  ElButton,\n  ElButtonGroup,\n  ElCalendar,\n  ElCard,\n  ElCarousel,\n  ElCarouselItem,\n  ElCascader,\n  ElCascaderPanel,\n  ElCheckTag,\n  ElCheckbox,\n  ElCheckboxButton,\n  ElCheckboxGroup,\n  ElCol,\n  ElCollapse,\n  ElCollapseItem,\n  ElCollapseTransition,\n  ElColorPickerPanel,\n  ElColorPicker,\n  ElConfigProvider,\n  ElContainer,\n  ElAside,\n  ElFooter,\n  ElHeader,\n  ElMain,\n  ElDatePicker,\n  ElDatePickerPanel,\n  ElDescriptions,\n  ElDescriptionsItem,\n  ElDialog,\n  ElDialogHeader,\n  ElDivider,\n  ElDrawer,\n  ElDropdown,\n  ElDropdownItem,\n  ElDropdownMenu,\n  ElEmpty,\n  ElForm,\n  ElFormItem,\n  ElFormBase,\n  ElIcon,\n  ElImage,\n  ElImageViewer,\n  ElInput,\n  ElInputNumber,\n  ElInputTag,\n  ElLink,\n  ElLayoutColumn,\n  ElLayoutTree,\n  ElMenu,\n  ElMenuItem,\n  ElMenuItemGroup,\n  ElSubMenu,\n  ElPageHeader,\n  ElPagination,\n  ElPopconfirm,\n  ElPopover,\n  ElPopper,\n  ElProgress,\n  ElRadio,\n  ElRadioButton,\n  ElRadioGroup,\n  ElRate,\n  ElResult,\n  ElRow,\n  ElScrollbar,\n  ElSelect,\n  ElOption,\n  ElOptionGroup,\n  ElSelectV2,\n  ElSkeleton,\n  ElSkeletonItem,\n  ElSlider,\n  ElSpace,\n  ElStatistic,\n  ElCountdown,\n  ElSteps,\n  ElStep,\n  ElSwitch,\n  ElTable,\n  ElTableColumn,\n  ElTableV2,\n  ElTabs,\n  ElTabPane,\n  ElTag,\n  ElText,\n  ElTimePicker,\n  ElTimeSelect,\n  ElTimeline,\n  ElTimelineItem,\n  ElTooltip,\n  ElTransfer,\n  ElTree,\n  ElTreeSelect,\n  ElTreeV2,\n  ElUpload,\n  ElWatermark,\n  ElTour,\n  ElTourStep,\n  ElAnchor,\n  ElAnchorLink,\n  ElSegmented,\n  ElMention,\n  ElSplitter,\n  ElSplitterPanel,\n] as Plugin[]\n","import { ElInfiniteScroll } from '@pit-element-plus/components/infinite-scroll'\nimport { ElLoading } from '@pit-element-plus/components/loading'\nimport { ElMessage } from '@pit-element-plus/components/message'\nimport { ElMessageBox } from '@pit-element-plus/components/message-box'\nimport { ElNotification } from '@pit-element-plus/components/notification'\nimport { ElPopoverDirective } from '@pit-element-plus/components/popover'\n\nimport type { Plugin } from 'vue'\n\nexport default [\n  ElInfiniteScroll,\n  ElLoading,\n  ElMessage,\n  ElMessageBox,\n  ElNotification,\n  ElPopoverDirective,\n] as Plugin[]\n","import { makeInstaller } from './make-installer'\nimport Components from './component'\nimport Plugins from './plugin'\n\nexport default makeInstaller([...Components, ...Plugins])\n","import installer from './defaults'\n\nexport * from '@pit-element-plus/components'\nexport * from '@pit-element-plus/constants'\nexport * from '@pit-element-plus/directives'\nexport * from '@pit-element-plus/hooks'\nexport * from './make-installer'\n\nexport const install = installer.install\nexport const version = installer.version\nexport default installer\n\nexport { default as dayjs } from 'dayjs'\n"],"x_google_ignoreList":[8,9,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,238,264,278,279,280,281,340,435,436,437,438,439,450,451,469,485,681,682,683,684,685,686,948],"mappings":"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,OACN,OAAQ,GACR,QAAS,MACV,CAID,sBAAuB,CACrB,KAAM,OACN,OAAQ,GACR,QAAS,SACV,CAID,WAAY,CACV,KAAM,OACP,CAID,QAAS,CACP,KAAM,EAAgC,MAAM,CAC7C,CAID,QAAS,CACP,KAAM,OACP,CAID,MAAO,CACL,KAAM,EAA0B,OAAO,CACxC,CAID,WAAY,CACV,KAAM,OACN,QAAS,QACV,CAID,eAAgB,CACd,KAAM,QACN,QAAS,GACV,CAID,mBAAoB,CAClB,KAAM,OACN,OAAQ,GACR,QAAS,MACV,CAID,OAAQ,CACN,KAAM,QACN,QAAS,GACV,CAID,cAAe,CACb,KAAM,QACN,QAAS,GACV,CAID,SAAU,CACR,KAAM,QACN,QAAS,GACV,CAID,UAAW,CACT,KAAM,QACN,QAAS,GACV,CAID,SAAU,CACR,KAAM,QACN,QAAS,GACV,CAID,SAAU,CACR,KAAM,QACN,QAAS,GACV,CAID,QAAS,CACP,KAAM,QACN,QAAS,GACV,CAID,WAAY,CACV,KAAM,QACN,QAAS,GACV,CAID,aAAc,CACZ,KAAM,QACN,QAAS,GACV,CAID,YAAa,CACX,KAAM,QACN,QAAS,GACV,CAID,aAAc,CACZ,KAAM,QACN,QAAS,GACV,CAID,iBAAkB,CAChB,KAAM,QACN,QAAS,GACV,CAID,gBAAiB,CACf,KAAM,QACN,QAAS,GACV,CAID,YAAa,CACX,KAAM,QACN,QAAS,GACV,CAID,aAAc,CACZ,KAAM,QACN,QAAS,GACV,CAID,aAAc,CACZ,KAAM,QACN,QAAS,GACV,CAID,aAAc,CACZ,KAAM,QACN,QAAS,GACV,CAID,aAAc,CACZ,KAAM,QACN,QAAS,GACV,CAID,WAAY,CACV,KAAM,OACN,QAAS,GACV,CAID,YAAa,CACX,KAAM,OACN,QAAS,GACV,CAID,WAAY,CACV,KAAM,OACN,QAAS,GACV,CAID,aAAc,CACZ,KAAM,OACN,QAAS,GACV,CAID,cAAe,CACb,KAAM,OACN,QAAS,GACV,CAID,aAAc,CACZ,KAAM,OACN,QAAS,GACV,CAID,eAAgB,CACd,KAAM,OACN,QAAS,GACV,CA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KAAM,OACN,QAAS,KACV,CAID,MAAO,CACL,KAAM,EAAmC,OAAO,CACjD,CACD,SAAU,CACR,KAAM,OACN,QAAS,GACV,CACD,QAAS,CACP,KAAM,OACN,QAAS,EACV,CACD,oBAAqB,CACnB,KAAM,OACN,QAAS,UACV,CACD,eAAgB,CACd,KAAM,OACN,QAAS,OACV,CACD,gBAAiB,CACf,KAAM,OACN,QAAS,OACV,CACD,eAAgB,CACd,KAAM,OACN,QAAS,OACV,CACD,iBAAkB,CAChB,KAAM,OACN,QAAS,OACV,CACD,mBAAoB,CAClB,KAAM,OACN,QAAS,WACV,CACD,kBAAmB,CACjB,KAAM,OACN,QAAS,cACV,CACD,gBAAiB,CACf,KAAM,OACN,QAAS,QACV,CACD,UAAW,CACT,KAAM,OACN,QAAS,OACV,CACD,WAAY,CACV,KAAM,OACN,OAAQ,GACR,QAAS,UACV,CACD,aAAc,CACZ,KAAM,OACN,QAAS,GACV,CACD,WAAY,CACV,KAAM,OACN,OAAQ,GACR,QAAS,YACV,CACD,UAAW,CACT,KAAM,OACN,OAAQ,GACR,QAAS,UACV,CACD,QAAS,CACP,KAAM,OACN,OAAQ,GACR,QAAS,WACV,CACD,WAAY,CACV,KAAM,OACN,OAAQ,GACR,QAAS,YACV,CACD,WAAY,CACV,KAAM,OACN,OAAQ,GACR,QAAS,WACV,CACD,aAAc,CACZ,KAAM,OACN,OAAQ,GACR,QAAS,WACV,CACD,WAAY,CACV,KAAM,OACN,OAAQ,GACR,QAAS,UACV,CACD,SAAU,CACR,KAAM,OACN,OAAQ,GACR,QAAS,YACV,CACD,WAAY,CACV,KAAM,OACN,OAAQ,GACR,QAAS,UACV,CACD,cAAe,CACb,KAAM,QACN,QAAS,GACV,CACD,YAAa,CACX,KAAM,OACN,QAAS,OACV,CACD,QAAS,CACP,KAAM,MACN,YAAe,EAAE,CAClB,CACD,iBAAkB,CAChB,KAAM,OACN,QAAS,OACV,CACD,iBAAkB,CAChB,KAAM,OACN,QAAS,OACV,CACD,2BAA4B,CAC1B,KAAM,OACN,QAAS,OACV,CACD,aAAc,CACZ,KAAM,OACN,QAAS,YACV,CACD,uBAAwB,CACtB,KAAM,OACN,QAAS,YACV,CACD,yBAA0B,CACxB,KAAM,OACN,QAAS,OACV,CACD,eAAgB,CACd,KAAM,MACN,YAAe,EAAE,CAClB,CACD,kBAAmB,CACjB,KAAM,OACN,QAAS,GACV,CACD,gBAAiB,CACf,KAAM,OACN,QAAS,GACV,CACD,kBAAmB,CACjB,KAAM,SACP,CACD,oBAAqB,CACnB,KAAM,SACP,CACD,GAAG,GACJ,CAAU,CCvPE,GAAsC,CACjD,UAAW,MACZ,CCHY,GACX,GDIqB,EAAgB,CACrC,KAAM,mBACN,MAAO,GAEP,MAAM,EAAO,CAAE,SAAS,CACtB,IAAM,EAAS,GAAoB,EAAM,CAQzC,OAPA,MACQ,EAAM,QACX,GAAQ,CACP,OAAO,OAAO,GAAe,GAAQ,OAAO,SAAW,EAAE,CAAE,GAAO,EAAE,CAAC,EAEvE,CAAE,UAAW,GAAM,KAAM,GAAM,CAChC,KACY,EAAW,EAAO,UAAW,CAAE,OAAQ,GAAQ,MAAO,CAAC,EAEvE,CAAC,CCnB2B,CEChB,IAAiB,EAAuB,EAAE,IAU9C,CACL,QAAA,UACA,SAXe,EAAU,IAAoC,CACzD,EAAI,MAER,EAAI,IAAiB,GACrB,EAAW,QAAS,GAAM,EAAI,IAAI,EAAE,CAAC,CAEjC,GAAS,GAAoB,EAAS,EAAK,GAAK,GAMrD,ECmHH,IAAA,GAAe,CACb,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACD,CClPD,GAAe,CACb,GACA,GACA,GACA,GACA,GACA,GACD,CCZD,GAAe,GAAc,CAAC,GAAGE,GAAY,GAAGC,GAAQ,CAAC,CCIzD,MAAa,GAAUC,GAAU,QACpB,GAAUA,GAAU,QACjC,IAAA,GAAeA"}